ui: add delete button for every Execute argument
This commit is contained in:
parent
29ccd55210
commit
4206d370f1
|
|
@ -1255,13 +1255,9 @@ class ExecuteUI(ActionUI):
|
|||
self.widgets = {}
|
||||
self.fields = []
|
||||
self.add_btn = Gtk.Button(_('Add argument'), halign=Gtk.Align.CENTER, valign=Gtk.Align.END, hexpand=True, vexpand=True)
|
||||
self.del_btn = Gtk.Button(
|
||||
_('Delete last argument'), halign=Gtk.Align.CENTER, valign=Gtk.Align.START, hexpand=True, vexpand=True
|
||||
)
|
||||
self.del_btns = []
|
||||
self.add_btn.connect('clicked', self._clicked_add)
|
||||
self.del_btn.connect('clicked', self._clicked_del)
|
||||
self.widgets[self.add_btn] = (1, 0, 1, 1)
|
||||
self.widgets[self.del_btn] = (0, 0, 1, 1)
|
||||
|
||||
def _create_field(self):
|
||||
field = Gtk.Entry(halign=Gtk.Align.CENTER, valign=Gtk.Align.END, hexpand=True, vexpand=True)
|
||||
|
|
@ -1271,13 +1267,23 @@ class ExecuteUI(ActionUI):
|
|||
self.widgets[field] = (len(self.fields) - 1, 0, 1, 1)
|
||||
return field
|
||||
|
||||
def _create_del_btn(self):
|
||||
btn = Gtk.Button(_('Delete'), halign=Gtk.Align.CENTER, valign=Gtk.Align.START, hexpand=True, vexpand=True)
|
||||
btn.set_size_request(150, 0)
|
||||
self.del_btns.append(btn)
|
||||
self.widgets[btn] = (len(self.del_btns) - 1, 1, 1, 1)
|
||||
btn.connect('clicked', self._clicked_del, len(self.del_btns) - 1)
|
||||
return btn
|
||||
|
||||
def _clicked_add(self, *_args):
|
||||
self.component.__init__(self.collect_value() + [''])
|
||||
self.show(self.component)
|
||||
self.fields[len(self.component.args) - 1].grab_focus()
|
||||
|
||||
def _clicked_del(self, *_args):
|
||||
self.component.__init__(self.collect_value()[:-1])
|
||||
def _clicked_del(self, _btn, pos):
|
||||
v = self.collect_value()
|
||||
v.pop(pos)
|
||||
self.component.__init__(v)
|
||||
self.show(self.component)
|
||||
self._on_update_callback()
|
||||
|
||||
|
|
@ -1285,16 +1291,17 @@ class ExecuteUI(ActionUI):
|
|||
n = len(component.args)
|
||||
while len(self.fields) < n:
|
||||
self._create_field()
|
||||
self._create_del_btn()
|
||||
for i in range(n):
|
||||
field = self.fields[i]
|
||||
with self.ignore_changes():
|
||||
field.set_text(component.args[i])
|
||||
self.del_btns[i].show()
|
||||
self.widgets[self.add_btn] = (n + 1, 0, 1, 1)
|
||||
self.widgets[self.del_btn] = (n + 1, 1, 1, 1)
|
||||
super().show(component)
|
||||
for i in range(n, len(self.fields)):
|
||||
self.fields[i].set_visible(False)
|
||||
self.del_btn.set_visible(n >= 1)
|
||||
self.fields[i].hide()
|
||||
self.del_btns[i].hide()
|
||||
self.add_btn.set_valign(Gtk.Align.END if n >= 1 else Gtk.Align.CENTER)
|
||||
|
||||
def collect_value(self):
|
||||
|
|
|
|||
Loading…
Reference in New Issue