From 216a80874d86af4ff0d1ee6e38713068ab320ac1 Mon Sep 17 00:00:00 2001 From: Mario Frasca Date: Tue, 15 Sep 2015 12:04:53 -0500 Subject: [PATCH] work in progress issue #125 --- bauble/connmgr.glade | 6 ++++++ bauble/connmgr.py | 30 ++++++++++++++++++++++++++++++ bauble/editor.py | 21 ++++++++++++++++----- bauble/plugins/imex/iojson.py | 20 +++++--------------- 4 files changed, 57 insertions(+), 20 deletions(-) diff --git a/bauble/connmgr.glade b/bauble/connmgr.glade index 71300d9d..6267abe7 100644 --- a/bauble/connmgr.glade +++ b/bauble/connmgr.glade @@ -291,6 +291,8 @@ Click on <b>Add</b> to create a new connection. True True False + + False @@ -334,6 +336,8 @@ Click on <b>Add</b> to create a new connection. True True False + + False @@ -516,6 +520,8 @@ Click on <b>Add</b> to create a new connection. True True False + + False diff --git a/bauble/connmgr.py b/bauble/connmgr.py index 97e6f490..11ca2fdf 100755 --- a/bauble/connmgr.py +++ b/bauble/connmgr.py @@ -140,6 +140,36 @@ def __init__(self, view=None): except: pass + def on_file_btnbrowse_clicked(self, *args): + previously = self.view.widget_get_value('file_entry') + last_folder, bn = os.path.split(previously) + self.view.run_FileChooserDialog( + _("Choose a file..."), None, + action=gtk.FILE_CHOOSER_ACTION_SAVE, + buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + last_folder=last_folder, target='file_entry') + + def on_pictureroot_btnbrowse_clicked(self, *args): + previously = self.view.widget_get_value('pictureroot_entry') + last_folder, bn = os.path.split(previously) + self.view.run_FileChooserDialog( + _("Choose a file..."), None, + action=gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER, + buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + last_folder=last_folder, target='pictureroot_entry') + + def on_pictureroot2_btnbrowse_clicked(self, *args): + previously = self.view.widget_get_value('pictureroot2_entry') + last_folder, bn = os.path.split(previously) + self.view.run_FileChooserDialog( + _("Choose a file..."), None, + action=gtk.FILE_CHOOSER_ACTION_CREATE_FOLDER, + buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + last_folder=last_folder, target='pictureroot2_entry') + def refresh_view(self): GenericEditorPresenter.refresh_view(self) conn_list = self.connections diff --git a/bauble/editor.py b/bauble/editor.py index 54968cda..3a8edd21 100755 --- a/bauble/editor.py +++ b/bauble/editor.py @@ -247,6 +247,22 @@ def __init__(self, filename, parent=None, root_widget_name=None): self.connect(window, 'response', self.on_dialog_response) self.box = set() # the top level, meant for warnings. + def run_FileChooserDialog( + self, text, parent, action, buttons, last_folder, target): + chooser = gtk.FileChooserDialog(text, parent, buttons=buttons) + #chooser.set_do_overwrite_confirmation(True) + #chooser.connect("confirm-overwrite", confirm_overwrite_callback) + try: + if last_folder: + chooser.set_current_folder(last_folder) + if chooser.run() == gtk.RESPONSE_ACCEPT: + filename = chooser.get_filename() + if filename: + self.widget_set_value(target, filename) + except Exception, e: + logger.warning("unhandled exception in iojson.py: %s" % e) + chooser.destroy() + def get_selection(self): '''return the selection in the graphic interface''' class EmptySelectionException(Exception): @@ -708,7 +724,6 @@ def widget_get_value(self, widget, *args): return self.values[widget] def widget_set_value(self, widget, value, *args): - print 'widget set value >%s< >%s<' % (widget, value) self.values[widget] = value if widget in self.models: if (value, ) in self.models[widget]: @@ -748,17 +763,13 @@ def combobox_append_text(self, name, value): model.append((value, )) def combobox_set_active(self, widget, index): - print 'combobox set active', widget, index self.index[widget] = index self.values[widget] = self.models[widget][index][0] - print self.values[widget] def combobox_get_active(self, widget): - print 'combobox get active', widget, self.values[widget] return self.index.setdefault(widget, 0) def combobox_get_model(self, widget): - print 'combobox get model', widget return self.models[widget] def set_accept_buttons_sensitive(self, sensitive=True): diff --git a/bauble/plugins/imex/iojson.py b/bauble/plugins/imex/iojson.py index 24d9d6fc..d21f7685 100644 --- a/bauble/plugins/imex/iojson.py +++ b/bauble/plugins/imex/iojson.py @@ -161,23 +161,13 @@ def get_objects(self): return result def on_btnbrowse_clicked(self, button): - chooser = gtk.FileChooserDialog( + self.view.run_FileChooserDialog( _("Choose a file..."), None, buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, - gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) - #chooser.set_do_overwrite_confirmation(True) - #chooser.connect("confirm-overwrite", confirm_overwrite_callback) - try: - if self.last_folder: - chooser.set_current_folder(self.last_folder) - if chooser.run() == gtk.RESPONSE_ACCEPT: - filename = chooser.get_filename() - if filename: - JSONExporter.last_folder, bn = os.path.split(filename) - self.view.widget_set_value('filename', filename) - except Exception, e: - logger.warning("unhandled exception in iojson.py: %s" % e) - chooser.destroy() + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + last_folder=self.last_folder, target='filename') + filename = self.view.widget_get_value('filename') + JSONExporter.last_folder, bn = os.path.split(filename) def on_btnok_clicked(self, widget): self.run() # should go in the background really