summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Wendel <h_wendel@cojobo.net>2005-06-01 14:50:50 +0000
committerHeinrich Wendel <h_wendel@cojobo.net>2005-06-01 14:50:50 +0000
commitf6b1bad9b2cb80c3df73e7cc1c83319c60845f03 (patch)
tree4c55bca47a8912c55f156ea2a6a76820153c69c5
parent56ac3dc6bc8eaddd273d7509a0f1d0237c6bae3f (diff)
root mode
-rw-r--r--xdg/Config.py4
-rw-r--r--xdg/Menu.py39
-rw-r--r--xdg/MenuEditor.py18
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"