gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] fenfire/org/fenfire demo/mm.py util/RDFUtil.jav...


From: Matti Katila
Subject: [Gzz-commits] fenfire/org/fenfire demo/mm.py util/RDFUtil.jav...
Date: Wed, 13 Aug 2003 06:17:51 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Matti Katila <address@hidden>   03/08/13 06:17:51

Modified files:
        org/fenfire/demo: mm.py 
        org/fenfire/util: RDFUtil.java 
        org/fenfire/view/lava: mindMapView2D.py 

Log message:
        mind map demo works better than nothing.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/mm.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/RDFUtil.java.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/mindMapView2D.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/demo/mm.py
diff -u fenfire/org/fenfire/demo/mm.py:1.2 fenfire/org/fenfire/demo/mm.py:1.3
--- fenfire/org/fenfire/demo/mm.py:1.2  Wed Aug 13 04:59:48 2003
+++ fenfire/org/fenfire/demo/mm.py      Wed Aug 13 06:17:51 2003
@@ -11,7 +11,6 @@
 
 import vob
 import org.fenfire as ff
-import org.fenfire.vocab.STRUCTLINK as LINK
 from org.fenfire.vocab import *
 from org.fenfire.vocab.lava import *
 from org.fenfire.swamp import Nodes
@@ -76,10 +75,12 @@
 mindView = ff.view.lava.mindMapView2D.MindMapView2D(fen, nodeview)
 
 
-class Context:
+class Context(ff.view.buoy.AbstractMainNode2D.Context):
     def __init__(self):
         self.rmb_switch = [ 'go', 'link', 'unlink' ]
         self.oldVS = None
+        self.main = None    # MainNode2D
+        self.fastMouseChg = 0  # callback from abstractmainnode2d when called 
mouse
         self._accursed = None
         self.offset = 0
     def nextRmb(self):
@@ -122,6 +123,24 @@
             self.offset = 0
     def getAccursed(self):
         return self._accursed
+
+
+    def rmLinkTo(self, obj, with):
+        iter = fen.graph.findN_11X_Iter(obj, STRUCTLINK.linkedTo)
+        try:
+            while (iter.hasNext()):
+                if with == iter.next():
+                    fen.graph.rm_111(obj, STRUCTLINK.linkedTo, with)
+            iter = fen.graph.findN_11X_Iter(with, STRUCTLINK.linkedTo)
+            while (iter.hasNext()):
+                if obj == iter.next():
+                    fen.graph.rm_111(with, STRUCTLINK.linkedTo, obj)
+        except: pass
+
+    def mainNodeToBeRender(self, vs,into, main): pass
+    def changeFastAfterMouseEvent(self): return self.fastMouseChg
+
+
 context = Context()
 
 class Action:
@@ -130,21 +149,67 @@
 
 class RMB(Action, vob.mouse.MouseClickListener):
     def clicked(self, x,y):
-        p('foo')
         self.context.nextRmb()
+        self.context.fastMouseChg = 0
 
 class Click(Action, vob.mouse.MouseClickListener):
     def clicked(self, x,y):
