aboutsummaryrefslogtreecommitdiff
path: root/src/ui/entry_list.py
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