[gedit-plugins/sessionsaver] Update menu
- From: Jordi Mas <jmas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit-plugins/sessionsaver] Update menu
- Date: Thu, 27 Jun 2019 14:18:13 +0000 (UTC)
commit 0fe497e7f4db3344b2264445d420d0006f04c3a9
Author: Jordi Mas <jmas softcatala org>
Date: Thu Jun 27 15:57:14 2019 +0200
Update menu
plugins/sessionsaver/sessionsaver/__init__.py | 81 ++++++++++++++++++---------
plugins/sessionsaver/sessionsaver/dialogs.py | 11 ++--
2 files changed, 62 insertions(+), 30 deletions(-)
---
diff --git a/plugins/sessionsaver/sessionsaver/__init__.py b/plugins/sessionsaver/sessionsaver/__init__.py
index bb1f01c..cc82d1a 100644
--- a/plugins/sessionsaver/sessionsaver/__init__.py
+++ b/plugins/sessionsaver/sessionsaver/__init__.py
@@ -39,29 +39,27 @@ except:
class SessionSaverAppActivatable(GObject.Object, Gedit.AppActivatable):
app = GObject.Property(type=Gedit.App)
+ __instance = None
def __init__(self):
GObject.Object.__init__(self)
- self.n_sessions = 0
-
- global app_activable
- app_activable = self
+ SessionSaverAppActivatable.__instance = self
print("SessionSaverAppActivatable.__init__\n")
- def do_activate(self):
- self.menu_ext = self.extend_menu("tools-section")
- item = Gio.MenuItem.new(_("_Manage saved sessions..."), "win.managedsession")
- self.menu_ext.prepend_menu_item(item)
+ @classmethod
+ def get_instance(cls):
+ return cls.__instance
- item = Gio.MenuItem.new(_("_Save session..."), "win.savesession")
- self.menu_ext.prepend_menu_item(item)
+ def do_activate(self):
self._insert_session_menu()
def do_deactivate(self):
self.menu_ext = None
def _insert_session_menu(self):
- print("_insert_session_menu\n")
+ print("SessionSaverAppActivatable._insert_session_menu\n")
+
+ self.menu_ext = self.extend_menu("tools-section")
self.sessions = XMLSessionStore()
n_sessions = len(self.sessions)
@@ -70,14 +68,16 @@ class SessionSaverAppActivatable(GObject.Object, Gedit.AppActivatable):
item = Gio.MenuItem.new(_("Recover '%s' session") % session.name, session_id)
self.menu_ext.prepend_menu_item(item)
+ item = Gio.MenuItem.new(_("_Manage saved sessions..."), "win.managedsession")
+ self.menu_ext.prepend_menu_item(item)
+
+ item = Gio.MenuItem.new(_("_Save session..."), "win.savesession")
+ self.menu_ext.prepend_menu_item(item)
+
def _remove_session_menu(self):
self.menu_ext.remove_items()
- for i in range(self.n_sessions):
- session_id = 'win.session_%u'.format(i)
- print("_remove_session_menu. remove %s".format(session_id))
- self.app.remove_accelerator(session_id, None)
- def _update_session_menu(self):
+ def update_session_menu(self):
self._remove_session_menu()
self._insert_session_menu()
@@ -90,43 +90,74 @@ class SessionSaverWindowActivatable(GObject.Object, Gedit.WindowActivatable, Pea
def __init__(self):
GObject.Object.__init__(self)
print("SessionSaverWindowActivatable.__init__\n")
+ self.n_sessions = 0
self.sessions = XMLSessionStore()
def do_activate(self):
+ self._insert_menus()
+
+ def _insert_menus(self):
+ print("SessionSaverWindowActivatable._insert_menus")
action = Gio.SimpleAction(name="managedsession")
- action.connect('activate', lambda a, p: self.on_manage_sessions_action())
+ action.connect('activate', lambda a, p: self._on_manage_sessions_action())
self.window.add_action(action)
action = Gio.SimpleAction(name="savesession")
- action.connect('activate', lambda a, p: self.on_save_session_action())
+ action.connect('activate', lambda a, p: self._on_save_session_action())
self.window.add_action(action)
self.sessions = XMLSessionStore()
+ n_sessions = len(self.sessions)
for i, session in enumerate(self.sessions):
session_id = 'session_%u'.format(i)
+ print(session_id)
action = Gio.SimpleAction(name=session_id)
- action.connect('activate', self.session_menu_action, session)
+ action.connect('activate', self._session_menu_action, session)
self.window.add_action(action)
- def session_menu_action(self, action, parameter, session):
- print("session_menu_action")
+ def _remove_menus(self):
+ print("SessionSaverWindowActivatable._remove_menus")
+ self.app.remove_action("managedsession")
+ self.app.remove_action("savesession")
+
+ for i in range(self.n_sessions):
+ session_id = 'win.session_%u'.format(i)
+ print("SessionSaverWindowActivatable._remove_session_menu. remove %s".format(session_id))
+ self.app.remove_action(session_id)
+
+ def _session_menu_action(self, action, parameter, session):
+ name = session.name
+ print(name)
+ msg = "SessionSaverWindowActivatable._session_menu_action"
+ print(msg)
self._load_session(session)
def do_deactivate(self):
+ self._remove_menus()
return
def do_update_state(self):
return
- def on_manage_sessions_action(self):
+ def _on_manage_sessions_action(self):
print("on_manage_sessions_action\n")
dialog = SessionManagerDialog(app_activable, self.sessions)
dialog.run()
- def on_save_session_action(self):
+ def _on_save_session_action(self):
print("on_save_session_action\n")
- dialog = SaveSessionDialog(self.window, app_activable, self.sessions)
- dialog.run()
+ data_dir = SessionSaverAppActivatable.get_instance().plugin_info.get_data_dir()
+ dialog = SaveSessionDialog(self.window, self.on_save_session_dialog_ok, self.sessions, data_dir)
+ if dialog.run():
+ self.sessions = XMLSessionStore()
+ print("on_save_session_action Ok")
+
+ print("on_save_session_action end")
+
+ def on_save_session_dialog_ok(self):
+ print("on_save_session_dialog_ok")
+ SessionSaverAppActivatable.get_instance().update_session_menu()
+ self._insert_menus()
def _load_session(self, session):
# Note: a session has to stand on its own window.
diff --git a/plugins/sessionsaver/sessionsaver/dialogs.py b/plugins/sessionsaver/sessionsaver/dialogs.py
index a6235be..f83b909 100644
--- a/plugins/sessionsaver/sessionsaver/dialogs.py
+++ b/plugins/sessionsaver/sessionsaver/dialogs.py
@@ -90,13 +90,13 @@ class Dialog(object):
self.__del__()
class SaveSessionDialog(Dialog):
- def __init__(self, window, plugin, sessions):
+ def __init__(self, window, on_ok, sessions, data_dir):
super(SaveSessionDialog, self).__init__('save-session-dialog',
- plugin.plugin_info.get_data_dir(),
+ data_dir,
window)
- self.plugin = plugin
+
+ self.on_ok = on_ok
self.sessions = sessions
- self.sessionsaver = plugin
model = SessionModel(sessions)
@@ -114,7 +114,8 @@ class SaveSessionDialog(Dialog):
name = self['session-name'].get_child().get_text()
self.sessions.add(Session(name, files))
self.sessions.save()
- self.sessionsaver.sessions = self.sessions
+ self.on_ok()
+# self.sessionsaver.sessions = self.sessions
# self.sessionsaver._update_session_menu()
self.destroy()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]