diff --git a/src/main_window/window.py b/src/main_window/window.py index f392fb9..32cabf1 100644 --- a/src/main_window/window.py +++ b/src/main_window/window.py @@ -25,6 +25,7 @@ import time from gi.repository import Adw, Gdk, Gio, GLib, Gtk from .host_info import HostInfo from .packages_page import PackagesPage +from .remotes_page import RemotesPage from .user_data_page import UserDataPage from .const import Config from .error_toast import ErrorToast @@ -83,7 +84,7 @@ class WarehouseWindow(Adw.ApplicationWindow): file_drop = Gtk.DropTarget.new(Gio.File, Gdk.DragAction.COPY) self.pages = { self.packages_row: PackagesPage(main_window=self), - + self.remotes_row: RemotesPage(main_window=self), self.user_data_row: UserDataPage(main_window=self), } @@ -108,7 +109,7 @@ class WarehouseWindow(Adw.ApplicationWindow): # file_drop.connect("drop", self.drop_callback) self.refresh_button.connect("clicked", self.refresh_handler) - self.navigation_row_listbox.get_row_at_index(2).activate() + self.navigation_row_listbox.get_row_at_index(1).activate() self.main_split.set_show_sidebar(True) self.start_loading() diff --git a/src/meson.build b/src/meson.build index 139d30d..16f2ae2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -13,6 +13,7 @@ blueprints = custom_target('blueprints', 'user_data_page/data_box.blp', 'user_data_page/user_data_page.blp', 'user_data_page/data_subpage.blp', + 'remotes_page/remotes_page.blp', 'change_version_page/change_version_page.blp', ), output: '.', @@ -66,6 +67,7 @@ warehouse_sources = [ 'user_data_page/data_box.py', 'user_data_page/user_data_page.py', 'user_data_page/data_subpage.py', + 'remotes_page/remotes_page.py', '../data/style.css', ] diff --git a/src/remotes_page/remotes_page.blp b/src/remotes_page/remotes_page.blp new file mode 100644 index 0000000..4ac76f9 --- /dev/null +++ b/src/remotes_page/remotes_page.blp @@ -0,0 +1,64 @@ +using Gtk 4.0; +using Adw 1; + +template $RemotesPage : Adw.NavigationPage { + title: _("Manage Remotes"); + Adw.ToolbarView { + [top] + Adw.HeaderBar { + [start] + ToggleButton sidebar_button { + icon-name: "dock-left-symbolic"; + tooltip-text: _("Show Sidebar"); + } + } + Adw.ToastOverlay { + Stack stack { + Adw.StatusPage loading_remotes { + visible: false; + title: _("Loading Remotes"); + description: _("This should only take a moment"); + child: + Spinner { + spinning: true; + } + ; + } + Adw.StatusPage no_packages { + visible: false; + title: _("No Remotes Found"); + description: _("Warehouse cannot see the current remotes or your system has no remotes added"); + icon-name: "error-symbolic"; + } + Adw.PreferencesPage content_page { + Adw.PreferencesGroup current_remotes { + title: _("Current Remotes"); + description: _("Remotes available on your system"); + Adw.ActionRow { + title: "test"; + } + Adw.ActionRow { + title: "test"; + } + Adw.ActionRow { + title: "test"; + } + } + Adw.PreferencesGroup new_remotes { + title: _("Add Remotes"); + description: _("Add new remotes to get more software"); + Adw.ActionRow { + title: "test"; + } + Adw.ActionRow { + title: "test"; + } + Adw.ActionRow { + title: "test"; + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/remotes_page/remotes_page.py b/src/remotes_page/remotes_page.py new file mode 100644 index 0000000..282bf51 --- /dev/null +++ b/src/remotes_page/remotes_page.py @@ -0,0 +1,26 @@ +from gi.repository import Adw, Gtk, GLib, Gio +from .host_info import HostInfo +from .error_toast import ErrorToast +import subprocess + +@Gtk.Template(resource_path="/io/github/flattool/Warehouse/remotes_page/remotes_page.ui") +class RemotesPage(Adw.NavigationPage): + __gtype_name__ = 'RemotesPage' + gtc = Gtk.Template.Child + + sidebar_button = gtc() + + # Referred to in the main window + # It is used to determine if a new page should be made or not + # This must be set to the created object from within the class's __init__ method + instance = None + + def __init__(self, main_window, **kwargs): + super().__init__(**kwargs) + + # Extra Object Creation + ms = main_window.main_split + + # Connections + ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) + self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) \ No newline at end of file diff --git a/src/user_data_page/user_data_page.py b/src/user_data_page/user_data_page.py index c36bde8..fd9a868 100644 --- a/src/user_data_page/user_data_page.py +++ b/src/user_data_page/user_data_page.py @@ -198,7 +198,7 @@ class UserDataPage(Adw.BreakpointBin): # Connections # self.sidebar_button.connect("clicked", lambda *_, ms=main_window.main_split: ms.set_show_sidebar(not ms.get_show_sidebar() if not ms.get_collapsed() else True)) - main_window.main_split.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) + ms.connect("notify::show-sidebar", lambda *_: self.sidebar_button.set_active(ms.get_show_sidebar())) self.sidebar_button.connect("toggled", lambda *_: ms.set_show_sidebar(self.sidebar_button.get_active())) self.stack.connect("notify::visible-child", self.view_change_handler) diff --git a/src/warehouse.gresource.xml b/src/warehouse.gresource.xml index fdccf7a..d16d910 100644 --- a/src/warehouse.gresource.xml +++ b/src/warehouse.gresource.xml @@ -12,6 +12,7 @@ user_data_page/data_box.ui user_data_page/user_data_page.ui user_data_page/data_subpage.ui + remotes_page/remotes_page.ui