def submenushow(self,parent,name,ico,exe): favlist = backend.load_setting("favorites") #try: #add_image_menuitem(menu,ico, name, None,'1') #except:return self.sm = gtk.Menu() #add_menuitem(self.sm,name) #add_menuitem(self.sm,_("Open")) add_image_menuitem(self.sm, gtk.STOCK_OPEN, _("Open"), self.run,name, exe,ico,'1') #add_menuitem(self.sm, "-") #add_image_menuitem(self.sm, gtk.STOCK_DIALOG_AUTHENTICATION, _("Open as Administrator"), self.runasadmin,name, exe,ico,'1') name_str = repr(name) name_str = str(name_str).replace("u'","").replace("'","") if ('%s::%s::%s::1' %(name_str, exe, ico)) not in favlist: add_menuitem(self.sm, "-") add_image_menuitem(self.sm, gtk.STOCK_ADD, _("Add to Favorites"), self.addfav,name,exe, ico, '1') else: add_menuitem(self.sm, "-") add_image_menuitem(self.sm, gtk.STOCK_REMOVE, _("Remove from Favorites"), self.removefav,name, exe, ico, '1') add_menuitem(self.sm, "-") add_image_menuitem(self.sm, gtk.STOCK_HOME, _("Create Desktop Shortcut"), self.addshort,name, exe, ico, '1') add_menuitem(self.sm, "-") if ('%s.desktop' % name) in os.listdir(Globals.AutoStartDirectory): add_image_menuitem(self.sm, gtk.STOCK_REMOVE, _("Remove from System Startup"), self.remove_autostarter,name, exe, ico, '1') else: add_image_menuitem(self.sm, gtk.STOCK_ADD, _("Add to System Startup"), self.create_autostarter,name, exe, ico, '1') self.sm.show_all() self.sm.popup(None, None, None, 0,0) gc.collect()
def ButtonClick(self, index, event=0): """Callback when buttons are clicked""" # 0 Subfolder # 1 Application # 2 places, settings, back. # 3,4 Recents self.etype = self.L_Types[index] if event == 0: event_button = 1 else: if event.type == gtk.gdk.KEY_PRESS: event_button = 1 elif event.type == gtk.gdk.BUTTON_PRESS: event_button = event.button elif event.type == gtk.gdk.BUTTON_RELEASE: event_button = event.button if event_button == 1: if self.etype == 0: # Subfolder self.PrevMenu.append(self.Menu) if self.menuparser.has_matemenu: self.Menu = self.L_Paths[index] else: self.Menu = self.BaseMenu.getMenu(self.L_Paths[index]) self.ConstructMenu() elif self.etype == 1 or self.etype == 3 or self.etype == 4: # Application self.Launcher.Launch(self.L_Execs[index], self.etype) self.Restart("previous") return 1 elif self.etype == 2: # Menu special buttons places, settings, back. if self.L_Names[index] == _("Back"): try: self.Menu = self.PrevMenu.pop() except: self.Menu = self.BaseMenu = self.menuparser.CacheApplications if self.Menu == self.menuparser.CacheApplications: self.BaseMenu = self.Menu self.ConstructMenu() elif self.L_Names[index] == _("System"): self.PrevMenu.append(self.Menu) self.Restart("settings") elif self.L_Names[index] == _("Places"): self.PrevMenu.append(self.Menu) self.Restart("places") elif self.etype == 5 or self.etype == 6: # Items in the menu have changed self.Launcher.Launch(self.L_Execs[index], self.etype) elif self.etype == 7: # Properties of the menu have changed self.Launcher.Launch(self.L_Execs[index], self.etype) Globals.ReloadSettings() elif self.etype == 10: # Clear Recent self.recent_manager.purge_items() self.Restart("previous") elif event_button == 3: self.m = gtk.Menu() name = self.L_Names[index] favlist = backend.load_setting("favorites") try: thismenu = add_image_menuitem(self.m, self.L_Icons_menu[index], name, self.dummy, "1") except: return if zg and self.allgio is not None: self.recent_files = None self.most_used_files = None for z in self.allgio: if z.get_name() == name: desk = z.get_id() self.recent_files = zg.get_recent_for_app(desk, Globals.RI_numberofitems) self.most_used_files = zg.get_most_used_for_app(desk, Globals.RI_numberofitems) break if self.recent_files or self.most_used_files: self.menuitem = add_menuitem(self.m, "-") for files, menu_name in ( (self.recent_files, _("Recently Used")), (self.most_used_files, _("Most Used")), ): if files: self.submenu = gtk.Menu() menu_item = gtk.MenuItem(menu_name) menu_item.set_submenu(self.submenu) self.m.append(menu_item) menu_item.show() for ev in files: for subject in ev.get_subjects(): label = subject.text or subject.uri submenu_item = gtk.MenuItem(label, use_underline=False) self.submenu.append(submenu_item) # "activate" doesn't seem to work on sub menus # so "button-press-event" is used instead. submenu_item.connect("button-press-event", self.launch_item, subject.uri) submenu_item.show() if self.etype != 0 and name != _("Back"): if self.etype != 3: self.menuitem = add_menuitem(self.m, "-") self.menuitem = add_image_menuitem( self.m, gtk.STOCK_DIALOG_AUTHENTICATION, _("Open as Administrator"), self.runasadmin, name, self.L_Execs[index], self.L_Icons_menu[index], self.L_Types[index], ) else: def searchfolder(folder, me): dirs = os.listdir(folder) dirs.sort(key=str.upper) for item in dirs: if not item.startswith("."): if os.path.isdir(os.path.abspath(folder) + "/" + item): add_image_menuitem( me, gtk.STOCK_DIRECTORY, item, self.launch_item, '"' + os.path.abspath(folder.replace("file://", "")) + "/" + item + '"', ) else: submenu_item = gtk.MenuItem(item, use_underline=False) me.append(submenu_item) # "activate" doesn't seem to work on sub menus # so "button-press-event" is used instead. submenu_item.connect( "button-press-event", self.launch_item, '"' + os.path.abspath(folder) + "/" + item + '"', ) submenu_item.show() f = os.path.abspath(urllib.url2pathname(self.L_Execs[index]).replace("file://", "")) if os.path.exists(f): if os.path.isdir(f): self.submenu = gtk.Menu() thismenu.set_submenu(self.submenu) searchfolder(f, self.submenu) elif os.path.isfile(f): if isgio: add_menuitem(self.m, "-") self.openwith = add_image_menuitem(self.m, gtk.STOCK_OPEN, _("Open with")) Gfile = gio.File(f) tuble = [Gfile, Gfile.query_info("standard::*"), []] name = tuble[1].get_name() # ff = gio.file_parse_name(f) apps = gio.app_info_get_all_for_type(tuble[1].get_content_type()) self.submenu = gtk.Menu() self.openwith.set_submenu(self.submenu) for app in apps: self.menuitem = add_menuitem( self.submenu, app.get_name(), self.custom_launch, "'" + f + "'", app.get_executable(), ) if name == _("Trash"): self.menuitem = add_menuitem(self.m, "-") self.menuitem = add_image_menuitem(self.m, gtk.STOCK_CLEAR, _("Empty Trash"), self.emptytrash) if ( "%s::%s::%s::%s" % (name, self.L_Execs[index], self.L_Icons_menu[index], str(self.L_Types[index])) not in favlist ): self.menuitem = add_menuitem(self.m, "-") self.menuitem = add_image_menuitem( self.m, gtk.STOCK_ADD, _("Add to Favorites"), self.addfav, name, self.L_Execs[index], self.L_Icons_menu[index], self.L_Types[index], ) else: self.menuitem = add_menuitem(self.m, "-") self.menuitem = add_image_menuitem( self.m, gtk.STOCK_REMOVE, _("Remove from Favorites"), self.removefav, name, self.L_Execs[index], self.L_Icons_menu[index], self.L_Types[index], ) self.menuitem = add_menuitem(self.m, "-") self.menuitem = add_image_menuitem( self.m, gtk.STOCK_HOME, _("Create Desktop Shortcut"), self.addshort, name, self.L_Execs[index], self.L_Icons_menu[index], self.L_Types[index], ) self.menuitem = add_menuitem(self.m, "-") if ("%s.desktop" % name) in os.listdir(Globals.AutoStartDirectory): self.menuitem = add_image_menuitem( self.m, gtk.STOCK_REMOVE, _("Remove from System Startup"), self.remove_autostarter, name, self.L_Execs[index], self.L_Icons_menu[index], self.L_Types[index], ) else: self.menuitem = add_image_menuitem( self.m, gtk.STOCK_ADD, _("Add to System Startup"), self.create_autostarter, name, self.L_Execs[index], self.L_Icons_menu[index], self.L_Types[index], ) self.m.show_all() self.m.popup(None, None, None, event.button, event.time) self.submenu = None self.menuitem = None gc.collect()