/[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

revision 2004 by jpye, Wed Apr 15 08:59:46 2009 UTC revision 2005 by jpye, Mon Apr 20 08:39:46 2009 UTC
# Line 2  from gaphas.tool import Tool Line 2  from gaphas.tool import Tool
2  import pygtk  import pygtk
3  pygtk.require('2.0')  pygtk.require('2.0')
4  import gtk  import gtk
5    import info
6    import blockinstance
7    
8  class ContextMenuTool(Tool):  class ContextMenuTool(Tool):
9      """      """
# Line 16  class ContextMenuTool(Tool): Line 18  class ContextMenuTool(Tool):
18    
19      def on_button_press(self, context, event):      def on_button_press(self, context, event):
20          if event.button != 3:          if event.button != 3:
21                context.ungrab()
22              return False              return False
23          if context.view.hovered_item:          if context.view.hovered_item:
24              menu = gtk.Menu()              menu = gtk.Menu()
25              menurename = gtk.MenuItem("Re_name",True);              menu.connect("deactivate",self.deactivate,context)
26              window = context.view.parent.parent.parent.parent              menurename = gtk.MenuItem("Re_name",True)
27                window = context.view.get_parent_window()
28              print window.__class__              print window.__class__
29              menurename.connect("activate",self.rename,context.view.hovered_item,window)              menurename.connect("activate",self.rename,context.view.hovered_item,window)
30              menu.add(menurename)              menu.add(menurename)
31              menudelete = gtk.MenuItem("_Delete",True);              menudelete = gtk.MenuItem("_Delete",True)
32              menudelete.connect("activate",self.delete,context.view.hovered_item,context.view)              menudelete.connect("activate",self.delete,context.view.hovered_item,context.view)
33              menu.add(menudelete)              menu.add(menudelete)
34              menu.show_all()                  menu.add(gtk.SeparatorMenuItem())
35                menuinfo = gtk.MenuItem("_Info",True)
36                menuinfo.connect("activate",self.info,window,context,context.view.hovered_item)        
37                menu.add(menuinfo)
38                if not hasattr(context.view.hovered_item,'blockinstance'):
39                    menurename.set_sensitive(False)
40                    menuinfo.set_sensitive(False)
41                menu.show_all()
42              menu.popup( None, None, None, event.button, event.time)              menu.popup( None, None, None, event.button, event.time)
43                context.ungrab()
44                return True
45    
46        def info(self,widget,window,context,item):
47            print window.__class__
48            bi = item.blockinstance
49            title = "Info for block '%s'" % bi.name
50            text = "Block info\n\n"
51            text += "Name:\t%s\n" % bi.name
52            text += "Type:\t%s\n" % bi.blocktype.type.getName()
53    
54            text += "\nPorts:\n"
55            for k,v in bi.ports.iteritems():
56                text += "\t%s" % v.name
57                if v.type == blockinstance.PORT_IN:
58                    text += " (IN)\n"
59                elif v.type == blockinstance.PORT_OUT:
60                    text += " (OUT)\n"
61    
62            if hasattr(bi,"params"):
63                text += "\nParameters:\n"
64                for k,v in bi.params.iteritems():
65                    text += "\t%s = %f\n" % (v.name, v.value)
66                
67                if bi.instance:
68                    text += "\nInstance exists\n"
69                else:
70                    text += "\nNo instance exists\n"
71    
72            info.Info(window,text,title).run()
73    
74    
75        def deactivate(self,widget,context):
76            #print "DEACTIVATING MENU"
77            # TODO pass a signal to the HoverTool to update the hovered item
78            # according to where the mouse is currently located.
79            context.view.hovered_item = None
80    
81      def rename(self,widget,item,window):      def rename(self,widget,item,window):
82          if hasattr(item,'blockinstance'):          if hasattr(item,'blockinstance'):

Legend:
Removed from v.2004  
changed lines
  Added in v.2005

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