commit 304ccb6fd7fc3fabb8a99e7c8d05fe8c2e46ac2f
parent 10979eff9c13181b1b01555aaa632ab2c22c4e25
Author: Amir Taaki <genjix@riseup.net>
Date: Sat, 18 Aug 2012 08:21:58 +0100
Utils for dynamically loading themes.
Diffstat:
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/lib/util.py b/lib/util.py
@@ -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()
@@ -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
+