diff options
author | Heinrich Wendel <h_wendel@cojobo.net> | 2005-06-01 14:50:50 +0000 |
---|---|---|
committer | Heinrich Wendel <h_wendel@cojobo.net> | 2005-06-01 14:50:50 +0000 |
commit | f6b1bad9b2cb80c3df73e7cc1c83319c60845f03 (patch) | |
tree | 4c55bca47a8912c55f156ea2a6a76820153c69c5 | |
parent | 56ac3dc6bc8eaddd273d7509a0f1d0237c6bae3f (diff) |
root mode
-rw-r--r-- | xdg/Config.py | 4 | ||||
-rw-r--r-- | xdg/Menu.py | 39 | ||||
-rw-r--r-- | xdg/MenuEditor.py | 18 |
3 files changed, 34 insertions, 27 deletions
diff --git a/xdg/Config.py b/xdg/Config.py index d3dc82a..39cc1e1 100644 --- a/xdg/Config.py +++ b/xdg/Config.py @@ -7,6 +7,7 @@ windowmanager = None icon_theme = "highcolor" icon_size = 48 cache_time = 5 +root_mode = False def setWindowManager(wm): global windowmanager @@ -32,3 +33,6 @@ def setLocale(lang): locale.setlocale(locale.LC_ALL, lang) import xdg.Locale xdg.Locale.update(lang) + +def setRootMode(boolean): + self.root_mode = boolean diff --git a/xdg/Menu.py b/xdg/Menu.py index 91cab8b..35cb348 100644 --- a/xdg/Menu.py +++ b/xdg/Menu.py @@ -404,6 +404,18 @@ class MenuEntry: def getDir(self): return self.DesktopEntry.filename.replace(self.Filename, '') + def getType(self): + # Can be one of System/User/Both + if xdg.Config.root_mode == False: + if self.Original: + return "Both" + elif xdg_data_dirs[0] in self.DesktopEntry.filename: + return "User" + else: + return "System" + else: + return "User" + def setAttributes(self, filename, dir="", prefix=""): self.Filename = filename self.Prefix = prefix @@ -412,23 +424,13 @@ class MenuEntry: if not os.path.isabs(self.DesktopEntry.filename): self.__setFilename() - # Can be one of System/User/Both - if tmp["root"] == False: - if xdg_data_dirs[0] in self.DesktopEntry.filename: - self.Type = "User" - else: - self.Type = "System" - else: - self.Type = "User" - def updateAttributes(self): - if self.Type == "System": - self.Type = "Both" + if self.getType() == "System": self.Original = MenuEntry(self.Filename, self.getDir(), self.Prefix) self.__setFilename() def __setFilename(self): - if tmp["root"] == False: + if xdg.Config.root_mode == False: path = xdg_data_dirs[0] else: path= xdg_data_dirs[1] @@ -473,7 +475,7 @@ class Header: tmp = {} -def parse(filename=None, root=False): +def parse(filename=None): # if no file given, try default files if not filename: for dir in xdg_config_dirs: @@ -502,7 +504,6 @@ def parse(filename=None, root=False): tmp["mergeFiles"] = [] tmp["DirectoryDirs"] = [] tmp["cache"] = MenuEntryCache() - tmp["root"] = root __parse(doc, filename, tmp["Root"]) __parsemove(tmp["Root"]) @@ -669,9 +670,8 @@ def __postparse(menu): menuentry = MenuEntry(directory, dir) if not menu.Directory: menu.Directory = menuentry - elif menuentry.Type == "System": - if menu.Directory.Type == "User": - menu.Directory.Type = "Both" + elif menuentry.getType() == "System": + if menu.Directory.getType() == "User": menu.Directory.Original = menuentry if menu.Directory: break @@ -1014,12 +1014,11 @@ class MenuEntryCache: if menuentry.DesktopFileID not in ids: ids.append(menuentry.DesktopFileID) list.append(menuentry) - elif menuentry.Type == "System": + elif menuentry.getType() == "System": # FIXME: This is only 99% correct, but still... i = list.index(menuentry) e = list[i] - if e.Type == "User": - e.Type = "Both" + if e.getType() == "User": e.Original = menuentry self.cache[key] = list return list diff --git a/xdg/MenuEditor.py b/xdg/MenuEditor.py index 8f23400..14816bc 100644 --- a/xdg/MenuEditor.py +++ b/xdg/MenuEditor.py @@ -4,6 +4,7 @@ from xdg.Menu import * from xdg.BaseDirectory import * from xdg.Exceptions import * from xdg.DesktopEntry import * +from xdg.Config import * import xml.dom.minidom import os @@ -32,14 +33,15 @@ class MenuEditor: if isinstance(menu, Menu): self.menu = menu elif isinstance(menu, unicode): - self.menu = parse(filename, root) + self.menu = parse(parse_path, root) else: self.menu = parse(root) + if root == True: + self.filename = self.menu.Filename + setRootMode(True) if filename: self.filename = save_path - elif root == True: - self.filename = self.menu.Filename else: self.filename = os.path.join(xdg_config_dirs[0], "menus", os.path.split(self.menu.Filename)[1]) @@ -247,17 +249,19 @@ class MenuEditor: if isinstance(entry, Menu): if not isinstance(entry.Directory, MenuEntry): return "none" - elif entry.Directory.Type == "Both": + elif entry.Directory.getType() == "Both": return "revert" - elif entry.Directory.Type == "User" \ + elif entry.Directory.getType() == "User" \ and (len(entry.Submenus) + len(entry.MenuEntries)) == 0: return "delete" elif isinstance(entry, MenuEntry): - if entry.Type == "Both": + if entry.getType() == "Both": return "revert" - elif entry.Type == "User": + elif entry.getType() == "User": return "delete" + else: + return "none" return "none" |