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

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

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

revision 1.4 by tjl, Sun Aug 24 12:06:01 2003 UTC revision 1.5 by tjl, Mon Aug 25 07:02:25 2003 UTC
# Line 9  import java Line 9  import java
9    
10  def p(*s):  def p(*s):
11      print 'ff.fenpdf.events.mousemenu::', s      print 'ff.fenpdf.events.mousemenu::', s
12            
13    
14  class MouseMenu:  class MouseMenu:
15    
16      def __init__(self, fenPDF, states):      def __init__(self, fenPDF, states):
17          self.fenPDF = fenPDF          self.fenPDF = fenPDF
18          self.states = states          self.states = states
19          self.style = vob.GraphicsAPI.getInstance().getTextStyle('sans', 0, 12)          self.style = vob.GraphicsAPI.getInstance().getTextStyle('sans', 0, 12)
         self.link = 0  
20          self.makeMainList()          self.makeMainList()
         self.isHide = 1  
21          self.hideList()          self.hideList()
22                    
23      def makeMainList(self):      def makeMainList(self):
# Line 26  class MouseMenu: Line 25  class MouseMenu:
25          if self.states.selection.hasSelection():          if self.states.selection.hasSelection():
26              self.selectListVob.add('Transclude selection (PDF to canvas only)',              self.selectListVob.add('Transclude selection (PDF to canvas only)',
27                      lambda: self.fenPDF.actions.menu.transclude())                      lambda: self.fenPDF.actions.menu.transclude())
28          if self.link:          if self.fenPDF.uistate.menu.originatingNode:
29              self.selectListVob.add('Link node to left',              self.selectListVob.add('<-----  Link node to left',
30                      lambda: self.fenPDF.actions.menu.structLinkNodes(-1))                      lambda: self.fenPDF.actions.menu.structLinkNodes(-1))
31              self.selectListVob.add('Link node to right',              self.selectListVob.add('Link node to right ----->',
32                      lambda: self.fenPDF.actions.menu.structLinkNodes(1))                      lambda: self.fenPDF.actions.menu.structLinkNodes(1))
         self.selectListVob.add('Destroy this canvas',  
                     lambda: self.fenPDF.actions.menu.killPlane())  
         if self.link:  
33              self.selectListVob.add('Delete this node',              self.selectListVob.add('Delete this node',
34                      lambda: self.fenPDF.actions.menu.deleteNode())                      lambda: self.fenPDF.actions.menu.deleteNode())
35    
36            self.selectListVob.add('Destroy this canvas',
37                        lambda: self.fenPDF.actions.menu.killPlane())
38    
39      def makeBuoyList(self):      def makeBuoyList(self):
40          self.selectListVob = vob.vobs.SelectListVob(self.style)          self.selectListVob = vob.vobs.SelectListVob(self.style)
41          self.selectListVob.add('Unlink buoy',          self.selectListVob.add('Unlink buoy',
42              lambda: self.fenPDF.actions.menu.unlinkBuoy())              lambda: self.fenPDF.actions.menu.unlinkBuoy())
         self.selectListVob.add('Go to home', 'home')  
43    
44      def render(self, vs):      def render(self, vs):
45          cs = vs.orthoBoxCS(0, 'MOUSE_MENU',-100, self.x, self.y-self.h/2,          cs = vs.orthoBoxCS(0, 'MOUSE_MENU',-100, self.x, self.y-self.h/2,
# Line 49  class MouseMenu: Line 47  class MouseMenu:
47          vs.put(self.selectListVob, cs)          vs.put(self.selectListVob, cs)
48    
49      def showList(self, x, y, who):      def showList(self, x, y, who):
50            p("showList")
51          if who == 'buoymenu':          if who == 'buoymenu':
52              self.makeBuoyList()              self.makeBuoyList()
53          elif who == 'mainmenu':          elif who == 'mainmenu':
# Line 60  class MouseMenu: Line 59  class MouseMenu:
59                    
60          self.w, self.h = self.selectListVob.width, self.selectListVob.height          self.w, self.h = self.selectListVob.width, self.selectListVob.height
61          self.x, self.y = x, y          self.x, self.y = x, y
62          self.isHide = 0          self.fenPDF.uistate.menu.shown = 1
63    
64      def hideList(self):      def hideList(self):
65            p("Hidelist")
66          if hasattr(self.states, 'lastEvent'):          if hasattr(self.states, 'lastEvent'):
67              self.x, self.y = self.states.lastEvent.getX(), self.states.lastEvent.getY()              self.x, self.y = self.states.lastEvent.getX(), self.states.lastEvent.getY()
68          else: self.x, self.y = 0,0          else: self.x, self.y = 0,0
69          self.w, self.h = .0, .0          self.w, self.h = .0, .0
70          self.isHide = 1          self.fenPDF.uistate.menu.shown = 0
71            self.fenPDF.animation.regenerateVS()
72            self.fenPDF.animation.noAnimation()
73            vob.AbstractUpdateManager.chg()
74    
75      def mouse(self, ev):      def getCSKey(self, ev):
76          if self.isHide: return 0          if not self.fenPDF.uistate.menu.shown : return None
77          vs = self.fenPDF.animation.lastVs          vs = self.fenPDF.animation.lastVs
78                    
79          cs = vs.matcher.getCS(0, 'MOUSE_MENU')          cs = vs.matcher.getCS(0, 'MOUSE_MENU')
80          p('cs:', cs)          p('cs:', cs)
81          key = vs.getKeyAt(cs, ev.getX(), ev.getY(), None)          key = vs.getKeyAt(cs, ev.getX(), ev.getY(), None)
82            return key
83    
84        def mousePressed(self, ev):
85            """A mouse pressed event was received.
86    
87            If it's outside the menu, pop the menu away.
88    
89            Returns: 1 if it was inside a menu,
90            and should be eaten.
91            """
92            key = self.getCSKey(ev)
93            if self.fenPDF.uistate.menu.shown:
94                if key == None:
95                    self.hideList()
96                    return 1
97                else:
98                    return 1
99            else:
100                return 0
101    
102        def mouseClicked(self, ev):
103            """A mouse clicked event was received.
104            If it's in the menu, react, otherwise
105            remove the menu.
106    
107            Returns: 1 if the event was consumed.
108            """
109            key = self.getCSKey(ev)
110          if key != None:          if key != None:
111              try:              try:
112                  p('context menu hit!')                  p('context menu hit!')
113                  self.selectListVob.colorize(key, java.awt.Color.red)                  self.selectListVob.colorize(key, java.awt.Color.red)
114                  key = key.object                  key = key.object
                 self.states.oldVS = vs  
115                  key()                  key()
                 self.states.oldVS = None  
116                  self.hideList()                  self.hideList()
117              finally: # If there's an error, we still need a new scene              finally: # If there's an error, we still need a new scene
118                  self.fenPDF.animation.regenerateVS()                  self.fenPDF.animation.regenerateVS()
119              return 1              return 1
120          return 0          else:
121                if self.fenPDF.uistate.menu.shown:
122                    self.hideList()
123                    # We return 1 here too, since the button press
124                    # outside the menu should be eaten.
125                    return 1
126                return 0
127    
128    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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