[gedit-plugins/sessionsaver] Save on same open session



commit d1c78e9c5e3c6e54693483686ed199ff12fc074c
Author: Jordi Mas <jmas softcatala org>
Date:   Wed Jul 3 16:10:44 2019 +0200

    Save on same open session

 plugins/sessionsaver/sessionsaver/dialogs.py       | 23 ++++++++++++++++++----
 .../sessionsaver/sessionsaver/windowactivable.py   |  4 +++-
 2 files changed, 22 insertions(+), 5 deletions(-)
---
diff --git a/plugins/sessionsaver/sessionsaver/dialogs.py b/plugins/sessionsaver/sessionsaver/dialogs.py
index d83ddf7..f8b80ee 100644
--- a/plugins/sessionsaver/sessionsaver/dialogs.py
+++ b/plugins/sessionsaver/sessionsaver/dialogs.py
@@ -85,11 +85,12 @@ class Dialog(object):
         self.__del__()
 
 class SaveSessionDialog(Dialog):
-    def __init__(self, window, on_updated_sessions, sessions, data_dir):
+    def __init__(self, window, sessions, current_session, on_updated_sessions, data_dir):
         super(SaveSessionDialog, self).__init__('save-session-dialog',
                                                 data_dir,
                                                 window)
 
+        self.NAME_COLUMN = 1
         self.on_updated_sessions = on_updated_sessions
         self.sessions = sessions
 
@@ -97,14 +98,28 @@ class SaveSessionDialog(Dialog):
 
         self.combobox = self['session-name']
         self.combobox.set_model(model)
-        self.combobox.set_entry_text_column(1)
+        self.combobox.set_entry_text_column(self.NAME_COLUMN)
         self.combobox.connect("changed", self.on_name_combo_changed)
 
+        if current_session is None:
+            self.on_name_combo_changed(self.combobox)
+        else:
+            self._set_combobox_active_by_name(current_session)
+
         self.dialog.connect('response', self.on_response)
-        self['save_button'].set_sensitive(False)
+
+    def _set_combobox_active_by_name(self, option_name):
+        model = self.combobox.get_model()
+        piter = model.get_iter_first()
+        while piter is not None:
+            if model.get_value(piter, self.NAME_COLUMN) == option_name:
+                self.combobox.set_active_iter(piter)
+                return True
+            piter = model.iter_next(piter)
+        return False
 
     def on_name_combo_changed(self, combo):
-        name = self.combobox.get_child().get_text()
+        name = combo.get_child().get_text()
         self['save_button'].set_sensitive(len(name) > 0)
 
     def on_response(self, dialog, response_id):
diff --git a/plugins/sessionsaver/sessionsaver/windowactivable.py 
b/plugins/sessionsaver/sessionsaver/windowactivable.py
index e03b90b..60f8469 100644
--- a/plugins/sessionsaver/sessionsaver/windowactivable.py
+++ b/plugins/sessionsaver/sessionsaver/windowactivable.py
@@ -40,6 +40,7 @@ class SessionSaverWindowActivatable(GObject.Object, Gedit.WindowActivatable):
         GObject.Object.__init__(self)
         self.sessions = XMLSessionStore()
         self.n_sessions = 0
+        self.current_session = None
 
     def do_activate(self):
         self._insert_menus()
@@ -86,7 +87,7 @@ class SessionSaverWindowActivatable(GObject.Object, Gedit.WindowActivatable):
 
     def _on_save_session_action(self):
         data_dir = SessionSaverAppActivatable.get_instance().plugin_info.get_data_dir()
-        dialog = SaveSessionDialog(self.window, self.on_updated_sessions, self.sessions, data_dir)
+        dialog = SaveSessionDialog(self.window, self.sessions, self.current_session, 
self.on_updated_sessions, data_dir)
         dialog.run()
 
     def on_updated_sessions(self):
@@ -107,3 +108,4 @@ class SessionSaverWindowActivatable(GObject.Object, Gedit.WindowActivatable):
             window = self.window
 
         Gedit.commands_load_locations(window, session.files, None, 0, 0)
+        self.current_session = session.name


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]