Load theme in gui according to setting.
authorAmir Taaki <genjix@riseup.net>
Sat, 18 Aug 2012 07:23:26 +0000 (08:23 +0100)
committerAmir Taaki <genjix@riseup.net>
Sat, 18 Aug 2012 07:23:26 +0000 (08:23 +0100)
lib/gui_lite.py

index 8bd69c9..53d7a51 100644 (file)
@@ -4,7 +4,7 @@ from PyQt4.QtCore import *
 from PyQt4.QtGui import *
 
 from decimal import Decimal as D
-from util import appdata_dir, get_resource_path as rsrc
+from util import get_resource_path as rsrc
 from i18n import _
 import decimal
 import exchange_rate
@@ -15,6 +15,7 @@ import time
 import wallet
 import webbrowser
 import history_widget
+import util
 
 try:
     import lib.gui_qt as gui_qt
@@ -40,36 +41,25 @@ def resize_line_edit_width(line_edit, text_input):
     text_input += "A"
     line_edit.setMinimumWidth(metrics.width(text_input))
 
-def cd_data_dir():
-    assert sys.argv
-    prefix_path = os.path.dirname(sys.argv[0])
-    local_data = os.path.join(prefix_path, "data")
-    if os.path.exists(os.path.join(local_data, "style.css")):
-        data_dir = local_data
-    else:
-        data_dir = appdata_dir()
-    QDir.setCurrent(data_dir)
-
 class ElectrumGui:
 
     def __init__(self, wallet):
         self.wallet = wallet
         self.app = QApplication(sys.argv)
-        # Should probably not modify the current path but instead
-        # change the behaviour of rsrc(...)
-        self.old_path = QDir.currentPath()
-        cd_data_dir()
-        with open(rsrc("style.css")) as style_file:
-            self.app.setStyleSheet(style_file.read())
 
     def main(self, url):
         actuator = MiniActuator(self.wallet)
+        # Should probably not modify the current path but instead
+        # change the behaviour of rsrc(...)
+        old_path = QDir.currentPath()
+        actuator.load_theme()
+
         self.mini = MiniWindow(actuator, self.expand)
         driver = MiniDriver(self.wallet, self.mini)
 
         # Reset path back to original value now that loading the GUI
         # is completed.
-        QDir.setCurrent(self.old_path)
+        QDir.setCurrent(old_path)
 
         if url:
             self.set_url(url)
@@ -473,6 +463,25 @@ class MiniActuator:
     def __init__(self, wallet):
         self.wallet = wallet
 
+        self.theme_name = self.wallet.theme
+        self.themes = util.load_theme_paths()
+
+    def load_theme(self):
+        try:
+            theme_prefix, theme_path = self.themes[self.theme_name]
+        except KeyError:
+            util.print_error("Theme not found! ", self.theme_name)
+            return
+        theme_css = os.path.join(theme_path, "style.css")
+        QDir.setCurrent(theme_prefix)
+        with open(rsrc(theme_css)) as style_file:
+            qApp.setStyleSheet(style_file.read())
+
+    def theme_names(self):
+        return self.themes.keys()
+    def selected_theme(self):
+        return self.theme_name
+
     def set_configured_currency(self, set_quote_currency):
         currency = self.wallet.conversion_currency
         # currency can be none when Electrum is used for the first