Example #1
0
 def _update_data_for_item(item: QStandardItem):
     if not item.data(_EXPANDABLE_ROLE):
         return
     if not item.data(_HAS_LOADED_DATA_ROLE):
         node = item.data(_GET_NODE_ROLE)
         for child, name, key in node.children():
             if hasattr(child, "children"):
                 child_item = _create_expandable_item(child, name, key)
             else:
                 child_item = _create_standard_item(child, name, key)
             item.appendRow(child_item)
         item.setData(True, _HAS_LOADED_DATA_ROLE)
Example #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)
Example #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
Example #4
0
 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])
Example #5
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
Example #6
0
 def _is_create_new_selection(item: QStandardItem):
     capabilities: ExportCapabilities = item.data(_CAPABILITIES_ROLE)
     return item.checkState() == QtCore.Qt.Checked and capabilities.is_appendable()