gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi...


From: Matti Katila
Subject: [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi...
Date: Tue, 01 Jul 2003 12:33:34 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Matti Katila <address@hidden>   03/07/01 12:33:34

Modified files:
        org/fenfire/demo: actions.py buoyoing.py fenpdfcontext.py 
                          mind.py 
        org/fenfire/util: ControlBinding.java 
        org/fenfire/view: AreaSelectingView2D.java TextNodeView.java 
                          TextNodeView.test 
        org/fenfire/view/buoy: AbstractMainNode2D.java 
                               FisheyeMainNode2D.java MainNode2D.java 
        org/fenfire/view/lava: ContextNodeView.java FenPDFContext.java 
        org/fenfire/vocab/lava: MINDSTRUCT.java 

Log message:
        more selecting

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/actions.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.86&tr2=1.87&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/fenpdfcontext.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/mind.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/AreaSelectingView2D.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/TextNodeView.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/TextNodeView.test.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.28&tr2=1.29&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/ContextNodeView.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/FenPDFContext.java.diff?tr1=1.34&tr2=1.35&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/actions.py
diff -u fenfire/org/fenfire/demo/actions.py:1.6 
fenfire/org/fenfire/demo/actions.py:1.7
--- fenfire/org/fenfire/demo/actions.py:1.6     Fri Jun 27 10:00:33 2003
+++ fenfire/org/fenfire/demo/actions.py Tue Jul  1 12:33:33 2003
@@ -35,10 +35,7 @@
 
 ######## Actions to control pan of main nodes etc.
 
-class MovePanFast(AbstractContextController):
-    def __init__(self, context, select):
-        AbstractContextController.__init__(self, context)
-        self.select = select
+class MovePanFast(ff.util.ControlBinding.AbstractController):
     def isChangeable(self): return 1
     def change(self, x, y):
         if dbg: p('move pan fast')
@@ -47,14 +44,6 @@
         f.setPan( fX-x/f.zoom, fY-y/f.zoom)
         self.obj.chgFast(self.oldVS)
 
-        if dbg: self.context.states.p()
-        if self.context.states.hasCtrl():
-            xy = self.context.states.getPressPans()
-            self.obj.setSelection(xy[0], xy[1], f.getPanX(), f.getPanY())
-        else: self.obj.setSelection(0,0,0,0)
-
-
-
 class MovePanSlow(ff.util.ControlBinding.AbstractController):
     def isChangeable(self): return 0
     def controlPoint(self, x, y, scale):
@@ -102,45 +91,69 @@
         oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
         self.obj[3].moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
 
+####### Actions to control selection
+
+class SelectArea(AbstractContextController):
+    def isChangeable(self): return 0
+    def tryFast(self): return 0
+    def controlPoint(self, x, y, scale):
+        if dbg: self.context.states.p()
+        xy = self.obj.getXYHit(self.oldVS, x,y)
+        oldXY = self.context.states.getPressPans()
+        self.context.selection.setArea(oldXY[0], oldXY[1], xy[0], xy[1])
+
 
-####### Dispatcher for plane events
+####### Dispatcher for plane events etc.
 
-class PlaneDispatcher(ff.util.ControlBinding):
-    def __init__(self, main, plane, graph, pp):
+class ControlsDispatcher(ff.util.ControlBinding):
+    def __init__(self, main, plane, withCtrl, graph, pp):
         self.m = main
         self.p = plane
-        self.all = [ main, plane ]
+        self.c = withCtrl
+        self.all = [ main, plane, withCtrl ]
         self.last = main
+        self.args = main
         self.graph = graph
         self.pp = pp
 
     def handleEvent(self, main, ev, vs):
-
         if ev.getID() == ev.MOUSE_DRAGGED:
             if dbg: p('drag')
             return self.last.handleEvent(self.args, ev, vs)
         elif ev.getID() == ev.MOUSE_PRESSED:
-            xy = main.getXYHitOnPlane(vs, ev.getX(), ev.getY())
+            xy = main.getXYHit(vs, ev.getX(), ev.getY())
             self.context.states.setPressPans(xy[0], xy[1])
+            if dbg: self.context.states.p()
 
         if dbg: p('event', ev)
         obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY())
         if dbg: p(obj)
