# 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()