gzz-commits
[Top][All Lists]
Advanced

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

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


From: Matti Katila
Subject: [Gzz-commits] fenfire ./Makefile org/fenfire/demo/buoyoing.py...
Date: Sun, 22 Jun 2003 14:18:15 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Matti Katila <address@hidden>   03/06/22 14:18:15

Modified files:
        .              : Makefile 
        org/fenfire/demo: buoyoing.py 
        org/fenfire/util: ControlBinding.java 
        org/fenfire/view/buoy: AbstractMainNode2D.java 

Log message:
        moving notes

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/Makefile.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.76&tr2=1.77&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.22&tr2=1.23&r1=text&r2=text

Patches:
Index: fenfire/Makefile
diff -u fenfire/Makefile:1.19 fenfire/Makefile:1.20
--- fenfire/Makefile:1.19       Fri Jun 13 08:01:23 2003
+++ fenfire/Makefile    Sun Jun 22 14:18:14 2003
@@ -21,7 +21,7 @@
 test:
        $(LDLIB) java -cp $(CLASSPATH) $(PYTHONPATH) org.python.util.jython 
org/fenfire/test/test.py -Dvob.api=gl $(DBG) $(TEST)
 
-DEMO=org/fenfire/demo/buoyoing.py
+DEMO?=org/fenfire/demo/buoyoing.py
 
 rundemo:
        $(LDLIB) java -cp $(CLASSPATH) $(PYTHONPATH) org.python.util.jython 
../libvob/rundemo.py $(DBG) $(DEMO)
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.76 
fenfire/org/fenfire/demo/buoyoing.py:1.77
--- fenfire/org/fenfire/demo/buoyoing.py:1.76   Sun Jun 22 12:17:18 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Sun Jun 22 14:18:14 2003
@@ -38,15 +38,15 @@
 
 from org import fenfire as ff
 from org.fenfire.swamp import Nodes
-
 from org.fenfire.vocab import RDF, CANVAS2D
+from org.fenfire.index import XuLink
+from org.fenfire.util import Pair
 
 from org.nongnu import alph
 from org.nongnu import storm
 
 from org.nongnu.alph.impl import PageImageScroll
 
-from org.fenfire.index import XuLink
 
 import vob
 w.setCursor('wait')
@@ -326,12 +326,14 @@
         w.setCursor('default')
 
 
+######## Actions to control pan of main nodes etc.
+
 class MovePanFast(ff.util.ControlBinding.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())
+        f.setPan( fX-x/f.getZoom(),fY-y/f.getZoom())
         self.obj.chgFast(self.oldVS)
 
 class MovePanSlow(ff.util.ControlBinding.AbstractController):
@@ -352,6 +354,37 @@
         self.obj.changeSize(x+y)
         self.obj.chgFast(self.oldVS)
 
+class AbstractContextController(ff.util.ControlBinding.AbstractController):
+    def __init__(self, context):
+        self.context = context
+
+class UnSelectNodeOnPlane(AbstractContextController):
+    def isChangeable(self): return 0
+    def controlPoint(self, x, y, scale):
+        self.context.setAccursed(None)
+        
+
+####### Actions to control nodes on main node plane
+
+class SelectNodeOnPlane(AbstractContextController):
+    def isChangeable(self): return 0
+    def controlPoint(self, x, y, scale):
+        self.context.setAccursed(self.obj.second)
+
+class MoveNodeOnPlane(AbstractContextController):
+    def isChangeable(self): return 1
+    def change(self, x,y):
+        f = self.obj.first.getFocus()
+        fX, fY = f.getPanX(), f.getPanY()
+        f.setPan( fX+x*.5/f.zoom,fY+y*.5/f.zoom)
+
+        node = self.obj.second
+        g = fen.graph
+        ox = ff.util.RDFUtil.getInt(g, node, CANVAS2D.x)
+        oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
+        ppAct.moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
+
+    
 class FenPDFActions:
     def __init__(self, context, mainNodes):
         self.context = context
@@ -360,13 +393,20 @@
 
         c = self.controlMains = ff.util.ControlBinding()
         c.add(MovePanFast(), -1, c.WHEEL, 7,0, c.VERTICAL)
-        c.add(MovePanFast(), 1, c.DRAG, 1.4, 0, c.ALL)
+        c.add(MovePanFast(), 1, c.DRAG, 1.3, 0, c.ALL)
         c.add(MovePanSlow(), 1, c.CLICK)
         c.add(ZoomPan(), 3, c.DRAG, 1, 0, c.VERTICAL)
         c.add(PanSize(), 3, c.DRAG, 1, 0, c.HORIZONTAL)
+        c.add(UnSelectNodeOnPlane(context), 3, c.CLICK)
+
+        c = self.controlNodesOnMain = ff.util.ControlBinding()
+        c.replaceVS = 0
+        c.add(SelectNodeOnPlane(context), 3, c.CLICK)
+        c.add(MoveNodeOnPlane(context), 1, c.DRAG)
+        
 
         #c.dbg=1
-        self.controls = [ self.controlMains ]
+        self.controls = [ self.controlMains, self.controlNodesOnMain ]
      
     def key(self, mngr, key):
         index = self.lastIndex
