blob: c0c355df379660b2cd9a8a05e96dff347aff452e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
import src.utils as utils
class EntryList(Gtk.Box):
def __init__(self, name):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=10)
header = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10)
header.append(get_label(name))
add_button = Gtk.Button(label='+')
add_button.connect('clicked', lambda _: self.add_entry())
header.append(add_button)
self.append(header)
self._entries = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
self.append(self._entries)
def get_entry_texts(self):
res = []
for entry in self._entries:
res.append(entry.get_first_child().get_buffer().get_text())
return res
def add_entry(self, value=''):
line = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=10)
entry = Gtk.Entry()
entry.set_text(value)
entry.set_hexpand(True)
line.append(entry)
remove_button = Gtk.Button(label='-')
remove_button.connect('clicked', lambda _: self._entries.remove(line))
line.append(remove_button)
self._entries.append(line)
def get_label(text):
label = Gtk.Label()
label.set_text(text)
return label
|