summaryrefslogtreecommitdiff
path: root/util/mate-menus-ls.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/mate-menus-ls.py')
-rw-r--r--util/mate-menus-ls.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/util/mate-menus-ls.py b/util/mate-menus-ls.py
new file mode 100644
index 0000000..ec6ef4b
--- /dev/null
+++ b/util/mate-menus-ls.py
@@ -0,0 +1,94 @@
+# vim: set ts=4 sw=4 et:
+
+#
+# Copyright (C) 2008 Novell, Inc.
+#
+# Authors: Vincent Untz <[email protected]>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+import optparse
+import sys
+
+import matemenu
+
+def print_entry(entry, path):
+ if entry.get_is_excluded():
+ excluded = ' <excluded>'
+ else:
+ excluded = ''
+
+ print '%s\t%s\t%s%s' % (path, entry.get_desktop_file_id(), entry.get_desktop_file_path(), excluded)
+
+def print_directory(dir, parent_path = None):
+ if not parent_path:
+ path = '/'
+ else:
+ path = '%s%s/' % (parent_path, dir.get_name())
+
+ for item in dir.get_contents():
+ type = item.get_type()
+ if type == matemenu.TYPE_ENTRY:
+ print_entry(item, path)
+ elif type == matemenu.TYPE_DIRECTORY:
+ print_directory(item, path)
+ elif type == matemenu.TYPE_ALIAS:
+ aliased = item.get_item()
+ if aliased.get_type() == matemenu.TYPE_ENTRY:
+ print_entry(aliased, path)
+ elif type in [ matemenu.TYPE_HEADER, matemenu.TYPE_SEPARATOR ]:
+ pass
+ else:
+ print >> sys.stderr, 'Unsupported item type: %s' % type
+
+def main(args):
+ parser = optparse.OptionParser()
+
+ parser.add_option('-f', '--file', dest='file',
+ help='Menu file')
+ parser.add_option('-i', '--include-excluded', dest='exclude',
+ action='store_true', default=False,
+ help='Include <Exclude>d entries')
+ parser.add_option('-n', '--include-nodisplay', dest='nodisplay',
+ action='store_true', default=False,
+ help='Include NoDisplay=true entries')
+
+ (options, args) = parser.parse_args()
+
+ if options.file:
+ menu_file = options.file
+ else:
+ menu_file = 'mate-applications.menu'
+
+ flags = matemenu.FLAGS_NONE
+ if options.exclude:
+ flags |= matemenu.FLAGS_INCLUDE_EXCLUDED
+ if options.nodisplay:
+ flags |= matemenu.FLAGS_INCLUDE_NODISPLAY
+
+ tree = matemenu.lookup_tree(menu_file, flags)
+ root = tree.get_root_directory()
+
+ if not root:
+ print 'Menu tree is empty'
+ else:
+ print_directory(root)
+
+if __name__ == '__main__':
+ try:
+ main(sys.argv)
+ except KeyboardInterrupt:
+ pass