Fixed an issue caused by incorrect handling of the projectChanged signal. release-2.6.2

Fri, 29 Nov 2013 18:39:19 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 29 Nov 2013 18:39:19 +0100
changeset 86
11088ce2312f
parent 85
acca5e9c6b9c
child 87
55b5831bcad0

Fixed an issue caused by incorrect handling of the projectChanged signal.

AssistantEric/APIsManager.py file | annotate | diff | comparison | revisions
AssistantEric/Documentation/source/Plugin_Assistant_Eric.AssistantEric.APIsManager.html file | annotate | diff | comparison | revisions
ChangeLog file | annotate | diff | comparison | revisions
PluginAssistantEric.py file | annotate | diff | comparison | revisions
PluginAssistantEric.zip file | annotate | diff | comparison | revisions
--- a/AssistantEric/APIsManager.py	Fri Oct 25 19:39:53 2013 +0200
+++ b/AssistantEric/APIsManager.py	Fri Nov 29 18:39:19 2013 +0100
@@ -587,6 +587,7 @@
         self.__inPreparation = False
         self.__worker = None
         self.__workerQueue = []
+        self.__opened = False
         
         self.__language = language
         if self.__language == ApisNameProject:
@@ -663,19 +664,35 @@
                     if self.__worker is not None:
                         self.__worker.wait(5000)
         
-        QSqlDatabase.database(self.__language).close()
-        QSqlDatabase.removeDatabase(self.__language)
+        if QSqlDatabase.database(self.__language).isOpen():
+            QSqlDatabase.database(self.__language).close()
+            QSqlDatabase.removeDatabase(self.__language)
+        
+        self.__opened = False
         
     def __openApiDb(self):
         """
         Private method to open the API database.
+        
+        @return flag indicating the database status (boolean)
         """
         db = QSqlDatabase.database(self.__language, False)
         if not db.isValid():
             # the database connection is a new one
             db = QSqlDatabase.addDatabase("QSQLITE", self.__language)
-            db.setDatabaseName(self._apiDbName())
-            db.open()
+            dbName = self._apiDbName()
+            if self.__language == ApisNameProject and \
+                    not os.path.exists(
+                        self.__project.getProjectManagementDir()):
+                opened = False
+            else:
+                db.setDatabaseName(dbName)
+                opened = db.open()
+            if not opened:
+                QSqlDatabase.removeDatabase(self.__language)
+        else:
+            opened = True
+        return opened
     
     def __createApiDB(self):
         """
@@ -918,12 +935,13 @@
         """
         Private method to open the API database.
         """
-        self.__openApiDb()
-        if not self.__isPrepared():
-            self.__createApiDB()
-        
-        # prepare the database if neccessary
-        self.prepareAPIs()
+        self.__opened = self.__openApiDb()
+        if self.__opened:
+            if not self.__isPrepared():
+                self.__createApiDB()
+            
+            # prepare the database if neccessary
+            self.prepareAPIs()
     
     def __getProjectFormSources(self, normalized=False):
         """
@@ -1079,8 +1097,9 @@
         """
         Private slot to handle the projectChanged signal.
         """
-        self.__projectClosed()
-        self.__projectOpened()
+        if self.__opened:
+            self.__projectClosed()
+            self.__projectOpened()
     
     def editorSaved(self, filename):
         """
--- a/AssistantEric/Documentation/source/Plugin_Assistant_Eric.AssistantEric.APIsManager.html	Fri Oct 25 19:39:53 2013 +0200
+++ b/AssistantEric/Documentation/source/Plugin_Assistant_Eric.AssistantEric.APIsManager.html	Fri Nov 29 18:39:19 2013 +0100
@@ -383,7 +383,12 @@
 <b>__openApiDb</b>(<i></i>)
 <p>
         Private method to open the API database.
-</p><a NAME="DbAPIs.__processQueue" ID="DbAPIs.__processQueue"></a>
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the database status (boolean)
+</dd>
+</dl><a NAME="DbAPIs.__processQueue" ID="DbAPIs.__processQueue"></a>
 <h4>DbAPIs.__processQueue</h4>
 <b>__processQueue</b>(<i></i>)
 <p>
--- a/ChangeLog	Fri Oct 25 19:39:53 2013 +0200
+++ b/ChangeLog	Fri Nov 29 18:39:19 2013 +0100
@@ -1,5 +1,8 @@
 ChangeLog
 ---------
+Version 2.6.2:
+- bug fixes
+
 Version 2.6.1:
 - fixed some code style issues
 
--- a/PluginAssistantEric.py	Fri Oct 25 19:39:53 2013 +0200
+++ b/PluginAssistantEric.py	Fri Nov 29 18:39:19 2013 +0100
@@ -25,7 +25,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "2.6.1"
+version = "2.6.2"
 className = "AssistantEricPlugin"
 packageName = "AssistantEric"
 shortDescription = "Alternative autocompletion and calltips provider."
Binary file PluginAssistantEric.zip has changed

eric ide

mercurial