@@ -392,7 +432,8 @@
             for ctrl in self.controls:
                 if ctrl.hasPressState():
                     ctrl.handleEvent(None, ev, mngr.vs)
-                   mngr.replaceScene = mngr.vs
+                    if ctrl.replaceVS:
+                        mngr.replaceScene = mngr.vs
                    vob.AbstractUpdateManager.setNoAnimation()
                     vob.AbstractUpdateManager.chg()
                     return
@@ -417,6 +458,19 @@
            if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
                 self.context.setMainNodeIndex(i)
                 self.lastIndex = i
+
+                ### See if there's somtehing on a plane.
+                obj = mngr.singles[i].mainNode.getNodeOnPlane(mngr.vs, x,y)
+                if obj != None and \
+                       self.controlNodesOnMain.hasBinding(ev):
+                    if self.controlNodesOnMain.handleEvent( \
+                        Pair(mngr.singles[i].mainNode, obj), ev, mngr.vs):
+                        # can't replace vobscene!!
+                        #  mngr.replaceScene = mngr.vs
+                        vob.AbstractUpdateManager.setNoAnimation()
+                    vob.AbstractUpdateManager.chg()
+                    return
+
                 if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev, 
mngr.vs):
                    mngr.replaceScene = mngr.vs
                    vob.AbstractUpdateManager.setNoAnimation()
Index: fenfire/org/fenfire/util/ControlBinding.java
diff -u fenfire/org/fenfire/util/ControlBinding.java:1.3 
fenfire/org/fenfire/util/ControlBinding.java:1.4
--- fenfire/org/fenfire/util/ControlBinding.java:1.3    Sun Jun 22 12:14:02 2003
+++ fenfire/org/fenfire/util/ControlBinding.java        Sun Jun 22 14:18:14 2003
@@ -15,10 +15,7 @@
      *  associated with a controller.
      *  This is a typesafe enumeration.
      */
-    public static final class Type {
-       private Type() {}
-    }
-
+    public static final class Type { private Type() {} }
     public static final Type 
        CLICK = new Type(),
        DRAG = new Type(),
@@ -35,7 +32,7 @@
 
     static private boolean FAST = true;
     static private boolean ANIMATE = false;
-
+    public boolean replaceVS = true;
     
     // -- Methods to handle events wisely.
 
@@ -210,6 +207,33 @@
            this.scale=scale; this.dir=direction;
         }
     }    
+
+
+    public boolean hasBinding(MouseEvent event) {
+       if (event.getID() == event.MOUSE_PRESSED)
+           return true;
+       else if (event.getID() == event.MOUSE_WHEEL) {
+            for (int i=0; i<wheels.size(); i++)
+               return true;
+        }
+       else if (event.getID() == event.MOUSE_CLICKED) {
+           for (int i=0; i<clicks.size(); i++) {
+                Event e = (Event)clicks.get(i);
+               if (event.getModifiers() == e.mask)
+                   return true;
+            }
+        } 
+        else if (event.getID() == event.MOUSE_DRAGGED) {
+            for (int i=0; i<drags.size(); i++) {
+                Event e = (Event)drags.get(i);
+                if (event.getModifiers() == e.mask)
+                   return true;
+            }
+        }
+        return false;
+    }
+
+
 
     public interface Controller {
         boolean isChangeable();
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.22 
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.23
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.22  Sun Jun 22 
12:15:35 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java       Sun Jun 22 
14:18:14 2003
@@ -303,29 +303,32 @@
        // See around of objects
        if(m_state[2] == e.BUTTON2_MASK &&
           e.getID() == MouseEvent.MOUSE_CLICKED){
-           View2D view = getView2D();
-           while (view.getChildView2D() != null) 
-               view = view.getChildView2D();
-           
-           // currently only for canvas2d canvases
-           if (view instanceof CanvasView2D) {
-               
-               Object obj = ((CanvasView2D)view).getNode(oldVobScene, 
e.getX(), e.getY(), 
-                                                plane, box2screen, box2screen,
-                                                box2paper, null);
-               if (obj != null) if (dbg) p("Object is: "+ obj.toString());
-               context.setAccursed(obj);
-               AbstractUpdateManager.chg();
-           }
-           else p("not a canvas view?");
-
+           getNodeOnPlane(oldVobScene, e.getX(), e.getY());
            return false;
        }
 
-
        if(dbg) p("nothing!");
        return false;
     }
+
+    public Object getNodeOnPlane(VobScene oldVobScene, float x, float y) {
+       View2D view = getView2D();
+       while (view.getChildView2D() != null) 
+           view = view.getChildView2D();
+           
+       // currently only for canvas2d canvases
+       if (view instanceof CanvasView2D) {
+               
+           Object obj = ((CanvasView2D)view)
+               .getNode(oldVobScene, (int)x, (int)y, 
+                        plane, box2screen, box2screen,
+                        box2paper, null);
+           if (obj != null) if (dbg) p("Object is: "+ obj.toString());
+           return obj;
+       } else p("not a canvas view?");
+       return null;
+    }
+
 
     /** DEPRECATED 
      * @see Focus




reply via email to

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