From 6afc40e80f05a6cc2dbdebcc037ed40c5f5921f1 Mon Sep 17 00:00:00 2001
From: Sebastian Koslowski <koslowski@kit.edu>
Date: Fri, 3 Apr 2015 18:16:18 +0200
Subject: grc: fix apply button, on enable it if needed, update main window on
 apply

---
 grc/gui/ActionHandler.py | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

(limited to 'grc/gui/ActionHandler.py')

diff --git a/grc/gui/ActionHandler.py b/grc/gui/ActionHandler.py
index 116dff189b..6dc088c36d 100644
--- a/grc/gui/ActionHandler.py
+++ b/grc/gui/ActionHandler.py
@@ -407,16 +407,22 @@ class ActionHandler:
         elif action == Actions.BLOCK_PARAM_MODIFY:
             selected_block = self.get_flow_graph().get_selected_block()
             if selected_block:
-                if PropsDialog(selected_block).run():
-                    #save the new state
-                    self.get_flow_graph().update()
-                    self.get_page().get_state_cache().save_new_state(self.get_flow_graph().export_data())
-                    self.get_page().set_saved(False)
-                else:
-                    #restore the current state
-                    n = self.get_page().get_state_cache().get_current_state()
-                    self.get_flow_graph().import_data(n)
-                    self.get_flow_graph().update()
+                dialog = PropsDialog(selected_block)
+                response = gtk.RESPONSE_APPLY
+                while response == gtk.RESPONSE_APPLY:  # do while construct: rerun the dialog if Apply was hit
+                    response = dialog.run()
+                    if response == gtk.RESPONSE_APPLY:
+                        self.get_flow_graph().update()
+                        Actions.ELEMENT_SELECT()  # empty action, that updates the main window and flowgraph
+                    elif response == gtk.RESPONSE_ACCEPT:
+                        self.get_flow_graph().update()
+                        self.get_page().get_state_cache().save_new_state(self.get_flow_graph().export_data())
+                        self.get_page().set_saved(False)
+                    else:  # restore the current state
+                        n = self.get_page().get_state_cache().get_current_state()
+                        self.get_flow_graph().import_data(n)
+                        self.get_flow_graph().update()
+                dialog.destroy()
         ##################################################
         # View Parser Errors
         ##################################################
-- 
cgit v1.2.3