fenfire-commits
[Top][All Lists]
Advanced

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

[ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp...


From: Tuomas J. Lukka
Subject: [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp...
Date: Thu, 21 Aug 2003 04:15:23 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Tuomas J. Lukka <address@hidden>        03/08/21 04:15:23

Modified files:
        org/fenfire/bin: fenpdf10.py 
        org/fenfire/fenpdf: fenpdf.py 
        org/fenfire/fenpdf/actions: mouse.py 
        org/fenfire/fenpdf/events: mouse.py 

Log message:
        Rearrange actions - no more passing context to them

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/bin/fenpdf10.py.diff?tr1=1.61&tr2=1.62&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/fenpdf.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/actions/mouse.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/events/mouse.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/bin/fenpdf10.py
diff -u fenfire/org/fenfire/bin/fenpdf10.py:1.61 
fenfire/org/fenfire/bin/fenpdf10.py:1.62
--- fenfire/org/fenfire/bin/fenpdf10.py:1.61    Thu Aug 21 03:29:44 2003
+++ fenfire/org/fenfire/bin/fenpdf10.py Thu Aug 21 04:15:22 2003
@@ -317,6 +317,9 @@
 ff.view.buoy.MainNode2D.fen = fen
 ff.view.buoy.AbstractMainNode2D.context = context
 
+fenPDF.actions.mouse = ff.fenpdf.actions.mouse.MouseActions(context)
+
+fenPDF.events.mouse.fenPDF = fenPDF
 fenPDF.events.mouse.update()
 
        
Index: fenfire/org/fenfire/fenpdf/actions/mouse.py
diff -u fenfire/org/fenfire/fenpdf/actions/mouse.py:1.2 
fenfire/org/fenfire/fenpdf/actions/mouse.py:1.3
--- fenfire/org/fenfire/fenpdf/actions/mouse.py:1.2     Thu Aug 21 02:35:39 2003
+++ fenfire/org/fenfire/fenpdf/actions/mouse.py Thu Aug 21 04:15:23 2003
@@ -30,179 +30,184 @@
 def p(*s):
     print 'actions.py::', s
 
-class AbstractAction:
-    def __init__(self, context):
-        self.context = context
-    def super(self):
-        self.mainNode = self.context.states.buoymanager.getLastMain()
-        self.oldVS = self.context.states.buoymanager.getVs()
-
-
-######## Actions to control pan of main nodes etc.
-
-class PanMover(AbstractAction, vob.mouse.RelativeAdapter,
-               vob.input.RelativeAxisListener):
-    def changedRelative(self, x,y='foo'):
-        self.context.states.fastChg = 1
-
-        # grrr.. pythonism, overloading of own method is sicknes
-        if y=='foo': return self._changedRelative(x)
-        self.super()
-        f = self.mainNode.getFocus()
-        fX, fY = f.getPanX(), f.getPanY()
-        f.setPan(fX-x/f.zoom,
-                 fY-y/f.zoom)
-        self.mainNode.chgFast(self.oldVS, -1)
-    def _changedRelative(self, d):
-        self.super()
-        f = self.mainNode.getFocus()
-        fY = f.getPanY()
-        f.setPan(0, fY-d/f.zoom)
-        self.mainNode.chgFast(self.oldVS, -1)
-
-class BrowseClick(AbstractAction, vob.mouse.MouseClickListener):
-    def clicked(self, x, y):
-        if dbg: p('move pan slow')
-        self.super()
-        obj = self.mainNode.getNodeOnPlane(self.oldVS, x,y)
-        self.context.states.cursor.setAccursed(obj)
-        self.mainNode.moveToPoint(int(x),int(y), self.oldVS)
-        self.context.states.fastChg = 0
-
-
-class ZoomPan(vob.input.RelativeAxisListener, AbstractAction):
-    def changedRelative(self, x):
-        self.super()
-        self.mainNode.changeZoom(x)
-        self.mainNode.chgFast(self.oldVS, -1)
-        self.context.states.fastChg = 1
-
-class ChangeSize(vob.input.RelativeAxisListener, AbstractAction):
-    def changedRelative(self, x):
-        self.super()
-        self.mainNode.changeSize(x)
-        self.mainNode.chgFast(self.oldVS, -1)
-        self.context.states.fastChg = 1
-
-class IfSelectNodeOnPlane(AbstractAction, vob.mouse.MouseClickListener):
-    def clicked(self, x, y):
-        self.super()
-        obj = self.mainNode.getNodeOnPlane(self.oldVS, x,y)
-        self.context.states.cursor.setAccursed(obj)
-        self.context.states.fastChg = 0
-
-class MouseMenu(AbstractAction, vob.mouse.MouseClickListener):
-    def clicked(self, x, y):
-        self.super()
-        obj = self.mainNode.getNodeOnPlane(self.oldVS, x,y)
-        if obj != None:
-            self.context.states.objectOnPlane = obj
-            self.context.mousemenu.link = 1
-        else: self.context.mousemenu.link = 0
-        self.context.mousemenu.showList(x,y,'mainmenu')
-        self.context.states.fastChg = 0
-        vob.AbstractUpdateManager.setNoAnimation()
-
-####### Actions to control nodes on main node plane
-        
-class NodeMover(AbstractAction, vob.mouse.RelativeAdapter,
-                vob.mouse.MousePressListener):
-    def pressed(self, x,y):
-        self.super()
-        self.set(self.mainNode.getNodeOnPlane(self.oldVS, x,y))
-        return self
-    def set(self, node):
-        self.super()
-        s = self.context.states
-        self.node, self.pp, self.graph = node, s.ppActions, s.fen.graph
-    def changedRelative(self, x,y):
-        self.super()
-        f = self.mainNode.getFocus()
-        fX, fY = f.getPanX(), f.getPanY()
-        f.setPan(fX+x/f.zoom,
-                 fY+y/f.zoom)
-        g = self.graph
-        ox = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.x)
-        oy = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.y)
-        self.pp.moveNote(self.node, ox+x/f.zoom, oy+y/f.zoom )
-        self.mainNode.chgFast(self.oldVS, -1)
-        self.context.states.fastChg = 1
-
-
-
-####### Actions to control selection (Ctrl pressed)
-
-class SelectArea(AbstractAction, vob.mouse.MouseDragListener,
-                 vob.mouse.MousePressListener):
-    def pressed(self, x,y):
-        """ dumb bersion of listener """
-        return self
-    def startDrag(self, x,y):
-        self.super()
-        self.oldxy = self.mainNode.getXYHit(self.oldVS, x, y)
-        p('old', self.oldxy)
-    def drag(self, x, y):
-        v = ff.util.lava.view.getView(self.mainNode, 
ff.view.AreaSelectingView2D)
-        v.setCurrentPlane(self.mainNode.getPlane())
-        xy = self.mainNode.getXYHit(self.oldVS, x,y)
-        v.setArea(self.oldxy[0], self.oldxy[1], xy[0], xy[1])
-
-       self.context.states.selection.setArea(
-               (self.oldxy[0], self.oldxy[1], xy[0], xy[1]),
-               self.mainNode)
-
-        self.mainNode.chgFast(self.oldVS, -1)
-        self.context.states.fastChg = 1
-    def endDrag(self, x,y):
-        self.drag(x,y)
-
-####### Dispatcher for plane events etc.
-
-class CanvasNodePressListener(vob.mouse.MousePressListener, AbstractAction):
-    def __init__(self, context, nodeMover, panMover):
-        AbstractAction.__init__(self, context)
-        self.nodeMover = nodeMover
-        self.panMover = panMover
-    def pressed(self, x, y):
-        self.super()
-        obj = self.mainNode.getNodeOnPlane(self.oldVS, x,y)
-        
-        if obj != None and obj == self.context.states.cursor.getAccursed():
-            p('accursed!')
-            self.nodeMover.set(obj)
-            return self.nodeMover
-        return self.panMover
+# Define the actions.
+
+def defineActions(context):
+    def getMainNode():
+       return context.states.buoymanager.getLastMain()
+    def getOldVS():
+       return context.states.buoymanager.getVs()
+
+# Inside the action, we have the following symbols usable:
+#  context - the context object
+#  getMainNode() - get the main node that was hit last
+#  getOldVS() - get the previous vobScene.
+
+    ######## Actions to control pan of main nodes etc.
+
+    class PanMover(vob.mouse.RelativeAdapter,
+                  vob.input.RelativeAxisListener):
+       def changedRelative(self, x,y='foo'):
+           context.states.fastChg = 1
+           # grrr.. pythonism, overloading of own method is sicknes
+           if y=='foo': return self._changedRelative(x)
+           f = getMainNode().getFocus()
+           fX, fY = f.getPanX(), f.getPanY()
+           f.setPan(fX-x/f.zoom,
+                    fY-y/f.zoom)
+           getMainNode().chgFast(getOldVS(), -1)
+       def _changedRelative(self, d):
+           f = getMainNode().getFocus()
+           fY = f.getPanY()
+           f.setPan(0, fY-d/f.zoom)
+           getMainNode().chgFast(getOldVS(), -1)
+
+    class BrowseClick(vob.mouse.MouseClickListener):
+       def clicked(self, x, y):
+           if dbg: p('move pan slow')
+           obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
+           context.states.cursor.setAccursed(obj)
+           getMainNode().moveToPoint(int(x),int(y), getOldVS())
+           context.states.fastChg = 0
+
+
+    class ZoomPan(vob.input.RelativeAxisListener):
+       def changedRelative(self, x):
+           getMainNode().changeZoom(x)
+           getMainNode().chgFast(getOldVS(), -1)
+           context.states.fastChg = 1
+
+    class ChangeSize(vob.input.RelativeAxisListener):
+       def changedRelative(self, x):
+           getMainNode().changeSize(x)
+           getMainNode().chgFast(getOldVS(), -1)
+           context.states.fastChg = 1
+
+    class IfSelectNodeOnPlane(vob.mouse.MouseClickListener):
+       def clicked(self, x, y):
+           obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
+           context.states.cursor.setAccursed(obj)
+           context.states.fastChg = 0
+
+    class MouseMenu(vob.mouse.MouseClickListener):
+       def clicked(self, x, y):
+           obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
+           if obj != None:
+               context.states.objectOnPlane = obj
+               context.mousemenu.link = 1
+           else: context.mousemenu.link = 0
+           context.mousemenu.showList(x,y,'mainmenu')
+           context.states.fastChg = 0
+           vob.AbstractUpdateManager.setNoAnimation()
+
+    ####### Actions to control nodes on main node plane
+           
+    class NodeMover(vob.mouse.RelativeAdapter,
+                   vob.mouse.MousePressListener):
+       def pressed(self, x,y):
+           self.set(getMainNode().getNodeOnPlane(getOldVS(), x,y))
+           return self
+       def set(self, node):
+           s = context.states
+           self.node, self.pp, self.graph = node, s.ppActions, s.fen.graph
+       def changedRelative(self, x,y):
+           f = getMainNode().getFocus()
+           fX, fY = f.getPanX(), f.getPanY()
+           f.setPan(fX+x/f.zoom,
+                    fY+y/f.zoom)
+           g = self.graph
+           ox = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.x)
+           oy = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.y)
+           self.pp.moveNote(self.node, ox+x/f.zoom, oy+y/f.zoom )
+           getMainNode().chgFast(getOldVS(), -1)
+           context.states.fastChg = 1
+
+
+
+    ####### Actions to control selection (Ctrl pressed)
+
+    class SelectArea(vob.mouse.MouseDragListener,
+                    vob.mouse.MousePressListener):
+       def pressed(self, x,y):
+           """ dumb bersion of listener """
+           return self
+       def startDrag(self, x,y):
+           self.oldxy = getMainNode().getXYHit(getOldVS(), x, y)
+           p('old', self.oldxy)
+       def drag(self, x, y):
+           v = ff.util.lava.view.getView(getMainNode(), 
ff.view.AreaSelectingView2D)
+           v.setCurrentPlane(getMainNode().getPlane())
+           xy = getMainNode().getXYHit(getOldVS(), x,y)
+           v.setArea(self.oldxy[0], self.oldxy[1], xy[0], xy[1])
+
+           context.states.selection.setArea(
+                   (self.oldxy[0], self.oldxy[1], xy[0], xy[1]),
+                   getMainNode())
+
+           getMainNode().chgFast(getOldVS(), -1)
+           context.states.fastChg = 1
+       def endDrag(self, x,y):
+           self.drag(x,y)
+
+    ####### Dispatcher for plane events etc.
+    #
+    # If there is a node under the press, and it is accursed, call nodeMover,
+    # else panMover.
+
+    class CanvasNodePressListener(vob.mouse.MousePressListener):
+       def __init__(self, nodeMover, panMover):
+           self.nodeMover = nodeMover
+           self.panMover = panMover
+       def pressed(self, x, y):
+           obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
+           
+           if obj != None and obj == context.states.cursor.getAccursed():
+               p('accursed!')
+               self.nodeMover.set(obj)
+               return self.nodeMover
+           return self.panMover
+
 
 
 
 
 
 
+    #######################################################################
+    #######################################################################
+    #####                                                             #####
+    #####   Actions for buoys.                                        #####
+    #####                                                             #####
+    #######################################################################
+    #######################################################################
+
+       
+    class BuoyMouseMenu(vob.mouse.MouseClickListener):
+       def clicked(self, x, y):
+           buoymanager = context.states.buoymanager
+           p('hit',buoymanager.buoyHit)
+           context.mousemenu.showList(x,y, 'buoymenu')
+           context.states.fastChg = 0
+           vob.AbstractUpdateManager.setNoAnimation()
+
+    class BuoyFollowClick(vob.mouse.MouseClickListener):
+       def clicked(self, x,y):
+           buoymanager = context.states.buoymanager
+           p('hit',buoymanager.buoyHit, buoymanager.buoyHit.single)
+           buoymanager.buoyHit.single.followLink(buoymanager.buoyHit.link)
+           context.states.fastChg = 0
+
+    # Return a map of symbols
+    res = { }
+    for sym in locals().keys():
+       if sym[0].isupper():
+           res[sym] = locals()[sym]
+    return res
+
+class MouseActions:
+    def __init__(self, context):
+       actions = defineActions(context)
+       for sym in actions.keys():
+           setattr(self, sym, actions[sym])
 
