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.widgets = {} | ||||||
|         self.fields = [] |         self.fields = [] | ||||||
|         self.add_btn = Gtk.Button(_('Add argument'), halign=Gtk.Align.CENTER, valign=Gtk.Align.END, hexpand=True, vexpand=True) |         self.add_btn = Gtk.Button(_('Add argument'), halign=Gtk.Align.CENTER, valign=Gtk.Align.END, hexpand=True, vexpand=True) | ||||||
|         self.del_btn = Gtk.Button( |         self.del_btns = [] | ||||||
|             _('Delete last argument'), halign=Gtk.Align.CENTER, valign=Gtk.Align.START, hexpand=True, vexpand=True |  | ||||||
|         ) |  | ||||||
|         self.add_btn.connect('clicked', self._clicked_add) |         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.add_btn] = (1, 0, 1, 1) | ||||||
|         self.widgets[self.del_btn] = (0, 0, 1, 1) |  | ||||||
| 
 | 
 | ||||||
|     def _create_field(self): |     def _create_field(self): | ||||||
|         field = Gtk.Entry(halign=Gtk.Align.CENTER, valign=Gtk.Align.END, hexpand=True, vexpand=True) |         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) |         self.widgets[field] = (len(self.fields) - 1, 0, 1, 1) | ||||||
|         return field |         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): |     def _clicked_add(self, *_args): | ||||||
|         self.component.__init__(self.collect_value() + ['']) |         self.component.__init__(self.collect_value() + ['']) | ||||||
|         self.show(self.component) |         self.show(self.component) | ||||||
|         self.fields[len(self.component.args) - 1].grab_focus() |         self.fields[len(self.component.args) - 1].grab_focus() | ||||||
| 
 | 
 | ||||||
|     def _clicked_del(self, *_args): |     def _clicked_del(self, _btn, pos): | ||||||
|         self.component.__init__(self.collect_value()[:-1]) |         v = self.collect_value() | ||||||
|  |         v.pop(pos) | ||||||
|  |         self.component.__init__(v) | ||||||
|         self.show(self.component) |         self.show(self.component) | ||||||
|         self._on_update_callback() |         self._on_update_callback() | ||||||
| 
 | 
 | ||||||
|  | @ -1285,16 +1291,17 @@ class ExecuteUI(ActionUI): | ||||||
|         n = len(component.args) |         n = len(component.args) | ||||||
|         while len(self.fields) < n: |         while len(self.fields) < n: | ||||||
|             self._create_field() |             self._create_field() | ||||||
|  |             self._create_del_btn() | ||||||
|         for i in range(n): |         for i in range(n): | ||||||
|             field = self.fields[i] |             field = self.fields[i] | ||||||
|             with self.ignore_changes(): |             with self.ignore_changes(): | ||||||
|                 field.set_text(component.args[i]) |                 field.set_text(component.args[i]) | ||||||
|  |             self.del_btns[i].show() | ||||||
|         self.widgets[self.add_btn] = (n + 1, 0, 1, 1) |         self.widgets[self.add_btn] = (n + 1, 0, 1, 1) | ||||||
|         self.widgets[self.del_btn] = (n + 1, 1, 1, 1) |  | ||||||
|         super().show(component) |         super().show(component) | ||||||
|         for i in range(n, len(self.fields)): |         for i in range(n, len(self.fields)): | ||||||
|             self.fields[i].set_visible(False) |             self.fields[i].hide() | ||||||
|         self.del_btn.set_visible(n >= 1) |             self.del_btns[i].hide() | ||||||
|         self.add_btn.set_valign(Gtk.Align.END if n >= 1 else Gtk.Align.CENTER) |         self.add_btn.set_valign(Gtk.Align.END if n >= 1 else Gtk.Align.CENTER) | ||||||
| 
 | 
 | ||||||
|     def collect_value(self): |     def collect_value(self): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue