Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
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 ()