OSDN Git Service

File system path for statndalone version
[minimpy2/mp2.git] / db.py
diff --git a/db.py b/db.py
index ed42102..3b797c7 100755 (executable)
--- a/db.py
+++ b/db.py
@@ -1,12 +1,16 @@
-from PySide2 import QtSql as qts
+from PySide2 import QtSql as qts, QtWidgets
 from PySide2 import QtWidgets as qtw
 from PySide2 import QtCore as qtc
 
 import sys
 import os
+from os import path
 
 
 # noinspection PyTypeChecker
+from utils import resource_path
+
+
 class Database(qtc.QObject):
     __instance = None
 
@@ -26,7 +30,7 @@ class Database(qtc.QObject):
                 'open db: ' + self.db.lastError().text()
             )
             sys.exit(1)
-        all_sqls = open('db/database.sql', encoding='utf8').read().split(';')
+        all_sqls = open(resource_path('db/database.sql'), encoding='utf8').read().split(';')
         for sql in all_sqls:
             query = qts.QSqlQuery(self.db)
             query.prepare(sql)
@@ -43,8 +47,16 @@ class Database(qtc.QObject):
             raise Exception("This class is a singleton!")
         self.mainWindow = mainWindow
         self.db = qts.QSqlDatabase.addDatabase('QSQLITE')
-        self.db.setDatabaseName('db/minimizer.db')
-        if not os.path.exists('db/minimizer.db'):
+        db_path = mainWindow.settings.value('db_path', None, type=str)
+        if db_path is None or not path.exists(db_path):
+            db_path = QtWidgets.QFileDialog.getExistingDirectory(mainWindow, 'Select a folder to store your data', '.', QtWidgets.QFileDialog.ShowDirsOnly)
+            if db_path is None or len(db_path.strip()) == 0:
+                exit(1)
+            mainWindow.settings.setValue('db_path', db_path)
+        if not path.exists(db_path):
+            os.mkdir(db_path)
+        self.db.setDatabaseName('{}/minimizer.db'.format(db_path))
+        if not os.path.exists('{}/minimizer.db'.format(db_path)):
             self.create_db()
         else:
             if not self.db.open():