Example #1
0
	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()
Example #2
0
    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()