diff frontends/src/primitivus/primitivus @ 1159:85fd02356dba

primitivus: key can be changed in config: - new config module manage configuration - if any configuration error happen, config parsing is stopped, and a popup appear + a log error - key can be changed with key_[action_name] = [shortcut] - early popup (popup happening before main widget is built, e.g. in profile manager) are managed
author Goffi <goffi@goffi.org>
date Thu, 04 Sep 2014 19:05:57 +0200
parents c0f15e52695a
children 2ff15a6c5791
line wrap: on
line diff
--- a/frontends/src/primitivus/primitivus	Thu Sep 04 19:05:57 2014 +0200
+++ b/frontends/src/primitivus/primitivus	Thu Sep 04 19:05:57 2014 +0200
@@ -37,6 +37,7 @@
 from sat_frontends.primitivus.progress import Progress
 from sat_frontends.primitivus.notify import Notify
 from sat_frontends.primitivus.keys import action_key_map as a_key
+from sat_frontends.primitivus import config
 from sat_frontends.tools.misc import InputHistory
 from sat_frontends.constants import Const as commonConst # FIXME
 from sat_frontends.tools.jid import JID
@@ -235,6 +236,18 @@
         self.loop.set_alarm_in(0,lambda a,b: self.postInit())
         self.loop.run()
 
+    def postInit(self):
+        try:
+            config.applyConfig()
+        except Exception as e:
+            log.error("configuration error: {}".format(e))
+            popup = sat_widgets.Alert(_("Configuration Error"), _("Something went wrong while reading the configuration, please check :messages"), ok_cb=self.removePopUp)
+            if self.options.profile:
+                self._early_popup = popup
+            else:
+                self.showPopUp(popup)
+        super(PrimitivusApp, self).postInit()
+
     def inputFilter(self, input, raw):
         if self.__saved_overlay and input != ['ctrl s']:
             return
@@ -347,6 +360,13 @@
         self.loop.widget = self._buildMainWidget()
         self.redraw()
         QuickApp.plug_profile_1(self, profile_key)
+        try:
+            # if a popup arrived before main widget is build, we need to show it now
+            self.showPopUp(self._early_popup)
+        except AttributeError:
+            pass
+        else:
+            del self._early_popup
 
     def removePopUp(self, widget=None):
         "Remove current pop-up, and if there is other in queue, show it"