gzz-commits
[Top][All Lists]
Advanced

[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 ----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]