-        if ev.getID() == ev.MOUSE_CLICKED:
-            if obj != None and self.p.hasBinding(ev):
-                p('object on plane click')
-                self.last = self.p
-                self.args = [main, obj, self.graph, self.pp]
-                return self.p.handleEvent(self.args, ev, vs)
 
-        # Drag if something under mouse pointer is accursed!
-        if obj != None and self.p.hasBinding(ev) and 
self.context.isAccursed(obj):
-            self.last = self.p
-            self.args = [main, obj, self.graph, self.pp]
-        else:
-            p('something else')
-            self.last = self.m
+        self.context.selection.setCurrentPlane(main.getPlane())
+
+        # Special case if user has pressed 'Ctrl'
+        if self.context.states.hasCtrl():
+            self.last = self.c
             self.args = main
+        else:
+            if ev.getID() == ev.MOUSE_CLICKED:
+                if obj != None and self.p.hasBinding(ev):
+                    self.last = self.p
+                    self.args = [main, obj, self.graph, self.pp]
+                    return self.p.handleEvent(self.args, ev, vs)
+
+            # Drag if something under mouse pointer is accursed!
+            if obj != None and self.p.hasBinding(ev) and 
self.context.isAccursed(obj):
+                self.last = self.p
+                self.args = [main, obj, self.graph, self.pp]
+            else:
+                self.last = self.m
+                self.args = main
+
+        if 0 and ev.getID() != ev.MOUSE_PRESSED and not 
self.last.hasPressState():
+            self.removePressState()
+            self.last.setPressStateByForce(ev)
+            raise 'set press state by force - should not happen', ev
         return self.last.handleEvent(self.args, ev, vs)
     def removePressState(self):
         for c in self.all:
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.86 
fenfire/org/fenfire/demo/buoyoing.py:1.87
--- fenfire/org/fenfire/demo/buoyoing.py:1.86   Fri Jun 27 10:00:34 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Tue Jul  1 12:33:33 2003
@@ -54,6 +54,7 @@
 import vob
 w.setCursor('wait')
 
+
 vob.putil.demo.usingNormalBindings = 0
 
 vob.buoy.buoymanager.replaceNewScene = vob.putil.demo.replacingScene
@@ -112,26 +113,29 @@
 
 textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
 textnodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
+#textnodeview = ff.view.lava.RSTText(fen.txtfunc, textstyle, 1)
 pagenodeview = ff.view.PageNodeView(fen.txtfunc)
 dispnodeview = ff.view.DispatchingNodeView(fen.txtfunc,
                                            textnodeview,
                                            pagenodeview)
-cached = ff.swamp.CachedNodeFunction(50, fen.constgraph, dispnodeview)
-nodeview = ff.view.lava.ContextNodeView(cached, dispnodeview)
+#cached = ff.swamp.CachedNodeFunction(50, fen.constgraph, dispnodeview)
+nodeview = ff.view.lava.ContextNodeView(dispnodeview, fen.constgraph, 150)
 view = ff.view.CanvasView2D(fen, nodeview)
 view.cull = 1
 paperview = ff.view.PaperView2D(vob.putil.demowindow.w, view)
-irregu = ff.view.IrregularViewportView2D(paperview)
+selection = ff.view.AreaSelectingView2D(paperview)
+irregu = ff.view.IrregularViewportView2D(selection)
 
 ff.view.buoy.NodeType2D.effigy = 0
 ff.view.buoy.NodeType2DFull.effigy = 0
 
 main_ctrl = ff.util.ControlBinding()
 node_ctrl = ff.util.ControlBinding()
-ctrl = PlaneDispatcher(main_ctrl, node_ctrl, fen.graph, ppAct)
+ctrlkey_ctrl = ff.util.ControlBinding()
+ctrl = ControlsDispatcher(main_ctrl, node_ctrl, ctrlkey_ctrl, fen.graph, ppAct)
 
 #context = ff.view.lava.FenPDFContext(fen, ppAct, nodeview, ctrl)
-context = Context(w, fen, ppAct, nodeview, ctrl)
+context = Context(w, fen, ppAct, nodeview, ctrl, selection)
 
 context.initMainNodes(2)
 nodeview.setContext(context)
@@ -147,20 +151,18 @@
 
 # Default controls
 
-selectview = None
-
 ctrl.setContext(context)
