--- a/PluginMetricsRadon.py Sun Sep 20 12:17:19 2015 +0200 +++ b/PluginMetricsRadon.py Sun Sep 20 13:49:22 2015 +0200 @@ -28,7 +28,7 @@ author = "Detlev Offenbach <detlev@die-offenbachs.de>" autoactivate = True deactivateable = True -version = "0.1.0" +version = "0.2.0" className = "RadonMetricsPlugin" packageName = "RadonMetrics" shortDescription = "Code metrics plugin using radon package" @@ -620,6 +620,8 @@ self.__editorMetricsActs.append(act) e5App().getObject("Project").showMenu.connect(self.__projectShowMenu) + e5App().getObject("Project").projectClosed.connect( + self.__projectClosed) e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\ .showMenu.connect(self.__projectBrowserShowMenu) e5App().getObject("ViewManager").editorOpenedEd.connect( @@ -638,6 +640,8 @@ """ e5App().getObject("Project").showMenu.disconnect( self.__projectShowMenu) + e5App().getObject("Project").projectClosed.disconnect( + self.__projectClosed) e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\ .showMenu.disconnect(self.__projectBrowserShowMenu) e5App().getObject("ViewManager").editorOpenedEd.disconnect( @@ -844,8 +848,9 @@ tuple(Preferences.getPython("Python3Extensions")) + tuple(Preferences.getPython("PythonExtensions")))] - from RadonMetrics.RawMetricsDialog import RawMetricsDialog - self.__projectRawMetricsDialog = RawMetricsDialog(self) + if self.__projectRawMetricsDialog is None: + from RadonMetrics.RawMetricsDialog import RawMetricsDialog + self.__projectRawMetricsDialog = RawMetricsDialog(self) self.__projectRawMetricsDialog.show() self.__projectRawMetricsDialog.prepare(files, project) @@ -867,8 +872,9 @@ except AttributeError: fn = itm.dirName() - from RadonMetrics.RawMetricsDialog import RawMetricsDialog - self.__projectBrowserRawMetricsDialog = RawMetricsDialog(self) + if self.__projectBrowserRawMetricsDialog is None: + from RadonMetrics.RawMetricsDialog import RawMetricsDialog + self.__projectBrowserRawMetricsDialog = RawMetricsDialog(self) self.__projectBrowserRawMetricsDialog.show() self.__projectBrowserRawMetricsDialog.start(fn) @@ -880,8 +886,9 @@ editor = e5App().getObject("ViewManager").activeWindow() if editor is not None: if editor.checkDirty() and editor.getFileName() is not None: - from RadonMetrics.RawMetricsDialog import RawMetricsDialog - self.__editorRawMetricsDialog = RawMetricsDialog(self) + if self.__editorRawMetricsDialog is None: + from RadonMetrics.RawMetricsDialog import RawMetricsDialog + self.__editorRawMetricsDialog = RawMetricsDialog(self) self.__editorRawMetricsDialog.show() self.__editorRawMetricsDialog.start(editor.getFileName()) @@ -903,9 +910,10 @@ tuple(Preferences.getPython("Python3Extensions")) + tuple(Preferences.getPython("PythonExtensions")))] - from RadonMetrics.MaintainabilityIndexDialog import \ - MaintainabilityIndexDialog - self.__projectMIDialog = MaintainabilityIndexDialog(self) + if self.__projectMIDialog is None: + from RadonMetrics.MaintainabilityIndexDialog import \ + MaintainabilityIndexDialog + self.__projectMIDialog = MaintainabilityIndexDialog(self) self.__projectMIDialog.show() self.__projectMIDialog.prepare(files, project) @@ -927,9 +935,10 @@ except AttributeError: fn = itm.dirName() - from RadonMetrics.MaintainabilityIndexDialog import \ - MaintainabilityIndexDialog - self.__projectBrowserMIDialog = MaintainabilityIndexDialog(self) + if self.__projectBrowserMIDialog is None: + from RadonMetrics.MaintainabilityIndexDialog import \ + MaintainabilityIndexDialog + self.__projectBrowserMIDialog = MaintainabilityIndexDialog(self) self.__projectBrowserMIDialog.show() self.__projectBrowserMIDialog.start(fn) @@ -941,9 +950,10 @@ editor = e5App().getObject("ViewManager").activeWindow() if editor is not None: if editor.checkDirty() and editor.getFileName() is not None: - from RadonMetrics.MaintainabilityIndexDialog import \ - MaintainabilityIndexDialog - self.__editorMIDialog = MaintainabilityIndexDialog(self) + if self.__editorMIDialog is None: + from RadonMetrics.MaintainabilityIndexDialog import \ + MaintainabilityIndexDialog + self.__editorMIDialog = MaintainabilityIndexDialog(self) self.__editorMIDialog.show() self.__editorMIDialog.start(editor.getFileName()) @@ -1037,3 +1047,16 @@ """ complexity</li>""" """</ul></p>""" ).format(__version__)) + + ################################################################## + ## Project handling methods + ################################################################## + + def __projectClosed(self): + """ + Private slot to handle closing a project. + """ + self.__projectCCDialog and self.__projectCCDialog.clear() + self.__projectMIDialog and self.__projectMIDialog.clear() + self.__projectRawMetricsDialog and \ + self.__projectRawMetricsDialog.clear()