Add a "Copy" button to clone profiles
This commit is contained in:
parent
a7fcf27b11
commit
cbd8f0e3a8
|
@ -310,6 +310,10 @@ class Config(object):
|
||||||
"""Get our profile"""
|
"""Get our profile"""
|
||||||
return(self.profile)
|
return(self.profile)
|
||||||
|
|
||||||
|
def get_profile_by_name(self, profile):
|
||||||
|
"""Get the profile with the specified name"""
|
||||||
|
return(self.base.profiles[profile])
|
||||||
|
|
||||||
def set_profile(self, profile, force=False):
|
def set_profile(self, profile, force=False):
|
||||||
"""Set our profile (which usually means change it)"""
|
"""Set our profile (which usually means change it)"""
|
||||||
options = self.options_get()
|
options = self.options_get()
|
||||||
|
@ -322,9 +326,9 @@ class Config(object):
|
||||||
dbg('Config::set_profile: %s does not exist, creating' % profile)
|
dbg('Config::set_profile: %s does not exist, creating' % profile)
|
||||||
self.base.profiles[profile] = copy(DEFAULTS['profiles']['default'])
|
self.base.profiles[profile] = copy(DEFAULTS['profiles']['default'])
|
||||||
|
|
||||||
def add_profile(self, profile):
|
def add_profile(self, profile, toclone):
|
||||||
"""Add a new profile"""
|
"""Add a new profile"""
|
||||||
return(self.base.add_profile(profile))
|
return(self.base.add_profile(profile, toclone))
|
||||||
|
|
||||||
def del_profile(self, profile):
|
def del_profile(self, profile):
|
||||||
"""Delete a profile"""
|
"""Delete a profile"""
|
||||||
|
@ -814,11 +818,15 @@ class ConfigBase(Borg):
|
||||||
if plugin in self.plugins:
|
if plugin in self.plugins:
|
||||||
del self.plugins[plugin]
|
del self.plugins[plugin]
|
||||||
|
|
||||||
def add_profile(self, profile):
|
def add_profile(self, profile, toclone):
|
||||||
"""Add a new profile"""
|
"""Add a new profile"""
|
||||||
if profile in self.profiles:
|
if profile in self.profiles:
|
||||||
return(False)
|
return(False)
|
||||||
self.profiles[profile] = copy(DEFAULTS['profiles']['default'])
|
if toclone is not None:
|
||||||
|
newprofile = copy(toclone)
|
||||||
|
else:
|
||||||
|
newprofile = copy(DEFAULTS['profiles']['default'])
|
||||||
|
self.profiles[profile] = newprofile
|
||||||
return(True)
|
return(True)
|
||||||
|
|
||||||
def add_layout(self, name, layout):
|
def add_layout(self, name, layout):
|
||||||
|
|
|
@ -1287,6 +1287,22 @@
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="profileclonebutton">
|
||||||
|
<property name="label">gtk-copy</property>
|
||||||
|
<property name="use-action-appearance">False</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
<property name="use-stock">True</property>
|
||||||
|
<signal name="clicked" handler="on_profileclonebutton_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
|
|
@ -1334,22 +1334,23 @@ class PrefsEditor:
|
||||||
self.config['window_state'] = value
|
self.config['window_state'] = value
|
||||||
self.config.save()
|
self.config.save()
|
||||||
|
|
||||||
def on_profileaddbutton_clicked(self, _button):
|
# helper function, not a signal
|
||||||
"""Add a new profile to the list"""
|
def addprofile(self, name, toclone):
|
||||||
|
"""Add a profile"""
|
||||||
guiget = self.builder.get_object
|
guiget = self.builder.get_object
|
||||||
|
|
||||||
treeview = guiget('profilelist')
|
treeview = guiget('profilelist')
|
||||||
model = treeview.get_model()
|
model = treeview.get_model()
|
||||||
values = [ r[0] for r in model ]
|
values = [ r[0] for r in model ]
|
||||||
|
|
||||||
newprofile = _('New Profile')
|
newprofile = name
|
||||||
if newprofile in values:
|
if newprofile in values:
|
||||||
i = 1
|
i = 1
|
||||||
while newprofile in values:
|
while newprofile in values:
|
||||||
i = i + 1
|
i = i + 1
|
||||||
newprofile = '%s %d' % (_('New Profile'), i)
|
newprofile = '%s %d' % (name, i)
|
||||||
|
|
||||||
if self.config.add_profile(newprofile):
|
if self.config.add_profile(newprofile, toclone):
|
||||||
res = model.append([newprofile, True])
|
res = model.append([newprofile, True])
|
||||||
if res:
|
if res:
|
||||||
path = model.get_path(res)
|
path = model.get_path(res)
|
||||||
|
@ -1358,6 +1359,10 @@ class PrefsEditor:
|
||||||
|
|
||||||
self.layouteditor.update_profiles()
|
self.layouteditor.update_profiles()
|
||||||
|
|
||||||
|
def on_profileaddbutton_clicked(self, _button):
|
||||||
|
"""Add a new profile to the list"""
|
||||||
|
self.addprofile(_('New Profile'), None)
|
||||||
|
|
||||||
def on_profileremovebutton_clicked(self, _button):
|
def on_profileremovebutton_clicked(self, _button):
|
||||||
"""Remove a profile from the list"""
|
"""Remove a profile from the list"""
|
||||||
guiget = self.builder.get_object
|
guiget = self.builder.get_object
|
||||||
|
@ -1377,6 +1382,18 @@ class PrefsEditor:
|
||||||
selection.select_iter(model.get_iter_first())
|
selection.select_iter(model.get_iter_first())
|
||||||
self.layouteditor.update_profiles()
|
self.layouteditor.update_profiles()
|
||||||
|
|
||||||
|
def on_profileclonebutton_clicked(self, _button):
|
||||||
|
""""Clone a profile and add the new one to the list"""
|
||||||
|
guiget = self.builder.get_object
|
||||||
|
|
||||||
|
treeview = guiget('profilelist')
|
||||||
|
selection = treeview.get_selection()
|
||||||
|
(model, rowiter) = selection.get_selected()
|
||||||
|
profile = model.get_value(rowiter, 0)
|
||||||
|
|
||||||
|
toclone = self.config.get_profile_by_name(profile)
|
||||||
|
self.addprofile(profile, toclone)
|
||||||
|
|
||||||
def on_layoutaddbutton_clicked(self, _button):
|
def on_layoutaddbutton_clicked(self, _button):
|
||||||
"""Add a new layout to the list"""
|
"""Add a new layout to the list"""
|
||||||
terminator = Terminator()
|
terminator = Terminator()
|
||||||
|
|
Loading…
Reference in New Issue