AssistantEric/APIsManager.py

changeset 86
11088ce2312f
parent 84
67197c1f11eb
child 87
55b5831bcad0
--- 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):
         """

eric ide

mercurial