-        p('bar')
-        pass
+        vs = context.oldVS
+        node = vs.getKeyAt(0, x,y, None)
+        p('key', node)
+
+        if node == None: return
+
+        rmb = context.rmb_switch[0]
+        if rmb == 'go':
+            if node == self.context.main.getPlane():
+                pass
+            elif ff.util.RDFUtil.isLinked(fen.graph, node):
+                self.context.main.setNewPlane(node, 0,0,1)
+            self.context.setAccursed(node)
+        elif rmb == 'link':
+            if node == self.context.main.getPlane():
+                pass
+            elif ff.util.RDFUtil.isLinkedWith(fen.graph, node, 
self.context.main.getPlane()):
+                pass
+            else:
+                fen.graph.add(self.context.main.getPlane(), 
STRUCTLINK.linkedTo, node)
+        elif rmb == 'unlink':
+            if node == self.context.main.getPlane():
+                pass
+            else:
+                if ff.util.RDFUtil.isLinkedWith(fen.graph, node, 
self.context.main.getPlane()):
+                    self.context.rmLinkTo(node, self.context.main.getPlane())
+        self.context.fastMouseChg = 0
+
+
+class ZoomPan(vob.input.RelativeAxisListener, Action, 
vob.mouse.MousePressListener):
+    def pressed(self, x,y):
+        return self
+    def changedRelative(self, x):
+        self.context.main.changeZoom(x)
+        self.context.main.chgFast(self.context.oldVS, -1)
+        self.context.fastMouseChg = 1
+
+class PanMover(Action, vob.mouse.RelativeAdapter, 
vob.mouse.MousePressListener):
+    def pressed(self, x,y):
+        return self
+    def changedRelative(self, x,y='foo'):
+        f = self.context.main.getFocus()
+        fX, fY = f.getPanX(), f.getPanY()
+        f.setPan(fX-x/f.zoom,
+                 fY-y/f.zoom)
+        self.context.main.chgFast(self.context.oldVS, -1)
+        self.context.fastMouseChg = 1
+
 
 mindMouse = vob.mouse.MouseMultiplexer()
-mindMouse.setListener(3, 0, 
-                      'Right mouse button switching.',
-                      RMB(context))
-mindMouse.setListener(1, 0,
-                      'Foo', Click(context))
-                      
+mindMouse.setListener(3, 0, 'Right mouse button switching.', RMB(context))
+mindMouse.setListener(3, 0, mindMouse.VERTICAL, 1.0, \
+                      'Zooming the main view.', ZoomPan(context))
+mindMouse.setListener(1, 0, 'Foo', Click(context))
+mindMouse.setListener(1, 0,'Moving the pan around or the node if accursed.', \
+                      PanMover(context))
 
 
 class VeryStupidBuoyManager:
@@ -152,7 +217,9 @@
         self.main = ff.view.lava.mindMapView2D.MindMapMainNode2D(noteA2, 
mindView,
              ff.view.buoy.AbstractMainNode2D.SimpleFocus(0,0), mindMouse)
         self.main.init(fen, nodeview)
-
+        context.main = self.main
+        self.main.context = context
+        
     def scene(self, vs):
         context.oldVS = vs
         vs.put(background((.36, .74, 1.0)))
@@ -160,8 +227,13 @@
         self.main.renderMain(vs, cs)
 
     def mouse(self, ev):
-        self.main.mouse(ev, context.oldVS)
-
+        if self.main.mouse(ev, context.oldVS):
+            # replace scene..
+            p('fast')
+            # vob.AbstractUpdateManager.setNoAnimation()
+        else: p('slow')
+        vob.AbstractUpdateManager.chg()
+        
     def key(self, key):
         p("key: ", key)
         if key == 'Tab':
Index: fenfire/org/fenfire/util/RDFUtil.java
diff -u fenfire/org/fenfire/util/RDFUtil.java:1.16 
fenfire/org/fenfire/util/RDFUtil.java:1.17
--- fenfire/org/fenfire/util/RDFUtil.java:1.16  Sat Jul 19 05:04:36 2003
+++ fenfire/org/fenfire/util/RDFUtil.java       Wed Aug 13 06:17:51 2003
@@ -107,5 +107,16 @@
         return false;
     }
 
+    /** Special call for structure linked vocabulary to test if node is linked 
with node2.
+     * @see STRUCTLINK
+     */
+    static public boolean isLinkedWith(Graph graph, Object node, Object node2) 
{
+        Iterator it = graph.findN_11X_Iter(node, STRUCTLINK.linkedTo);
+        if (it.hasNext() && node2 == it.next()) return true;
+        it = graph.findN_X11_Iter(STRUCTLINK.linkedTo, node);
+        if (it.hasNext() && node2 == it.next()) return true;
+        return false;
+    }
+
 }
 
