示例#1
0
    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()
示例#2
0
    def scanLibDir(self):
        # process directories
        sortFlags = QtCore.QDir.Name
        filterFlags = (QtCore.QDir.AllDirs | QtCore.QDir.NoDotAndDotDot)
        fileList = self.libdir.entryInfoList(filterFlags, sortFlags)

        for f in fileList:
            item = QtGui.QStandardItem(f.fileName())
            item.setEditable(False)
            item.setDragEnabled(False)

            # set bold font for folders
            font = item.font()
            font.setBold(True)
            item.setFont(font)

            item.setWhatsThis('folder')

            currparent = self.parentItem
            self.parentItem.appendRow(item)
            self.parentItem = item

            currlevel = self.liblevel  # store current level
            self.liblevel = self.liblevel + f.fileName() + '/'
            self.libdir.cd(f.fileName())

            self.scanLibDir()  # recurcive call itself

            self.liblevel = currlevel  # restore current level
            self.libdir.cdUp()

            self.parentItem = currparent

        # process XML files
        filterFlags = QtCore.QDir.Files
        fileList = self.libdir.entryInfoList(['*.xml'], filterFlags, sortFlags)
        for f in fileList:
            self.scanXmlNodes(f.fileName())