示例#1
0
    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
示例#2
0
 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)
示例#3
0
 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
示例#4
0
 def _ensure_loading_of_children(self, item: QStandardItem):
     if not item.checkState():
         return
     self._update_data_for_item(item)
示例#5
0
 def _is_create_new_selection(item: QStandardItem):
     capabilities: ExportCapabilities = item.data(_CAPABILITIES_ROLE)
     return item.checkState() == QtCore.Qt.Checked and capabilities.is_appendable()