Index: fenfire/org/fenfire/view/lava/mindMapView2D.py
diff -u fenfire/org/fenfire/view/lava/mindMapView2D.py:1.6 
fenfire/org/fenfire/view/lava/mindMapView2D.py:1.7
--- fenfire/org/fenfire/view/lava/mindMapView2D.py:1.6  Wed Aug 13 04:59:48 2003
+++ fenfire/org/fenfire/view/lava/mindMapView2D.py      Wed Aug 13 06:17:51 2003
@@ -19,14 +19,10 @@
 
 dbg = 0
 
-
-
 paper = vob.gl.SpecialPapers.selectionPaper(None);
 whiteground = vob.gl.GLRen.createFixedPaperQuad(paper, 0, 0, 1, 1, 0, 10, 10, 
10);
 
 
-
-
 class MindMapMainNode2D(ff.view.buoy.MainNode2D):
     def __init__(self, plane, view2d, focus, controller):
        ff.view.buoy.MainNode2D.__init__(self, plane, view2d, controller);
@@ -76,9 +72,9 @@
         cs_background = vs.orthoCS(cs,'WHITE_GROUND',0, 0,0, p.getWidth(), 
p.getHeight())
         vs.put(whiteground, cs_background)
         
-        cs = vs.orthoBoxCS(cs,'CONTENT',0, 0,0, 1,1, p.getWidth(), 
p.getHeight())
+        cs = vs.orthoBoxCS(cs,node,0, 0,0, 1,1, p.getWidth(), p.getHeight())
         p.place(vs, cs)
-
+        vs.coords.activate(cs)
 
 class MindNet:
     """ Keeps up nodes in hashmap of 'linked to' nodes in hashmap.
@@ -135,7 +131,7 @@
         self.whiteground = vob.gl.GLRen.createFixedPaperQuad(paper, 0, 0, 1, 
1, 0, 10, 10, 10);
 
     def getSize(self, node, wh):
-        s = 240
+        s = -1 # s = 240
         wh[0], wh[1] = s, s
 
 
@@ -161,7 +157,6 @@
        paper2box = vs.invertCS(box2plane, "minMap_INv")
        paper2screen = vs.concatCS(box2screen, 'mindMap_CONCAT',
                                    paper2box)
-        
 
         # nodes which has been handled
         self.nodes = java.util.HashMap()
@@ -253,7 +248,7 @@
                 if dbg: p('old node', pl)
 
         # debugging..
-        if 1:
+        if dbg:
             p('main node:',self.alphContent.getText(node))
             for n in links:
                 p('    ',self.alphContent.getText(n),self.nodes.get(n))
@@ -271,8 +266,8 @@
         x,y = xy[0], xy[1]
 
         s = self.getNodeSize(deepnes)
-        cs = vs.coords.orthoBox(into,0, x-s/2.0,y-s/2.0, 1,1, s,s)
-        if 1 or dbg:
+        cs = vs.orthoBoxCS(into,'foo'+str(key),0, x-s/2.0,y-s/2.0, 1,1, s,s)
+        if dbg:
             p('come:',x0,y0, angle, dirAngle)
             p(cs, xy, angle, s)
         return [cs, x, y, angle]
@@ -292,9 +287,9 @@
         cs_background = vs.orthoCS(cs,'background',0, 0,0, p.getWidth(), 
p.getHeight())
         vs.put(whiteground, cs_background)
 
-        cs = vs.orthoBoxCS(cs,'content',0, 0,0, 1,1, p.getWidth(), 
p.getHeight())
+        cs = vs.orthoBoxCS(cs, node,0, 0,0, 1,1, p.getWidth(), p.getHeight())
         p.place(vs, cs)
-
+        vs.coords.activate(cs)
 
 
 




reply via email to

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