Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
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