/[fenfire]/fenfire/org/fenfire/demo/actions.py
ViewVC logotype

Diff of /fenfire/org/fenfire/demo/actions.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by mudyc, Fri Jun 27 14:00:33 2003 UTC revision 1.7 by mudyc, Tue Jul 1 16:33:33 2003 UTC
# Line 35  class AbstractContextController(ff.util. Line 35  class AbstractContextController(ff.util.
35    
36  ######## Actions to control pan of main nodes etc.  ######## Actions to control pan of main nodes etc.
37    
38  class MovePanFast(AbstractContextController):  class MovePanFast(ff.util.ControlBinding.AbstractController):
     def __init__(self, context, select):  
         AbstractContextController.__init__(self, context)  
         self.select = select  
39      def isChangeable(self): return 1      def isChangeable(self): return 1
40      def change(self, x, y):      def change(self, x, y):
41          if dbg: p('move pan fast')          if dbg: p('move pan fast')
# Line 47  class MovePanFast(AbstractContextControl Line 44  class MovePanFast(AbstractContextControl
44          f.setPan( fX-x/f.zoom, fY-y/f.zoom)          f.setPan( fX-x/f.zoom, fY-y/f.zoom)
45          self.obj.chgFast(self.oldVS)          self.obj.chgFast(self.oldVS)
46    
         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)  
   
   
   
47  class MovePanSlow(ff.util.ControlBinding.AbstractController):  class MovePanSlow(ff.util.ControlBinding.AbstractController):
48      def isChangeable(self): return 0      def isChangeable(self): return 0
49      def controlPoint(self, x, y, scale):      def controlPoint(self, x, y, scale):
# Line 102  class MoveNodeOnPlane(AbstractContextCon Line 91  class MoveNodeOnPlane(AbstractContextCon
91          oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)          oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
92          self.obj[3].moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )          self.obj[3].moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
93    
94    ####### Actions to control selection
95    
96    class SelectArea(AbstractContextController):
97        def isChangeable(self): return 0
98        def tryFast(self): return 0
99        def controlPoint(self, x, y, scale):
100            if dbg: self.context.states.p()
101            xy = self.obj.getXYHit(self.oldVS, x,y)
102            oldXY = self.context.states.getPressPans()
103            self.context.selection.setArea(oldXY[0], oldXY[1], xy[0], xy[1])
104    
105    
106  ####### Dispatcher for plane events  ####### Dispatcher for plane events etc.
107    
108  class PlaneDispatcher(ff.util.ControlBinding):  class ControlsDispatcher(ff.util.ControlBinding):
109      def __init__(self, main, plane, graph, pp):      def __init__(self, main, plane, withCtrl, graph, pp):
110          self.m = main          self.m = main
111          self.p = plane          self.p = plane
112          self.all = [ main, plane ]          self.c = withCtrl
113            self.all = [ main, plane, withCtrl ]
114          self.last = main          self.last = main
115            self.args = main
116          self.graph = graph          self.graph = graph
117          self.pp = pp          self.pp = pp
118    
119      def handleEvent(self, main, ev, vs):      def handleEvent(self, main, ev, vs):
   
120          if ev.getID() == ev.MOUSE_DRAGGED:          if ev.getID() == ev.MOUSE_DRAGGED:
121              if dbg: p('drag')              if dbg: p('drag')
122              return self.last.handleEvent(self.args, ev, vs)              return self.last.handleEvent(self.args, ev, vs)
123          elif ev.getID() == ev.MOUSE_PRESSED:          elif ev.getID() == ev.MOUSE_PRESSED:
124              xy = main.getXYHitOnPlane(vs, ev.getX(), ev.getY())              xy = main.getXYHit(vs, ev.getX(), ev.getY())
125              self.context.states.setPressPans(xy[0], xy[1])              self.context.states.setPressPans(xy[0], xy[1])
126                if dbg: self.context.states.p()
127    
128          if dbg: p('event', ev)          if dbg: p('event', ev)
129          obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY())          obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY())
130          if dbg: p(obj)          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)  
131    
132          # Drag if something under mouse pointer is accursed!          self.context.selection.setCurrentPlane(main.getPlane())
133          if obj != None and self.p.hasBinding(ev) and self.context.isAccursed(obj):  
134              self.last = self.p          # Special case if user has pressed 'Ctrl'
135              self.args = [main, obj, self.graph, self.pp]          if self.context.states.hasCtrl():
136          else:              self.last = self.c
             p('something else')  
             self.last = self.m  
137              self.args = main              self.args = main
138            else:
139                if ev.getID() == ev.MOUSE_CLICKED:
140                    if obj != None and self.p.hasBinding(ev):
141                        self.last = self.p
142                        self.args = [main, obj, self.graph, self.pp]
143                        return self.p.handleEvent(self.args, ev, vs)
144    
145                # Drag if something under mouse pointer is accursed!
146                if obj != None and self.p.hasBinding(ev) and self.context.isAccursed(obj):
147                    self.last = self.p
148                    self.args = [main, obj, self.graph, self.pp]
149                else:
150                    self.last = self.m
151                    self.args = main
152    
153            if 0 and ev.getID() != ev.MOUSE_PRESSED and not self.last.hasPressState():
154                self.removePressState()
155                self.last.setPressStateByForce(ev)
156                raise 'set press state by force - should not happen', ev
157          return self.last.handleEvent(self.args, ev, vs)          return self.last.handleEvent(self.args, ev, vs)
158      def removePressState(self):      def removePressState(self):
159          for c in self.all:          for c in self.all:

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26