mask and pin switches toggle status icons on the rows

This commit is contained in:
heliguy
2024-07-10 15:56:48 -04:00
parent e00ec3f86a
commit e04d14102d
4 changed files with 30 additions and 6 deletions

View File

@@ -155,6 +155,7 @@ class Flatpak:
self.dependant_runtime = None
self.failed_app_run = None
self.failed_mask = None
self.app_row = None
try:
self.is_masked = self.info["id"] in HostInfo.masks[self.info["installation"]]

View File

@@ -88,13 +88,14 @@ template $PackagesPage : Adw.BreakpointBin {
can-shrink: true;
}
}
Button {
MenuButton copy_button {
styles ["raised"]
Adw.ButtonContent {
icon-name: "edit-copy-symbolic";
label: _("Copy");
can-shrink: true;
}
popover: copy_pop;
}
Button {
styles ["raised"]
@@ -120,4 +121,22 @@ template $PackagesPage : Adw.BreakpointBin {
}
}
}
}
Popover copy_pop {
styles ["menu"]
ListBox copy_menu {
Label copy_names {
label: _("Copy Names");
}
Label copy_ids {
label: _("Copy IDs");
}
Label copy_refs {
label: _("Copy Refs");
}
Label copy_data {
label: _("Copy Data Paths");
}
}
}

View File

@@ -35,6 +35,7 @@ class PackagesPage(Adw.BreakpointBin):
self.packages_list_box.remove_all()
for package in HostInfo.flatpaks:
row = AppRow(package)
package.app_row = row
row.masked_status_icon.set_visible(package.is_masked)
row.pinned_status_icon.set_visible(package.is_pinned)
row.eol_package_package_status_icon.set_visible(package.is_eol)
@@ -78,7 +79,7 @@ class PackagesPage(Adw.BreakpointBin):
return
self.status_view.set_content(status_box)
def refresh_button_handler(self, *args):
def refresh_handler(self, *args):
self.set_status(self.loading_status)
HostInfo.get_flatpaks(callback=self.generate_list)
@@ -101,7 +102,7 @@ class PackagesPage(Adw.BreakpointBin):
# Extra Object Creation
self.main_window = main_window
self.properties_page = PropertiesPage(main_window)
self.properties_page = PropertiesPage(main_window, self)
self.filters_page = FiltersPage(main_window, self)
self.loading_status = StatusBox(_("Fetching Packages"), _("This should only take a moment"))
@@ -121,7 +122,7 @@ 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)
self.refresh_button.connect("clicked", self.refresh_button_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.packages_split.connect("notify::show-content", self.filter_page_handler)

View File

@@ -179,6 +179,7 @@ class PropertiesPage(Adw.NavigationPage):
response = _("Disabled Updates") if state else _("Enabled Updates")
self.toast_overlay.add_toast(Adw.Toast(title=response))
GLib.idle_add(lambda *_: self.mask_switch.set_active(state))
self.package.app_row.masked_status_icon.set_visible(state)
self.package.set_mask(state, callback)
@@ -194,11 +195,12 @@ class PropertiesPage(Adw.NavigationPage):
response = _("Disabled Autoremoval") if state else _("Enabled Autoremoval")
self.toast_overlay.add_toast(Adw.Toast(title=response))
GLib.idle_add(lambda *_: self.pin_switch.set_active(state))
self.package.app_row.pinned_status_icon.set_visible(state)
self.package.set_pin(state, callback)
def runtime_row_handler(self, *args):
new_page = self.__class__(self.main_window)
new_page = self.__class__(self.main_window, self.packages_page)
new_page.set_properties(self.package.dependant_runtime)
self.nav_view.push(new_page)
@@ -220,7 +222,7 @@ class PropertiesPage(Adw.NavigationPage):
page = ChangeVersionPage(self.main_window, self.package)
self.nav_view.push(page)
def __init__(self, main_window, **kwargs):
def __init__(self, main_window, packages_page, **kwargs):
super().__init__(**kwargs)
# Extra Object Creation
@@ -246,6 +248,7 @@ class PropertiesPage(Adw.NavigationPage):
"date": self.date_row,
}
self.packages_page = packages_page
self.__class__.main_window = main_window
# Connections