gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] fenfire/org/fenfire demo/buoyoing.py view/buoy/...


From: Matti Katila
Subject: [Gzz-commits] fenfire/org/fenfire demo/buoyoing.py view/buoy/...
Date: Thu, 19 Jun 2003 07:57:49 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Matti Katila <address@hidden>   03/06/19 07:57:48

Modified files:
        org/fenfire/demo: buoyoing.py 
        org/fenfire/view/buoy: AbstractMainNode2D.java 
                               FisheyeMainNode2D.java MainNode2D.java 
        org/fenfire/view/lava: FenPDFContext.java 
Added files:
        org/fenfire/util: ControlBinding.java 

Log message:
        eventhandling sketching

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.72&tr2=1.73&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/FenPDFContext.java.diff?tr1=1.31&tr2=1.32&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.72 
fenfire/org/fenfire/demo/buoyoing.py:1.73
--- fenfire/org/fenfire/demo/buoyoing.py:1.72   Sat Jun 14 17:15:10 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Thu Jun 19 07:57:47 2003
@@ -265,8 +265,8 @@
 
     def mouse(self, ev, oldvs):
         if dbg: pa(ev)
-       if ev.getID() == ev.MOUSE_WHEEL:
-           print "WHEEL"
+       if 0 and ev.getID() == ev.MOUSE_WHEEL:
+           pa("WHEEL")
            r = ev.getWheelRotation()
            self.split -= .03 * r
            self._doset(oldvs)
@@ -322,9 +322,116 @@
     def __init__(self):
        vob.buoy.buoymanager.MultiBuoyManager.__init__(self, 
                [mainNode, mainNode2], [ppconnector, tconnector],
-               DoubleGeometer(self), context)
+               DoubleGeometer(self),
+                FenPDFActions(context, 2), context)
+        w.setCursor('default')
+
+class AbstractController(ff.util.ControlBinding.Controller):
+    def controlPoint(self, x,y,scale): pass 
+    def change(self, x,y): pass
+    def set(self, obj, oldVS):
+        self.obj = obj
+        self.oldVS = oldVS
+    
+class MovePanFast(AbstractController):
+    def isChangeAble(self): return 1
+    def change(self, x, y):
+        f = self.obj.getFocus()
+        fX, fY = f.getPanX(), f.getPanY()
+        f.setPan( (fX-x)/f.getZoom(),(fY-y)/f.getZoom())
+        self.obj.chgFast(self.oldVS)
+
+class MovePanSlow(AbstractController):
+    def isChangeAble(self): return 0
+    def controlPoint(self, x, y, scale):
+        self.obj.moveToPoint(int(x),int(y), self.oldVS)
+        
+class FenPDFActions:
+    def __init__(self, context, mainNodes):
+        self.context = context
+        context = context
+        self.context.initMainNodes(mainNodes)
+        self.lastIndex = 0
+
+        self.controlMains = ff.util.ControlBinding()
+        c = self.controlMains
+        c.add(MovePanFast(), -1, 'wheel', 7,1)
+        c.add(MovePanFast(), 1, "drag", 1.4, 1)
+        c.add(MovePanSlow(), 1, "click", 1, 1)
+#        c.dbg=1
+        self.controls = [ self.controlMains ]
+     
+    def key(self, mngr, key):
+        index = self.lastIndex
+        self.context.setMainNodeIndex(index)
+       mngr.singles[index].mainNode.keystroke(key)
+       vob.AbstractUpdateManager.chg()
+
+    def mouse(self, mngr, ev):
+#        pa(ev)
+        
+       if hasattr(mngr.geometer, 'mouse') and \
+               mngr.geometer.mouse(ev, mngr.vs):
+           return 
+       x, y = ev.getX(), ev.getY()
+       cs = mngr.vs.getCSAt(0, x, y, None)
+
+        if ev.getID() == ev.MOUSE_RELEASED:
+            w.setCursor('default')
+            for ctrl in self.controls:
+                ctrl.removePressState()
+            return
+        if ev.getID() == ev.MOUSE_PRESSED:
+            self.oldEv = ev
+
+        ### If there exist a buoy jump over there
+       for single in mngr.singles:
+           link = single.cs.get(cs, None)
+           if link != None:
+                # print "IN CS: ",cs, link
+                if hasattr(mngr.geometer, 'buoyMouse') and \
+                   mngr.geometer.buoyMouse(mngr, ev, single, link):
+                    return
+                
+               if ev.getID() != ev.MOUSE_CLICKED:
+                   return
+               single.followLink(link)
+               vob.AbstractUpdateManager.chg()
+               return
+
+       ### Fall through if no link - need main node
+       for i in range(0, len(mngr.singles)):
+           if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
+                self.context.setMainNodeIndex(i)
+                self.lastIndex = i
+
+                if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev, 
mngr.vs):
+                   mngr.replaceScene = mngr.vs
+                   vob.AbstractUpdateManager.setNoAnimation()
+               vob.AbstractUpdateManager.chg()
+               return
+
+        # ...then see context
+        if ev.getID() != ev.MOUSE_CLICKED:
+            return
+        self.context.setMainNodeIndex(self.lastIndex)
+        planes = []
+        for single in mngr.singles:
+            planes.append(single.getMainNode())
+        newPlanes = self.context.doMouse(ev, mngr.vs, planes)
+        if newPlanes != None and planes != newPlanes:
+            for i in range(0, len(newPlanes)):
+                mngr.singles[i] = SingleFocusManager(
+                    newPlanes[i],
+                    mngr.connectors)
+            vob.AbstractUpdateManager.chg()
+        
 
 currentScene = Scene()
