mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-15 00:34:42 +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:
|
if self.package.icon_path:
|
||||||
self.image.add_css_class("icon-dropshadow")
|
self.image.add_css_class("icon-dropshadow")
|
||||||
self.image.set_from_file(self.package.icon_path)
|
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)
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
# Extra Object Creation
|
# Extra Object Creation
|
||||||
self.package = package
|
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
|
# Apply
|
||||||
GLib.idle_add(lambda *_: self.set_title(package.info["name"]))
|
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.set_subtitle(package.info["id"]))
|
||||||
GLib.idle_add(lambda *_: self.idle_stuff())
|
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 {
|
ListBox copy_menu {
|
||||||
Label copy_names {
|
Label copy_names {
|
||||||
label: _("Copy Names");
|
label: _("Copy Names");
|
||||||
|
halign: start;
|
||||||
}
|
}
|
||||||
Label copy_ids {
|
Label copy_ids {
|
||||||
label: _("Copy IDs");
|
label: _("Copy IDs");
|
||||||
|
halign: start;
|
||||||
}
|
}
|
||||||
Label copy_refs {
|
Label copy_refs {
|
||||||
label: _("Copy Refs");
|
label: _("Copy Refs");
|
||||||
|
halign: start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,6 +127,10 @@ class PackagesPage(Adw.BreakpointBin):
|
|||||||
i += 1
|
i += 1
|
||||||
row.check_button.set_active(row.get_visible())
|
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):
|
def generate_list(self, *args):
|
||||||
self.packages_list_box.remove_all()
|
self.packages_list_box.remove_all()
|
||||||
GLib.idle_add(lambda *_: self.filters_page.generate_filters())
|
GLib.idle_add(lambda *_: self.filters_page.generate_filters())
|
||||||
@@ -135,8 +139,9 @@ class PackagesPage(Adw.BreakpointBin):
|
|||||||
if len(HostInfo.flatpaks) == 0:
|
if len(HostInfo.flatpaks) == 0:
|
||||||
self.set_status(self.no_packages)
|
self.set_status(self.no_packages)
|
||||||
return
|
return
|
||||||
|
|
||||||
for package in HostInfo.flatpaks:
|
for package in HostInfo.flatpaks:
|
||||||
row = AppRow(package)
|
row = AppRow(package, self.row_rclick_handler)
|
||||||
package.app_row = row
|
package.app_row = row
|
||||||
row.masked_status_icon.set_visible(package.is_masked)
|
row.masked_status_icon.set_visible(package.is_masked)
|
||||||
row.pinned_status_icon.set_visible(package.is_pinned)
|
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)
|
row.eol_runtime_status_icon.set_visible(package.dependant_runtime.is_eol)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.packages_toast_overlay.add_toast(ErrorToast(_("Error getting Flatpak '{}'").format(package.info["name"]), str(e)).toast)
|
self.packages_toast_overlay.add_toast(ErrorToast(_("Error getting Flatpak '{}'").format(package.info["name"]), str(e)).toast)
|
||||||
|
|
||||||
self.packages_list_box.append(row)
|
self.packages_list_box.append(row)
|
||||||
|
|
||||||
self.apply_filters()
|
self.apply_filters()
|
||||||
@@ -162,7 +168,7 @@ class PackagesPage(Adw.BreakpointBin):
|
|||||||
if not first_visible_row is None:
|
if not first_visible_row is None:
|
||||||
self.packages_list_box.select_row(first_visible_row)
|
self.packages_list_box.select_row(first_visible_row)
|
||||||
self.properties_page.set_properties(first_visible_row.package)
|
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
|
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):
|
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_entry.connect("search-changed", self.on_invalidate)
|
||||||
self.search_bar.set_key_capture_widget(main_window)
|
self.search_bar.set_key_capture_widget(main_window)
|
||||||
self.packages_list_box.connect("row-activated", self.row_activate_handler)
|
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.filter_button.connect("toggled", self.filter_button_handler)
|
||||||
self.reset_filters_button.connect("clicked", lambda *_: self.filters_page.reset_filters())
|
self.reset_filters_button.connect("clicked", lambda *_: self.filters_page.reset_filters())
|
||||||
self.packages_split.connect("notify::show-content", self.filter_page_handler)
|
self.packages_split.connect("notify::show-content", self.filter_page_handler)
|
||||||
|
|||||||
Reference in New Issue
Block a user