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

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

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

revision 1.72 by mudyc, Sat Jun 14 21:15:10 2003 UTC revision 1.73 by mudyc, Thu Jun 19 11:57:47 2003 UTC
# Line 265  class DoubleGeometer: Line 265  class DoubleGeometer:
265    
266      def mouse(self, ev, oldvs):      def mouse(self, ev, oldvs):
267          if dbg: pa(ev)          if dbg: pa(ev)
268          if ev.getID() == ev.MOUSE_WHEEL:          if 0 and ev.getID() == ev.MOUSE_WHEEL:
269              print "WHEEL"              pa("WHEEL")
270              r = ev.getWheelRotation()              r = ev.getWheelRotation()
271              self.split -= .03 * r              self.split -= .03 * r
272              self._doset(oldvs)              self._doset(oldvs)
# Line 322  class Scene(vob.buoy.buoymanager.MultiBu Line 322  class Scene(vob.buoy.buoymanager.MultiBu
322      def __init__(self):      def __init__(self):
323          vob.buoy.buoymanager.MultiBuoyManager.__init__(self,          vob.buoy.buoymanager.MultiBuoyManager.__init__(self,
324                  [mainNode, mainNode2], [ppconnector, tconnector],                  [mainNode, mainNode2], [ppconnector, tconnector],
325                  DoubleGeometer(self), context)                  DoubleGeometer(self),
326                    FenPDFActions(context, 2), context)
327            w.setCursor('default')
328    
329    class AbstractController(ff.util.ControlBinding.Controller):
330        def controlPoint(self, x,y,scale): pass
331        def change(self, x,y): pass
332        def set(self, obj, oldVS):
333            self.obj = obj
334            self.oldVS = oldVS
335        
336    class MovePanFast(AbstractController):
337        def isChangeAble(self): return 1
338        def change(self, x, y):
339            f = self.obj.getFocus()
340            fX, fY = f.getPanX(), f.getPanY()
341            f.setPan( (fX-x)/f.getZoom(),(fY-y)/f.getZoom())
342            self.obj.chgFast(self.oldVS)
343    
344    class MovePanSlow(AbstractController):
345        def isChangeAble(self): return 0
346        def controlPoint(self, x, y, scale):
347            self.obj.moveToPoint(int(x),int(y), self.oldVS)
348            
349    class FenPDFActions:
350        def __init__(self, context, mainNodes):
351            self.context = context
352            context = context
353            self.context.initMainNodes(mainNodes)
354            self.lastIndex = 0
355    
356            self.controlMains = ff.util.ControlBinding()
357            c = self.controlMains
358            c.add(MovePanFast(), -1, 'wheel', 7,1)
359            c.add(MovePanFast(), 1, "drag", 1.4, 1)
360            c.add(MovePanSlow(), 1, "click", 1, 1)
361    #        c.dbg=1
362            self.controls = [ self.controlMains ]
363        
364        def key(self, mngr, key):
365            index = self.lastIndex
366            self.context.setMainNodeIndex(index)
367            mngr.singles[index].mainNode.keystroke(key)
368            vob.AbstractUpdateManager.chg()
369    
370        def mouse(self, mngr, ev):
371    #        pa(ev)
372            
373            if hasattr(mngr.geometer, 'mouse') and \
374                   mngr.geometer.mouse(ev, mngr.vs):
375                return
376            x, y = ev.getX(), ev.getY()
377            cs = mngr.vs.getCSAt(0, x, y, None)
378    
379            if ev.getID() == ev.MOUSE_RELEASED:
380                w.setCursor('default')
381                for ctrl in self.controls:
382                    ctrl.removePressState()
383                return
384            if ev.getID() == ev.MOUSE_PRESSED:
385                self.oldEv = ev
386    
387            ### If there exist a buoy jump over there
388            for single in mngr.singles:
389                link = single.cs.get(cs, None)
390                if link != None:
391                    # print "IN CS: ",cs, link
392                    if hasattr(mngr.geometer, 'buoyMouse') and \
393                       mngr.geometer.buoyMouse(mngr, ev, single, link):
394                        return
395                    
396                    if ev.getID() != ev.MOUSE_CLICKED:
397                        return
398                    single.followLink(link)
399                    vob.AbstractUpdateManager.chg()
400                    return
401    
402            ### Fall through if no link - need main node
403            for i in range(0, len(mngr.singles)):
404                if mngr.singles[i].mainNode.isHitInsidePlane(x,y,mngr.vs):
405                    self.context.setMainNodeIndex(i)
406                    self.lastIndex = i
407    
408                    if self.controlMains.handleEvent(mngr.singles[i].mainNode, ev, mngr.vs):
409                        mngr.replaceScene = mngr.vs
410                        vob.AbstractUpdateManager.setNoAnimation()
411                    vob.AbstractUpdateManager.chg()
412                    return
413    
414            # ...then see context
415            if ev.getID() != ev.MOUSE_CLICKED:
416                return
417            self.context.setMainNodeIndex(self.lastIndex)
418            planes = []
419            for single in mngr.singles:
420                planes.append(single.getMainNode())
421            newPlanes = self.context.doMouse(ev, mngr.vs, planes)
422            if newPlanes != None and planes != newPlanes:
423                for i in range(0, len(newPlanes)):
424                    mngr.singles[i] = SingleFocusManager(
425                        newPlanes[i],
426                        mngr.connectors)
427                vob.AbstractUpdateManager.chg()
428            
429    
430  currentScene = Scene()  currentScene = Scene()
431    
432    
433    
434    
435    
436  def screenshots():  def screenshots():
437      frame = 0      frame = 0
438      s = Scene()      s = Scene()

Legend:
Removed from v.1.72  
changed lines
  Added in v.1.73

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