Ejemplo n.º 1
0
class AnimationAssetPublisher(QtGui.QWidget):
    def __init__(self, parent=None):
        super(AnimationAssetPublisher, self).__init__(parent)
        self.setWindowTitle("Pillars Animation Publisher")
        self.resize(600, 600)
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)

        self.__mainlayout = QtGui.QVBoxLayout()
        # self.__mainlayout.setContentsMargins(3, 5, 3, 3)
        self.setLayout(self.__mainlayout)

        self.__list_tools = QtGui.QToolBar()
        self.__mainlayout.addWidget(self.__list_tools)
        self.filter_character = QtGui.QCheckBox("Character")
        self.filter_property = QtGui.QCheckBox("Property")
        self.__list_tools.addWidget(self.filter_character)
        self.__list_tools.addWidget(self.filter_property)

        self.__list_tools.addWidget(QtGui.QLabel(">>>"))

        self.actList = QtGui.QAction("List By Type", self)
        self.actList.triggered.connect(self.list)
        self.__list_tools.addAction(self.actList)

        self.actListAll = QtGui.QAction("List All", self)
        self.actListAll.triggered.connect(self.listAll)
        self.__list_tools.addAction(self.actListAll)

        self.__publish_tools = QtGui.QToolBar()
        self.__mainlayout.addWidget(self.__publish_tools)

        self.actSetProjShaderPath = QtGui.QAction("Shader Path:", self)
        self.actSetProjShaderPath.triggered.connect(self.setPublishPath)
        self.__publish_tools.addAction(self.actSetProjShaderPath)

        self.publish_path = QtGui.QLineEdit("")
        self.__publish_tools.addWidget(self.publish_path)

        self.__publish_tools.addWidget(QtGui.QLabel(">>>"))

        self.actPublishAll = QtGui.QAction("Publish All", self)
        self.actPublishAll.triggered.connect(self.doPublishAll)
        self.__publish_tools.addAction(self.actPublishAll)
        self.actPublishSelected = QtGui.QAction("Publish Selected", self)
        self.actPublishSelected.triggered.connect(self.doPublishSelected)
        self.__publish_tools.addAction(self.actPublishSelected)

        self.anim_asset_tm = AssetsTableModel()
        self.anim_asset_view = QtGui.QTableView()
        self.__mainlayout.addWidget(self.anim_asset_view)
        self.anim_asset_view.horizontalHeader().setStretchLastSection(True)
        self.anim_asset_view.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        # self.anim_asset_view.setSortingEnabled(True)
        self.anim_asset_view.setModel(self.anim_asset_tm)

    def setPublishPath(self):
        folder = getDir()
        self.publish_path.setText(folder)

    def getPublishPath(self):
        return unicode(self.publish_path.text())

    def list(self):
        self.anim_asset_tm.clear()
        current_assets = pcasset.listAssets()
        for a in current_assets:
            if self.filter_character.isChecked():
                if a.asset_type() == "Character":
                    self.anim_asset_tm.addAsset(a)
            if self.filter_property.isChecked():
                if a.asset_type() == "Property":
                    self.anim_asset_tm.addAsset(a)
        self.anim_asset_tm.reset()
        return True

    def listAll(self):
        self.filter_character.setChecked(True)
        self.filter_property.setChecked(True)

        self.anim_asset_tm.clear()

        current_assets = pcasset.listAssets()
        for a in current_assets:
            self.anim_asset_tm.addAsset(a)
        self.anim_asset_tm.reset()
        return True

    def selectedAssets(self):
        select_indexs = self.anim_asset_view.selectedIndexes()
        if not select_indexs:
            return []

        sel_assets = []
        for select_index in select_indexs:
            if select_index.column() == 0:
                a = self.anim_asset_tm.getAsset(select_index)
                sel_assets.append(a)
        return sel_assets

    def doPublishAll(self):
        folder = self.getPublishPath()
        if not folder:
            return False
        assets = self.anim_asset_tm.allAsset()
        pcasset.exportAssetsAsAbc(folder, assets)
        return True

    def doPublishSelected(self):
        folder = self.getPublishPath()
        if not folder:
            return False
        assets = self.selectedAssets()
        pcasset.exportAssetsAsAbc(folder, assets)
        return True