properties dialog with ok/cancel buttons
authorJosh Blum <josh@joshknows.com>
Thu, 10 Sep 2009 04:35:58 +0000 (21:35 -0700)
committerJosh Blum <josh@joshknows.com>
Thu, 10 Sep 2009 04:35:58 +0000 (21:35 -0700)
grc/gui/ActionHandler.py
grc/gui/PropsDialog.py

index f12893579df70469092e23765139e61cc7c13828..656f99c3776e0d39012e132420b4f4db49f455ac 100644 (file)
@@ -240,10 +240,17 @@ class ActionHandler:
                ##################################################
                elif state == Actions.BLOCK_PARAM_MODIFY:
                        selected_block = self.get_flow_graph().get_selected_block()
-                       if selected_block and PropsDialog(selected_block).run():
-                               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)
+                       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()
                ##################################################
                # Undo/Redo
                ##################################################
index 49650041690554d9d2ddf099afa5b11c2cd53acb..29b3c7b40ce129c4f3143286683ae758672f830c 100644 (file)
@@ -51,7 +51,7 @@ class PropsDialog(gtk.Dialog):
                LABEL_SPACING = 7
                gtk.Dialog.__init__(self,
                        title='Properties: %s'%block.get_name(),
-                       buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE),
+                       buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT),
                )
                self._block = block
                self.set_size_request(MIN_DIALOG_WIDTH, MIN_DIALOG_HEIGHT)
@@ -155,20 +155,14 @@ class PropsDialog(gtk.Dialog):
                @return false to forward the keypress
                """
                keyname = gtk.gdk.keyval_name(event.keyval)
-               if keyname == 'Return': self.response(gtk.RESPONSE_OK)
+               if keyname == 'Return': self.response(gtk.RESPONSE_ACCEPT)
                return False #forward the keypress
 
        def run(self):
                """
-               Call run().
-               @return true if a change occured.
+               Run the dialog and get its response.
+               @return true if the response was accept
                """
-               original_data = list()
-               for param in self._block.get_params():
-                       original_data.append(param.get_value())
-               gtk.Dialog.run(self)
+               response = gtk.Dialog.run(self)
                self.destroy()
-               new_data = list()
-               for param in self._block.get_params():
-                       new_data.append(param.get_value())
-               return original_data != new_data
+               return response == gtk.RESPONSE_ACCEPT