def __process(self): """Accumulation process""" # Intermediate working data self.__participantFiles = [] self.__projectImportDirs = [] self.__projectImportsCache = {} self.dataModel.clear() self.__inProgress = True try: self.infoLabel.setText('Building the list of files to analyze...') QApplication.processEvents() # Build the list of participating python files self.__buildParticipants() self.__projectImportDirs = \ GlobalData().project.getImportDirsAsAbsolutePaths() QApplication.processEvents() if self.__cancelRequest: QApplication.restoreOverrideCursor() self.close() return self.progressBar.setRange(0, len(self.__participantFiles)) index = 1 # Now, parse the files and build the diagram data model if self.__what == ImportsDiagramDialog.SingleBuffer: info = getBriefModuleInfoFromMemory(str(self.__buf)) self.__addSingleFileToDataModel(info, self.__path) else: infoSrc = GlobalData().briefModinfoCache for fName in self.__participantFiles: self.progressBar.setValue(index) self.infoLabel.setText('Analyzing ' + fName + "...") QApplication.processEvents() if self.__cancelRequest: QApplication.restoreOverrideCursor() self.dataModel.clear() self.close() return info = infoSrc.get(fName) self.__addSingleFileToDataModel(info, fName) index += 1 # The import caches and other working data are not needed anymore self.__participantFiles = None self.__projectImportDirs = None self.__projectImportsCache = None # Generating the graphviz layout self.infoLabel.setText('Generating layout using graphviz...') QApplication.processEvents() graph = getGraphFromDescriptionData(self.dataModel.toGraphviz()) graph.normalize(self.physicalDpiX(), self.physicalDpiY()) QApplication.processEvents() if self.__cancelRequest: QApplication.restoreOverrideCursor() self.dataModel.clear() self.close() return # Generate graphics scene self.infoLabel.setText('Generating graphics scene...') QApplication.processEvents() self.__buildGraphicsScene(graph) # Clear the data model self.dataModel = None except Exception as exc: QApplication.restoreOverrideCursor() logging.error(str(exc)) self.__inProgress = False self.__onClose() return QApplication.restoreOverrideCursor() self.infoLabel.setText('Done') QApplication.processEvents() self.__inProgress = False self.accept()
def __process( self ): " Accumulation process " # Intermediate working data self.__participantFiles = [] self.__projectImportDirs = [] self.__projectImportsCache = {} self.dataModel.clear() self.__inProgress = True try: self.infoLabel.setText( 'Building the list of files to analyze...' ) QApplication.processEvents() # Build the list of participating python files self.__buildParticipants() self.__projectImportDirs = \ GlobalData().project.getImportDirsAsAbsolutePaths() QApplication.processEvents() if self.__cancelRequest == True: QApplication.restoreOverrideCursor() self.close() return self.progressBar.setRange( 0, len( self.__participantFiles ) ) index = 1 # Now, parse the files and build the diagram data model if self.__what == ImportsDiagramDialog.SingleBuffer: info = getBriefModuleInfoFromMemory( str( self.__buf ) ) self.__addSingleFileToDataModel( info, self.__path ) else: infoSrc = GlobalData().briefModinfoCache for fName in self.__participantFiles: self.progressBar.setValue( index ) self.infoLabel.setText( 'Analyzing ' + fName + "..." ) QApplication.processEvents() if self.__cancelRequest == True: QApplication.restoreOverrideCursor() self.dataModel.clear() self.close() return info = infoSrc.get( fName ) self.__addSingleFileToDataModel( info, fName ) index += 1 # The import caches and other working data are not needed anymore self.__participantFiles = None self.__projectImportDirs = None self.__projectImportsCache = None # Generating the graphviz layout self.infoLabel.setText( 'Generating layout using graphviz...' ) QApplication.processEvents() graph = getGraphFromDescriptionData( self.dataModel.toGraphviz() ) graph.normalize( self.physicalDpiX(), self.physicalDpiY() ) QApplication.processEvents() if self.__cancelRequest == True: QApplication.restoreOverrideCursor() self.dataModel.clear() self.close() return # Generate graphics scene self.infoLabel.setText( 'Generating graphics scene...' ) QApplication.processEvents() self.__buildGraphicsScene( graph ) # Clear the data model self.dataModel = None except Exception, exc: QApplication.restoreOverrideCursor() logging.error( str( exc ) ) self.__inProgress = False self.__onClose() return
def __createLayout(self, action, title, files): """ Creates the dialog layout """ self.resize(400, 300) self.setSizeGripEnabled(True) # Top level layout layout = QVBoxLayout(self) # Pixmap and the message topLayout = QHBoxLayout() pixmap = QLabel() pixmap.setPixmap(PixmapCache().getPixmap('warning.png')) topLayout.addWidget(pixmap) hSpacer = QWidget() hSpacer.setFixedSize(15, 15) topLayout.addWidget(hSpacer) message = QLabel( "All the project files must be " \ "saved before start debugging" ) message.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) message.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) message.setWordWrap(True) topLayout.addWidget(message) layout.addLayout(topLayout) vSpacer = QWidget() vSpacer.setFixedSize(15, 15) layout.addWidget(vSpacer) layout.addWidget(QLabel(title + ":")) filesList = QTreeWidget() filesList.setRootIsDecorated(False) filesList.setAlternatingRowColors(True) filesList.setUniformRowHeights(True) filesList.setItemsExpandable(False) filesList.setItemDelegate(NoOutlineHeightDelegate(4)) filesList.setSelectionMode(QAbstractItemView.NoSelection) filesList.setHeaderHidden(True) for item in files: fileName = item[0] fileItem = QTreeWidgetItem([fileName]) fileType = detectFileType(fileName) fileItem.setIcon(0, getFileIcon(fileType)) if fileType in [PythonFileType, Python3FileType]: infoSrc = GlobalData().briefModinfoCache info = infoSrc.get(fileName) if info.docstring is not None: fileItem.setToolTip(0, info.docstring.text) else: fileItem.setToolTip(0, "") filesList.addTopLevelItem(fileItem) layout.addWidget(filesList) # Buttons at the bottom buttonBox = QDialogButtonBox() buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Cancel) continueButton = buttonBox.addButton(action, QDialogButtonBox.ActionRole) continueButton.setDefault(True) layout.addWidget(buttonBox) continueButton.clicked.connect(self.accept) buttonBox.rejected.connect(self.close) continueButton.setFocus() return
def __createLayout( self, action, title, files ): """ Creates the dialog layout """ self.resize( 400, 300 ) self.setSizeGripEnabled( True ) # Top level layout layout = QVBoxLayout( self ) # Pixmap and the message topLayout = QHBoxLayout() pixmap = QLabel() pixmap.setPixmap( PixmapCache().getPixmap( 'warning.png' ) ) topLayout.addWidget( pixmap ) hSpacer = QWidget() hSpacer.setFixedSize( 15, 15 ) topLayout.addWidget( hSpacer ) message = QLabel( "All the project files must be " \ "saved before start debugging" ) message.setAlignment( Qt.AlignHCenter | Qt.AlignVCenter ) message.setSizePolicy( QSizePolicy.Expanding, QSizePolicy.Expanding ) message.setWordWrap( True ) topLayout.addWidget( message ) layout.addLayout( topLayout ) vSpacer = QWidget() vSpacer.setFixedSize( 15, 15 ) layout.addWidget( vSpacer ) layout.addWidget( QLabel( title + ":" ) ) filesList = QTreeWidget() filesList.setRootIsDecorated( False ) filesList.setAlternatingRowColors( True ) filesList.setUniformRowHeights( True ) filesList.setItemsExpandable( False ) filesList.setItemDelegate( NoOutlineHeightDelegate( 4 ) ) filesList.setSelectionMode( QAbstractItemView.NoSelection ) filesList.setHeaderHidden( True ) for item in files: fileName = item[ 0 ] fileItem = QTreeWidgetItem( [ fileName ] ) fileType = detectFileType( fileName ) fileItem.setIcon( 0, getFileIcon( fileType ) ) if fileType in [ PythonFileType, Python3FileType ]: infoSrc = GlobalData().briefModinfoCache info = infoSrc.get( fileName ) if info.docstring is not None: fileItem.setToolTip( 0, info.docstring.text ) else: fileItem.setToolTip( 0, "" ) filesList.addTopLevelItem( fileItem ) layout.addWidget( filesList ) # Buttons at the bottom buttonBox = QDialogButtonBox() buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Cancel ) continueButton = buttonBox.addButton( action, QDialogButtonBox.ActionRole ) continueButton.setDefault( True ) layout.addWidget( buttonBox ) continueButton.clicked.connect( self.accept ) buttonBox.rejected.connect( self.close ) continueButton.setFocus() return