-main_ctrl.add(MovePanFast(context, selectview), -1, ctrl.WHEEL, 7,0, 
ctrl.VERTICAL)
-main_ctrl.add(MovePanFast(context, selectview), 1, ctrl.DRAG, 1, 0, ctrl.ALL)
+main_ctrl.add(MovePanFast(), -1, ctrl.WHEEL, 7,0, ctrl.VERTICAL)
+main_ctrl.add(MovePanFast(), 1, ctrl.DRAG, 1, 0, ctrl.ALL)
 main_ctrl.add(MovePanSlow(), 1, ctrl.CLICK)
 main_ctrl.add(ZoomPan(), 3, ctrl.DRAG, 1, 0, ctrl.VERTICAL)
 main_ctrl.add(PanSize(), 3, ctrl.DRAG, 1, 0, ctrl.HORIZONTAL)
 main_ctrl.add(UnSelectNodeOnPlane(context), 3, ctrl.CLICK)
 
-node_ctrl.add(SelectNodeOnPlane(context), 3, node_ctrl.CLICK)
-node_ctrl.add(MoveNodeOnPlane(context), 1, node_ctrl.DRAG)
-
+node_ctrl.add(SelectNodeOnPlane(context), 3, ctrl.CLICK)
+node_ctrl.add(MoveNodeOnPlane(context), 1, ctrl.DRAG)
 
+ctrlkey_ctrl.add(SelectArea(context), 1, ctrl.DRAG)
 
 
 
@@ -177,8 +179,6 @@
 mainNode2 = ff.view.buoy.MainNode2D(planeHome, irregu, ctrl)
 #mainNode = ff.view.buoy.MainNode2D(plane, paperview, ctrl)
 
-#connector = ff.view.buoy.PPConnector(fen, paperviewonly)
-#connector.hackForTesting = 1
 
 ppconnector = ff.view.buoy.PPConnector(fen, irregu, 
                        ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl),
@@ -189,19 +189,22 @@
 #          ff.view.PaperView2D(vob.putil.demowindow.w, 
 #                      ff.view.PageScrollView2D()))
 pagescroll2d = ff.view.PageScrollView2D()
+
+
 tconnector.normalNodeNodeType = ff.view.buoy.NodeType2D(irregu,
                        ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl))
 tconnector.pageImageScrollNodeType = ff.view.buoy.NodeType2DFull(pagescroll2d, 
ff.view.buoy.FisheyeMainNode2D.FisheyeMainNode2DFactory(ctrl))
 
 
 class DoubleGeometer:
-    def __init__(self, mgr, context):
+    def __init__(self, mgr, context, nodeview):
        self.split = .5
        self.height = 100
        self.width = 100
         self.mgr = mgr
         self.context = context
         self.context.setMngr(mgr)
+        self.nv = nodeview
     def _doset(self, vs):
 
         w,h = vs.size.width, vs.size.height
@@ -290,6 +293,7 @@
 
         if ev.getID() == ev.MOUSE_RELEASED:
             ctrl.removePressState()
+            self.context.states.clean()
             w.setCursor('default')
             return 1
        #return 0
@@ -301,7 +305,7 @@
         planes = []
         for single in self.mgr.singles:
             planes.append(single.getMainNode())
