mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 21:50:28 +02:00
selecting multiple items implemented in chapter selection - #28
This commit is contained in:
+32
-1
@@ -111,7 +111,7 @@ class HandlerDialog(QDialog):
|
|||||||
# Build treeview
|
# Build treeview
|
||||||
self.treeWidget = QTreeWidget(self)
|
self.treeWidget = QTreeWidget(self)
|
||||||
self.treeWidget.setHeaderHidden(True)
|
self.treeWidget.setHeaderHidden(True)
|
||||||
self.treeWidget.setSelectionMode(QTreeWidget.SingleSelection)
|
self.treeWidget.setSelectionMode(QTreeWidget.ExtendedSelection)
|
||||||
self.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)
|
self.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)
|
||||||
self.treeWidget.customContextMenuRequested.connect(self.on_tree_context_menu)
|
self.treeWidget.customContextMenuRequested.connect(self.on_tree_context_menu)
|
||||||
|
|
||||||
@@ -849,6 +849,12 @@ class HandlerDialog(QDialog):
|
|||||||
has_parents = True
|
has_parents = True
|
||||||
self.treeWidget.setRootIsDecorated(has_parents)
|
self.treeWidget.setRootIsDecorated(has_parents)
|
||||||
|
|
||||||
|
def _update_checkbox_states(self):
|
||||||
|
"""Update the checkbox states based on the current checked chapters."""
|
||||||
|
for i in range(self.treeWidget.topLevelItemCount()):
|
||||||
|
item = self.treeWidget.topLevelItem(i)
|
||||||
|
self._update_item_checkbox_state(item)
|
||||||
|
|
||||||
def _build_epub_tree_from_nav(
|
def _build_epub_tree_from_nav(
|
||||||
self, nav_nodes, parent_item, seen_content_hashes=None
|
self, nav_nodes, parent_item, seen_content_hashes=None
|
||||||
):
|
):
|
||||||
@@ -1809,8 +1815,33 @@ class HandlerDialog(QDialog):
|
|||||||
def get_save_as_project(self):
|
def get_save_as_project(self):
|
||||||
return self.save_as_project
|
return self.save_as_project
|
||||||
|
|
||||||
|
def check_selected_items(self):
|
||||||
|
self.set_selected_items_checked(True)
|
||||||
|
|
||||||
|
def uncheck_selected_items(self):
|
||||||
|
self.set_selected_items_checked(False)
|
||||||
|
|
||||||
|
def set_selected_items_checked(self, state: bool):
|
||||||
|
print(f"Checking selected items: {state}")
|
||||||
|
self.treeWidget.blockSignals(True)
|
||||||
|
for item in self.treeWidget.selectedItems():
|
||||||
|
if item.flags() & Qt.ItemIsUserCheckable:
|
||||||
|
item.setCheckState(0, Qt.Checked if state else Qt.Unchecked)
|
||||||
|
self.treeWidget.blockSignals(False)
|
||||||
|
self._update_checked_set_from_tree()
|
||||||
|
|
||||||
def on_tree_context_menu(self, pos):
|
def on_tree_context_menu(self, pos):
|
||||||
item = self.treeWidget.itemAt(pos)
|
item = self.treeWidget.itemAt(pos)
|
||||||
|
# multi-select context menu
|
||||||
|
if self.treeWidget.selectedItems() and len(self.treeWidget.selectedItems()) > 1:
|
||||||
|
menu = QMenu(self)
|
||||||
|
action = menu.addAction("Select")
|
||||||
|
action.triggered.connect(self.check_selected_items)
|
||||||
|
action = menu.addAction("Clear")
|
||||||
|
action.triggered.connect(self.uncheck_selected_items)
|
||||||
|
menu.exec_(self.treeWidget.mapToGlobal(pos))
|
||||||
|
return
|
||||||
|
|
||||||
if (
|
if (
|
||||||
not item
|
not item
|
||||||
or item.childCount() == 0
|
or item.childCount() == 0
|
||||||
|
|||||||
Reference in New Issue
Block a user