Add/edit all tables. Data gets save to DB at last\!
[ipypbx] / src / ipypbx / main.py
index 72d1de0..c847ad4 100644 (file)
 
 import os
 import sys
-from ipypbx import controllers, sql, ui
+from ipypbx import controllers, ui
 from PyQt4 import QtCore, QtGui, QtSql
 
 
 # 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.
@@ -48,66 +47,57 @@ def setupDb(prefix=PREFIX, dbname=DB_NAME):
     
     if db.open():
         if created:
-            for query in sql.creation_queries:
-                QtSql.QSqlQuery().exec_(query)
+            # Load script from local file.
+            sql_script = open(os.path.join(os.path.dirname(__file__), 'create.sql')).read()
+
+            # Split into individual queries.
+            sql_queries = sql_script.split(';')
+
+            # Execute all queries except last that is empty.
+            query = QtSql.QSqlQuery()
+            for query_string in sql_queries[:-1]:
+                query.exec_(query_string)
     else:
+        # Something went horribly wrong.
         QtGui.QMessageBox.warning(
             None, "Fatal Error", "Database Error: %s" % db.lastError().text())
         sys.exit(1)
 
-    
+
 if __name__ == '__main__':
     app = QtGui.QApplication(sys.argv)
+
+    locale = QtCore.QLocale.system().name()
+    translator = QtCore.QTranslator()
+    
+    if translator.load("ipypbx_%s" % locale.toLower(), "ipypbx/locale"):
+        QtGui.QApplication.installTranslator(translator)
+
     setupDb()
-#    import pdb; pdb.set_trace()
-#    runApp()
-    views = ui.MainWindow()
-    views.show()
-
-    connectionModel = QtSql.QSqlTableModel(views)
-    connectionModel.setTable('connections')
-    connectionModel.setHeaderData(
-        sql.Connection.id, QtCore.Qt.Horizontal,
-        QtCore.QVariant('Connection_ID'))
-    connectionModel.setHeaderData(
-        sql.Connection.name, QtCore.Qt.Horizontal,
-        QtCore.QVariant('Name'))
-    connectionModel.setHeaderData(
-        sql.Connection.local_ip_address, QtCore.Qt.Horizontal,
-        QtCore.QVariant('Local_IP_Address'))
-    connectionModel.setHeaderData(
-        sql.Connection.local_port, QtCore.Qt.Horizontal,
-        QtCore.QVariant('Local_Port'))
-    connectionModel.setHeaderData(
-        sql.Connection.freeswitch_ip_address, QtCore.Qt.Horizontal,
-        QtCore.QVariant('Freeswitch_IP_Address'))
-    connectionModel.setHeaderData(
-        sql.Connection.freeswitch_port, QtCore.Qt.Horizontal,
-        QtCore.QVariant('Freeswitch_Port'))
-    connectionModel.select()
-
-    views.connectionView.setModel(connectionModel)
-    views.connectionView.setColumnHidden(sql.Connection.id, True)
-    views.connectionView.setSelectionMode(QtGui.QTableView.SingleSelection)
-    views.connectionView.setSelectionBehavior(QtGui.QTableView.SelectRows)
-    views.connectionView.resizeColumnsToContents()
-    views.connectionView.resizeRowsToContents()
-    views.connectionView.horizontalHeader().setStretchLastSection(True)
-
-
-    views.connectionData.setModel(connectionModel)
-    connectionController = controllers.ConnectionController()
-
-    signals_data = (
-    #    (self.ui.connectionList, 'currentRowChanged(int)',
-    #     self.connections.select),
-    #    (self.ui.connectionClone, 'clicked()', self.connections.clone),
-    #    (self.ui.connectionSave, 'clicked()', self.connections.save),
-#        (views.connectionAdd, 'clicked()', connectionController.add),
-        )
-
-#    for sender, signal, receiver in signals_data:
-#        QtCore.QObject.connect(sender, QtCore.SIGNAL(signal), receiver)
-
-    app.exec_()
-#    sys.exit()
+    main = QtGui.QMainWindow()
+    views = ui.Ui_MainWindow()
+    views.setupUi(main)
+    main.show()
+
+    main.controllers = []
+    for basename in ('Connection', 'SipProfile', 'Domain', 'Gateway',
+                     'Endpoint', 'Extension'):
+        main.controllers.append(getattr(
+            controllers, basename + 'Controller'
+            )(parent=main, views=views))
+
+    connection_model = main.controllers[0].model
+    connection_index = connection_model.index(0, 0)
+    first_row_id, ok = connection_model.data(
+        connection_index.sibling(0, 0)).toInt()
+
+    if ok:        
+        QtCore.QObject.emit(
+            main.controllers[0].view_list.selectionModel(),
+            QtCore.SIGNAL('currentRowChanged(QModelIndex, QModelIndex)'),
+            connection_index, connection_index)
+    
+
+
+    sys.exit(app.exec_())
+