annotate trunk/src/translator/translator.py @ 438:2c177053cd15

Translator: added modules langfile and project.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Fri, 12 Oct 2007 22:16:21 +0200
parents 7ac9f94ca7ff
children cdbb2bf6dd07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
1 #! /usr/bin/python
435
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
3 # Author: Aziz Köksal
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
4 # License: GPL2
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
5 import sys, os
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
6 import yaml
438
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
7
435
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
8 from PyQt4 import QtCore, QtGui
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
9 # User interface modules
435
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
10 from ui_translator import Ui_MainWindow
436
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
11 from ui_about import Ui_AboutDialog
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
12 from ui_new_project import Ui_NewProjectDialog
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
13
438
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
14 import project
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
15
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
16 g_scriptDir = sys.path[0]
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
17 g_CWD = os.getcwd()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
18 g_settingsFile = os.path.join(g_scriptDir, "settings.yaml")
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
19 g_settings = {}
436
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
20
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
21 class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
22 def __init__(self):
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
23 QtGui.QMainWindow.__init__(self)
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
24 self.setupUi(self)
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
25
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
26 # Modifications
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
27
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
28 # Custom connections
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
29 QtCore.QObject.connect(self.action_About, QtCore.SIGNAL("triggered()"), self.showAboutDialog)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
30 QtCore.QObject.connect(self.action_New_Project, QtCore.SIGNAL("triggered()"), self.createNewProject)
436
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
31
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
32 self.readSettings()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
33
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
34 def showAboutDialog(self):
436
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
35 about = QtGui.QDialog()
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
36 Ui_AboutDialog().setupUi(about)
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
37 about.exec_()
435
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
38
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
39 def createNewProject(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
40 NewProjectDialog().exec_()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
41
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
42 def closeEvent(self, event):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
43 self.writeSettings()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
44
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
45 def moveToCenterOfDesktop(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
46 rect = QtGui.QApplication.desktop().geometry()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
47 self.move(rect.center() - self.rect().center())
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
48
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
49 def readSettings(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
50 # Set default size
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
51 self.resize(QtCore.QSize(500, 400))
438
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
52 doc = {}
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
53 try:
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
54 doc = yaml.load(open(g_settingsFile, "r"))
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
55 except:
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
56 self.moveToCenterOfDesktop()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
57 return
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
58
438
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
59 g_settings = doc
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
60 if not isinstance(doc, dict):
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
61 g_settings = {}
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
62
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
63 try:
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
64 coord = doc["Window"]
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
65 size = QtCore.QSize(coord["Size"][0], coord["Size"][1])
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
66 point = QtCore.QPoint(coord["Pos"][0], coord["Pos"][1])
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
67 self.resize(size)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
68 self.move(point)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
69 except:
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
70 self.moveToCenterOfDesktop()
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
71
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
72 def writeSettings(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
73 # Save window coordinates
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
74 g_settings["Window"] = {
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
75 "Pos" : [self.pos().x(), self.pos().y()],
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
76 "Size" : [self.size().width(), self.size().height()]
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
77 }
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
78 yaml.dump(g_settings, open(g_settingsFile, "w")) #default_flow_style=False
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
79
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
80
438
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
81 class ProjectTree(QtGui.QTreeWidget)
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
82 QtGui.QTreeWidget.__init__(self)
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
83 def __init__(self):
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
84 pass
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
85
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
86
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
87 class NewProjectDialog(QtGui.QDialog, Ui_NewProjectDialog):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
88 def __init__(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
89 QtGui.QDialog.__init__(self)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
90 self.setupUi(self)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
91
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
92 QtCore.QObject.connect(self.pickFileButton, QtCore.SIGNAL("clicked()"), self.pickFilePath)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
93
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
94 def pickFilePath(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
95 filePath = QtGui.QFileDialog.getSaveFileName(self, "Select Project File", g_CWD, "Translator Project (*.tproj)");
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
96 filePath = str(filePath) # Convert QString
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
97 if os.path.splitext(filePath)[1] != ".tproj":
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
98 filePath += ".tproj"
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
99 self.projectFilePath.setText(filePath)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
100
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
101 def accept(self):
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
102 projectName = str(self.projectName.text())
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
103 filePath = str(self.projectFilePath.text())
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
104
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
105 if projectName == "":
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
106 QtGui.QMessageBox.warning(self, "Warning", "Please, enter a name for the project.")
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
107 return
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
108 if filePath == "":
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
109 QtGui.QMessageBox.warning(self, "Warning", "Please, choose or enter a path for the project file.")
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
110 return
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
111
438
2c177053cd15 Translator: added modules langfile and project.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 437
diff changeset
112 projectData = Project.newProjectData(projectName)
437
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
113
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
114 if os.path.splitext(filePath)[1] != ".tproj":
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
115 filePath += ".tproj"
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
116
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
117 try:
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
118 yaml.dump(projectData, open(filePath, "w"), default_flow_style=False)
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
119 except Exception, e:
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
120 QtGui.QMessageBox.critical(self, "Error", str(e))
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
121 return
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
122
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
123 # Accept and close dialog.
7ac9f94ca7ff Translator: added NewProjectDialog.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 436
diff changeset
124 QtGui.QDialog.accept(self)
435
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
125
156d6301d79e Added PyQt4 application for creating and managing translations.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
diff changeset
126 if __name__ == "__main__":
436
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
127 app = QtGui.QApplication(sys.argv)
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
128 main = MainWindow()
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
129 main.show()
0dba4c0e5234 Added AboutDialog to translator.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 435
diff changeset
130 sys.exit(app.exec_())