class MenuDiretorioConsole(MatrizConsole): arquivoSelecionado = pyqtSignal(str) def __init__(self, initDir='.', parent=None): super().__init__(parent=parent) self._dir = QDir(initDir) self._dir.setSorting(QDir.Name) self._addItensDir() def _addItensDir(self): self.clear() di = self._dir.entryList() try: di.remove('.') except ValueError: pass self.addItens([LabelConsole(i) for i in di]) def atualizarListaArquivos(self): self.cd('.') def cd(self, diret): if self._dir.cd(diret): self._addItensDir() return True return False def onEnter(self): if not self.cd(self.getItemSelecionado().getTexto()): self.arquivoSelecionado.emit(self.pathArquivoSelecionado()) def path(self): return self._dir.absolutePath() def pathArquivoSelecionado(self): return self.path() + '/' + self.getItemSelecionado().getTexto() def desenhoTela(self, tam): s = '|{0:-<{1}}|\n'.format('',tam-2) s += '|Path: {0:<{1}}{2}|\n'.format(LabelConsole(self._dir.absolutePath()).desenhoTelaConsole(tam-9), tam-9, [' ','*'][self.hasFocus()]) s += '|{0:-<{1}}|\n'.format('',tam-2) for i in super().desenhoTela(tam-2).split('\n'): s += '|{0:<{1}}|\n'.format(i, tam-2) s += '|{0:-<{1}}|'.format('',tam-2) return s
def __init__(self, file='settings'): """ @type file: string @param file: the prefix of the settings files used. Used for testing. """ userDir = QDir(os.path.expanduser('~')) userDir.cd('Application Data') or userDir.cd('AppData') or userDir.cd('Library') if not userDir.cd('BootTunes'): userDir.mkdir('BootTunes') userDir.cd('BootTunes') self.settingsDir = unicode(userDir.absolutePath()) basePath = unicode(userDir.absolutePath()) self.settingsPath = settingsPath = basePath + '/' + file + '-settings' self.defaultsPath = defaultsPath = basePath + '/' + file + '-defaults' self.namesPath = namesPath = basePath + '/' + file + '-names' self.completedPath = completedPath = basePath + '/' + file + '-completed' pathsAndProperties = [ (settingsPath, 'settings'), (defaultsPath, 'artistDefaults'), (namesPath, 'artistNames'), (completedPath, 'completed') ] for pathAndProperty in pathsAndProperties: filePath = pathAndProperty[0] property = pathAndProperty[1] setattr(self, property, {}) if os.path.exists(filePath): fileObj = codecs.open(filePath, 'r') try: setattr(self, property, cPickle.load(fileObj) or {}) except (cPickle.UnpicklingError, AttributeError, EOFError, ImportError, IndexError): pass fileObj.close()
class NodeLibrary ( QtCore.QObject ) : # QtCore.QObject # # __init__ # def __init__ ( self, dirName ) : # self.dirName = dirName self.libdir = QDir ( dirName ); self.model = QStandardItemModel () self.parentItem = self.model.invisibleRootItem () print '>> NodeLibrary: libdir = %s' % dirName self.liblevel = '' self.scanLibDir () # # scanLibDir # def scanLibDir ( self ) : # process directories sortFlags = QDir.Name filterFlags = ( QDir.AllDirs | QDir.NoDotAndDotDot ) fileList = self.libdir.entryInfoList ( filterFlags, sortFlags ) for f in fileList : item = 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 = QDir.Files fileList = self.libdir.entryInfoList ( [ '*.xml' ], filterFlags, sortFlags ) for f in fileList : self.scanXmlNodes ( f.fileName () ) # # scanXmlNodes # def scanXmlNodes ( self, filename ) : # dom = QtXml.QDomDocument ( '' ) nodeFilename = self.dirName + '/' + self.liblevel + filename file = 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 = QStandardItem ( nodeName ) item.setEditable ( False ) item.setData ( QVariant ( nodeAuthor ), QtCore.Qt.UserRole + 1 ) item.setData ( QVariant ( nodeType ), QtCore.Qt.UserRole + 2 ) item.setData ( QVariant ( nodeHelp ), QtCore.Qt.UserRole + 3 ) item.setData ( QVariant ( nodeFilename ), QtCore.Qt.UserRole + 4 ) item.setData ( QVariant ( 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 ()