-        newPlanes = self.context.doMouse(ev, oldvs, planes)
+        newPlanes = self.context.doMouse(ev, oldvs, planes, self.nv)
         if newPlanes != None and planes != newPlanes:
             for i in range(0, len(newPlanes)):
                 self.mgr.singles[i] = vob.buoy.buoymanager.SingleFocusManager(
@@ -362,7 +366,7 @@
     def __init__(self):
        vob.buoy.buoymanager.MultiBuoyManager.__init__(self, 
                [mainNode, mainNode2], [ppconnector, tconnector],
-               DoubleGeometer(self, context),
+               DoubleGeometer(self, context, nodeview),
                 context=context)
         w.setCursor('default')
 
Index: fenfire/org/fenfire/demo/fenpdfcontext.py
diff -u fenfire/org/fenfire/demo/fenpdfcontext.py:1.4 
fenfire/org/fenfire/demo/fenpdfcontext.py:1.5
--- fenfire/org/fenfire/demo/fenpdfcontext.py:1.4       Fri Jun 27 10:00:34 2003
+++ fenfire/org/fenfire/demo/fenpdfcontext.py   Tue Jul  1 12:33:33 2003
@@ -52,7 +52,7 @@
 
 class ContextStates:
     def __init__(self):
-        self.ctrl = 0
+        self.clean()
     def chgCtrl(self):
         self.ctrl = not self.ctrl
         if self.ctrl:
@@ -67,15 +67,19 @@
         return [ self.pressPanX, self.pressPanY ]
     def p(self):
         p('Pans', self.pressPanX, self.pressPanY)
+    def clean(self):
+        self.ctrl = 0
+        
 
 class Context(ff.view.lava.FenPDFContext, SuperCaller):
-    def __init__(self, win, fen, pp, nv, ctrl):
+    def __init__(self, win, fen, pp, nv, ctrl, selection):
         self.super = self.superproxy(ff.view.lava.FenPDFContext)
         ff.view.lava.FenPDFContext.__init__(self, fen, pp, nv, ctrl)
         self.states = ContextStates()
         self.keys = KeyHandler(self.states)
         global w
         w = win
+        self.selection = selection
     def setMngr(self, mngr):
         self.mgr = mngr
     def key(self, key):
Index: fenfire/org/fenfire/demo/mind.py
diff -u fenfire/org/fenfire/demo/mind.py:1.1 
fenfire/org/fenfire/demo/mind.py:1.2
--- fenfire/org/fenfire/demo/mind.py:1.1        Wed Jun 25 15:40:27 2003
+++ fenfire/org/fenfire/demo/mind.py    Tue Jul  1 12:33:33 2003
@@ -214,7 +214,7 @@
 
         if len(links) == 0: return
 
-        angle = 360.0/len(links)
+        angle = 2 * Math.PI/len(links)
         xx,yy = int(x), int(y)
         for i in range(len(links)):
             li = links[i]
@@ -250,8 +250,8 @@
         return [ vs.orthoBoxCS(0, key, 0,x-bx/2,y-by/2, 1,1, bx,by), x, y]
 
     def getXY(self, x0, y0, angle, deepnes):
-        angle += 0.5 * Math.PI
-        angle %= 2.0 * Math.PI
+#        angle += 0.5 * Math.PI
+#        angle %= 2.0 * Math.PI
         wi, h = vs.size.width, vs.size.height
         d = 1./(4+deepnes)
         r = wi/2 * d
Index: fenfire/org/fenfire/util/ControlBinding.java
diff -u fenfire/org/fenfire/util/ControlBinding.java:1.9 
fenfire/org/fenfire/util/ControlBinding.java:1.10
--- fenfire/org/fenfire/util/ControlBinding.java:1.9    Wed Jun 25 20:29:25 2003
+++ fenfire/org/fenfire/util/ControlBinding.java        Tue Jul  1 12:33:33 2003
@@ -67,6 +67,10 @@
     }
     public boolean hasPressState() { return pressState!=null; }
 
+    public void setPressStateByForce(MouseEvent event) {
+       pressState = event;
+    }
+
 
     // keeping track of drags for specific object
     private Object accursedObj = null;
@@ -119,7 +123,7 @@
                     return FAST;
                 } else {
                     c.controlPoint(x,y, scale);
-                    return ANIMATE;
+                    return c.tryFast(); //ANIMATE;
                 }
             }
         }
@@ -136,7 +140,7 @@
                     if (c.isChangeable()) 
                         throw new Error("Clicks can't be used to measure of 
change.");
                     else c.controlPoint(x, y, scale);
-                    return ANIMATE;
+                    return c.tryFast(); //ANIMATE;
                 }
             }
         } 
@@ -175,7 +179,7 @@
                         ret = FAST;
                     }
                     else c.controlPoint(x, y, scale);
-                    ret = ANIMATE;
+                    ret = c.tryFast();  //ANIMATE;
                 }
             }
            lastEvent = event; 
