[Top][All Lists]
[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()
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/20
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/21
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp...,
Tuomas J. Lukka <=
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Matti Katila, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/23
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/24
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/24
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/24