URI: 
       tUtils for dynamically loading themes. - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 304ccb6fd7fc3fabb8a99e7c8d05fe8c2e46ac2f
   DIR parent 10979eff9c13181b1b01555aaa632ab2c22c4e25
  HTML Author: Amir Taaki <genjix@riseup.net>
       Date:   Sat, 18 Aug 2012 08:21:58 +0100
       
       Utils for dynamically loading themes.
       
       Diffstat:
         M lib/util.py                         |      36 ++++++++++++++++++++++++++++++-
       
       1 file changed, 35 insertions(+), 1 deletion(-)
       ---
   DIR diff --git a/lib/util.py b/lib/util.py
       t@@ -5,7 +5,6 @@ import sys
        def print_error(*args):
            for item in args:
              sys.stderr.write(str(item))
       -
            sys.stderr.write("\n")
            sys.stderr.flush()
        
       t@@ -23,3 +22,38 @@ def appdata_dir():
        def get_resource_path(*args):
            return os.path.join(".", *args)
        
       +def local_data_dir():
       +    assert sys.argv
       +    prefix_path = os.path.dirname(sys.argv[0])
       +    local_data = os.path.join(prefix_path, "data")
       +    return local_data
       +
       +def load_theme_name(theme_path):
       +    try:
       +        with open(os.path.join(theme_path, "name.cfg")) as name_cfg_file:
       +            return name_cfg_file.read().rstrip("\n").strip()
       +    except IOError:
       +        return None
       +
       +def theme_dirs_from_prefix(prefix):
       +    if not os.path.exists(prefix):
       +        return []
       +    theme_paths = {}
       +    for potential_theme in os.listdir(prefix):
       +        theme_full_path = os.path.join(prefix, potential_theme)
       +        theme_css = os.path.join(theme_full_path, "style.css")
       +        if not os.path.exists(theme_css):
       +            continue
       +        theme_name = load_theme_name(theme_full_path)
       +        if theme_name is None:
       +            continue
       +        theme_paths[theme_name] = prefix, potential_theme
       +    return theme_paths
       +
       +def load_theme_paths():
       +    theme_paths = {}
       +    prefixes = (local_data_dir(), appdata_dir())
       +    for prefix in prefixes:
       +        theme_paths.update(theme_dirs_from_prefix(prefix))
       +    return theme_paths
       +