@@ -275,6 +279,7 @@
 
     public interface Controller {
         boolean isChangeable();
+       boolean tryFast();
         void change(float x, float y);
         void controlPoint(float x, float y, float scale);
         void set(Object obj, VobScene oldVS);
@@ -283,9 +288,14 @@
     public static abstract class AbstractController implements Controller {
        public AbstractController() {}
         public abstract boolean isChangeable();
+       public boolean tryFast() { return isChangeable(); } 
 
-        public void change(float x, float y) { }
-        public void controlPoint(float x, float y, float scale) {}
+        public void change(float x, float y) { 
+           if (dbg) p("change");
+       }
+        public void controlPoint(float x, float y, float scale) {
+           if (dbg) p("controlPoint");
+       }
 
        // need to be public to be accessible from Python...
         public Object obj = null;
Index: fenfire/org/fenfire/view/AreaSelectingView2D.java
diff -u fenfire/org/fenfire/view/AreaSelectingView2D.java:1.5 
fenfire/org/fenfire/view/AreaSelectingView2D.java:1.6
--- fenfire/org/fenfire/view/AreaSelectingView2D.java:1.5       Fri Jun 27 
10:00:34 2003
+++ fenfire/org/fenfire/view/AreaSelectingView2D.java   Tue Jul  1 12:33:33 2003
@@ -19,6 +19,10 @@
         this.x0 = x0; this.y0 = y0;
         this.x1 = x1; this.y1 = y1;
     }
+
+    private Object current = null;
+    public void setCurrentPlane(Object obj) { current = obj; }
+
     private Paper paper;
     private GLRen.FixedPaperQuad pq;
 
@@ -41,10 +45,12 @@
            child.render(vs, plane, matchingParent,
                         box2screen, box2paper);
 
+       if (current != plane) return;
+
        int paper2box = vs.invertCS(box2paper, "areaselectview_INv");
        int paper2screen = vs.concatCS(box2screen, "areaselectview_conc",
                                    paper2box);
-        int cs = vs.orthoCS(paper2screen, "selection", 0, x0,y0,x1,y1);
+       int cs = vs.orthoCS(paper2screen, "selection", 0, x0,y0,x1,y1);
         vs.put(pq, cs);
 
     }
