[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz/gzz/view DefaultBinder.java pagespanview.py...
From: |
Benja Fallenstein |
Subject: |
[Gzz-commits] gzz/gzz/view DefaultBinder.java pagespanview.py... |
Date: |
Thu, 03 Oct 2002 12:12:31 -0400 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Benja Fallenstein <address@hidden> 02/10/03 12:12:31
Modified files:
gzz/view : DefaultBinder.java pagespanview.py xubuoy.py
Log message:
Making links to part of cells WORKS
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/DefaultBinder.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/pagespanview.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/xubuoy.py.diff?tr1=1.11&tr2=1.12&r1=text&r2=text
Patches:
Index: gzz/gzz/view/DefaultBinder.java
diff -c gzz/gzz/view/DefaultBinder.java:1.2 gzz/gzz/view/DefaultBinder.java:1.3
*** gzz/gzz/view/DefaultBinder.java:1.2 Thu Oct 3 08:53:58 2002
--- gzz/gzz/view/DefaultBinder.java Thu Oct 3 12:12:31 2002
***************
*** 42,48 ****
/** Keybindings for the Fallback client.
*/
public class DefaultBinder implements FallbackBinder {
! public static final String rcsid = "$Id: DefaultBinder.java,v 1.2 2002/10/03
12:53:58 benja Exp $";
public static boolean dbg = false;
private static void pa(String s) { System.err.println(s); }
--- 42,48 ----
/** Keybindings for the Fallback client.
*/
public class DefaultBinder implements FallbackBinder {
! public static final String rcsid = "$Id: DefaultBinder.java,v 1.3 2002/10/03
16:12:31 benja Exp $";
public static boolean dbg = false;
private static void pa(String s) { System.err.println(s); }
***************
*** 82,88 ****
* Each marked cell is represented as a <code>gzz.view.Mark</code>
* object. We don't have support for multiple mark sets yet.
*/
! java.util.List marks = new ArrayList();
/** The set of all marked cells.
* This is the set of all cells in the <code>Mark</code> objects
--- 82,88 ----
* Each marked cell is represented as a <code>gzz.view.Mark</code>
* object. We don't have support for multiple mark sets yet.
*/
! public java.util.List marks = new ArrayList();
/** The set of all marked cells.
* This is the set of all cells in the <code>Mark</code> objects
***************
*** 408,418 ****
else if(w.viewIndex >= fallback.viewList.length) w.viewIndex = 0;
}
! void makeLink(int dir) {
Cell c = fallback.windows[1].cursor;
VStreamCellTexter ct = (VStreamCellTexter)c.space.getCellTexter();
Enfilade1D from = ct.getEnfilade(c, null);
Enfilade1D to = from.getMaker().makeEnfilade();
for(Iterator i=marks.iterator(); i.hasNext();) {
Mark m = (Mark)i.next();
--- 408,422 ----
else if(w.viewIndex >= fallback.viewList.length) w.viewIndex = 0;
}
! public void makeLink(int dir) {
Cell c = fallback.windows[1].cursor;
VStreamCellTexter ct = (VStreamCellTexter)c.space.getCellTexter();
Enfilade1D from = ct.getEnfilade(c, null);
+ makeLink(dir, from);
+ }
+
+ public void makeLink(int dir, Enfilade1D from) {
Enfilade1D to = from.getMaker().makeEnfilade();
for(Iterator i=marks.iterator(); i.hasNext();) {
Mark m = (Mark)i.next();
Index: gzz/gzz/view/pagespanview.py
diff -c gzz/gzz/view/pagespanview.py:1.9 gzz/gzz/view/pagespanview.py:1.10
*** gzz/gzz/view/pagespanview.py:1.9 Wed Oct 2 14:24:35 2002
--- gzz/gzz/view/pagespanview.py Thu Oct 3 12:12:31 2002
***************
*** 217,222 ****
--- 217,234 ----
return (
page * self.scaledsheetsize[0] + self.scale * pointx/72.0/6,
self.scale * pointy/72.0/6
)
+ def paperpoint_inv(self, x, y):
+ page = int(x / self.scaledsheetsize[0])
+ my = (x, y)
+ x -= page * self.scaledsheetsize[0]
+ pointx = (x * 72.0 * 6) / self.scale
+ pointy = (y * 72.0 * 6) / self.scale
+
+ inv = self.paperpoint(page, pointx, pointy)
+ assert -2 < (my[0]-inv[0]) < 2 and -2 < (my[1]-inv[1]) < 2
+
+ return (page, pointx, pointy)
+
def hitClip(self, coords, point3, cliprect):
src = zeros(3, 'f') # assume only one point
coords.inverseTransformPoints3(self.papercoordsys, point3, src)
Index: gzz/gzz/view/xubuoy.py
diff -c gzz/gzz/view/xubuoy.py:1.11 gzz/gzz/view/xubuoy.py:1.12
*** gzz/gzz/view/xubuoy.py:1.11 Thu Oct 3 08:53:58 2002
--- gzz/gzz/view/xubuoy.py Thu Oct 3 12:12:31 2002
***************
*** 187,192 ****
--- 187,197 ----
class Mode:
def __init__(self, **args):
self.__dict__ = args
+
+ def rotatelist(list):
+ x = list[-1]
+ del list[-1]
+ list.insert(0, x)
class XuPDFScene_PDFContext:
def __init__(self, linkspace, win=None):
***************
*** 224,233 ****
self.clip = 0
self.selectCS = None
self.currentvs = None
def key(self, key):
global currentScene
! if key == 'm':
rotatelist(self.modes)
elif key == 'c':
self.clip = not self.clip
elif key == 'l':
--- 229,261 ----
self.clip = 0
self.selectCS = None
self.currentvs = None
+ self.corner1 = None
+
def key(self, key):
global currentScene
! if key == 'M':
rotatelist(self.modes)
+ elif key == 'm':
+ if not self.corner1: return
+ print "Mark: %s; %s" % (self.corner1, self.corner2)
+
+ enf = self.getCurrentEnfilade()
+ mark = gzz.view.Mark(self.cursor, enf)
+ binder = self.win.getFallback().binder
+ binder.marks.add(mark)
+ binder.markedCells.add(self.cursor)
+ AbstractUpdateManager.chg()
+ elif key == 'Ctrl-L' or key == 'Alt-L':
+ # handle only if there is a selection
+ if not self.corner1: return 1
+ enf = self.getCurrentEnfilade()
+ binder = self.win.getFallback().binder
+ print "Enfilade is", enf
+ if key == 'Ctrl-L':
+ binder.makeLink(1, enf)
+ else:
+ binder.makeLink(-1, enf)
+ AbstractUpdateManager.chg()
elif key == 'c':
self.clip = not self.clip
elif key == 'l':
***************
*** 244,251 ****
--- 272,316 ----
self.moveToCell(self.cursor)
elif key == 't':
self.showtessel = not self.showtessel
+ elif key == 's':
+ # select some rect at random
+ # for testing w/o mouse :-)
+ from random import random
+ maxx, maxy = self.view.scaledsheetsize
+ page = int(random() * len(self.view.pap))
+ pagex = maxx * page
+ print "Paper size: %s" % ((maxx, maxy),)
+ self.corner1 = (pagex + random() * maxx, random() * maxy)
+ self.corner2 = (pagex + random() * maxx, random() * maxy)
+ self.select()
+ print "Random selection: %s; %s" % (self.corner1, self.corner2)
else:
return 1 # not handled
+
+ def getCurrentEnfilade(self):
+ c1 = self.view.paperpoint_inv(*self.corner1)
+ c2 = self.view.paperpoint_inv(*self.corner2)
+ if c1[0] == c2[0]:
+ page = c1[0]
+ x = int(min(c1[1], c2[1]))
+ w = int(max(c1[1], c2[1]) - x)
+ y = int(min(c1[2], c2[2]))
+ h = int(max(c1[2], c2[2]) - y)
+ print "Area:", (page, page+1, x, y, w, h)
+ span = globalspan.subArea(page, page+1, x, y, w, h)
+ else:
+ p0 = min(c1[0], c2[0])
+ p1 = max(c1[0], c2[0])
+ span = globalspan.subSpan(p0, p1+1)
+
+ print "Marking span: %s" % (span,)
+
+ space = self.cursor.space
+ enf = space.getCellTexter().getEnfilade(self.cursor, None)
+ enf = enf.getMaker().makeEnfilade(span)
+
+ return enf
+
def checkGlobalCoords(self):
global globalx, globaly
***************
*** 276,288 ****
elif ev.getID() == ev.MOUSE_PRESSED:
self.pressx = ev.getX()
self.pressy = ev.getY()
! self.origpt = None
return
elif ev.getID() == ev.MOUSE_DRAGGED:
! if not self.selectCS:
! self.selectCS =
self.currentvs.coords.affineCoordsys(self.papercs, 0, 0, 0, 1, 0, 0, 1)
! self.currentvs.map.put(selectPaperQuad, self.selectCS, 0)
! if not self.origpt:
point = array([self.pressx, self.pressy, 0], 'f')
dst = zeros(3, 'f')
self.currentvs.coords.inverseTransformPoints3(self.papercs,
point, dst)
--- 341,350 ----
elif ev.getID() == ev.MOUSE_PRESSED:
self.pressx = ev.getX()
self.pressy = ev.getY()
! self.corner1 = None
return
elif ev.getID() == ev.MOUSE_DRAGGED:
! if not self.corner1:
point = array([self.pressx, self.pressy, 0], 'f')
dst = zeros(3, 'f')
self.currentvs.coords.inverseTransformPoints3(self.papercs,
point, dst)
***************
*** 291,296 ****
--- 353,367 ----
dst = zeros(3, 'f')
self.currentvs.coords.inverseTransformPoints3(self.papercs, point,
dst)
self.corner2 = (dst[0], dst[1])
+ self.select()
+ else:
+ print "Unused mouse: ",ev
+
+
+ def select(self):
+ if not self.selectCS:
+ self.selectCS =
self.currentvs.coords.affineCoordsys(self.papercs, 0, 0, 0, 1, 0, 0, 1)
+ self.currentvs.map.put(selectPaperQuad, self.selectCS, 0)
ctr = (0.5*(self.corner1[0]+self.corner2[0]),
0.5 *(self.corner1[1]+self.corner2[1]))
s = (0.5*(self.corner1[0]-self.corner2[0]),
***************
*** 305,313 ****
else:
replaceNewScene(self.currentvs)
-
- else:
- print "Unused mouse: ",ev
def moveToCell(self, cell, nx=1, ny=1, redraw=1):
global globalx, globaly
--- 376,381 ----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz/gzz/view DefaultBinder.java pagespanview.py...,
Benja Fallenstein <=