-#######################################################################
-#######################################################################
-#####                                                             #####
-#####   Actions for buoys.                                        #####
-#####                                                             #####
-#######################################################################
-#######################################################################
-
-    
-class BuoyMouseMenu(AbstractAction, vob.mouse.MouseClickListener):
-    def clicked(self, x, y):
-        self.super()
-        buoymanager = self.context.states.buoymanager
-        p('hit',buoymanager.buoyHit)
-        self.context.mousemenu.showList(x,y, 'buoymenu')
-        self.context.states.fastChg = 0
-        vob.AbstractUpdateManager.setNoAnimation()
-
-class BuoyFollowClick(AbstractAction, vob.mouse.MouseClickListener):
-    def clicked(self, x,y):
-        self.super()
-        buoymanager = self.context.states.buoymanager
-        p('hit',buoymanager.buoyHit, buoymanager.buoyHit.single)
-        buoymanager.buoyHit.single.followLink(buoymanager.buoyHit.link)
-        self.context.states.fastChg = 0
 
-        
Index: fenfire/org/fenfire/fenpdf/events/mouse.py
diff -u fenfire/org/fenfire/fenpdf/events/mouse.py:1.1 
fenfire/org/fenfire/fenpdf/events/mouse.py:1.2
--- fenfire/org/fenfire/fenpdf/events/mouse.py:1.1      Wed Aug 20 14:30:13 2003
+++ fenfire/org/fenfire/fenpdf/events/mouse.py  Thu Aug 21 04:15:23 2003
@@ -17,49 +17,54 @@
        return self.mainMouse
 
     def update(self):
