/[fenfire]/fenfire/org/fenfire/fenpdf/events/eventhandler.py
ViewVC logotype

Diff of /fenfire/org/fenfire/fenpdf/events/eventhandler.py

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

revision 1.6 by tjl, Mon Aug 25 09:28:52 2003 UTC revision 1.7 by mudyc, Tue Aug 26 00:30:44 2003 UTC
# Line 2  Line 2 
2    
3  import vob  import vob
4    
5  dbg = 0  dbg = 1
6  def p(*s):  def p(*s):
7      print 'ff.fenpdf.events.eventhandler::', s      print 'ff.fenpdf.events.eventhandler::', s
8    
9  class EventHandler:  class EventHandler:
10      def __init__(self, fenPDF):      def __init__(self, fenPDF):
11          self.fenPDF = fenPDF          self.fenPDF = fenPDF
12            self.eventStoler = None
13    
         # Whether the next mouse click should be eaten  
         # Used when a mouse press did something.  
         self._eatNextClick = 0  
   
           
14      def mouse(self, ev, oldvs):      def mouse(self, ev, oldvs):
15          """ Callback from buoymanager, should not do context things..          """ *THE* event handler - if you want to stole a event - stole
16          Mostly because of click workaround.          it in the beginning.
         @see vob.buoy.buoymanager.MultibuoyManager.mouse(..)  
17          """          """
18            self.context.states.lastEvent = ev
19    
20          if dbg: p(ev)          if dbg: p(ev)
21    
22          # MouseMenu will want to know if the mouse is pressed          if self.eventStoler:
23          # to remove itself if the press is not inside              self.eventStoler(ev, oldvs)
24          # the menu.              return
         #  
         # In addition to the PRESSED,  
         # we need to eat the next MOUSE_CLICKED event.  
         if ev.getType() == ev.MOUSE_PRESSED:  
             # If a previous PRESSED didn't end as a click  
             # because of a drag, don't eat the following click.  
             self._eatNextClick = 0  
             if self.fenPDF.uistate.menu.shown and \  
                 not self.fenPDF.events.mousemenu.mousePressed(ev) :  
                 p("Eating next click")  
                 self._eatNextClick = 1  
                 return 1  
   
         if dbg: p("1", self._eatNextClick)  
               
         if ev.getType() == ev.MOUSE_CLICKED:  
             if self._eatNextClick:  
                 self._eatNextClick = 0  
                 return 1  
             if (self.fenPDF.events.mousemenu.mouseClicked(ev) or  
                 self.fenPDF.events.buttons.mouseEvent(ev, oldvs)):  
                 p('context seen, now cleaning it')  
                 self.context.clean()  
                 self.fenPDF.events.mouse.mainMouse.flush()  
                 vob.AbstractUpdateManager.chg()  
                 return 1  
25    
26              self.context.clean()          if self.fenPDF.events.buttons.mouseEvent(ev, oldvs):
27                vob.AbstractUpdateManager.chg()
28                return
29    
30          if dbg: p("2")          if dbg: p("2")
31    
32          if ev.getType() == ev.MOUSE_RELEASED:          if 0 and ev.getType() == ev.MOUSE_RELEASED:
33              p('mainMouse released? - there\'s a bug in here!')              p('mainMouse released? - there\'s a bug in here!')
34    
35              # release event must go to mainMouse MouseMultiplexer to work correctly!              # release event must go to mainMouse MouseMultiplexer to work correctly!
# Line 66  class EventHandler: Line 39  class EventHandler:
39              self.fenPDF.events.mouse.buoyMouse.flush()              self.fenPDF.events.mouse.buoyMouse.flush()
40                            
41              self.fenPDF.window.setCursor('default')              self.fenPDF.window.setCursor('default')
42                return
43    
             # workaround..  
             if self.context.states.lastEvent.getType() == ev.MOUSE_PRESSED:  
                 p('workaround for a bug')  
                 return 1  
   
             # There is a bug in AbstractUpdateManager code(?) and that's why now is must to return.  
44          if dbg: p("3")          if dbg: p("3")
45    
46    
         self.context.states.lastEvent = ev  
47    
48          buoymanager = self.fenPDF.views.getBuoyManager()          buoymanager = self.fenPDF.views.getBuoyManager()
49          """ Returns true if buoymanager has eaten the event ;)"""          """ Returns true if buoymanager has eaten the event ;)"""
50            # THIS code is in wrong place!
51          if not hasattr(buoymanager, 'vs'):          if not hasattr(buoymanager, 'vs'):
52              vob.AbstractUpdateManager.setNoAnimation()              vob.AbstractUpdateManager.setNoAnimation()
53              vob.AbstractUpdateManager.chg()              vob.AbstractUpdateManager.chg()
# Line 87  class EventHandler: Line 55  class EventHandler:
55    
56          if dbg: p("3")          if dbg: p("3")
57    
58            # this is rather ugly
59          if ev.getType() == ev.MOUSE_DRAGGED:          if ev.getType() == ev.MOUSE_DRAGGED:
60              if buoymanager.singles[buoymanager.lastIndex].mainNode.mouse(ev, buoymanager.vs):              if buoymanager.singles[buoymanager.lastIndex].mainNode.mouse(ev, buoymanager.vs):
61                  buoymanager.replaceScene = buoymanager.vs                  buoymanager.replaceScene = buoymanager.vs
62                  vob.AbstractUpdateManager.setNoAnimation()                  vob.AbstractUpdateManager.setNoAnimation()
63              vob.AbstractUpdateManager.chg()              vob.AbstractUpdateManager.chg()
64              return 1              return
65    
66          if dbg: p("4")          if dbg: p("4")
67    
# Line 102  class EventHandler: Line 71  class EventHandler:
71              # pa("IN CS: ",cs, link)              # pa("IN CS: ",cs, link)
72              buoymanager.buoyHit.set(buoymanager.singles[single], link)              buoymanager.buoyHit.set(buoymanager.singles[single], link)
73              if buoymanager.eventHandler.buoyMouse(buoymanager, ev, buoymanager.singles[single], link):              if buoymanager.eventHandler.buoyMouse(buoymanager, ev, buoymanager.singles[single], link):
74                  return 1                  return
             return 0  
75    
76          if dbg: p("5")          if dbg: p("5")
77    
# Line 115  class EventHandler: Line 83  class EventHandler:
83                  buoymanager.replaceScene = buoymanager.vs                  buoymanager.replaceScene = buoymanager.vs
84                  vob.AbstractUpdateManager.setNoAnimation()                  vob.AbstractUpdateManager.setNoAnimation()
85              vob.AbstractUpdateManager.chg()              vob.AbstractUpdateManager.chg()
             return 1  
         return 0  
   
   
         return 0  
   
86    
87    
88      def buoyMouse(self, mgr, ev, single, link):      def buoyMouse(self, mgr, ev, single, link):

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