+
+
+
+
 
 def screenshots():
     frame = 0
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.20 
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.21
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.20  Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java       Thu Jun 19 
07:57:47 2003
@@ -55,17 +55,21 @@
     public interface Focus {
        float getPanX();
        float getPanY();
+        float getZoom();
+        void setZoom(float zoom);
        void setPan(float panX, float panY);
     }
 
     public static class SimpleFocus implements Focus {
-       protected float panX, panY;
+       protected float panX, panY, zoom=1;
        public SimpleFocus(float panX, float panY) {
            this.panX = panX;
            this.panY = panY;
        }
        public float getPanX() { return panX; }
        public float getPanY() { return panY; }
+        public float getZoom() { return zoom; }
+        public void setZoom(float zoom) {this.zoom=zoom; }
        public void setPan(float panX, float panY) {
            this.panX = panX;
            this.panY = panY;
@@ -116,6 +120,7 @@
 
     public void renderMain(VobScene vs, int into) {
         context.mainNodeToBeRender(vs, into, this);
+        // extending classes will render after this.
     }
     public interface Render {
        void mainNodeToBeRender(VobScene vs, int into,
@@ -151,6 +156,35 @@
        }
     }
 
+    public boolean isHitInsidePlane(int x, int y, VobScene oldVobScene) {
+       float[] pt = new float[] { x, y, 0 };
+       float[] sq = new float[2];
+       oldVobScene.coords.inverseTransformPoints3(
+               box2screen, pt, pt);
+       oldVobScene.coords.getSqSize(box2screen, sq);
+       if (dbg) p("sq:  1: "+sq[0]+", 3: "+sq[1]);
+       if (this instanceof MainNode2D) {
+           if(pt[0] >= 0 && pt[0] < sq[0] &&
+              pt[1] >= 0 && pt[1] < sq[1]) {
+               pt[2] = 0;
+               oldVobScene.coords
+                   .transformPoints3(box2screen, pt, pt);
+                // what's zout?
+               //if(zout != null)
+               //    zout[0] = pt[2];
+               return true;
+           }
+       } else if (this instanceof FisheyeMainNode2D) {
+           oldVobScene.coords.transformPoints3(box2paper, pt, pt);
+           view2d.getSize(plane, v2dwh);
+           if(v2dwh[0] >= 0) {
+               if(pt[0] >= 0 && pt[0] < v2dwh[0] &&
+                  pt[1] >= 0 && pt[1] < v2dwh[1]) return true;
+           }
+       } else throw new Error("No known main node view2d");
+       return false;
+    }
+
     public boolean mouseClickHit(MouseEvent e, VobScene oldVobScene, float[] 
zout) {
        float[] pt = new float[] { e.getX(), e.getY(), 0 };
        float[] sq = new float[2];
@@ -179,6 +213,10 @@
        return false;
     }
 
+    public void moveToPoint(int x, int y, VobScene oldVS) {
+        mouseMoveClick(x,y,oldVS);
+    }
+
     protected void mouseMoveClick(int x, int y, VobScene oldVobScene) {
        float[] pt = new float[] { x, y, 0 };
 
@@ -220,7 +258,7 @@
     }
 
     public boolean mouse(MouseEvent e, VobScene oldVobScene) {
-        win.setCursor("default");
+        // win.setCursor("default");
        if (e.getID() == MouseEvent.MOUSE_PRESSED) {
            readMouseState(e, oldVobScene);
            return false;
@@ -229,7 +267,12 @@
        if (m_state == null) throw new Error("Mouse state not found!");
        return doMouse(e, oldVobScene);
     }
-    
+
+    public void chgFast(VobScene oldVobScene) {
+        clipPan();
+        setZoomPan(oldVobScene, box2screen);
+    }
+
     protected boolean doMouse(MouseEvent e, VobScene oldVobScene) {
        // Move by dragging with button 1
        if(m_state[2] == e.BUTTON1_MASK && 
@@ -281,5 +324,8 @@
        return false;
     }
 
+    /** DEPRECATED 
+     * @see Focus
+     */
     protected float getZoom() { return 1; }
 }
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.7 
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.8
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.7    Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java        Thu Jun 19 
07:57:47 2003
@@ -57,6 +57,7 @@
     public FisheyeMainNode2D(Object plane, View2D view2d,
                             Focus focus) {
        super(plane, view2d, focus);
+        focus.setZoom(1);
     }
 
 
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.24 
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.25
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.24  Mon Jun  9 15:03:13 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java       Thu Jun 19 07:57:47 2003
@@ -62,6 +62,7 @@
     public MainNode2D(Object plane, View2D view2d,
                   Focus focus, float zoom) {
        super(plane, view2d, focus);
+        focus.setZoom(zoom);
        this.zoom = zoom;
     }
     
Index: fenfire/org/fenfire/view/lava/FenPDFContext.java
diff -u fenfire/org/fenfire/view/lava/FenPDFContext.java:1.31 
fenfire/org/fenfire/view/lava/FenPDFContext.java:1.32
--- fenfire/org/fenfire/view/lava/FenPDFContext.java:1.31       Wed Jun 11 
13:00:25 2003
+++ fenfire/org/fenfire/view/lava/FenPDFContext.java    Thu Jun 19 07:57:48 2003
@@ -396,7 +396,11 @@
             if ( cursorOffset[CURR] < text.length())
                 cursorOffset[CURR]++;
        }
+        // normal alphabets etc.
        else if (stroke.length() == 1) {
+            char c = stroke.toCharArray()[0];
+            p("Pressed: '"+ stroke +"', ch: '"+c+"' and int: "+ (int)c);
+
            if (accursed[CURR]==null) {
                String paper = Nodes.toString(main.getPlane());
                String note = ppAct.newNote(paper, 
(int)main.getFocus().getPanX(),




reply via email to

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