Skip to content

Commit 66c219c

Browse files
authored
List View: Port to python (#208)
1 parent 13af95a commit 66c219c

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

src/List View/main.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import gi
2+
3+
gi.require_version("Gtk", "4.0")
4+
gi.require_version("Adw", "1")
5+
from gi.repository import Gtk
6+
import workbench
7+
8+
list_view = workbench.builder.get_object("list_view")
9+
add = workbench.builder.get_object("add")
10+
remove = workbench.builder.get_object("remove")
11+
12+
string_model = Gtk.StringList.new(
13+
["Default Item 1", "Default Item 2", "Default Item 3"]
14+
)
15+
16+
item = 1
17+
18+
model = Gtk.SingleSelection(model=string_model)
19+
20+
21+
def on_item_changed(_list, position, removed, added):
22+
print(
23+
f"position: {position}, Item removed? {removed != 0}, Item added? {added != 0}"
24+
)
25+
26+
27+
def on_selection_changed(*_):
28+
selected_item = model.get_selected()
29+
print(f"Model item selected from view: {string_model.get_string(selected_item)}")
30+
31+
32+
string_model.connect("items-changed", on_item_changed)
33+
model.connect("selection-changed", on_selection_changed)
34+
35+
list_view.set_model(model)
36+
37+
38+
def on_add_clicked(*_):
39+
global item
40+
new_item = f"New item {item}"
41+
string_model.append(new_item)
42+
item += 1
43+
44+
45+
def on_remove_clicked(*_):
46+
selected_item = model.get_selected()
47+
string_model.remove(selected_item)
48+
49+
50+
add.connect("clicked", on_add_clicked)
51+
remove.connect("clicked", on_remove_clicked)

0 commit comments

Comments
 (0)