def _recursive_get_selected_items_tree(self, item: QStandardItem): if item.rowCount() == 0 and item.checkState() == QtCore.Qt.Checked: return item.data(_KEY_ROLE) elif item.rowCount() > 0: result = {} for i in range(0, item.rowCount()): child = item.child(i) selected_children = self._recursive_get_selected_items_tree(child) if selected_children: result[child.data(_KEY_ROLE)] = selected_children return result else: return None
def _recursive_restore_selections_from_project(self, item: QStandardItem, selections): if item.rowCount() == 0 and not item.data(_EXPANDABLE_ROLE) or not isinstance(selections, dict): return else: for i in range(0, item.rowCount()): child = item.child(i) child_key = child.data(_KEY_ROLE) child_capabilities = child.data(_CAPABILITIES_ROLE) if child_key in selections: self._update_data_for_item(child) if child_capabilities.is_selectable(): child.setCheckState(QtCore.Qt.Checked) self._recursive_restore_selections_from_project(child, selections[child_key])
def _recursive_export_selected_items(self, item: QStandardItem) -> Any: self._ensure_loading_of_children(item) if item.rowCount() == 0 and item.checkState(): node = item.data(_GET_NODE_ROLE) return node.export() else: result = {} for i in range(0, item.rowCount()): child = item.child(i) child_data = self._recursive_export_selected_items(child) if child_data != {}: result[child.data(_KEY_ROLE)] = child_data if result and self._is_create_new_selection(item): result["__CREATE_NEW__"] = item.checkState() != QtCore.Qt.Unchecked return result
def _update_check_state(self, item: QStandardItem): capabilities: ExportCapabilities = item.data(_CAPABILITIES_ROLE) if capabilities.is_selectable(): new_state = item.checkState() self.blockSignals(True) for i in range(0, item.rowCount()): self._recursive_update_check_state(item.child(i), new_state) self.blockSignals(False)
def _recursive_update_check_state(self, item: QStandardItem, new_state: QtCore.Qt.CheckState): if item.rowCount() != 0: for i in range(0, item.rowCount()): self._recursive_update_check_state(item.child(i), new_state) item.setCheckState(new_state) item.setEnabled(new_state != QtCore.Qt.Checked)