Commit e4b1ec5f authored by Anton Palgunov's avatar Anton Palgunov

migrate to view model

parent 853879a8
#!/usr/bin/bash
meson setup build --reconfigure
meson compile -C build
meson install -C build
tuneit
\ No newline at end of file
...@@ -215,31 +215,16 @@ class ModuleCard(Gtk.Box): ...@@ -215,31 +215,16 @@ class ModuleCard(Gtk.Box):
__gtype_name__ = "ModuleCard" __gtype_name__ = "ModuleCard"
def __init__(self, module_data): def __init__(self, module_data):
super().__init__(orientation=Gtk.Orientation.VERTICAL, spacing=6) super().__init__()
self.module_data = module_data self.module_data = module_data
# Настраиваем стили и отступы builder = Gtk.Builder()
self.set_margin_top(12) builder.add_from_file("module_card.ui")
self.set_margin_bottom(12)
self.set_margin_start(12) module_card_box = builder.get_object("module_card_box")
self.set_margin_end(12) card_box = builder.get_object("card_box")
# Фрейм или карточка self.append(module_card_box)
frame = Gtk.Frame()
frame.set_margin_top(6)
frame.set_margin_bottom(6)
frame.set_margin_start(6)
frame.set_margin_end(6)
self.append(frame)
card_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
card_box.set_margin_top(6)
card_box.set_margin_bottom(6)
card_box.set_margin_start(6)
card_box.set_margin_end(6)
frame.set_child(card_box)
# Обложка (cover) # Обложка (cover)
cover_url = "" cover_url = ""
...@@ -312,33 +297,17 @@ def init_shop_stack(shop_pagestack, shop_listbox, shop_split_view): ...@@ -312,33 +297,17 @@ def init_shop_stack(shop_pagestack, shop_listbox, shop_split_view):
""" """
Инициализация стека страницы “Магазин”. Инициализация стека страницы “Магазин”.
""" """
builder = Gtk.Builder.new_from_file("src/shop/shop_main.ui")
refresh_button = Gtk.Button(label="Принудительно обновить список")
refresh_button = builder.get_object("refresh_button")
refresh_button.connect("clicked", on_refresh_button_clicked) refresh_button.connect("clicked", on_refresh_button_clicked)
# Индикатор загрузки spinner = builder.get_object("spinner")
spinner = Gtk.Spinner()
spinner.set_size_request(24, 24) hbox_top = builder.get_object("hbox_top")
flowbox = builder.get_object("flowbox")
# В боксе горизонтально разместим кнопку и спиннер scroller = builder.get_object("scroller")
hbox_top = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6) vbox_main = builder.get_object("vbox_main")
hbox_top.append(refresh_button)
hbox_top.append(spinner)
# Создадим FlowBox для карточек, по 3 в ряд
flowbox = Gtk.FlowBox()
flowbox.set_vexpand(True) # Растянем по вертикали
flowbox.set_min_children_per_line(3)
flowbox.set_max_children_per_line(3)
flowbox.set_selection_mode(Gtk.SelectionMode.NONE)
# Включим только вертикальный scroller
scroller = Gtk.ScrolledWindow()
scroller.set_child(flowbox)
# Содержимое страницы
vbox_main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
vbox_main.append(hbox_top)
vbox_main.append(scroller)
# Показываем в стеке # Показываем в стеке
shop_pagestack.add_child(vbox_main) shop_pagestack.add_child(vbox_main)
......
using Gtk 4.0;
Box module_card_box {
orientation: vertical;
spacing: 6;
margin-top: 12;
margin-bottom: 12;
margin-start: 12;
margin-end: 12;
Frame frame {
margin-top: 6;
margin-bottom: 6;
margin-start: 6;
margin-end: 6;
Box card_box {
orientation: vertical;
spacing: 6;
margin-top: 6;
margin-bottom: 6;
margin-start: 6;
margin-end: 6;
}
}
}
using Gtk 4.0;
ScrolledWindow scroller {
FlowBox flowbox {
vexpand: true;
min-children-per-line: 3;
max-children-per-line: 3;
selection-mode: none;
}
}
Box vbox_main {
orientation: vertical;
spacing: 6;
Box hbox_top {
orientation: horizontal;
spacing: 6;
Button refresh_button {
label: "Принудительно обновить список";
clicked => $on_refresh_button_clicked();
}
Spinner spinner {
width-request: 24;
height-request: 24;
}
}
}
...@@ -4,5 +4,7 @@ ...@@ -4,5 +4,7 @@
<file preprocess="xml-stripblanks">window.ui</file> <file preprocess="xml-stripblanks">window.ui</file>
<file preprocess="xml-stripblanks">settings/widgets/panel_row.ui</file> <file preprocess="xml-stripblanks">settings/widgets/panel_row.ui</file>
<file preprocess="xml-stripblanks">gtk/help-overlay.ui</file> <file preprocess="xml-stripblanks">gtk/help-overlay.ui</file>
<!-- <file preprocess="xml-stripblanks">shop/shop_main.ui</file>
<file preprocess="xml-stripblanks">shop/shop_card.ui</file> -->
</gresource> </gresource>
</gresources> </gresources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment