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文件")
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)
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)
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"请选择节点")
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)
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()))
def dragMoveEvent(self, event): """修改拖拽时的minedata数据""" tools_list = read_json() event.mimeData().setText(tools_list[self.currentRow()].get("command"))