diff trunk/src/translator/translator.py @ 437:7ac9f94ca7ff

Translator: added NewProjectDialog. Added methods to MainWindow for reading and writing application settings.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Fri, 12 Oct 2007 11:12:10 +0200
parents 0dba4c0e5234
children 2c177053cd15
line wrap: on
line diff
--- a/trunk/src/translator/translator.py	Thu Oct 11 16:34:22 2007 +0200
+++ b/trunk/src/translator/translator.py	Fri Oct 12 11:12:10 2007 +0200
@@ -1,12 +1,19 @@
-#! /bin/python
+#! /usr/bin/python
 # -*- coding: utf-8 -*-
 # Author: Aziz Köksal
 # License: GPL2
-import sys
+import sys, os
+import yaml
 from PyQt4 import QtCore, QtGui
-
+# User interface modules
 from ui_translator import Ui_MainWindow
 from ui_about import Ui_AboutDialog
+from ui_new_project import Ui_NewProjectDialog
+
+g_scriptDir = sys.path[0]
+g_CWD = os.getcwd()
+g_settingsFile = os.path.join(g_scriptDir, "settings.yaml")
+g_settings = {}
 
 class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
   def __init__(self):
@@ -16,13 +23,102 @@
     # Modifications
 
     # Custom connections
-    QtCore.QObject.connect(self.actionAbout, QtCore.SIGNAL("triggered()"), self.aboutDialog)
+    QtCore.QObject.connect(self.action_About, QtCore.SIGNAL("triggered()"), self.showAboutDialog)
+    QtCore.QObject.connect(self.action_New_Project, QtCore.SIGNAL("triggered()"), self.createNewProject)
 
-  def aboutDialog(self):
+    self.readSettings()
+
+  def showAboutDialog(self):
     about = QtGui.QDialog()
     Ui_AboutDialog().setupUi(about)
     about.exec_()
 
+  def createNewProject(self):
+    NewProjectDialog().exec_()
+
+  def closeEvent(self, event):
+    self.writeSettings()
+
+  def moveToCenterOfDesktop(self):
+    rect = QtGui.QApplication.desktop().geometry()
+    self.move(rect.center() - self.rect().center())
+
+  def readSettings(self):
+    # Set default size
+    self.resize(QtCore.QSize(500, 400))
+
+    try:
+      doc = yaml.load(open(g_settingsFile, "r"))
+    except:
+      self.moveToCenterOfDesktop()
+      return
+
+    if isinstance(doc, type({})):
+      g_settings = doc
+    else:
+      g_settings = {}
+
+    try:
+      coord = doc["Window"]
+      size = QtCore.QSize(coord["Size"][0], coord["Size"][1])
+      point = QtCore.QPoint(coord["Pos"][0], coord["Pos"][1])
+      self.resize(size)
+      self.move(point)
+    except:
+      self.moveToCenterOfDesktop()
+
+  def writeSettings(self):
+    # Save window coordinates
+    g_settings["Window"] = {
+      "Pos" : [self.pos().x(), self.pos().y()],
+      "Size" : [self.size().width(), self.size().height()]
+    }
+    yaml.dump(g_settings, open(g_settingsFile, "w")) #default_flow_style=False
+
+
+class NewProjectDialog(QtGui.QDialog, Ui_NewProjectDialog):
+  def __init__(self):
+    QtGui.QDialog.__init__(self)
+    self.setupUi(self)
+
+    QtCore.QObject.connect(self.pickFileButton, QtCore.SIGNAL("clicked()"), self.pickFilePath)
+
+  def pickFilePath(self):
+    filePath = QtGui.QFileDialog.getSaveFileName(self, "Select Project File", g_CWD, "Translator Project (*.tproj)");
+    filePath = str(filePath) # Convert QString
+    if os.path.splitext(filePath)[1] != ".tproj":
+      filePath += ".tproj"
+    self.projectFilePath.setText(filePath)
+
+  def accept(self):
+    projectName = str(self.projectName.text())
+    filePath = str(self.projectFilePath.text())
+
+    if projectName == "":
+      QtGui.QMessageBox.warning(self, "Warning", "Please, enter a name for the project.")
+      return
+    if filePath == "":
+      QtGui.QMessageBox.warning(self, "Warning", "Please, choose or enter a path for the project file.")
+      return
+
+    projectData = {
+      "Name":projectName,
+      "LangFiles":[],
+      "SourceLangFile":'',
+      "MsgIDs":[]
+    }
+
+    if os.path.splitext(filePath)[1] != ".tproj":
+      filePath += ".tproj"
+
+    try:
+      yaml.dump(projectData, open(filePath, "w"), default_flow_style=False)
+    except Exception, e:
+      QtGui.QMessageBox.critical(self, "Error", str(e))
+      return
+
+    # Accept and close dialog.
+    QtGui.QDialog.accept(self)
 
 if __name__ == "__main__":
   app = QtGui.QApplication(sys.argv)