From ab21174c5e18c3b84a3f89087e832709f2105f74 Mon Sep 17 00:00:00 2001 From: Heinrich Wendel Date: Thu, 2 Jun 2005 19:43:02 +0000 Subject: fix detection of menu files --- xdg/Menu.py | 24 ++++++++++++++---------- xdg/MenuEditor.py | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/xdg/Menu.py b/xdg/Menu.py index da4252a..cd76aa4 100644 --- a/xdg/Menu.py +++ b/xdg/Menu.py @@ -475,17 +475,23 @@ class Header: tmp = {} +def __getFileName(filename): + for dir in xdg_config_dirs: + menuname = os.path.join (dir, "menus" , filename) + if os.path.isdir(dir) and os.path.isfile(menuname): + return menuname + def parse(filename=None): - # if no file given, try default files + # conver to absolute path + if filename and not os.path.isabs(filename): + filename = __getFileName(filename) + + # use default if no filename given if not filename: - for dir in xdg_config_dirs: - filename = os.path.join (dir, "menus" , "applications.menu") - if os.path.isdir(dir) and os.path.isfile(filename): - break + filename = __getFileName("applications.menu") - # convert to absolute path - if not os.path.isabs(filename): - filename = os.path.abspath(filename) + if not filename: + raise ParsingError('File not found', "/etc/xdg/menus/applications.menu") # check if it is a .menu file if not os.path.splitext(filename)[1] == ".menu": @@ -494,8 +500,6 @@ def parse(filename=None): # create xml parser try: doc = xml.dom.minidom.parse(filename) - except IOError: - raise ParsingError('File not found', filename) except xml.parsers.expat.ExpatError: raise ParsingError('Not a valid .menu file', filename) diff --git a/xdg/MenuEditor.py b/xdg/MenuEditor.py index fc6c0c1..9061834 100644 --- a/xdg/MenuEditor.py +++ b/xdg/MenuEditor.py @@ -32,7 +32,7 @@ class MenuEditor: def parse(self, menu=None, filename=None, root=False): if isinstance(menu, Menu): self.menu = menu - elif isinstance(menu, unicode): + elif menu: self.menu = parse(menu) else: self.menu = parse() -- cgit v1.2.3