Add right click and long press actions to data boxes

This commit is contained in:
heliguy4599
2024-08-28 11:26:48 -04:00
parent 0f111decc9
commit 619b8225f7
3 changed files with 16 additions and 35 deletions

View File

@@ -39,14 +39,8 @@ template $DataSubpage : Stack {
halign: start;
wrap: true;
}
Image {
icon-name: "dot-symbolic";
margin-start: 6;
margin-end: 6;
margin-top: 3;
valign: center;
}
Label subtitle {
visible: false;
label: "No Subtutle Set";
styles ["title-3"]
wrap: true;

View File

@@ -75,6 +75,10 @@ class DataSubpage(Gtk.Stack):
self.set_visible_child(self.no_data)
def set_selection_mode(self, is_enabled):
if not is_enabled:
self.size_label.set_visible(True)
self.subtitle.set_visible(False)
idx = 0
while box := self.flow_box.get_child_at_index(idx):
idx += 1
@@ -97,6 +101,9 @@ class DataSubpage(Gtk.Stack):
pass
total = len(self.selected_boxes)
self.subtitle.set_visible(not total == 0)
self.size_label.set_visible(total == 0)
self.subtitle.set_label(_("{} Selected").format(total))
self.parent_page.copy_button.set_sensitive(total)
self.parent_page.trash_button.set_sensitive(total)
@@ -110,8 +117,7 @@ class DataSubpage(Gtk.Stack):
idx = 0
while box := self.flow_box.get_child_at_index(idx):
idx += 1
if not box.get_child().check_button.get_active():
self.box_select_handler(box.get_child())
box.get_child().check_button.set_active(True)
def box_rclick_handler(self, box):
self.parent_page.select_button.set_active(True)
@@ -124,15 +130,7 @@ class DataSubpage(Gtk.Stack):
self.finished_boxes = 0
self.total_size = 0
self.total_items = len(data)
if self.total_items == 1:
self.subtitle.set_label(_("1 Item"))
self.parent_page.search_entry.set_editable(True)
else:
self.parent_page.search_entry.set_editable(True)
self.subtitle.set_label(_("{} Items").format(self.total_items))
self.min_horizontal_label_width = self.label_box.get_preferred_size()[1].width
self.parent_page.search_entry.set_editable(True)
if flatpaks:
for i, pak in enumerate(flatpaks):
box = DataBox(self.parent_page.toast_overlay, pak.info["name"], pak.info["id"], pak.data_path, pak.icon_path, self.box_size_callback, self.trash_handler)
@@ -189,14 +187,6 @@ class DataSubpage(Gtk.Stack):
elif self.total_items == 0:
self.set_visible_child(self.no_data)
def label_orientation_handler(self, adj):
current_page_width = adj.get_upper() - 24
if self.label_box.get_allocated_width() < self.min_horizontal_label_width:
GLib.idle_add(lambda *_: self.label_box.set_orientation(Gtk.Orientation.VERTICAL))
else:
GLib.idle_add(lambda *_: self.label_box.set_orientation(Gtk.Orientation.HORIZONTAL))
def update_sort_mode(self):
self.sort_ascend = self.settings.get_boolean("sort-ascend")
self.sort_mode = self.settings.get_string("sort-mode")
@@ -222,7 +212,6 @@ class DataSubpage(Gtk.Stack):
self.selected_boxes = []
self.ready_to_sort_size = False
self.finished_boxes = 0
self.min_horizontal_label_width = self.label_box.get_preferred_size()[1].width
self.is_result = False
self.prev_status = None
self.settings = Gio.Settings.new("io.github.flattool.Warehouse.data_page")
@@ -242,7 +231,4 @@ class DataSubpage(Gtk.Stack):
# Connections
parent_page.search_entry.connect("search-changed", self.on_invalidate)
self.flow_box.connect("child-activated", self.box_interact_handler)
# self.title.get_preferred_size()[1].width + self.subtitle.get_preferred_size()[1].width
self.scrolled_window.get_hadjustment().connect("changed", self.label_orientation_handler)
self.flow_box.connect("child-activated", self.box_interact_handler)

View File

@@ -179,7 +179,9 @@ class UserDataPage(Adw.BreakpointBin):
dialog.connect("response", on_response)
dialog.present(ErrorToast.main_window)
# self.toast_overlay.add_toast(Adw.Toast(title=_("Trashed data")))
def breakpoint_handler(self, bpt, is_applied):
self.adp.label_box.set_orientation(Gtk.Orientation.VERTICAL if is_applied else Gtk.Orientation.HORIZONTAL)
self.ldp.label_box.set_orientation(Gtk.Orientation.VERTICAL if is_applied else Gtk.Orientation.HORIZONTAL)
def __init__(self, main_window, **kwargs):
super().__init__(**kwargs)
@@ -219,18 +221,17 @@ class UserDataPage(Adw.BreakpointBin):
# Connections
self.stack.connect("notify::visible-child", self.view_change_handler)
self.select_button.connect("toggled", self.select_toggle_handler)
self.select_all_button.connect("clicked", self.select_all_handler)
self.copy_button.connect("clicked", self.copy_handler)
self.trash_button.connect("clicked", self.trash_handler)
self.sort_ascend.connect("clicked", self.sort_button_handler)
self.sort_descend.connect("clicked", self.sort_button_handler)
self.sort_name.connect("clicked", self.sort_button_handler)
self.sort_id.connect("clicked", self.sort_button_handler)
self.sort_size.connect("clicked", self.sort_button_handler)
self.bpt.connect("apply", self.breakpoint_handler, True)
self.bpt.connect("unapply", self.breakpoint_handler, False)
# Apply again
self.search_bar.set_key_capture_widget(main_window)