Merge pull request #878 from markdoerr/feature/save-user-session
feat: plugin - Save current user layout of all sessions, fixes #563
This commit is contained in:
commit
9b9682be8b
|
@ -0,0 +1,69 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Fix imports when testing this file directly
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.path.append( os.path.join(os.path.dirname(__file__), "../.."))
|
||||||
|
|
||||||
|
from gi.repository import Gtk,Vte
|
||||||
|
|
||||||
|
from terminatorlib.config import Config
|
||||||
|
import terminatorlib.plugin as plugin
|
||||||
|
from terminatorlib.translation import _
|
||||||
|
from terminatorlib.util import get_config_dir, err, dbg, gerr
|
||||||
|
from terminatorlib.terminator import Terminator
|
||||||
|
from terminatorlib import util
|
||||||
|
|
||||||
|
|
||||||
|
# AVAILABLE must contain a list of all the classes that you want exposed
|
||||||
|
AVAILABLE = ['SaveUserSessionLayout']
|
||||||
|
|
||||||
|
class SaveUserSessionLayout(plugin.MenuItem):
|
||||||
|
capabilities = ['terminal_menu', 'session']
|
||||||
|
|
||||||
|
config = None
|
||||||
|
conf_file = os.path.join(get_config_dir(),"save_last_session_cwd")
|
||||||
|
conf_sessions = []
|
||||||
|
emit_close_count = 0
|
||||||
|
|
||||||
|
vte_version = Vte.get_minor_version()
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
dbg("SaveUserSessionLayout Init")
|
||||||
|
plugin.MenuItem.__init__(self)
|
||||||
|
|
||||||
|
def callback(self, menuitems, menu, terminal):
|
||||||
|
""" Add save menu item to the menu"""
|
||||||
|
vte_terminal = terminal.get_vte()
|
||||||
|
item = Gtk.MenuItem.new_with_mnemonic(_('Save _UserSessionLayout'))
|
||||||
|
item.connect("activate", self.save_all_session_layouts, terminal)
|
||||||
|
menuitems.append(item)
|
||||||
|
|
||||||
|
def save_all_session_layouts(self, menuitem, terminal):
|
||||||
|
for term in Terminator().terminals:
|
||||||
|
self.save_session_layout("", "")
|
||||||
|
|
||||||
|
#not used, but capability can be used to load automatically
|
||||||
|
def load_session_layout(self, debugtab=False, widget=None, cwd=None, metadata=None, profile=None):
|
||||||
|
dbg("SaveUserSessionLayout load layout")
|
||||||
|
terminator = Terminator()
|
||||||
|
util.spawn_new_terminator(terminator.origcwd, ['-u', '-l', 'SaveUserSessionLayout'])
|
||||||
|
|
||||||
|
def save_session_layout(self, debugtab=False, widget=None, cwd=None, metadata=None, profile=None):
|
||||||
|
|
||||||
|
config = Config()
|
||||||
|
terminator = Terminator()
|
||||||
|
current_layout = terminator.describe_layout(save_cwd = True)
|
||||||
|
dbg("SaveUserSessionLayout: save layout(%s)" % current_layout)
|
||||||
|
res = config.replace_layout("SaveUserSessionLayout", current_layout)
|
||||||
|
if (not res):
|
||||||
|
r = config.add_layout("SaveUserSessionLayout", current_layout)
|
||||||
|
config.save()
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def close(self, term, event, arg1 = None):
|
||||||
|
if (self.emit_close_count == 0):
|
||||||
|
self.emit_close_count = self.emit_close_count + 1
|
||||||
|
self.save_session_layout("", "")
|
||||||
|
|
Loading…
Reference in New Issue