diff options
-rw-r--r-- | grc/gui/ActionHandler.py | 12 | ||||
-rw-r--r-- | grc/gui/Param.py | 10 | ||||
-rw-r--r-- | grc/gui/PropsDialog.py | 8 | ||||
-rw-r--r-- | grc/python/Block.py | 4 |
4 files changed, 21 insertions, 13 deletions
diff --git a/grc/gui/ActionHandler.py b/grc/gui/ActionHandler.py index 6273178955..a2c48a7c52 100644 --- a/grc/gui/ActionHandler.py +++ b/grc/gui/ActionHandler.py @@ -58,9 +58,10 @@ class ActionHandler: platform: platform module """ self.clipboard = None + self.dialog = None for action in Actions.get_all_actions(): action.connect('activate', self._handle_action) #setup the main window - self.platform = platform; + self.platform = platform self.main_window = MainWindow(platform, self._handle_action) self.main_window.connect('delete-event', self._quit) self.main_window.connect('key-press-event', self._handle_key_press) @@ -425,10 +426,10 @@ class ActionHandler: elif action == Actions.BLOCK_PARAM_MODIFY: selected_block = self.get_flow_graph().get_selected_block() if selected_block: - dialog = PropsDialog(selected_block) + self.dialog = PropsDialog(selected_block) response = gtk.RESPONSE_APPLY while response == gtk.RESPONSE_APPLY: # rerun the dialog if Apply was hit - response = dialog.run() + response = self.dialog.run() if response in (gtk.RESPONSE_APPLY, gtk.RESPONSE_ACCEPT): self.get_flow_graph().update() self.get_page().get_state_cache().save_new_state(self.get_flow_graph().export_data()) @@ -440,10 +441,13 @@ class ActionHandler: if response == gtk.RESPONSE_APPLY: # null action, that updates the main window Actions.ELEMENT_SELECT() - dialog.destroy() + self.dialog.destroy() + self.dialog = None elif action == Actions.EXTERNAL_UPDATE: self.get_page().get_state_cache().save_new_state(self.get_flow_graph().export_data()) self.get_flow_graph().update() + if self.dialog is not None: + self.dialog.update_gui(force=True) self.get_page().set_saved(False) ################################################## # View Parser Errors diff --git a/grc/gui/Param.py b/grc/gui/Param.py index 3588b81d8c..5f83689023 100644 --- a/grc/gui/Param.py +++ b/grc/gui/Param.py @@ -216,9 +216,9 @@ class PythonEditorParam(InputParam): def __init__(self, *args, **kwargs): InputParam.__init__(self, *args, **kwargs) - input = gtk.Button('Open in Editor') - input.connect('clicked', self.open_editor) - self.pack_start(input, True) + button = self._button = gtk.Button('Open in Editor') + button.connect('clicked', self.open_editor) + self.pack_start(button, True) def open_editor(self, widget=None): if not os.path.exists(Constants.EDITOR): @@ -229,6 +229,10 @@ class PythonEditorParam(InputParam): def get_text(self): pass # we never update the value from here + def set_color(self, color): + # self._button.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(color)) + self._button.modify_text(gtk.STATE_NORMAL, Colors.PARAM_ENTRY_TEXT_COLOR) + def _apply_change(self, *args): pass diff --git a/grc/gui/PropsDialog.py b/grc/gui/PropsDialog.py index abf242691f..f5a136e634 100644 --- a/grc/gui/PropsDialog.py +++ b/grc/gui/PropsDialog.py @@ -127,7 +127,7 @@ class PropsDialog(gtk.Dialog): # Connect events self.connect('key-press-event', self._handle_key_press) - self.connect('show', self._update_gui) + self.connect('show', self.update_gui) self.connect('response', self._handle_response) self.show_all() # show all (performs initial gui update) @@ -158,12 +158,12 @@ class PropsDialog(gtk.Dialog): # update for the block self._block.rewrite() self._block.validate() - self._update_gui() + self.update_gui() def _activate_apply(self, *args): self.set_response_sensitive(gtk.RESPONSE_APPLY, True) - def _update_gui(self, *args): + def update_gui(self, widget=None, force=False): """ Repopulate the parameters boxes (if changed). Update all the input parameters. @@ -173,7 +173,7 @@ class PropsDialog(gtk.Dialog): Hide the box if there are no docs. """ # update the params box - if self._params_changed(): + if force or self._params_changed(): # hide params box before changing for tab, label, vbox in self._params_boxes: vbox.hide_all() diff --git a/grc/python/Block.py b/grc/python/Block.py index accfd21913..f5f406449e 100644 --- a/grc/python/Block.py +++ b/grc/python/Block.py @@ -117,7 +117,7 @@ class Block(_Block, _GUIBlock): check_generate_mode('WX GUI', BLOCK_FLAG_NEED_WX_GUI, ('wx_gui',)) check_generate_mode('QT GUI', BLOCK_FLAG_NEED_QT_GUI, ('qt_gui', 'hb_qt_gui')) if self._epy_reload_error: - self.add_error_message(str(self._epy_reload_error)) + self.get_param('_source_code').add_error_message(str(self._epy_reload_error)) def rewrite(self): """ @@ -245,7 +245,7 @@ class Block(_Block, _GUIBlock): blk_io = epy_block_io.extract(src) except Exception as e: - self._epy_reload_error = ValueError('Source code eval:\n' + str(e)) + self._epy_reload_error = ValueError(str(e)) try: # load last working block io blk_io = epy_block_io.BlockIO(*eval(param_blk.get_value())) except: |