-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings_ui.py
96 lines (79 loc) · 3.01 KB
/
settings_ui.py
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import gi.repository
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk # noqa: E402
class SettingsBox(Gtk.Box):
def __init__(self, uuid, initial, on_changed):
super().__init__(spacing=10,
orientation=Gtk.Orientation.VERTICAL)
self._on_changed = on_changed
# id
id_label = Gtk.Label(
label=f"CSS Selector: .budgie-script#{uuid[:8]}",
hexpand=True, halign=Gtk.Align.START,
selectable=True)
id_label.set_use_markup = True
self.add(id_label)
# command
command_line1 = Gtk.Label(label="Content script",
hexpand=True,
halign=Gtk.Align.START,
margin_top=10)
self.add(command_line1)
self.command_input = Gtk.Entry(text=initial["command"])
self.add(self.command_input)
# command
onclick_line1 = Gtk.Label(label="Click action",
hexpand=True,
halign=Gtk.Align.START,
margin_top=10)
self.add(onclick_line1)
self.onclick_input = Gtk.Entry(text=initial["onclick"])
self.add(self.onclick_input)
# interval
interval_line1 = Gtk.Label(label="Refresh interval",
hexpand=True,
halign=Gtk.Align.START,
margin_top=10)
self.add(interval_line1)
interval_line2 = Gtk.Box(spacing=6)
interval_adjustment = Gtk.Adjustment(
value=initial["interval"], lower=1, upper=3600, step_increment=1)
self.interval_input = Gtk.SpinButton(
numeric=True,
adjustment=interval_adjustment
)
interval_seconds = Gtk.Label(label="seconds",
hexpand=True,
halign=Gtk.Align.START)
interval_line2.add(self.interval_input)
interval_line2.add(interval_seconds)
self.add(interval_line2)
# save button
save_button = Gtk.Button.new_with_label("Save")
save_button.set_hexpand = True
save_button.set_margin_top = 10
save_button.connect("clicked", self.on_save_clicked)
self.add(save_button)
self.show_all()
def on_save_clicked(self, box):
new = {
"command": self.command_input.get_text(),
"interval": self.interval_input.get_value_as_int(),
"onclick": self.onclick_input.get_text()
}
self._on_changed(new)
if __name__ == "__main__":
settings = SettingsBox(
uuid="testid",
initial={
"command": "echo testing",
"interval": 60,
"onclick": "xdg-open google.com"
},
on_changed=lambda x: print(x)
)
win = Gtk.Window()
win.connect("destroy", Gtk.main_quit)
win.add(settings)
win.show_all()
Gtk.main()