def decode_mime_data(self, mime_data: QtCore.QMimeData) -> tuple[list[QtCore.QModelIndex], list[EditorTreeItem]]: encoded_data = mime_data.data('text/index-json-array') index_data = json.loads(str(encoded_data, 'utf-8')) # type: ignore indexes = [self.createIndex( i['row'], i['column'], i['internalId']) for i in index_data] tree_items = [self.getItem(i) for i in indexes] return (indexes, tree_items)
def _object_from_mime_data( self, mime_data: QMimeData) -> Union[LevelObject, EnemyObject]: object_type, *object_bytes = mime_data.data("application/level-object") if object_type == b"\x00": domain = int.from_bytes(object_bytes[0], "big") >> 5 object_index = int.from_bytes(object_bytes[2], "big") return self.level_ref.level.object_factory.from_properties( domain, object_index, 0, 0, None, 999) else: enemy_id = int.from_bytes(object_bytes[0], "big") return self.level_ref.level.enemy_item_factory.from_properties( enemy_id, 0, 0)
def dropMimeData( self, data: QMimeData, action: Qt.DropAction, row: int, column: int, parent: QModelIndex, ) -> bool: data = json.loads(data.data(MIMETYPE).data()) if parent.isValid(): new_folder = parent.internalPointer()["id"] else: new_folder = "" if data["parent"] == new_folder: return False self.store.add_app_to_folder(data["id"], new_folder) self.store.delete_app_from_folder(data["id"], data["parent"]) return True