コード例 #1
0
ファイル: AddPyWin.py プロジェクト: tws0002/nuke_pipeline
    def add_tool_btn_clicked(self):
        tools_list = read_json()
        tools_name = [x.get("name") for x in tools_list]

        if self.name_line.text():
            if self.name_line.text() not in tools_name:
                with open(
                        os.path.join(config_dir, self.name_line.text()) +
                        ".py", "w") as py_file:
                    py_file.write(self.file_widget.file_line.toPlainText())

                current_tool = {
                    "name":
                    self.name_line.text(),
                    "type":
                    "python",
                    "command":
                    (os.path.join(config_dir, self.name_line.text()) +
                     ".py").replace("\\", "/")
                }
                tools_list.append(current_tool)
                write_json(tools_list)
                self.close()
                self.closed_sig.emit("f**k")

            else:
                QtGui.QMessageBox.information(None, u"提示", u"已存在相同名字的预设")

        else:
            QtGui.QMessageBox.information(None, u"提示", u"添加要添加的python文件")
コード例 #2
0
    def list_double_clicked(self):
        tools_list = read_json()
        current_index = self.tool_list.currentRow()
        tool_command = tools_list[current_index].get("command")

        if tools_list[current_index].get("type") == "python":
            execfile(tool_command.encode("gbk"))
        else:
            nuke.loadToolset(tool_command)
コード例 #3
0
    def dropEvent(self, event):
        """预设通过拖拽的方式排序"""
        event.setDropAction(QtCore.Qt.MoveAction)
        super(ToolsListWidget, self).dropEvent(event)

        tools_list = read_json()
        change_item = tools_list[self.old_index]
        tools_list.pop(self.old_index)
        tools_list.insert(self.currentRow(), change_item)
        write_json(tools_list)
コード例 #4
0
    def add_btn_clicked(self):
        current_node = nuke.selectedNodes()

        existItem = False

        if len(current_node) > 0:
            if len(current_node) == 1:
                tool_name = nuke.getInput(u'请输入预设名字:',
                                          current_node[0].name()[:-1])
            else:
                tool_name = nuke.getInput(u'请输入预设名字:')

            if tool_name:
                if self.tool_list.count() == 0:
                    existItem = True

                else:
                    for list_num in xrange(self.tool_list.count()):
                        if self.tool_list.item(list_num).text() == tool_name:
                            QtGui.QMessageBox.information(
                                self, u"提示", u"您选的节点已添加过了,请不要重复添加")
                            existItem = False
                            break
                        else:
                            existItem = True

                if existItem:
                    tool_item = QtGui.QListWidgetItem(tool_name)
                    tool_item.setTextAlignment(
                        QtCore.Qt.AlignCenter)  # 设置item居中
                    tool_item.setSizeHint(
                        QtCore.QSize(tool_item.sizeHint().width(),
                                     25))  # 设置item高度
                    self.tool_list.addItem(tool_item)

                    # 保存成预设文件
                    toolset_path = os.path.join(config_dir,
                                                "%s.nk" % tool_name)
                    nuke.nodeCopy(toolset_path.encode("gbk"))

                    # 写入json
                    tools_list = read_json()
                    current_tool = {
                        "name": tool_name,
                        "type": "tool_set",
                        "command": toolset_path.replace("\\", "/")
                    }
                    tools_list.append(current_tool)
                    write_json(tools_list)

        else:
            QtGui.QMessageBox.information(self, u"提示", u"请选择节点")
コード例 #5
0
    def init_tools_list(self):
        if os.path.isdir(config_dir) == False:
            os.mkdir(config_dir)

        if os.path.isfile(config_path) == False:
            with open(config_path, "w") as write_file:
                write_file.write("[]")

        for tool in read_json():
            tool_item = QtGui.QListWidgetItem(tool.get("name"))
            tool_item.setTextAlignment(QtCore.Qt.AlignCenter)
            tool_item.setSizeHint(
                QtCore.QSize(tool_item.sizeHint().width(), 25))
            self.tool_list.addItem(tool_item)
コード例 #6
0
    def menu_item_clicked(self):
        current_item_name = str(self.tool_list.currentItem().text())

        button = QtGui.QMessageBox.question(
            self, u"提示", u"是否删除%s" % current_item_name,
            QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel,
            QtGui.QMessageBox.Ok)
        if button == QtGui.QMessageBox.Ok:
            # 删除json中对应的内容
            tools_list = read_json()
            current_index = self.tool_list.currentRow()
            toolset_path = tools_list[current_index].get("command")
            os.remove(toolset_path)
            tools_list.pop(current_index)
            write_json(tools_list)

            # 删除要删的item
            self.tool_list.takeItem(
                self.tool_list.row(self.tool_list.currentItem()))
コード例 #7
0
 def dragMoveEvent(self, event):
     """修改拖拽时的minedata数据"""
     tools_list = read_json()
     event.mimeData().setText(tools_list[self.currentRow()].get("command"))