Restored UI generated by QTDesigner
[ipypbx] / src / ipypbx / main.py
index c38d394..626f527 100644 (file)
 # You should have received a copy of the GNU General Public License
 # along with IPyPBX.  If not, see <http://www.gnu.org/licenses/>.
 
+import os
 import sys
-from ipypbx import controllers, state, ui
-from PyQt4 import QtCore, QtGui
+from ipypbx import controllers, sql, ui
+from PyQt4 import QtCore, QtGui, QtSql
 
 
-class MainWindow(QtGui.QMainWindow):
+# Working directory path.
+# NOTE: ~/.ipypbx gives an error - for some reason QT doesn't like the dot?
+PREFIX = os.path.expanduser('~/.ipypbx')
+
+# Database file name.
+DB_NAME = 'ipypbx.db'
+
+
+def setupDb(prefix=PREFIX, dbname=DB_NAME):
     """
-    Main application window.
+    Setup database.
     """
-    def __init__(self):
-        QtGui.QMainWindow.__init__(self)
+    created = False
+    # Create it if necessary.
+    if prefix:
+        if not os.path.exists(prefix):
+            created = True
+            os.mkdir(prefix, 0700)
         
-        locale = QtCore.QLocale.system().name()
-        print "Locale is", locale
-        
-        translator = QtCore.QTranslator()
+        os.chdir(prefix)
     
-        if translator.load("ipypbx_%s" % locale.toLower(), "ipypbx/locale"):
-            app.installTranslator(translator)
-        else:
-            print "Translation not found"
-
-        self.ui = ui.Ui_MainWindow()
-        self.ui.setupUi(self)
-
-        self.connections = controllers.ConnectionsHandler(self)
-
-        signals_data = (
-            (self.ui.connectionList, 'activated(QModelIndex)',
-             self.connections.select),
-#            (self.ui.connectionClone, 'clicked()', self.connections.clone),
-            (self.ui.connectionSave, 'clicked()', self.connections.save),
-            (self.ui.connectionAdd, 'clicked()', self.connections.add),
-            )
-
-        for sender, signal, receiver in signals_data:
-            QtCore.QObject.connect(sender, QtCore.SIGNAL(signal), receiver)
+    # Connect to SQLite database.
+    db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
+    db.setDatabaseName(dbname)
+    
+    if db.open():
+        if created:
+            for query in sql.creation_queries:
+                QtSql.QSqlQuery().exec_(query)
+    else:
+        QtGui.QMessageBox.warning(
+            None, "Fatal Error", "Database Error: %s" % db.lastError().text())
+        sys.exit(1)
 
 
+def localize():
+    locale = QtCore.QLocale.system().name()
+    translator = QtCore.QTranslator()
+    
+    if translator.load("ipypbx_%s" % locale.toLower(), "ipypbx/locale"):
+        QtGui.QApplication.installTranslator(translator)
 
+    
 if __name__ == '__main__':
     app = QtGui.QApplication(sys.argv)
-    win = MainWindow()
-    win.show()
+    setupDb()
+    main = QtGui.QMainWindow()
+    views = ui.Ui_MainWindow()
+    views.setupUi(main)
+    localize()
+    main.show()
+
+    connectionController = controllers.ConnectionController(
+        parent=main, views=views)
 
     app.exec_()
+#    sys.exit()