/[ascend]/branches/adrian/pygtk/canvas/contextmenutool.py
ViewVC logotype

Diff of /branches/adrian/pygtk/canvas/contextmenutool.py

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

trunk/pygtk/canvas/contextmenutool.py revision 2394 by jpye, Thu Feb 24 01:43:46 2011 UTC branches/adrian/pygtk/canvas/contextmenutool.py revision 2895 by adrian, Sun Apr 12 14:32:00 2015 UTC
# Line 1  Line 1 
   
1  from gaphas.tool import Tool  from gaphas.tool import Tool
2  import pygtk  import gi
3  pygtk.require('2.0')  
4  import gtk  gi.require_version('Gtk', '3.0')
5  import blockinstance  from gi.repository import Gtk
6  import blockproperties  import blockproperties
7  import canvasproperties  import canvasproperties
8  import undo  import undo
9    
10    
11  class ContextMenuTool(Tool):  class ContextMenuTool(Tool):
12      """      """
13      Context menu for blocks and connectors on the canvas, intended to be      Context menu for blocks and connectors on the canvas, intended to be
# Line 18  class ContextMenuTool(Tool): Line 18  class ContextMenuTool(Tool):
18      """      """
19      def __init__(self,view=None):      def __init__(self,view=None):
20          super(ContextMenuTool, self).__init__(view)          super(ContextMenuTool, self).__init__(view)
21                    
22      def on_button_press(self, event):      def on_button_press(self, event):
23          context = self.view.tool          context = self.view.tool
24          if event.button != 3:          if event.button != 3:
25              context.ungrab(self.view.tool)              context.ungrab(self.view.tool)
26              return False              return False
27            
28          menu = gtk.Menu()          menu = Gtk.Menu()
29          menu.connect("deactivate",self.deactivate,context)          menu.connect("deactivate",self.deactivate,context)
30                    '''
31          menurename = gtk.MenuItem("Re_name",True)          menublockstreams = Gtk.MenuItem("_Streams")
32            menublockstreams.connect("activate",self.setstream, window, context, context.view.hovered_item)
33            menu.add(menublockstreams)
34            '''
35            menurename = Gtk.MenuItem("Re_name",True)
36          window = context.view.parent.parent.parent.parent.parent          window = context.view.parent.parent.parent.parent.parent
37          menurename.connect("activate",self.rename,context.view.hovered_item,window)          menurename.connect("activate",self.rename,context.view.hovered_item,window)
38          menu.add(menurename)          menu.add(menurename)
39            menudefault.set_sensitive(False)
40            '''menublockstreams.set_sensitive(False)'''
41    
42          menudelete = gtk.MenuItem("_Delete",True)          menudelete = Gtk.MenuItem("_Delete",True)
43          menudelete.connect("activate",self.delete,context.view.hovered_item,context.view)          menudelete.connect("activate",self.delete,context.view.hovered_item,context.view)
44          menu.add(menudelete)          menu.add(menudelete)
45    
46          menu.add(gtk.SeparatorMenuItem())          menu.add(Gtk.SeparatorMenuItem())
47            
48          menublockproperties = gtk.MenuItem("_Properties")          menurotate_clock = Gtk.MenuItem("_Rotate_clockwise",True)
49            window = context.view.parent.parent.parent.parent.parent
50            menurotate_clock.connect("activate",self.blockrotate_clock,context.view.hovered_item,window)
51            menu.add(menurotate_clock)
52    
53            menurotate_anti = Gtk.MenuItem("_Rotate_anti_clockwise",True)
54            window = context.view.parent.parent.parent.parent.parent
55            menurotate_anti.connect("activate",self.blockrotate_anti,context.view.hovered_item,window)
56            menu.add(menurotate_anti)
57    
58            menuflip = Gtk.MenuItem("Flip",True)
59            window = context.view.parent.parent.parent.parent.parent
60            menuflip.connect("activate",self.blockflip,context.view.hovered_item,window)
61            menu.add(menuflip)
62    
63            menu.add(Gtk.SeparatorMenuItem())
64    
65            menublockproperties = Gtk.MenuItem("_Properties")
66          menublockproperties.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 0)          menublockproperties.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 0)
67          menu.add(menublockproperties)          menu.add(menublockproperties)
68            
69          menublockparams = gtk.MenuItem("_Parameters")          menublockparams = Gtk.MenuItem("_Parameters")
70          menublockparams.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 1)          menublockparams.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 1)
71          menu.add(menublockparams)          menu.add(menublockparams)
72            
73          #menublockmethod = gtk.MenuItem("_Custom Method(s)")          menudefault = Gtk.MenuItem("_Set Default Values")
74            menudefault.connect("activate",self.defaultvalues,window ,context,context.view.hovered_item)
75            menu.add(menudefault)
76    
77            #menublockmethod = Gtk.MenuItem("_Custom Method(s)")
78          #menublockmethod.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 2)          #menublockmethod.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 2)
79          #menu.add(menublockmethod)          #menu.add(menublockmethod)
80            
81          menublockinstance = gtk.MenuItem("_Instance")          menublockinstance = Gtk.MenuItem("_Instance")
82          menublockinstance.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 3)          menublockinstance.connect("activate",self.blockproperties, window, context, context.view.hovered_item, 3)
83          menu.add(menublockinstance)          menu.add(menublockinstance)
84            '''
85          #menuinfo = gtk.MenuItem("_Info",True)          menublockstreams = Gtk.MenuItem("_Streams")
86          #menuinfo.connect("activate",self.info,window,context,context.view.hovered_item)              menublockstreams.connect("activate",self.setstream, window, context, context.view.hovered_item)
87            menu.add(menublockstreams)
88                '''
89            #menuinfo = Gtk.MenuItem("_Info",True)
90            #menuinfo.connect("activate",self.info,window,context,context.view.hovered_item)
91          #menu.add(menuinfo)          #menu.add(menuinfo)
92            
93          menu.add(gtk.SeparatorMenuItem())          menu.add(Gtk.SeparatorMenuItem())
94            
95          menucanvas = gtk.MenuItem("_Canvas Properties",True)          menucanvas = Gtk.MenuItem("_Canvas Properties",True)
96          menucanvas.connect("activate",self.canvasproperties,window ,context)          menucanvas.connect("activate",self.canvasproperties,window ,context)
97          menu.add(menucanvas)          menu.add(menucanvas)
98            
99          if not context.view.hovered_item:          if not context.view.hovered_item:
100              menurename.set_sensitive(False)              menurename.set_sensitive(False)
101              #menuinfo.set_sensitive(False)              #menuinfo.set_sensitive(False)
102              menudelete.set_sensitive(False)              menudelete.set_sensitive(False)
103                menurotate_clock.set_sensitive(False)
104                menurotate_anti.set_sensitive(False)
105                menuflip.set_sensitive(False)
106              menublockproperties.set_sensitive(False)              menublockproperties.set_sensitive(False)
107              menublockinstance.set_sensitive(False)              menublockinstance.set_sensitive(False)
108              #menublockmethod.set_sensitive(False)              #menublockmethod.set_sensitive(False)
109              menublockparams.set_sensitive(False)              menublockparams.set_sensitive(False)
110                menudefault.set_sensitive(False)
111                '''menublockstreams.set_sensitive(False)'''
112    
113    
               