Index: fenfire/org/fenfire/view/TextNodeView.java
diff -u fenfire/org/fenfire/view/TextNodeView.java:1.8 
fenfire/org/fenfire/view/TextNodeView.java:1.9
--- fenfire/org/fenfire/view/TextNodeView.java:1.8      Mon Jun 16 07:55:04 2003
+++ fenfire/org/fenfire/view/TextNodeView.java  Tue Jul  1 12:33:33 2003
@@ -39,7 +39,7 @@
  *  currently, places text as a single very long line.
  */
 public class TextNodeView extends TextHandler implements NodeFunction {
-public static final String rcsid = "$Id: TextNodeView.java,v 1.8 2003/06/16 
11:55:04 mudyc Exp $";
+public static final String rcsid = "$Id: TextNodeView.java,v 1.9 2003/07/01 
16:33:33 mudyc Exp $";
     public static boolean dbg = false;
     private static void pa(String s) { System.out.println("TextNodeView::"+s); 
}
 
@@ -73,6 +73,13 @@
        
        final Object objNode = node;
        String s = enf.makeString();
+       if (s.length() == 0) 
+           return new org.nongnu.libvob.lava.placeable.Placeable() {
+               public void place(VobScene vs, int into) {
+               }
+               public float getWidth() { return 10; }
+               public float getHeight() { return 10; }
+           };
 
        HChain ch = getChain(s);
        final HBroken br = breaker.breakLines(ch, width, scale);
Index: fenfire/org/fenfire/view/TextNodeView.test
diff -u fenfire/org/fenfire/view/TextNodeView.test:1.5 
fenfire/org/fenfire/view/TextNodeView.test:1.6
--- fenfire/org/fenfire/view/TextNodeView.test:1.5      Mon Jun 16 07:55:04 2003
+++ fenfire/org/fenfire/view/TextNodeView.test  Tue Jul  1 12:33:33 2003
@@ -34,15 +34,15 @@
 
 gfx.needGL()
 
+    
 def testNotEmptyAndEmptyNodes():
+#    fail: GL
     """
-    fail: GL
     """
     vs = gfx.getvs()
 
     # Create fen with swamps.
     fen = ff.test.fen.newFen()
-    rst = ff.modules.pp.RSTActionsImpl(fen)
 
     textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
     textnodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
@@ -50,36 +50,18 @@
     view.cull = 1
     paperview = ff.view.PaperView2D(gfx.win, view)
 
-    canvas = rst.newRSTCanvas()
-    parag = rst.newParagraph(canvas, 200, 10,10)
-    senten = rst.newSentence(parag,0)
     note = ff.swamp.Nodes.N()
-    ff.util.AlphContent(fen).setText(note, 'This is rst canvas test', 1)
-    rst.insertNode(senten, note, 0)
+    paper = ff.util.RDFUtil.N(fen.graph, ff.vocab.CANVAS2D.Canvas)
+    fen.graph.add(paper, ff.vocab.STRUCTLINK.linkedTo, note)
+    ff.util.AlphContent(fen).setText(note, '', 1)
 
-    mainNode = ff.view.buoy.MainNode2D(canvas, paperview)
-
-    # set context...
-    context = ff.view.FenPDFContext(fen, rst, textnodeview)
-    context.setAccursed(note)
-    context.setRSTNode(senten)
-    context.setCursorOffset(3)
-    mainNode.context = context
-    rst.util.generateBasicSpatialCoords(canvas, textnodeview)
+    mainNode = ff.view.buoy.MainNode2D(paper, paperview, None)
 
     vs.map.put(vob.vobs.SolidBackdropVob(java.awt.Color.green))
     into = vs.orthoBoxCS(0, "FocusFrame", 0,
                          30, 30, 1, 1, 50, 50)
     mainNode.renderMain(vs, into)
     gfx.render(vs)
-
-
-    # put up some empty nodes and test will jam 
-    mainNode.keystroke('Space')
-    mainNode.keystroke('Space')
-    mainNode.keystroke('Space')
-    mainNode.keystroke('Return')
-    rst.util.generateBasicSpatialCoords(canvas, textnodeview)
 
     vs = gfx.getvs()
     vs.map.put(vob.vobs.SolidBackdropVob(java.awt.Color.green))
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.28 
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.29
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.28  Fri Jun 27 
10:00:34 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java       Tue Jul  1 
12:33:33 2003
@@ -119,17 +119,15 @@
      */
     static public org.fenfire.view.lava.FenPDFContext context = null;
     public void keystroke(String s) {
-       context.handleKeyStroke(s, this);
-    }
-
-    protected AreaSelectingView2D selection = new AreaSelectingView2D(null);
-    public void setSelection(float x, float y, float x1, float y1) {
-        selection.setArea(x,y,x1,y1);
+       if (context != null)
+           context.handleKeyStroke(s, this);
     }
 
     public void renderMain(VobScene vs, int into) {
-        context.mainNodeToBeRender(vs, into, this);
-        // extending classes will render after this.
+        // inherited classes will render before this.
+       if (context != null)
+           context.mainNodeToBeRender(vs, into, this);
+
     }
     public interface Render {
        void mainNodeToBeRender(VobScene vs, int into,
@@ -165,18 +163,15 @@
        }
     }
 
-    public float[] getXYHitOnPlane(VobScene oldVobScene, float x, float y) {
+    public float[] getXYHit(VobScene oldVobScene, float x, float y) {
        float[] pt = new float[] { x, y, 0 };
-       float[] sq = new float[2];
-       oldVobScene.coords.inverseTransformPoints3(
-            box2screen, pt, pt);
-       if (this instanceof MainNode2D) {
-               return pt;
-       } else if (this instanceof FisheyeMainNode2D) {
-           oldVobScene.coords.transformPoints3(box2paper, pt, pt);
-            return pt;
-       } else throw new Error("No known main node view2d");
-    } 
+       if (dbg) p("P1: "+pt[0]+" "+pt[1]+" "+pt[2]);
+       oldVobScene.coords.inverseTransformPoints3(box2screen, pt, pt);
+       if (dbg) p("P2: "+pt[0]+" "+pt[1]+" "+pt[2]);
+       oldVobScene.coords.transformPoints3(box2paper, pt, pt);
+       if (dbg) p("P3: "+pt[0]+" "+pt[1]+" "+pt[2]);
+       return pt;
+    }
 
     public boolean isHitInsidePlane(int x, int y, VobScene oldVobScene) {
        float[] pt = new float[] { x, y, 0 };
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.12 
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.13
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.12   Fri Jun 27 
10:00:34 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java        Tue Jul  1 
12:33:33 2003
@@ -99,7 +99,6 @@
 
        view2d.render(vs, plane, into, box2screen, box2paper);
 
-       selection.render(vs, plane, into, box2screen, box2paper);
         super.renderMain(vs, into);
     }
     
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.30 
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.31
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.30  Fri Jun 27 10:00:34 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java       Tue Jul  1 12:33:33 2003
@@ -91,8 +91,6 @@
        setZoomPan(vs, box2paper);
        view2d.render(vs, plane, into, into, box2paper);
 
-        selection.render(vs, plane, into, into, box2paper);
-
         super.renderMain(vs, into);
     }
 
