# -*- coding: iso-8859-15 -*-
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore

class TextEditor(QtGui.QMainWindow):

    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setWindowTitle('My Text Editor')
        self.__fileName = ""
        self.__textEdit = QtGui.QTextEdit()
        self.setCentralWidget(self.__textEdit)
        menubar = self.menuBar()
        action = {"Nuevo": self.new, "Abrir": self.open, "Guardar": self.save, "Salir": self.exit}
        for (label, action) in action_menu.items():
            action = QtGui.QAction(label, self)
            self.connect(action, QtCore.SIGNAL('triggered()'), action)
            menubar.addAction(action)

    def new(self):
        self.__textEdit.clear()
        self.__fileName = ""

    def open(self):
        self.__textEdit.clear()
        self.__fileName = QtGui.QFileDialog.getOpenFileName(self, "Abrir", ".", "Archivos de texto (*.txt)")
        if self.__userSelectedAFile():
            try:
                fsock = open(self.__fileName, "r")
                self.__textEdit.setPlainText(fsock.read())
                fsock.close()
            except Exception, e:
                QtGui.QMessageBox.critical (self, "Error de apertura", e.message)

    def save(self):
        if self.__fileName == "":
            self.__fileName = QtGui.QFileDialog.getSaveFileName(self, "Guardar como", ".", "Archivos de texto (*.txt)")
            if not self.__fileName.endsWith(".txt", QtCore.Qt.CaseInsensitive):
                self.__fileName = self.__fileName + ".txt"
        try:
            fd = open(self.__fileName, "w")
            fd.write(self.__textEdit.document().toPlainText())
            fd.close()
        except Exception, e:
            QtGui.QMessageBox.critical(self, "Error al guardar", e.message)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    text_editor = TextEditor()
    text_editor.show()
    sys.exit(app.exec_())