114          if not hasattr(context.view.hovered_item,'blockinstance'):          if not hasattr(context.view.hovered_item,'blockinstance'):
115              menurename.set_sensitive(False)              menurename.set_sensitive(False)
116              #menuinfo.set_sensitive(False)              #menuinfo.set_sensitive(False)
117            
118          if context.view.hovered_item:          if context.view.hovered_item:
119              if not context.view.hovered_item.blockinstance.instance:              if not context.view.hovered_item.blockinstance.instance:
120                  menublockinstance.set_sensitive(False)                  menublockinstance.set_sensitive(False)
121                    
122          menu.show_all()          menu.show_all()
123          menu.popup( None, None, None, event.button, event.time)          menu.popup( None, None, None, event.button, event.time)
124          #self.view.tool.ungrab(self.view.tool)          #self.view.tool.ungrab(self.view.tool)
125          return False          return False
126            
127      #def on_button_release(self, event):      #def on_button_release(self, event):
128          #print event          #print event
129          #self.view.hovered_item = None          #self.view.hovered_item = None
130          #return False          #return False
131        
132      def on_double_click(self,event):      def on_double_click(self,event):
133          context = self.view.tool          context = self.view.tool
134          if event.button != 1 or not context.view.hovered_item:          if event.button != 1 or not context.view.hovered_item:
135              context.ungrab(self.view.tool)              context.ungrab(self.view.tool)
136              return False              return False
137            
138          window = context.view.parent.parent.parent.parent.parent                  window = context.view.parent.parent.parent.parent.parent
139          self.blockproperties(None , window, context, context.view.hovered_item)          self.blockproperties(None , window, context, context.view.hovered_item)
140            
141      def deactivate(self,widget,context):      def deactivate(self,widget,context):
142          #print 'Hovered Item Set To None'          #print 'Hovered Item Set To None'
143          context.view.hovered_item = None          context.view.hovered_item = None
# Line 109  class ContextMenuTool(Tool): Line 145  class ContextMenuTool(Tool):
145      def rename(self,widget,item,window):      def rename(self,widget,item,window):
146          if hasattr(item,'blockinstance'):          if hasattr(item,'blockinstance'):
147              bi = item.blockinstance              bi = item.blockinstance
148              dia = gtk.Dialog("Rename %s '%s'" % (bi.blocktype.type.getName(),bi.name), window,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCK_CANCEL, 0, gtk.STOCK_OK, gtk.RESPONSE_OK))              dia = Gtk.Dialog("Rename %s '%s'" % (bi.blocktype.type.getName(),bi.name), window,Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,(Gtk.STOCK_CANCEL, 0, Gtk.STOCK_OK, Gtk.ResponseType.OK))
149              dia.set_default_response(gtk.RESPONSE_OK)              dia.set_default_response(Gtk.ResponseType.OK)
150              ent = gtk.Entry()              ent = Gtk.Entry()
151              ent.set_text(bi.name)              ent.set_text(bi.name)
152              def key_press(ent,event):              def key_press(ent,event):
153                  key = gtk.gdk.keyval_name(event.keyval)                  key = Gdk.keyval_name(event.keyval)
154                  if key == 'Return':                  if key == 'Return':
155                      dia.response(gtk.RESPONSE_OK)                      dia.response(Gtk.ResponseType.OK)
156                      return True                      return True
157                  return False                  return False
158              ent.connect("key-press-event",key_press)              ent.connect("key-press-event",key_press)
159              dia.vbox.add(ent)              dia.vbox.add(ent)
160              dia.show_all()              dia.show_all()
161              res = dia.run()              res = dia.run()
162              if res == gtk.RESPONSE_OK:              if res == Gtk.ResponseType.OK:
163                  bi.name = ent.get_text()                  bi.name = ent.get_text()
164              dia.destroy()              dia.destroy()
165                
166      @undo.block_observed      @undo.block_observed
167      def delete(self,widget,item,view):      def delete(self,widget,item,view):
168          view.canvas.remove(item)           view.canvas.remove(item)
169    
170      def blockproperties(self, widget = None, window = None, context = None, item = None, tab = None):      def blockproperties(self, widget = None, window = None, context = None, item = None, tab = None):
171          blockproperties.BlockProperties(window, item, tab = tab).run()           blockproperties.BlockProperties(window, item, tab = tab).run()
172            
173        def blockrotate_clock(self, widget, item, window):
174            ''' handler for rotating an item '''
175            item.rotate_clock()
176    
177        def blockrotate_anti(self,widget, item, window):
178            item.rotate_anti()
179    
180        def blockflip(self,widget, item, window):
181            item.flip()
182    
183      def canvasproperties(self, widget, window, context):      def canvasproperties(self, widget, window, context):
184          canvasproperties.CanvasProperties(window).run()          canvasproperties.CanvasProperties(window).run()
185        '''
186        def setstream(self, widget, window, context, item):
187            print window.ascwrap.streams
188        '''
189        def defaultvalues(self,widget,window,context,item):
190            print widget,window,context,item.blockinstance
191    
192            model = str(self.view.canvas)
193            #print model
194            self.view.canvas.saved_model = model
195            self.view.canvas.saved_data = {}
196    
197            window.ascwrap.library.loadString(model,"canvasmodel")
198            t = window.ascwrap.library.findType(str(item.blockinstance.blocktype.type.getName()));
199            try:
200                m =t.getMethod('default_self');
201            except:
202                return
203            i = t.getSimulation('sim',False);
204            i.build()
205            i.run(m);
206            fv = i.getFixedVariables();
207            for i in fv:
208                for param in item.blockinstance.params:
209                    if param == i.getName():
210                        item.blockinstance.params[param].value = i.getValue();
211                        item.blockinstance.params[param].fix = True

Legend:
Removed from v.2394  
changed lines
  Added in v.2895

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22