diff --git a/terminatorlib/config.py b/terminatorlib/config.py index 801dc9c0..0eff86ba 100755 --- a/terminatorlib/config.py +++ b/terminatorlib/config.py @@ -320,6 +320,10 @@ class Config(object): def add_layout(self, name, layout): """Add a new layout""" return(self.base.add_layout(name, layout)) + + def replace_layout(self, name, layout): + """Replace an existing layout""" + return(self.base.replace_layout(name, layout)) def del_layout(self, layout): """Delete a layout""" @@ -734,6 +738,13 @@ class ConfigBase(Borg): self.layouts[name] = layout return(True) + def replace_layout(self, name, layout): + """Replaces a layout with the given name""" + if not name in self.layouts: + return(False) + self.layouts[name] = layout + return(True) + def get_layout(self, layout): """Return a layout""" if self.layouts.has_key(layout): diff --git a/terminatorlib/preferences.glade b/terminatorlib/preferences.glade index 628350db..13a56b67 100644 --- a/terminatorlib/preferences.glade +++ b/terminatorlib/preferences.glade @@ -3412,6 +3412,21 @@ 2 + + + gtk-save + True + True + True + True + + + + False + False + 3 + + False diff --git a/terminatorlib/prefseditor.py b/terminatorlib/prefseditor.py index 9e3c684d..60b5a851 100755 --- a/terminatorlib/prefseditor.py +++ b/terminatorlib/prefseditor.py @@ -1090,6 +1090,20 @@ class PrefsEditor: self.config.save() + def on_layoutrefreshbutton_clicked(self, _button): + """Refresh the terminals status and update""" + terminator = Terminator() + current_layout = terminator.describe_layout() + + guiget = self.builder.get_object + treeview = guiget('layoutlist') + selected = treeview.get_selection() + (model, rowiter) = selected.get_selected() + name = model.get_value(rowiter, 0) + + if self.config.replace_layout(name, current_layout): + treeview.set_cursor(model.get_path(rowiter), focus_column=treeview.get_column(0), start_editing=False) + def on_layoutremovebutton_clicked(self, _button): """Remove a layout from the list""" guiget = self.builder.get_object