@@ -102,4 +100,5 @@
                        focus.getPanX()-boxw/zoom/2, 
focus.getPanY()-boxh/zoom/2, 
                                    1/zoom, 1/zoom, boxw, boxh);
     }
+    
 }
Index: fenfire/org/fenfire/view/lava/ContextNodeView.java
diff -u fenfire/org/fenfire/view/lava/ContextNodeView.java:1.2 
fenfire/org/fenfire/view/lava/ContextNodeView.java:1.3
--- fenfire/org/fenfire/view/lava/ContextNodeView.java:1.2      Wed Jun 11 
13:00:24 2003
+++ fenfire/org/fenfire/view/lava/ContextNodeView.java  Tue Jul  1 12:33:33 2003
@@ -32,21 +32,27 @@
 import org.nongnu.libvob.vobs.*;
 
 /** This node function uses caching for nodes which aren't focused,
- * othervise uses noncached node functions. 
+ * othervise uses noncached node functions. Caching can be 
+ * reinitialized i.e., after loading a new state of graph.
  */
 public class ContextNodeView implements NodeFunction {
 
-    final NodeFunction cached, unCached;
+    final private NodeFunction nodef;
+    private NodeFunction cached, unCached;
     private ContextNodeView.Context context = null;
     private NodeFunction current;
 
-    public ContextNodeView(NodeFunction cached, 
-                    NodeFunction uncached)
-        {
-            this.cached = cached;
-            this.unCached = uncached;
-            current = unCached;
+    public ContextNodeView(NodeFunction nodef, ConstGraph graph, int n) {
+       this.nodef = nodef;
+       this.unCached = nodef;
+       current = unCached;
+       reinit(graph, n);
     }
+
+    public void reinit(ConstGraph graph, int n) {
+       this.cached = new CachedNodeFunction(n, graph, nodef);
+    }
+
     public void setContext(ContextNodeView.Context context) {
         this.context = context;
     }
Index: fenfire/org/fenfire/view/lava/FenPDFContext.java
diff -u fenfire/org/fenfire/view/lava/FenPDFContext.java:1.34 
fenfire/org/fenfire/view/lava/FenPDFContext.java:1.35
--- fenfire/org/fenfire/view/lava/FenPDFContext.java:1.34       Mon Jun 23 
14:16:19 2003
+++ fenfire/org/fenfire/view/lava/FenPDFContext.java    Tue Jul  1 12:33:33 2003
@@ -222,7 +222,7 @@
     /** @return new or old mainnodes. null is good also.
      */
     public AbstractMainNode2D[] doMouse(MouseEvent e, VobScene oldVS,
-                            AbstractMainNode2D[] mainNodes) 
+                            AbstractMainNode2D[] mainNodes, ContextNodeView 
cnv) 
        throws RemoteException, IOException, RDFException
     {
         p("planes: " + mainNodes);
@@ -303,13 +303,14 @@
                Model m = new ModelMem();
                m.read(new FileReader("myFenfire/mygraph.rdf"), null);
                fen.constgraph = fen.graph = Graphs.toGraph(m);
+               cnv.reinit(fen.graph, 200);
                 int i = 0;
                 Iterator it = fen.graph.findN_11X_Iter(SAVE.State, SAVE.point);
                 p("Going to iterate graph if iter has: " + it.hasNext());
                 while (it.hasNext() && i<mainNodes.length) {
                     Object plane = it.next();
-                    if (fen.graph.find1_11X(plane, RDF.type) == 
-                        CANVAS2D.Canvas) {
+                   p("plane: " + plane);
+                    if (RDFUtil.isNodeType(fen.graph, plane, CANVAS2D.Canvas)) 
{
                         mainNodes[i] = new MainNode2D(plane, 
                                                       ppView, new 
MainNode2D.SimpleFocus(0,0),1,
                                                      controller);
Index: fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java
diff -u fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java:1.1 
fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java:1.2
--- fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java:1.1  Wed Jun 25 15:39:42 2003
+++ fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java      Tue Jul  1 12:33:33 2003
@@ -8,7 +8,7 @@
  */
 public class MINDSTRUCT {
     static public final String _nsId = 
-        "http://fenfire.org/rdf-v/EXPERIMENTAL/2003/06/mindstruct";;
+        "http://fenfire.org/EXPERIMENTAL/rdf-v/2003/06/mindstruct";;
 
     static public final Object Data;
     static public final Object link;




reply via email to

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