mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-14 16:24:20 +09:00
Long press and rclicks now select rows
This commit is contained in:
@@ -16,20 +16,26 @@ class AppRow(Adw.ActionRow):
|
||||
if self.package.icon_path:
|
||||
self.image.add_css_class("icon-dropshadow")
|
||||
self.image.set_from_file(self.package.icon_path)
|
||||
|
||||
if self.callback:
|
||||
self.callback()
|
||||
|
||||
def __init__(self, package, callback=None, **kwargs):
|
||||
def gest(self, *args):
|
||||
self.on_long_press(self)
|
||||
|
||||
def __init__(self, package, on_long_press=None, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
# Extra Object Creation
|
||||
self.package = package
|
||||
self.callback = callback
|
||||
self.on_long_press = on_long_press
|
||||
self.rclick_gesture = Gtk.GestureClick()
|
||||
self.long_press_gesture = Gtk.GestureLongPress()
|
||||
|
||||
# Apply
|
||||
GLib.idle_add(lambda *_: self.set_title(package.info["name"]))
|
||||
GLib.idle_add(lambda *_: self.set_subtitle(package.info["id"]))
|
||||
GLib.idle_add(lambda *_: self.idle_stuff())
|
||||
self.rclick_gesture.set_button(3)
|
||||
self.add_controller(self.rclick_gesture)
|
||||
|
||||
# Connections
|
||||
# Connections
|
||||
self.rclick_gesture.connect("released", self.gest)
|
||||
self.long_press_gesture.connect("pressed", self.gest)
|
||||
@@ -157,12 +157,15 @@ Popover copy_pop {
|
||||
ListBox copy_menu {
|
||||
Label copy_names {
|
||||
label: _("Copy Names");
|
||||
halign: start;
|
||||
}
|
||||
Label copy_ids {
|
||||
label: _("Copy IDs");
|
||||
halign: start;
|
||||
}
|
||||
Label copy_refs {
|
||||
label: _("Copy Refs");
|
||||
halign: start;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,6 +127,10 @@ class PackagesPage(Adw.BreakpointBin):
|
||||
i += 1
|
||||
row.check_button.set_active(row.get_visible())
|
||||
|
||||
def row_rclick_handler(self, row):
|
||||
self.select_button.set_active(True)
|
||||
GLib.idle_add(lambda *_, button=row.check_button: button.set_active(not button.get_active()))
|
||||
|
||||
def generate_list(self, *args):
|
||||
self.packages_list_box.remove_all()
|
||||
GLib.idle_add(lambda *_: self.filters_page.generate_filters())
|
||||
@@ -135,8 +139,9 @@ class PackagesPage(Adw.BreakpointBin):
|
||||
if len(HostInfo.flatpaks) == 0:
|
||||
self.set_status(self.no_packages)
|
||||
return
|
||||
|
||||
for package in HostInfo.flatpaks:
|
||||
row = AppRow(package)
|
||||
row = AppRow(package, self.row_rclick_handler)
|
||||
package.app_row = row
|
||||
row.masked_status_icon.set_visible(package.is_masked)
|
||||
row.pinned_status_icon.set_visible(package.is_pinned)
|
||||
@@ -148,6 +153,7 @@ class PackagesPage(Adw.BreakpointBin):
|
||||
row.eol_runtime_status_icon.set_visible(package.dependant_runtime.is_eol)
|
||||
except Exception as e:
|
||||
self.packages_toast_overlay.add_toast(ErrorToast(_("Error getting Flatpak '{}'").format(package.info["name"]), str(e)).toast)
|
||||
|
||||
self.packages_list_box.append(row)
|
||||
|
||||
self.apply_filters()
|
||||
@@ -162,7 +168,7 @@ class PackagesPage(Adw.BreakpointBin):
|
||||
if not first_visible_row is None:
|
||||
self.packages_list_box.select_row(first_visible_row)
|
||||
self.properties_page.set_properties(first_visible_row.package)
|
||||
|
||||
|
||||
self.scrolled_window.set_vadjustment(Gtk.Adjustment.new(0,0,0,0,0,0)) # Scroll list to top
|
||||
|
||||
def row_activate_handler(self, list_box, row):
|
||||
@@ -313,7 +319,7 @@ class PackagesPage(Adw.BreakpointBin):
|
||||
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.select_button.connect("clicked", self.select_button_handler)
|
||||
self.select_button.connect("toggled", 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())
|
||||
self.packages_split.connect("notify::show-content", self.filter_page_handler)
|
||||
|
||||
Reference in New Issue
Block a user