-       context = self.context
 
        # self.mainMouse.clear() # XXX Not implemented
 
+       actions = self.fenPDF.actions
 
        # With button 1
-       self.mainMouse.setListener(1, 0,'Moving the pan around or the node if 
accursed.', \
-                             actions.mouse.CanvasNodePressListener(context, \
-                                 actions.mouse.NodeMover(context), 
actions.mouse.PanMover(context)))
+       self.mainMouse.setListener(1, 0,
+               'Moving the pan around or the node if accursed.', 
+               actions.mouse.CanvasNodePressListener(
+                             actions.mouse.NodeMover(), 
+                             actions.mouse.PanMover()))
        self.mainMouse.setListener(1, vob.VobMouseEvent.SHIFT_MASK,
                              'Selecting area of main view.',
-                             actions.mouse.SelectArea(context))
+                             actions.mouse.SelectArea())
        self.mainMouse.setListener(1, vob.VobMouseEvent.CONTROL_MASK,
                              'Move the note.',
-                             actions.mouse.NodeMover(context))
+                             actions.mouse.NodeMover())
        self.mainMouse.setListener(1, 0, 'Browse to clicked point in the main 
view',
-                             actions.mouse.BrowseClick(context))
+                             actions.mouse.BrowseClick())
 
        # With button 3
