diff options
author | Rajeesh K Nambiar <rajeeshknambiar@gmail.com> | 2009-02-25 18:11:17 +0530 |
---|---|---|
committer | Rajeesh K Nambiar <rajeeshknambiar@gmail.com> | 2009-02-25 18:11:17 +0530 |
commit | fb4edd89336a70c90eaec2c8b7b01701175c3f7b (patch) | |
tree | 4867fe9ff108b2964b3c0b90bbdd2d313eb08e8c /pykuttans/src | |
parent | 723151726bbea5efb998e695993037e236068ef4 (diff) | |
download | AnjaliOldLipi.git-fb4edd89336a70c90eaec2c8b7b01701175c3f7b.tar.gz AnjaliOldLipi.git-fb4edd89336a70c90eaec2c8b7b01701175c3f7b.tar.xz AnjaliOldLipi.git-fb4edd89336a70c90eaec2c8b7b01701175c3f7b.zip |
Kuttans: Merge Rahul's changes and other fixes by Rajeesh
Diffstat (limited to 'pykuttans/src')
-rw-r--r-- | pykuttans/src/kuttans_main.py | 245 |
1 files changed, 209 insertions, 36 deletions
diff --git a/pykuttans/src/kuttans_main.py b/pykuttans/src/kuttans_main.py index 8019ba5..496339c 100644 --- a/pykuttans/src/kuttans_main.py +++ b/pykuttans/src/kuttans_main.py @@ -1,7 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Copyright (c) 2009 Rajeesh K Nambiar <rajeeshknambiar@gmail.com> +# Copyright (c) 2009 Rajeesh K Nambiar <rajeeshknambiar@gmail.com>, +# Rahul <rahulrs@gmx.com> # # This program is free software you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -66,10 +67,11 @@ class StartKuttans(QtGui.QMainWindow): self.connect(Ui.textEdit, QtCore.SIGNAL("copyAvailable(bool)"), Ui.actionCut, QtCore.SLOT("setEnabled(bool)")) #ഉപയോക്താവ് ഏതെങ്കിലും പാഠഭാഗം തിരഞ്ഞെടുത്തെങ്കില് മാത്രം... self.connect(Ui.textEdit, QtCore.SIGNAL("copyAvailable(bool)"), Ui.actionCopy, QtCore.SLOT("setEnabled(bool)")) #'cut', 'copy' എന്നിവ സജ്ജീവമാക്കുക - self.connect(Ui.actionOpen, QtCore.SIGNAL("triggered()"), self.openFile) #രേഖ തുറക്കാനുള്ള ആജ്ഞ open() എന്ന പ്രവൃത്തിയുമായി ബന്ധിപ്പിക്കുക + self.connect(Ui.actionOpen, QtCore.SIGNAL("triggered()"), self.openFile) #രേഖ തുറക്കാനുള്ള ആജ്ഞ open() എന്ന പ്രവൃത്തിയുമായി ബന്ധിപ്പിക്കുക self.connect(Ui.actionSave, QtCore.SIGNAL("triggered()"), self.saveFile) self.connect(Ui.actionSaveAs, QtCore.SIGNAL("triggered()"), self.saveFileAs) self.connect(Ui.actionAbout, QtCore.SIGNAL("triggered()"), self.About) + self.connect(Ui.actionClose, QtCore.SIGNAL("triggered()"), self, QtCore.SLOT("close()")) self.connect(Ui.actionNew, QtCore.SIGNAL("triggered()"), self.newFile) self.connect(Ui.actionExportPDF, QtCore.SIGNAL("triggered()"), self.filePrintPDF) @@ -87,6 +89,10 @@ class StartKuttans(QtGui.QMainWindow): self.connect(Ui.actionIndulekha_u2a, QtCore.SIGNAL("triggered()"), self.Indulekha_u2a) self.connect(Ui.actionKarthika_u2a, QtCore.SIGNAL("triggered()"), self.Karthika_u2a) self.connect(Ui.actionSelectFontMap_u2a, QtCore.SIGNAL("triggered()"), self.customMap_u2a) + + self.readSettings() + self.setCurrentFile(self.tr("untitled.txt")) + self.x = 1 def textSize(self, qString): fmt = QtGui.QTextCharFormat() @@ -94,7 +100,6 @@ class StartKuttans(QtGui.QMainWindow): self.mergeFormatOnWordOrSelection(fmt) def textFamily(self, qString): - print "In textFamily" fmt = QtGui.QTextCharFormat() fmt.setFontFamily(qString); self.mergeFormatOnWordOrSelection(fmt) @@ -113,69 +118,211 @@ class StartKuttans(QtGui.QMainWindow): return QtCore.QFileInfo(fullname).fileName() def openFile(self): - fName = QtGui.QFileDialog.getOpenFileName() + fName = QtGui.QFileDialog.getOpenFileName(self, self.tr("Select Input file"),"", "*.txt *.pdf") + self.curFile = str(fName) + path, extn = os.path.splitext(self.curFile) if os.path.isfile(fName): - self.ui.textEdit.setPlainText(codecs.open(fName, 'r', 'utf-8').read()) - self.ui.statusbar.showMessage("File " + self.strippedFileName(fName) + " Opened", 2000) #/൨൦൦൦ മില്ലി സെക്കന്റ് നേരം സ്റ്റാറ്റസ് ബാറില് പ്രദര്ശിപ്പിക്കുക - self.InputFile = str(fName) + if extn == ".txt": + QApplication.setOverrideCursor(Qt.WaitCursor) + self.ui.textEdit.setPlainText(codecs.open(fName, 'r', 'utf-8').read()) + QApplication.restoreOverrideCursor() + self.setCurrentFile(fName) + self.ui.statusbar.showMessage("File " + self.strippedFileName(fName) + " Opened", 2000) #/൨൦൦൦ മില്ലി സെക്കന്റ് നേരം സ്റ്റാറ്റസ് ബാറില് പ്രദര്ശിപ്പിക്കുക + self.InputFile = str(fName) + self.x = 0 + if extn == ".pdf": + print "Need to implement displaying PDF file, with QtPoppler" - def saveFile(self): - pass + def save(self): + if self.x==1: + return self.saveFileAs() + if self.curFile.isEmpty(): + return self.saveFileAs() + else: + return self.saveFile(self.curFile) + + def saveFile(self,fileName): + QApplication.setOverrideCursor(Qt.WaitCursor) + s = codecs.open(fileName,'w','utf-8') + s.write(unicode(self.ui.textEdit.toPlainText())) + s.close() + QApplication.restoreOverrideCursor() + self.setCurrentFile(fileName) + self.ui.statusbar.showMessage(self.tr("File ") + self.strippedFileName(fileName) + self.tr(" Saved"), 2000) def saveFileAs(self): - pass + fileName = QtGui.QFileDialog.getSaveFileName() + if (fileName.isEmpty() != 0): + return False + else: + self.x = 0 + return self.saveFile(fileName) + + def maybeSave(self): + if self.ui.textEdit.document().isModified(): + ret = QtGui.QMessageBox.warning(self, self.tr("Warning"), + self.tr("<h4 align=\"center\">The document has been modified.\n" + "<h4 align=\"center\">Do you want to save your changes?"), + QtGui.QMessageBox.Yes | QtGui.QMessageBox.Default, + QtGui.QMessageBox.No, + QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Escape) + if ret == QtGui.QMessageBox.Yes: + return self.save() + elif ret == QtGui.QMessageBox.Cancel: + return False + return True + + def setCurrentFile(self, fileName): + self.curFile = fileName + self.ui.textEdit.document().setModified(False) + self.setWindowModified(False) + if self.curFile.isEmpty(): + shownName = self.tr("untitled.txt") + else: + shownName = self.strippedFileName(self.curFile) + self.setWindowTitle(self.tr("%1[*] - %2").arg(shownName).arg(self.tr("Kuttans"))) def About(self): - pass + QtGui.QMessageBox.about(self, self.tr("About Kuttans"), + self.tr("<h1 align=\"center\">Kuttans 0.1<p><h4 align=\"center\">A GUI frontend for Payyans<p><h4 align=\"center\"><a href=\"www.smc.org.in\">Swathanthra Malayalam Computing</a>")) def newFile(self): - pass + if self.maybeSave(): + self.ui.textEdit.clear() + self.setCurrentFile(QtCore.QString()) def filePrintPDF(self): - pass + document = self.ui.textEdit.document() + printer = QtGui.QPrinter(QPrinter.HighResolution) + fileName = QFileDialog.getSaveFileName() + if (fileName.isEmpty()): + return + else: + if (QFileInfo(fileName).suffix().isEmpty()): + fileName.append(".pdf") + printer.setOutputFormat(QPrinter.PdfFormat) + printer.setOutputFileName(fileName) + document.print_(printer) def filePrint(self): - pass + document = self.ui.textEdit.document() + printer = QtGui.QPrinter() + dialog = QtGui.QPrintDialog(printer, self) + dialog.setWindowTitle(self.tr("Print Document")) + if dialog.exec_() != QtGui.QDialog.Accepted: + return + document.print_(printer) def filePrintPreview(self): - pass + printer = QtGui.QPrinter() + preview = QtGui.QPrintPreviewDialog(printer) + def render(): + doc = self.ui.textEdit.document() + doc.print_(printer) + preview.connect(preview, QtCore.SIGNAL('paintRequested(QPrinter*)'), render) + preview.exec_() def documentWasModified(self): - pass + self.setWindowModified(self.ui.textEdit.document().isModified()) def Revathi_a2u(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return self.OutputFile = self.directoryName(self.InputFile) + "/unicode-" + self.strippedFileName(self.InputFile) - self.ui.statusbar.showMessage("Converting... Please wait") + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) if self.ConvertFiles("revathi.map", "a2u") == 0: - self.ui.statusbar.showMessage("Converted successfully!") + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) else: - self.ui.statusbar.showMessage("Conversion failed!") + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) def Revathi_u2a(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return self.OutputFile = self.directoryName(self.InputFile) + "/ascii-" + self.strippedFileName(self.InputFile) - self.ui.statusbar.showMessage("Converting... Please wait") + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) if self.ConvertFiles("revathi.map", "u2a") == 0: - self.ui.statusbar.showMessage("Converted successfully!") + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) else: - self.ui.statusbar.showMessage("Conversion failed!") - - def Indulekha_a2u(self, direction): - pass + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) - def Indulekha_u2a(self, direction): - pass + def Indulekha_a2u(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return + self.OutputFile = self.directoryName(self.InputFile) + "/unicode-" + self.strippedFileName(self.InputFile) + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) + if self.ConvertFiles("indulekha.map", "a2u") == 0: + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) + else: + self.ui.statusbar.showMessage(self.tr("Conversion failed!", 2000)) - def Karthika_a2u(self, direction): - pass + def Indulekha_u2a(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return + self.OutputFile = self.directoryName(self.InputFile) + "/ascii-" + self.strippedFileName(self.InputFile) + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) + if self.ConvertFiles("indulekha.map", "u2a") == 0: + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) + else: + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) + + def Karthika_a2u(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return + self.OutputFile = self.directoryName(self.InputFile) + "/unicode-" + self.strippedFileName(self.InputFile) + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) + if self.ConvertFiles("karthika.map", "a2u") == 0: + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) + else: + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) - def Karthika_u2a(self, direction): - pass + def Karthika_u2a(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return + self.OutputFile = self.directoryName(self.InputFile) + "/ascii-" + self.strippedFileName(self.InputFile) + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) + if self.ConvertFiles("karthika.map", "u2a") == 0: + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) + else: + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) - def customMap_a2u(self, direction): - pass + def customMap_a2u(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return + #fileName = QFileDialog.getOpenFileName(, self.tr("Select the fontmap file"), QDir.homePath (), self.tr("Font Maps (*.map);;All Files (*)")) + fileName = QFileDialog.getOpenFileName() + self.OutputFile = self.directoryName(self.InputFile) + "/unicode-" + self.strippedFileName(self.InputFile) + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) + if self.ConvertFilesCustom(fileName, "a2u") == 0: + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) + else: + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) - def customMap_u2a(self, direction): - pass + def customMap_u2a(self): + if self.InputFile == None: + QtGui.QMessageBox.about(self, self.tr("Message"), + self.tr("<h3 align=\"center\">No file selected<p><h4 align=\"center\">Open or enter the document to convert")) + return + fileName = QFileDialog.getOpenFileName() + self.OutputFile = self.directoryName(self.InputFile) + "/ascii-" + self.strippedFileName(self.InputFile) + self.ui.statusbar.showMessage(self.tr("Converting... Please wait")) + if self.ConvertFiles("karthika.map", "u2a") == 0: + self.ui.statusbar.showMessage(self.tr("Converted successfully!"), 2000) + else: + self.ui.statusbar.showMessage(self.tr("Conversion failed!"), 2000) def ConvertFiles(self, map_name, direction): self.MappingFile = sys.prefix + "/share/payyans/maps/" + map_name @@ -184,11 +331,37 @@ class StartKuttans(QtGui.QMainWindow): return p.ascii2unicode() elif direction == "u2a": return p.unicode2ascii() + + def ConvertFilesCustom(self, map_name, direction): + self.MappingFile = map_name + p = Payyans(self.InputFile, self.OutputFile, self.MappingFile) + if direction == "a2u": + return p.ascii2unicode() + elif direction == "u2a": + return p.unicode2ascii() def asciiToUnicodePDF(self): # poppler-qt4 can be made use of, to render PDF files pass - + + def closeEvent(self, event): + if self.maybeSave(): + self.writeSettings() + event.accept() + else: + event.ignore() + + def writeSettings(self): + settings = QtCore.QSettings("SMC", "Kuttans") + settings.setValue("pos", QtCore.QVariant(self.pos())) + settings.setValue("size", QtCore.QVariant(self.size())) + + def readSettings(self): + settings = QtCore.QSettings("SMC", "Kuttans") + pos = settings.value("pos", QtCore.QVariant(QtCore.QPoint(200, 200))).toPoint() + size = settings.value("size", QtCore.QVariant(QtCore.QSize(400, 400))).toSize() + self.resize(size) + self.move(pos) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) |