Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def print_dir(entry, l):
i = " " * l
pu(i + "+==MENU")
pu(i, "|- name: " + repr(entry.getName()))
pu(i + "|- id:", entry.Name)
pu(i + "|- icon:", entry.getIcon())
de = entry.Directory
pu(i + "|- file:" + (de and de.DesktopEntry.filename or "None"))
pu(i + "|")
pu(i + " \\")
for e in entry.getEntries():
if isinstance(e, xdg.Menu.Separator):
print_sep(e, l+1)
elif isinstance(e, xdg.Menu.Menu):
print_dir(e, l+1)
elif isinstance(e, xdg.Menu.MenuEntry):
print_app(e, l+1)
def __iter__(self):
for entry in self.adaptee.getEntries(self.show_hidden):
if isinstance(entry, xdg.Menu.Separator):
yield XdgSeparatorAdapter(entry)
elif isinstance(entry, xdg.Menu.Menu):
yield XdgDirectoryAdapter(entry)
elif isinstance(entry, xdg.Menu.MenuEntry):
yield XdgEntryAdapter(entry)
if len(sys.argv) > 1:
menufile = sys.argv[1] + '.menu'
else:
menufile = 'applications.menu'
lang = os.environ.get('LANG')
if lang:
xdg.Config.setLocale(lang)
# lie to get the same menu as in GNOME
xdg.Config.setWindowManager('GNOME')
if icons:
theme = Gtk.IconTheme.get_default()
menu = xdg.Menu.parse(menufile)
#map(walk_menu, menu.getEntries())
map(generate_awesome_menu, menu.getEntries())
generate_main_menu()
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-s", "--srcdir", dest="srcdir",
default="/usr/share/app-install/desktop/",
help="directory for the menu-data")
parser.add_option("-d", "--destdir", dest="destdir",
default="output",
help="dir for the output")
(options, args) = parser.parse_args()
# get a cache
cache = apt.Cache()
# read menu
menu = CoreApplicationMenu(options.srcdir)
root = xdg.Menu.parse(os.path.join(options.srcdir, "applications.menu"))
menu._populateFromEntry(root)
# output per section
index_file = open(os.path.join(options.destdir,"sections.txt"),"w")
sections = menu.pickle.keys()
sections.sort()
for section in sections:
name = unescape(section.name)
index_file.write("%s\n" % name)
section_file = open(os.path.join(options.destdir,name+".txt"),"w")
for app in menu.pickle[section]:
if not cache.has_key(app.pkgname):
print "ERROR: can't find '%s' in apt cache" % app.pkgname
continue
section_file.write("%s (%s) %s %s\n\n" % (
app.name.encode('utf-8'),
def get_menu(menu):
for entry in menu.getEntries():
if isinstance(entry, xdg.Menu.Menu):
get_menu(entry)
elif isinstance(entry, xdg.Menu.MenuEntry):
desktops[entry.DesktopEntry.getFileName()] = {
'name': entry.DesktopEntry.getName(),
'desktop': entry.DesktopEntry.getFileName()
}
def walk_menu(entry):
if isinstance(entry, xdg.Menu.Menu) and entry.Show is True:
print '<menu label="%s" id="%s">' \
% (entry_name(entry),
entry_name(entry),
escape_utf8(icon_attr(entry)))
map(walk_menu, entry.getEntries())
print '</menu>'
elif isinstance(entry, xdg.Menu.MenuEntry) and entry.Show is True:
print ' ' % \
(entry_name(entry.DesktopEntry).replace('"', ''),
escape_utf8(icon_attr(entry.DesktopEntry)))
command = re.sub(' -caption "%c"| -caption %c', ' -caption "%s"' % entry_name(entry.DesktopEntry), entry.DesktopEntry.getExec())
command = re.sub(' [^ ]*%[fFuUdDnNickvm]', '', command)
if entry.DesktopEntry.getTerminal():
command = 'xterm -title "%s" -e %s' % \
(entry_name(entry.DesktopEntry), command)
print ' ' + \
item.menupath = [_("Applications"),parent.name]
else:
item.menupath = None
self.pickle[parent].append(item)
elif name:
try:
print "Skipped %s: not associated with a package" % entry
except UnicodeEncodeError:
pass
else:
try:
print "Skipped %s: does not include a menu name" % entry
except UnicodeEncodeError:
pass
elif isinstance(entry, xdg.Menu.Header):
print "got header"
def _process_menu(menu):
"""Recursive handler for getting games from menus.
Written based on this public-domain code by Konstantin Korikov:
http://mmoeller.fedorapeople.org/icewm/icewm-xdg-menu/icewm-xdg-menu
"""
entries = []
for entry in menu.getEntries():
if isinstance(entry, xdg.Menu.Menu):
entries.extend(_process_menu(entry))
elif isinstance(entry, xdg.Menu.MenuEntry):
dentry = entry.DesktopEntry
entries.append(dentry)
else:
log.debug("S: %s", entry)
return entries