mirror of
https://github.com/morgan9e/warehouse
synced 2026-04-14 00:04:08 +09:00
Add right click and long press actions to data boxes
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user