changeset 481:04adc4e3fdda

Translator: some fixes and additions. Projects can be saved now. Documents can be switched using Ctrl+Tab and Ctrl+Shift+Tab. Some items in ProjectTree can be edited now. Added my last will to the file AUTHORS.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Wed, 14 Nov 2007 22:07:50 +0100
parents f25985f6b222
children 1401e38d1e2e
files trunk/AUTHORS trunk/src/translator/project.py trunk/src/translator/translator.py
diffstat 3 files changed, 55 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/AUTHORS	Mon Nov 12 20:40:41 2007 +0100
+++ b/trunk/AUTHORS	Wed Nov 14 22:07:50 2007 +0100
@@ -1,4 +1,13 @@
 Founder:
   Aziz Köksal <aziz.koeksal@gmail.com>
+  "All rights to the code I've written will pass over to Jari-Matti Mäkelä,
+  in case I catch the bus or the bus catches me.
+  My death won't probably be announced anywhere on
+  the internet, therefore my testament will become effective if I don't
+  show any signs of life for 6 months on the internet.
+  Within this time limit I may always revoke or edit this testament,
+  by committing to the hg repository at http://hg.sharesource.org/dil/
+  Only the latest revision of this file is to be considered valid."
+    - Aziz Köksal
 Contributors:
   Jari-Matti Mäkelä <jmjmak@utu.fi>
--- a/trunk/src/translator/project.py	Mon Nov 12 20:40:41 2007 +0100
+++ b/trunk/src/translator/project.py	Wed Nov 14 22:07:50 2007 +0100
@@ -38,7 +38,7 @@
     doc = self.doc
     self.checkType(doc, dict)
     try:
-      self.name = str(doc["Name"])
+      self.name = unicode(doc["Name"])
       self.srcLangFilePath = str(doc["SourceLangFile"])
       self.langFilePaths = list(doc["LangFiles"])
       self.msgIDs = list(doc["MsgIDs"])
@@ -91,5 +91,11 @@
       filePath = filePath2
     return langfile.LangFile(filePath)
 
+  def setName(self, name):
+    self.name = name
+
   def save(self):
-    pass
+    self.doc["Name"] = self.name
+    file_ = open(self.projectPath, "w")
+    yaml.dump(self.doc, stream=file_, allow_unicode=True)
+    file_.close()
--- a/trunk/src/translator/translator.py	Mon Nov 12 20:40:41 2007 +0100
+++ b/trunk/src/translator/translator.py	Wed Nov 14 22:07:50 2007 +0100
@@ -67,8 +67,27 @@
     Qt.connect(self.projectTree, Qt.SIGNAL("onKeyEnter"), self.projectTreeItemActivated)
     Qt.connect(self.projectTree, Qt.SIGNAL("onKeyDelete"), self.projectTreeItemDeleted)
 
+    shortcut = QtGui.QShortcut(QtGui.QKeySequence(Qt.CTRL+Qt.Key_Tab), self)
+    Qt.connect(shortcut, Qt.SIGNAL("activated()"), self.nextDocument)
+    shortcut = QtGui.QShortcut(QtGui.QKeySequence(Qt.CTRL+Qt.SHIFT+Qt.Key_Tab), self)
+    Qt.connect(shortcut, Qt.SIGNAL("activated()"), self.prevDocument)
+
     self.readSettings()
 
+  def nextDocument(self):
+    count = self.pages.count()
+    if count < 1: return
+    index = self.pages.currentIndex()+1
+    if index == count: index = 0
+    self.pages.setCurrentIndex(index)
+
+  def prevDocument(self):
+    count = self.pages.count()
+    if count < 1: return
+    index = self.pages.currentIndex()-1
+    if index == -1: index = count-1
+    self.pages.setCurrentIndex(index)
+
   def showAboutDialog(self):
     about = QtGui.QDialog()
     Ui_AboutDialog().setupUi(about)
@@ -144,6 +163,7 @@
   def closeProject(self):
     if self.project == None:
       return
+    self.project.save()
     del self.project
     self.project = None
     self.disableMenuItems()
@@ -180,6 +200,8 @@
       if not item.isDocOpen():
         msgForm = item.openDoc()
         msgForm.setModifiedCallback(self.formModified)
+      else:
+        msgForm = item.openDoc()
       index = self.pages.indexOf(msgForm)
       if index == -1:
         index = self.pages.addTab(msgForm, msgForm.getDocumentTitle())
@@ -236,6 +258,7 @@
     if self.rejectClosingProject():
       event.ignore()
       return
+    self.closeProject()
     self.writeSettings()
     # Closing application
 
@@ -441,6 +464,7 @@
 class MsgIDItem(QtGui.QTreeWidgetItem):
   def __init__(self, parent, text):
     QtGui.QTreeWidgetItem.__init__(self, parent, [text])
+    self.setFlags(self.flags()|Qt.ItemIsEditable);
 
 class LangFileItem(QtGui.QTreeWidgetItem):
   def __init__(self, parent, langFile):
@@ -466,14 +490,24 @@
 class ProjectItem(QtGui.QTreeWidgetItem):
   def __init__(self, text):
     QtGui.QTreeWidgetItem.__init__(self, [text])
+    self.setFlags(self.flags()|Qt.ItemIsEditable);
 
 class ProjectTree(QtGui.QTreeWidget):
   def __init__(self, parent):
     QtGui.QTreeWidget.__init__(self, parent)
+    self.project = None
     self.topItem = None
     self.msgIDsItem = None
     self.headerItem().setHidden(True)
 
+  def itemChanged(self, item, column):
+    text = unicode(item.text(0))
+    #if hasattr(item, "textChanged"):
+      #item.textChanged(text)
+    if isinstance(item, ProjectItem):
+      self.project.setName(text)
+      print text
+
   def keyReleaseEvent(self, event):
     Qt = QtCore.Qt
     key = event.key()
@@ -498,6 +532,8 @@
     for x in [self.topItem, self.msgIDsItem]:
       x.setExpanded(True)
 
+    Qt.connect(self, Qt.SIGNAL("itemChanged(QTreeWidgetItem*,int)"), self.itemChanged)
+
   def contextMenuEvent(self, event):
     item = self.itemAt(event.pos())
     func_map = {
@@ -519,8 +555,10 @@
     print "MsgIDItem"
 
   def clear(self):
+    self.project = None
     self.topItem = None
     self.msgIDsItem = None
+    Qt.disconnect(self, Qt.SIGNAL("itemChanged(QTreeWidgetItem*,int)"), self.itemChanged)
     QtGui.QTreeWidget.clear(self)