diff --git a/src/meson.build b/src/meson.build index 1ece3e5..0e958b6 100644 --- a/src/meson.build +++ b/src/meson.build @@ -7,7 +7,8 @@ blueprints = custom_target('blueprints', 'widgets/app_row.blp', 'gtk/help-overlay.blp', 'main_window/window.blp', - 'packages_page/packages_page.blp' + 'packages_page/packages_page.blp', + 'properties_page/properties_page.blp', ), output: '.', command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], @@ -54,6 +55,7 @@ warehouse_sources = [ 'widgets/error_toast.py', 'main_window/window.py', 'packages_page/packages_page.py', + 'properties_page/properties_page.py', '../data/style.css', ] diff --git a/src/packages_page/packages_page.blp b/src/packages_page/packages_page.blp index bb32f2d..2fb10ea 100644 --- a/src/packages_page/packages_page.blp +++ b/src/packages_page/packages_page.blp @@ -101,12 +101,7 @@ template $PackagesPage : Adw.BreakpointBin { } ; content: - Adw.NavigationPage { - title: "Properties"; - Adw.StatusPage { - title: "Properties Panel"; - } - } + $PropertiesPage properties_page {} ; } } diff --git a/src/packages_page/packages_page.py b/src/packages_page/packages_page.py index 9774d25..cff82fd 100644 --- a/src/packages_page/packages_page.py +++ b/src/packages_page/packages_page.py @@ -2,6 +2,7 @@ from gi.repository import Adw, Gtk#, GLib, Gio, Pango from .host_info import HostInfo from .app_row import AppRow from .error_toast import ErrorToast +from .properties_page import PropertiesPage @Gtk.Template(resource_path="/io/github/flattool/Warehouse/packages_page/packages_page.ui") class PackagesPage(Adw.BreakpointBin): @@ -12,7 +13,9 @@ class PackagesPage(Adw.BreakpointBin): refresh_button = gtc() search_bar = gtc() search_entry = gtc() + packages_split = gtc() packages_list_box = gtc() + properties_page = gtc() # Referred to in the main window # It is used to determine if a new page should be made or not @@ -27,7 +30,7 @@ class PackagesPage(Adw.BreakpointBin): self.packages_list_box.select_row(first_row) def row_select_handler(self, list_box, row): - print(row.get_title()) + self.properties_page.set_properties(row.package) def filter_func(self, row): search_text = self.search_entry.get_text().lower() @@ -55,4 +58,3 @@ class PackagesPage(Adw.BreakpointBin): self.search_entry.connect("search-changed", lambda *_: self.packages_list_box.invalidate_filter()) self.search_bar.set_key_capture_widget(main_window) self.packages_list_box.connect("row-activated", self.row_select_handler) - diff --git a/src/properties_page/properties_page.blp b/src/properties_page/properties_page.blp new file mode 100644 index 0000000..223239c --- /dev/null +++ b/src/properties_page/properties_page.blp @@ -0,0 +1,70 @@ +using Gtk 4.0; +using Adw 1; + +template $PropertiesPage : Adw.NavigationPage { + title: "Properties"; + Adw.ToolbarView { + [top] + Adw.HeaderBar { + + } + ScrolledWindow { + Adw.Clamp { + Box { + margin-start: 12; + margin-end: 12; + margin-bottom: 12; + orientation: vertical; + halign: fill; + hexpand: true; + + Image app_icon { + pixel-size: 100; + margin-bottom: 18; + icon-name: "application-x-executable-symbolic"; + styles["icon-dropshadow"] + } + + Label name { + styles ["title-1"] + selectable: true; + wrap: true; + wrap-mode: word_char; + justify: center; + margin-bottom: 12; + margin-start: 6; + margin-end: 6; + } + + Label description { + styles ["title-4"] + selectable: true; + wrap: true; + wrap-mode: word_char; + justify: center; + margin-bottom: 18; + margin-start: 6; + margin-end: 6; + } + + Box { + spacing: 6; + homogeneous: true; + margin-bottom: 12; + halign: center; + Button open_app_button { + styles ["suggested-action", "pill"] + can-shrink: true; + label: "Open"; + } + Button uninstall_button { + styles ["pill"] + can-shrink: true; + label: "Uninstall"; + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/properties_page/properties_page.py b/src/properties_page/properties_page.py new file mode 100644 index 0000000..6f82bdd --- /dev/null +++ b/src/properties_page/properties_page.py @@ -0,0 +1,23 @@ +from gi.repository import Adw, Gtk#, GLib, Gio, Pango + +@Gtk.Template(resource_path="/io/github/flattool/Warehouse/properties_page/properties_page.ui") +class PropertiesPage(Adw.NavigationPage): + __gtype_name__ = 'PropertiesPage' + gtc = Gtk.Template.Child + app_icon = gtc() + name = gtc() + description = gtc() + + def set_properties(self, package): + self.set_title(package.info["id"]) + self.name.set_label(package.info["name"]) + pkg_description = package.info["description"] + self.description.set_visible(pkg_description != "") + self.description.set_label(pkg_description) + if package.icon_path: + self.app_icon.set_from_file(package.icon_path) + else: + self.app_icon.set_from_icon_name("application-x-executable-symbolic") + + def __init__(self, **kwargs): + super().__init__(**kwargs) \ No newline at end of file diff --git a/src/warehouse.gresource.xml b/src/warehouse.gresource.xml index 274e010..4648a2d 100644 --- a/src/warehouse.gresource.xml +++ b/src/warehouse.gresource.xml @@ -2,10 +2,11 @@ ../data/style.css + gtk/help-overlay.ui widgets/app_row.ui main_window/window.ui packages_page/packages_page.ui - gtk/help-overlay.ui + properties_page/properties_page.ui