-       self.mainMouse.setListener(3, 0, self.mainMouse.VERTICAL, 1.0, \
-                             'Zooming the main view.', 
actions.mouse.ZoomPan(context))
-       self.mainMouse.setListener(3, 0, self.mainMouse.HORIZONTAL, 1.0, \
-                             'Changing the size of main view (currently only 
for pagescroll).', # text
-                             actions.mouse.ChangeSize(context))
+       self.mainMouse.setListener(3, 0, self.mainMouse.VERTICAL, 1.0, 
+                             'Zooming the main view.', 
+                             actions.mouse.ZoomPan())
+       self.mainMouse.setListener(3, 0, self.mainMouse.HORIZONTAL, 1.0, 
+         'Changing the size of main view (currently only for pagescroll).', 
+                             actions.mouse.ChangeSize())
        self.mainMouse.setListener(3, vob.VobMouseEvent.SHIFT_MASK,
                              'Select a node by click or unselect.',
-                             actions.mouse.IfSelectNodeOnPlane(context))
-       self.mainMouse.setListener(3, 0, 'Show context menu if available 
(should be).',
-                             actions.mouse.MouseMenu(context))
+                             actions.mouse.IfSelectNodeOnPlane())
+       self.mainMouse.setListener(3, 0, 
+                               'Show context menu if available (should be).',
+                             actions.mouse.MouseMenu())
 
        # With wheel
        self.mainMouse.setWheelListener(0, 'Moving the pan', \
-                                  actions.mouse.PanMover(context))
-       context.states.mainMouse = self.mainMouse
+                                  actions.mouse.PanMover())
+
+       self.context.states.mainMouse = self.mainMouse
 
 
        # Default controls for buoys
        # With button 1
        self.buoyMouse.setListener(1, 0, 'Follow the link buoy.',
-                             actions.mouse.BuoyFollowClick(context))
+                             actions.mouse.BuoyFollowClick())
 
        # With button 3
        self.buoyMouse.setListener(3, 0, 'Show mouse menu for buoy', \
-                             actions.mouse.BuoyMouseMenu(context))
+                             actions.mouse.BuoyMouseMenu())
 
 
Index: fenfire/org/fenfire/fenpdf/fenpdf.py
diff -u fenfire/org/fenfire/fenpdf/fenpdf.py:1.1 
fenfire/org/fenfire/fenpdf/fenpdf.py:1.2
--- fenfire/org/fenfire/fenpdf/fenpdf.py:1.1    Wed Aug 20 14:30:12 2003
+++ fenfire/org/fenfire/fenpdf/fenpdf.py        Thu Aug 21 04:15:23 2003
@@ -19,6 +19,9 @@
 
        mouse -- an object like org.fenfire.fenpdf.events.mouse.MouseMapper
 
+    actions -- an object with no methods, just fields:
+
+       mouse -- an object like org.fenfire.fenpdf.actions.mouse.MouseActions
 
     The internal members are prefixed by underscore.
     """
@@ -26,5 +29,6 @@
 
     def __init__(self):
        self.events = _Empty()
+       self.actions = _Empty()
 
 




reply via email to

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