[Xfce4-commits] <thunarx-python:master> Added working submenu plugin example

Adam Plumb noreply at xfce.org
Thu May 27 18:12:21 CEST 2010


Updating branch refs/heads/master
         to 26e50d58b3ae29655ce8355561df403aa9ef35db (commit)
       from 9b3b70b7a203ace7d743cf15801d5471fc48a194 (commit)

commit 26e50d58b3ae29655ce8355561df403aa9ef35db
Author: Adam Plumb <adamplumb at gmail.com>
Date:   Mon Jan 11 12:16:08 2010 -0500

    Added working submenu plugin example

 examples/thunarx-submenu-plugin.py |   63 ++++++++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/examples/thunarx-submenu-plugin.py b/examples/thunarx-submenu-plugin.py
new file mode 100644
index 0000000..0a073b9
--- /dev/null
+++ b/examples/thunarx-submenu-plugin.py
@@ -0,0 +1,63 @@
+import thunarx
+import gtk
+
+"""
+Thunarx Submenu Plugin
+  This plugin shows an example of a MenuProvider plugin that implements
+  sub-menus.  The example used here requires the developer to sub-class 
+  gtk.Action and override the create_menu_item virtual method.
+  
+"""
+
+class MyAction(gtk.Action):
+  __gtype_name__ = "MyAction"
+  
+  def __init__(self, name, label, tooltip=None, stock_id=None, menu_handler=None):
+    gtk.Action.__init__(self, name, label, tooltip, stock_id)
+    self.menu_handler = menu_handler
+
+  def create_menu_item(self):
+    menuitem = gtk.MenuItem(self.get_label())
+    
+    if self.menu_handler is not None:
+      menu = gtk.Menu()
+      menuitem.set_submenu(menu)
+      self.menu_handler(menu)
+    
+    return menuitem
+
+  do_create_menu_item = create_menu_item
+
+def PyFileActionMenu(menu):
+  action = gtk.Action("TMP:Submenuitem1", "Submenuitem 1", None, None)
+  subitem = action.create_menu_item()
+  menu.append(subitem)
+  subitem.show()
+
+  action = MyAction("TMP:Submenuitem2", "Submenuitem 2", None, None, menu_handler=PyFileActionSubmenu)
+  subitem = action.create_menu_item()
+  menu.append(subitem)
+  subitem.show()
+
+def PyFileActionSubmenu(menu):
+  action = gtk.Action("TMP:SubSubmenuitem1", "Subsubmenuitem 1", None, None)
+  subitem = action.create_menu_item()
+  menu.append(subitem)
+  subitem.show()
+
+  action = gtk.Action("TMP:SubSubmenuitem2", "Subsubmenuitem 2", None, None)
+  subitem = action.create_menu_item()
+  menu.append(subitem)
+  subitem.show()
+
+class ThunarxSubMenuProviderPlugin(thunarx.MenuProvider):
+  def __init__(self):
+    pass
+  
+  def get_file_actions(self, window, files):
+    return [MyAction("TMP:TestFileAction", "PyFileAction", "Python File Action", 
+      gtk.STOCK_FILE, menu_handler=PyFileActionMenu)]
+  
+  def get_folder_actions(self, window, folder):
+    return [MyAction("TMP:TestFolderAction", "PyFolderAction", 
+      "Python Folder Action", gtk.STOCK_DIRECTORY)]



More information about the Xfce4-commits mailing list