def addRecentProject(self, project): # print '>> addRecentProject ', project if project is not None: if usePyQt4: recent_projects_max = getDefaultValue(app_settings, '', 'recent_projects_max') if project not in self.recentProjects: self.recentProjects.prepend(QtCore.QString(project)) while self.recentProjects.count() > recent_projects_max: self.recentProjects.takeLast() recentProjects = QtCore.QVariant( self.recentProjects ) if self.recentProjects else QtCore.QVariant() app_settings.setValue('RecentProjects', recentProjects) else: recent_projects_max = getDefaultValue(app_settings, '', 'recent_projects_max') if project not in self.recentProjects: self.recentProjects.insert(0, project) while len(self.recentProjects) > recent_projects_max: self.recentProjects.pop() app_settings.setValue('RecentProjects', self.recentProjects) print '* project added recentProjects =', self.recentProjects print '* recentProjects =', self.recentProjects
def updateNodeParams(self, node): # self.ui.list_inputs.clear() self.ui.list_outputs.clear() linkedFont = QtGui.QFont() linkedFont.setItalic(True) linkedBrush = QtGui.QBrush() linkedBrush.setColor(QtCore.Qt.blue) # setup input params list for param in node.inputParams: item = QtModule.QListWidgetItem(param.label) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(param)) item.setData(QtCore.Qt.UserRole + 2, QtCore.QVariant(node)) if node.isInputParamLinked(param): item.setFont(linkedFont) item.setForeground(linkedBrush) self.ui.list_inputs.addItem(item) # setup output params list for param in node.outputParams: item = QtModule.QListWidgetItem(param.label) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(param)) item.setData(QtCore.Qt.UserRole + 2, QtCore.QVariant(node)) if node.isOutputParamLinked(param): item.setFont(linkedFont) item.setForeground(linkedBrush) self.ui.list_outputs.addItem(item)
def buildGui(self): # build the gui created with QtDesigner self.ui = Ui_ExportShaderDialog() self.ui.setupUi(self) if self.editNode is not None: # self.setWindowTitle('ExportShader: %s (%s)' % (self.editNode.label, self.editNode.name)) separator = QtModule.QListWidgetItem('---- exported shader ----') separator.setFlags(QtCore.Qt.NoItemFlags) self.ui.list_nodes.addItem(separator) item = QtModule.QListWidgetItem(self.editNode.label) node_var = QtCore.QVariant(self.editNode) item.setData(QtCore.Qt.UserRole + 1, node_var) self.ui.list_nodes.addItem(item) separator = QtModule.QListWidgetItem('---- connected nodes ----') separator.setFlags(QtCore.Qt.NoItemFlags) self.ui.list_nodes.addItem(separator) #childrenList = [] #childrenList = self.editNode.getChildrenList ( childrenList ) self.computed_code = self.editNode.getComputedCode(CodeOnly=True) print '*** (%s) children list: ' % self.editNode.label for node in self.editNode.visitedNodes: #childrenList : print '* (%s)' % node.label item = QtModule.QListWidgetItem(node.label) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(node)) self.ui.list_nodes.addItem(item)
def scanXmlNodes(self, filename): # dom = QtXml.QDomDocument('') nodeFilename = self.dirName + '/' + self.liblevel + filename file = QtCore.QFile(self.libdir.filePath(filename)) if file.open(QtCore.QIODevice.ReadOnly): if dom.setContent(file): node = dom.documentElement() if node.nodeName() == 'nodenet' or node.nodeName() == 'node': nodeName = node.attributes().namedItem('name').nodeValue() nodeType = node.attributes().namedItem('type').nodeValue() nodeAuthor = node.attributes().namedItem( 'author').nodeValue() nodeIcon = node.attributes().namedItem('icon').nodeValue() nodeHelp = '' help_tag = node.namedItem('help') if not help_tag.isNull(): nodeHelp = help_tag.toElement().text() item = QtGui.QStandardItem(nodeName) item.setEditable(False) if not usePySide: item.setData(QtCore.QVariant(nodeAuthor), QtCore.Qt.UserRole + 1) item.setData(QtCore.QVariant(nodeType), QtCore.Qt.UserRole + 2) item.setData(QtCore.QVariant(nodeHelp), QtCore.Qt.UserRole + 3) item.setData(QtCore.QVariant(nodeFilename), QtCore.Qt.UserRole + 4) item.setData(QtCore.QVariant(nodeIcon), QtCore.Qt.UserRole + 5) else: item.setData(nodeAuthor, QtCore.Qt.UserRole + 1) item.setData(nodeType, QtCore.Qt.UserRole + 2) item.setData(nodeHelp, QtCore.Qt.UserRole + 3) item.setData(nodeFilename, QtCore.Qt.UserRole + 4) item.setData(nodeIcon, QtCore.Qt.UserRole + 5) if node.nodeName() == 'nodenet': # set Blue color for nodenet items brush = QtGui.QBrush() brush.setColor(QtCore.Qt.blue) item.setForeground(brush) item.setWhatsThis('nodenet') else: item.setWhatsThis('node') self.parentItem.appendRow(item) file.close()
def buildRecentNetworksMenu(self): # if usePyQt4: #self.recentNetworks = app_settings.value ( 'RecentNetworks' ).toStringList () self.ui.menuRecent_Networks.clear() if len(self.recentNetworks): for i, fname in enumerate(self.recentNetworks): icon = QtGui.QIcon.fromTheme( 'document-new', QtGui.QIcon(':/file_icons/resources/new.png')) # QtCore.QFileInfo ( fname ).fileName () action = QtModule.QAction(icon, '&%d %s' % (i + 1, fname), self) action.setData(QtCore.QVariant(fname)) self.connect(action, QtCore.SIGNAL('triggered()'), self.onOpenRecentNetwork) self.ui.menuRecent_Networks.addAction(action) else: #self.recentNetworks = app_settings.value ( 'RecentNetworks' ) self.ui.menuRecent_Networks.clear() if len(self.recentNetworks): for i, fname in enumerate(self.recentNetworks): icon = QtGui.QIcon.fromTheme( 'document-new', QtGui.QIcon(':/file_icons/resources/new.png')) # QtCore.QFileInfo ( fname ).fileName () action = QtModule.QAction(icon, '&%d %s' % (i + 1, fname), self) action.setData(fname) action.triggered.connect(self.onOpenRecentNetwork) self.ui.menuRecent_Networks.addAction(action)
def buildRecentProjectsMenu(self): # print '>> buildRecentProjectsMenu ...' if usePyQt4: #self.recentProjects = app_settings.value ( 'RecentProjects' ).toStringList () print '>> self.recentProjects:', self.recentProjects self.ui.menuRecent_Projects.clear() if len(self.recentProjects): icon = QtGui.QIcon.fromTheme( 'folder', QtGui.QIcon(':/file_icons/resources/open.png')) # QtGui.QIcon ( ':/file_icons/resources/recentFile.png' ) 'folder' for i, fname in enumerate(self.recentProjects): # QtCore.QFileInfo ( fname ).fileName () action = QtModule.QAction(icon, '&%d %s' % (i + 1, fname), self) action.setData(QtCore.QVariant(fname)) self.connect(action, QtCore.SIGNAL('triggered()'), self.onOpenRecentProject) self.ui.menuRecent_Projects.addAction(action) else: #self.recentProjects = app_settings.value ( 'RecentProjects' ) print '>> self.recentProjects:', self.recentProjects self.ui.menuRecent_Projects.clear() if len(self.recentProjects): icon = QtGui.QIcon.fromTheme( 'folder', QtGui.QIcon(':/file_icons/resources/open.png')) # QtGui.QIcon ( ':/file_icons/resources/recentFile.png' ) 'folder' for i, fname in enumerate(self.recentProjects): # QtCore.QFileInfo ( fname ).fileName () action = QtModule.QAction(icon, '&%d %s' % (i + 1, fname), self) action.setData(fname) action.triggered.connect(self.onOpenRecentProject) self.ui.menuRecent_Projects.addAction(action)
def onNodeChanged(self): # if DEBUG_MODE: print '>> ExportShaderDialog.onNodeChanged' self.disconnectSignals() item = self.ui.list_nodes.currentItem() if not usePyQt5: node = item.data(QtCore.Qt.UserRole + 1).toPyObject() else: node = item.data(QtCore.Qt.UserRole + 1) print '* (%s) selected' % node.label self.ui.node.setNode(node) self.ui.prop_tabWidget.setCurrentIndex(0) if self.ui.list_nodes.currentRow() != 1: self.updateNodeParams(node) self.ui.list_inputs.clear() self.ui.list_outputs.clear() linkedFont = QtGui.QFont() linkedFont.setItalic(True) linkedBrush = QtGui.QBrush() linkedBrush.setColor(QtCore.Qt.blue) # setup input params list for param in node.inputParams: item = QtModule.QListWidgetItem(param.label) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(param)) item.setData(QtCore.Qt.UserRole + 2, QtCore.QVariant(node)) if node.isInputParamLinked(param): item.setFont(linkedFont) item.setForeground(linkedBrush) self.ui.list_inputs.addItem(item) # setup output params list for param in node.outputParams: item = QtModule.QListWidgetItem(param.label) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(param)) item.setData(QtCore.Qt.UserRole + 2, QtCore.QVariant(node)) if node.isOutputParamLinked(param): item.setFont(linkedFont) item.setForeground(linkedBrush) self.ui.list_outputs.addItem(item) else: self.updateComputedParams() self.connectSignals()
def updateComputedParams(self): # self.ui.list_inputs.clear() self.ui.list_outputs.clear() self.computed_code = self.editNode.getComputedCode(CodeOnly=True) # setup input params list for (param, node) in self.editNode.computedInputParamsList: item = QtModule.QListWidgetItem( (node.getParamDeclaration(param)).rstrip(';\n')) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(param)) item.setData(QtCore.Qt.UserRole + 2, QtCore.QVariant(node)) self.ui.list_inputs.addItem(item) # setup output params list for (param, node) in self.editNode.computedOutputParamsList: item = QtModule.QListWidgetItem( ('output ' + node.getParamDeclaration(param)).rstrip(';\n')) item.setData(QtCore.Qt.UserRole + 1, QtCore.QVariant(param)) item.setData(QtCore.Qt.UserRole + 2, QtCore.QVariant(node)) self.ui.list_outputs.addItem(item)
def addRecentNetwork(self, network): # if network is not None: if usePyQt4: recent_networks_max = getDefaultValue(app_settings, '', 'recent_networks_max') if network not in self.recentNetworks: self.recentNetworks.prepend(QtCore.QString(network)) while self.recentNetworks.count() > recent_networks_max: self.recentNetworks.takeLast() recentNetworks = QtCore.QVariant( self.recentNetworks ) if self.recentNetworks else QtCore.QVariant() app_settings.setValue('RecentNetworks', recentNetworks) else: recent_networks_max = getDefaultValue(app_settings, '', 'recent_networks_max') if network not in self.recentNetworks: self.recentNetworks.insert(0, network) while len(self.recentNetworks) > recent_networks_max: self.recentNetworks.pop() app_settings.setValue('RecentNetworks', self.recentNetworks)
def buildGui(self): # self.model = QtGui.QStandardItemModel() self.model.setColumnCount(2) if not usePySide: self.model.setHeaderData(0, QtCore.Qt.Horizontal, QtCore.QVariant('Parameter')) self.model.setHeaderData(1, QtCore.Qt.Horizontal, QtCore.QVariant('Value')) else: self.model.setHeaderData(0, QtCore.Qt.Horizontal, 'Parameter') self.model.setHeaderData(1, QtCore.Qt.Horizontal, 'Value') self.paramHeader = QtModule.QHeaderView(QtCore.Qt.Horizontal, self) self.paramHeader.setModel(self.model) self.paramHeader.resizeSection(0, self.labelWidth) self.paramHeader.setMinimumSectionSize(self.labelWidth) self.paramHeader.setStretchLastSection(True) self.paramHeader.setFixedHeight(UI.HEIGHT + 10) # !!!!! self.paramHeader.setFrameShape(QtModule.QFrame.NoFrame) self.paramHeader.setFrameShadow(QtModule.QFrame.Raised) self.paramHeader.setLineWidth(0) self.paramHeader.setMidLineWidth(0) self.stackedWidget = QtModule.QStackedWidget(self) self.paramsLayout = QtModule.QGridLayout(self) self.paramsLayout.setContentsMargins(UI.SPACING, UI.SPACING, UI.SPACING, UI.SPACING) self.paramsLayout.setSizeConstraint(QtModule.QLayout.SetNoConstraint) self.paramsLayout.setVerticalSpacing(0) self.paramsLayout.setRowStretch(1, 1) self.paramsLayout.addWidget(self.paramHeader, 0, 0, 1, 1) self.paramsLayout.addWidget(self.stackedWidget, 1, 0, 1, 1) frame = QtModule.QFrame() self.stackedWidget.addWidget(frame)
def buildGui ( self ) : # build the gui created with QtDesigner self.ui = Ui_NodeEditorDialog () self.ui.setupUi ( self ) if self.editNode is not None : # self.setWindowTitle ( 'NodeEditor: %s (%s)' % ( self.editNode.label, self.editNode.name ) ) linkedFont = QtGui.QFont () linkedFont.setItalic ( True ) linkedBrush = QtGui.QBrush () linkedBrush.setColor ( QtCore.Qt.blue ) # setup loacal variables list for name in self.editNode.internals : item = QtModule.QListWidgetItem ( name ) self.ui.internals_list.ui.listWidget.addItem ( item ) # setup includes list for name in self.editNode.includes : item = QtModule.QListWidgetItem ( name ) self.ui.includes_list.ui.listWidget.addItem ( item ) # setup input params list for param in self.editNode.inputParams : item = QtModule.QListWidgetItem ( param.name ) if self.editNode.isInputParamLinked ( param ) : item.setFont ( linkedFont ) item.setForeground ( linkedBrush ) self.ui.input_list.ui.listWidget.addItem ( item ) # setup output params list for param in self.editNode.outputParams : item = QtModule.QListWidgetItem ( param.name ) if self.editNode.isOutputParamLinked ( param ) : item.setFont ( linkedFont ) item.setForeground ( linkedBrush ) self.ui.output_list.ui.listWidget.addItem ( item ) # setup input links list for link in self.editNode.getInputLinks () : item = QtModule.QListWidgetItem ( 'id=%d' % link.id ) if not usePySide : item.setData ( QtCore.Qt.UserRole, QtCore.QVariant ( int ( link.id ) ) ) else : item.setData ( QtCore.Qt.UserRole, int ( link.id ) ) self.ui.input_links_listWidget.addItem ( item ) # setup output links list for link in self.editNode.getOutputLinks () : item = QtModule.QListWidgetItem ( 'id=%d' % link.id ) if not usePySide : item.setData ( QtCore.Qt.UserRole, QtCore.QVariant ( int ( link.id ) ) ) else : item.setData ( QtCore.Qt.UserRole, int ( link.id ) ) self.ui.output_links_listWidget.addItem ( item ) # setup event handlers list if self.editNode.event_code : for handler in self.editNode.event_code.keys () : item = QtModule.QListWidgetItem ( handler ) self.ui.handlers_list.ui.listWidget.addItem ( item ) self.nodeCodeEditor = self.ui.node_code self.nodeCodeEditor.setNodeCode ( self.editNode.code, 'SL' ) self.controlCodeEditor = self.ui.control_code self.controlCodeEditor.setNodeCode ( self.editNode.control_code, 'python' ) self.eventCodeEditor = self.ui.event_code #self.eventCodeEditor.setNodeCode ( self.editNode.event_code, 'python' ) self.paramCodeEditor = self.ui.param_code #self.paramCodeEditor.setNodeCode ( self.editNode.param_code, 'python' ) self.nodePropertiesEditor = self.ui.node self.nodePropertiesEditor.setNode ( self.editNode ) self.nodeParamEditor = self.ui.param self.nodeLinkEditor = self.ui.link self.ui.tabWidget.setCurrentIndex ( TAB_NODE_CODE ) self.ui.toolBox.setCurrentIndex ( IDX_INTERNALS ) self.ui.tabs_param_list.setCurrentIndex ( 0 ) # input param tab