[anaconda][PATCH] Allow hubs and standalone spokes decide if it is possible to continue

Vratislav Podzimek vpodzime at redhat.com
Wed Jun 12 14:14:47 UTC 2013


Related: rhbz#965797

Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
 pyanaconda/ui/gui/hubs/__init__.py   | 29 +++++++++++++++++++++++++++--
 pyanaconda/ui/gui/spokes/__init__.py | 18 ++++++++++++++++--
 2 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py
index 37daf47..bb473b6 100644
--- a/pyanaconda/ui/gui/hubs/__init__.py
+++ b/pyanaconda/ui/gui/hubs/__init__.py
@@ -354,11 +354,36 @@ class Hub(GUIObject, common.Hub):
 
         self._update_spoke_id = GLib.timeout_add_seconds(1, self._update_spokes)
 
-    ### SIGNAL HANDLERS
+    @property
+    def continue_possible(self):
+        """
+        Indicates whether it is possible to continue to the next action (hub,
+        standalone spoke,...). When overridden, IT IS THE HUB'S RESPONSIBILITY
+        to inform user, where the problem is and how to fix it.
+
+        """
+
+        return True
+
+    ### SIGNAL HANDLING
+    def _checked_continue(self, cb):
+        """
+        Checks if continue is possible (from the hub's perspective and if yes,
+        runs the callback.
+
+        """
+
+        if self.continue_possible:
+            cb()
+
+    def _register_continue_event_cb(self, cb):
+        """Registers the callback for the continue event adding the check."""
+
+        self.continueButton.connect("clicked", lambda *args: self._checked_continue(cb))
 
     def register_event_cb(self, event, cb):
         if event == "continue" and hasattr(self, "continueButton"):
-            self.continueButton.connect("clicked", lambda *args: cb())
+            self._register_continue_event_cb(cb)
         elif event == "quit" and hasattr(self, "quitButton"):
             self.quitButton.connect("clicked", lambda *args: cb())
 
diff --git a/pyanaconda/ui/gui/spokes/__init__.py b/pyanaconda/ui/gui/spokes/__init__.py
index c1a35b3..bb85e1e 100644
--- a/pyanaconda/ui/gui/spokes/__init__.py
+++ b/pyanaconda/ui/gui/spokes/__init__.py
@@ -63,9 +63,23 @@ class StandaloneSpoke(Spoke, common.StandaloneSpoke):
         Spoke.__init__(self, data)
         common.StandaloneSpoke.__init__(self, data, storage, payload, instclass)
 
+    @property
+    def continue_possible(self):
+        """
+        Indicates whether it is possible to continue to the next action (hub,
+        standalone spoke,...). When overridden, IT IS THE SPOKES'S
+        RESPONSIBILITY to inform user, where the problem is and how to fix it.
+
+        """
+
+        return True
+
+
+    ### SIGNAL HANDLING
     def _on_continue_clicked(self, cb):
-        self.apply()
-        cb()
+        if self.continue_possible:
+            self.apply()
+            cb()
 
     def register_event_cb(self, event, cb):
         if event == "continue":
-- 
1.7.11.7



More information about the anaconda-patches mailing list