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_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 _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)