Ejemplo n.º 1
0
		def walk_menu(entry, is_system=False):
			if entry.get_type() == gmenu.TYPE_DIRECTORY and split and ids or entry.get_type() == gmenu.TYPE_DIRECTORY and not split:
								
				if not entry.menu_id in to_skip:
					obj = "\n".join(map(walk_menu, entry.get_contents()))
				elif is_system:
					obj = "\n".join(map(walk_menu_system, entry.get_contents()))
				else:
					return ""
				
				return core.menu(escape(entry.menu_id), escape(entry.name.replace("&","and")), obj, icon=entry.icon)
			elif entry.get_type() == gmenu.TYPE_DIRECTORY and split:
				if not entry.menu_id in to_skip:
					return core.pipemenu(escape(entry.menu_id), escape(entry.name.replace("&","and")), "alan-show-extension %s %s" % (sys.argv[1], entry.menu_id), icon=entry.icon)
			elif entry.get_type() == gmenu.TYPE_ENTRY and not entry.is_excluded:
				command = re.sub(' [^ ]*%[fFuUdDnNickvm]', '', entry.get_exec())
				if "oneslip" in command and not ONESLIP:
					# oneslip not installed, link to bricks
					command = "pkexec /usr/bin/bricks \"%s\" oneslip" % escape(entry.name.replace("&","and"))
				if entry.launch_in_terminal:
					command = 'x-terminal-emulator --title "%s" -e %s' % \
						(entry.name.replace("&","and"), command)
				
				# New action
				act = ga.execute(escape(command))
				# Incorporate action in item
				item = core.item(escape(entry.name.replace("&","and")), act, icon=entry.icon)
				
				return item
Ejemplo n.º 2
0
					done = 0
					while done != count:
						# Create items
						done += 1

						# Get object icon
						_icon = conf.printv("icon%s" % done)
						if not icons or not _icon: _icon = ""

						items.append(core.item(parsename(conf.printv("item%s" % done)), ga.execute(conf.printv("item%s_ex" % done)), icon=_icon))
				elif _ext == "__menu__":
					# Internal menu id
					items.append(core.menu(conf.printv("id"), icon=_icon))
				elif _ext == "__item__":
					# Normal menu item
					items.append(core.item(parsename(conf.printv("name")), ga.execute(conf.printv("executable")), icon=_icon))
				else:
					# An external extension
					items.append(core.pipemenu(ext, _name, "%s %s" % (execu,ext), icon=_icon))
		
		if IS_MAIN:
			# We are main? The items should not be in submenu.
			i("\n".join(items))
		else:
			# Generate a submenu and then add the items.
			i(core.menu(cat, name, "\n".join(items), icon=icon))
		

	menu.end()
print menu.final_menu
Ejemplo n.º 3
0
	def run(self):
				
		ids = ""

		# Get split_menu
		split = self.cfg.printv("split_menu")
		
		# Get hide_settings_menus
		hide_settings_menus = self.cfg.printv("hide_settings_menus")

		if split:
			# Should edit menu?
			if len(sys.argv) > 2:
					ids = " ".join(sys.argv[2:])
		
		if hide_settings_menus:
			# Should hide menus?
			to_skip = ()
		else:
			to_skip = ("Administration", "Preferences")

		# Lookup menu file
		if os.path.exists("/etc/xdg/menus/semplice-applications.menu"):
			applications_menu = "semplice-applications.menu"
		elif os.path.exists("/etc/xdg/menus/gnome-applications.menu"):
			applications_menu = "gnome-applications.menu"
		else:
			applications_menu = "applications.menu" # Force to applications.menu, may fail if not existent, of course.

		def walk_menu_system(entry):
			return walk_menu(entry, is_system=True)

		def walk_menu(entry, is_system=False):
			if entry.get_type() == gmenu.TYPE_DIRECTORY and split and ids or entry.get_type() == gmenu.TYPE_DIRECTORY and not split:
								
				if not entry.menu_id in to_skip:
					obj = "\n".join(map(walk_menu, entry.get_contents()))
				elif is_system:
					obj = "\n".join(map(walk_menu_system, entry.get_contents()))
				else:
					return ""
				
				return core.menu(escape(entry.menu_id), escape(entry.name.replace("&","and")), obj, icon=entry.icon)
			elif entry.get_type() == gmenu.TYPE_DIRECTORY and split:
				if not entry.menu_id in to_skip:
					return core.pipemenu(escape(entry.menu_id), escape(entry.name.replace("&","and")), "alan-show-extension %s %s" % (sys.argv[1], entry.menu_id), icon=entry.icon)
			elif entry.get_type() == gmenu.TYPE_ENTRY and not entry.is_excluded:
				command = re.sub(' [^ ]*%[fFuUdDnNickvm]', '', entry.get_exec())
				if "oneslip" in command and not ONESLIP:
					# oneslip not installed, link to bricks
					command = "pkexec /usr/bin/bricks \"%s\" oneslip" % escape(entry.name.replace("&","and"))
				if entry.launch_in_terminal:
					command = 'x-terminal-emulator --title "%s" -e %s' % \
						(entry.name.replace("&","and"), command)
				
				# New action
				act = ga.execute(escape(command))
				# Incorporate action in item
				item = core.item(escape(entry.name.replace("&","and")), act, icon=entry.icon)
				
				return item

		# Initiate pipemenu
		#self.menu = struct.PipeMenu(use_cache=self.cfg.printv("use_cache","Alan"), cache="xdgmenu", cache_trigger=(self.cfg.path, glob.glob("/usr/share/applications/desktop.*.cache")[0]))
		self.menu = struct.PipeMenu()
		if self.menu.cache_check():
			# Read cache
			self.menu.cache_read()
		else:
			self.menu.start() # add initial tag

			# Alias menu.insert() to i()
			i = self.menu.insert

			### Begin!

			if split:
				path = "/" + ids
			else:
				path = "/"
			i("\n".join(map(walk_menu, gmenu.lookup_tree(applications_menu).get_directory_from_path(path).get_contents())))

			#### SYSTEM SETTINGS
			if not ids and not hide_settings_menus:
				i(core.separator)

				# Prefs
				prefs = gmenu.lookup_tree(applications_menu).get_directory_from_path("/System/Preferences")
				if not split:
					prefs_items = "\n".join(map(walk_menu_system, prefs.get_contents()))
					i(core.menu(escape(prefs.menu_id), escape(prefs.name.replace("&","and")), prefs_items, icon=prefs.icon))
				else:
					i(core.pipemenu(escape(prefs.menu_id), escape(prefs.name.replace("&","and")), "alan-show-extension %s %s" % (sys.argv[1], "System/Preferences"), icon=prefs.icon))
				
				# Admin
				admin = gmenu.lookup_tree(applications_menu).get_directory_from_path("/System/Administration")
				if not split:
					admin_items = "\n".join(map(walk_menu_system, admin.get_contents()))
					i(core.menu(escape(admin.menu_id), escape(admin.name.replace("&","and")), admin_items, icon=admin.icon))
				else:
					i(core.pipemenu(escape(admin.menu_id), escape(admin.name.replace("&","and")), "alan-show-extension %s %s" % (sys.argv[1], "System/Administration"), icon=admin.icon))

			# Display info object
			#i(core.info(infos))

			# End
			self.menu.end()