コード例 #1
0
ファイル: MainWindow.py プロジェクト: theomission/meShaderEd
 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
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
ファイル: nodeLibrary.py プロジェクト: theomission/meShaderEd
    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()
コード例 #5
0
ファイル: MainWindow.py プロジェクト: theomission/meShaderEd
 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)
コード例 #6
0
ファイル: MainWindow.py プロジェクト: theomission/meShaderEd
 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)
コード例 #7
0
    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()
コード例 #8
0
 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)
コード例 #9
0
ファイル: MainWindow.py プロジェクト: theomission/meShaderEd
 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)
コード例 #10
0
    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)
コード例 #11
0
	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