make refresh button refresh all pages

This commit is contained in:
heliguy
2024-07-17 15:08:03 -04:00
parent 19f5034108
commit 1c53c21447
5 changed files with 37 additions and 23 deletions

View File

@@ -29,9 +29,9 @@ template $WarehouseWindow: Adw.ApplicationWindow {
[top]
Adw.HeaderBar header_bar {
[start]
Button sidebar_button {
icon-name: "dock-left-symbolic";
tooltip-text: _("Hide Sidebar");
Button refresh_button {
icon-name: "arrow-circular-top-right-symbolic";
tooltip-text: _("Refresh List");
}
[end]
MenuButton main_menu {

View File

@@ -23,6 +23,7 @@ import re
import time
from gi.repository import Adw, Gdk, Gio, GLib, Gtk
from .host_info import HostInfo
from .packages_page import PackagesPage
from .user_data_page import UserDataPage
from .const import Config
@@ -34,7 +35,7 @@ class WarehouseWindow(Adw.ApplicationWindow):
gtc = Gtk.Template.Child
main_breakpoint = gtc()
main_split = gtc()
sidebar_button = gtc()
refresh_button = gtc()
navigation_row_listbox = gtc()
packages_row = gtc()
remotes_row = gtc()
@@ -65,6 +66,20 @@ class WarehouseWindow(Adw.ApplicationWindow):
else:
self.main_split.set_content(page(main_window=self))
def start_loading(self, *args):
for _, page in self.pages.items():
if page.instance:
page.instance.start_loading()
def end_loading(self, *args):
for _, page in self.pages.items():
if page.instance:
page.instance.end_loading()
def refresh_handler(self, *args):
self.start_loading()
HostInfo.get_flatpaks(callback=self.end_loading)
def __init__(self, **kwargs):
super().__init__(**kwargs)
@@ -94,7 +109,10 @@ class WarehouseWindow(Adw.ApplicationWindow):
event_controller.connect("key-pressed", self.key_handler)
self.navigation_row_listbox.connect("row-activated", self.navigation_handler)
# file_drop.connect("drop", self.drop_callback)
self.sidebar_button.connect("clicked", lambda *_: self.main_split.set_show_sidebar(False))
self.refresh_button.connect("clicked", self.refresh_handler)
self.navigation_row_listbox.get_row_at_index(0).activate()
self.main_split.set_show_sidebar(True)
self.start_loading()
HostInfo.get_flatpaks(callback=self.end_loading)

View File

@@ -36,11 +36,6 @@ template $PackagesPage : Adw.BreakpointBin {
icon-name: "loupe-large-symbolic";
tooltip-text: _("Search Packages");
}
[start]
Button refresh_button {
icon-name: "arrow-circular-top-right-symbolic";
tooltip-text: _("Refresh List");
}
[end]
ToggleButton filter_button {
icon-name: "funnel-symbolic";

View File

@@ -22,7 +22,6 @@ class PackagesPage(Adw.BreakpointBin):
no_results = gtc()
sidebar_button = gtc()
filter_button = gtc()
refresh_button = gtc()
search_bar = gtc()
search_entry = gtc()
packages_split = gtc()
@@ -223,7 +222,7 @@ class PackagesPage(Adw.BreakpointBin):
details = err.stderr if type(err) == subprocess.CalledProcessError else str(err)
self.packages_toast_overlay.add_toast(ErrorToast(_("Could not uninstall packages"), details).toast)
else:
self.refresh_handler()
self.main_window.refresh_handler()
GLib.idle_add(lambda *__: self.packages_toast_overlay.add_toast(Adw.Toast(title=_("Uninstalled Packages"))))
Gio.Task.new(None, None, callback).run_in_thread(thread)
@@ -239,12 +238,14 @@ class PackagesPage(Adw.BreakpointBin):
dialog.connect("response", on_response)
dialog.present(self.main_window)
def refresh_handler(self, *args):
def start_loading(self):
self.packages_navpage.set_title(_("Packages"))
self.selected_rows.clear()
self.select_button.set_active(False)
self.set_status(self.loading_packages)
HostInfo.get_flatpaks(callback=self.generate_list)
def end_loading(self):
self.generate_list()
def select_button_handler(self, button):
self.set_selection_mode(button.get_active())
@@ -274,7 +275,6 @@ class PackagesPage(Adw.BreakpointBin):
def __init__(self, main_window, **kwargs):
super().__init__(**kwargs)
HostInfo.get_flatpaks(callback=self.generate_list)
# Extra Object Creation
self.main_window = main_window
@@ -293,14 +293,11 @@ class PackagesPage(Adw.BreakpointBin):
self.__class__.instance = self
# Connections
main_window.main_split.connect("notify::show-sidebar", lambda sidebar, *_: self.sidebar_button.set_visible(sidebar.get_collapsed() or not sidebar.get_show_sidebar()))
main_window.main_split.connect("notify::collapsed", lambda sidebar, *_: self.sidebar_button.set_visible(sidebar.get_collapsed() or not sidebar.get_show_sidebar()))
self.sidebar_button.connect("clicked", lambda *_: main_window.main_split.set_show_sidebar(True))
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))
self.search_entry.connect("search-changed", self.on_invalidate)
self.search_bar.set_key_capture_widget(main_window)
self.packages_list_box.connect("row-activated", self.row_activate_handler)
self.refresh_button.connect("clicked", self.refresh_handler)
self.select_button.connect("clicked", self.select_button_handler)
self.filter_button.connect("toggled", self.filter_button_handler)
self.reset_filters_button.connect("clicked", lambda *_: self.filters_page.reset_filters())

View File

@@ -56,6 +56,12 @@ class UserDataPage(Adw.BreakpointBin):
elif self.switcher_bar.get_reveal():
self.header_bar.set_show_title(False)
def start_loading(self, *args):
pass
def end_loading(self, *args):
pass
def __init__(self, main_window, **kwargs):
super().__init__(**kwargs)
@@ -70,10 +76,8 @@ class UserDataPage(Adw.BreakpointBin):
self.flow_box.get_child_at_index(i).set_focusable(False)
# Connections
main_window.main_split.connect("notify::show-sidebar", lambda sidebar, *_: self.sidebar_button.set_visible(sidebar.get_collapsed() or not sidebar.get_show_sidebar()))
main_window.main_split.connect("notify::collapsed", lambda sidebar, *_: self.sidebar_button.set_visible(sidebar.get_collapsed() or not sidebar.get_show_sidebar()))
self.sidebar_button.connect("clicked", lambda *_: main_window.main_split.set_show_sidebar(True))
self.sidebar_button.set_visible(main_window.main_split.get_collapsed())
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))
self.adj.connect("value-changed", self.show_title_handler)