Miojo Notepad 0.3

Publicado por Artur Gaspar (última atualização em 08/01/2010)

[ Hits: 5.838 ]

Download miojo-notepad-0.3.tar.gz




Um pequeno editor de textos em Python/PyQt4. Requer Python 2.6, PyQt4 e KDE (para o instalador). Descompacte em uma pasta e execute o install.sh

  



Esconder código-fonte

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

import sys, codecs
from PyQt4 import QtGui, QtCore
class Notepad(QtGui.QMainWindow):
   def __init__(self):
      QtGui.QMainWindow.__init__(self)
      self.resize(350, 250)
      self.setWindowTitle('Miojo Notepad')
      caixa_texto = QtGui.QTextEdit()
      self.setCentralWidget(caixa_texto)
      self.setWindowIcon(QtGui.QIcon('/usr/share/pixmaps/miojo.jpg'))
      
      botao_abrir = QtGui.QAction(QtGui.QIcon('/usr/share/icons/default.kde4/32x32/actions/document-open.png'), 'Abrir', self)
      botao_abrir.setShortcut('Ctrl+O')
      botao_abrir.setStatusTip('Abre um arquivo')
      botao_salvar = QtGui.QAction(QtGui.QIcon('/usr/share/icons/default.kde4/32x32/actions/document-save.png'), 'Salvar', self)
      botao_salvar.setShortcut('Ctrl+S')
      botao_salvar.setStatusTip('Salva o arquivo aberto')
      
      botao_fechar = QtGui.QAction(QtGui.QIcon('/usr/share/icons/default.kde4/32x32/actions/application-exit.png'), 'Fechar', self)
      botao_fechar.setShortcut('Ctrl+Q')
      botao_fechar.setStatusTip('Fecha')
      
      self.statusBar()
      
      menubar = self.menuBar()
      menu = menubar.addMenu('&Arquivo')
      menu.addAction(botao_abrir)
      menu.addAction(botao_salvar)
      menu.addSeparator()
      menu.addAction(botao_fechar)
      
      toolbar = self.addToolBar('Barra de Ferramentas')
      toolbar.addAction(botao_abrir)
      toolbar.addAction(botao_salvar)
            
      self.watcher = QtCore.QFileSystemWatcher(self)
      self.connect(botao_fechar, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
      self.connect(botao_abrir, QtCore.SIGNAL('triggered()'), self.abrir)
      self.connect(botao_fechar, QtCore.SIGNAL('triggered()'), self.salvar)
      self.connect(caixa_texto, QtCore.SIGNAL("textChanged()"), self.habilita_salvar)
      self.connect(self.watcher, QtCore.SIGNAL("fileChanged(const QString&)"), self.arquivo_alterado)
      
      
   def msgbox(self, li = [], texto = ""):
      mensagem = QtGui.QMessageBox(self)
      mensagem.setText(texto)
      
      for i in range(0, len(li)):
         mensagem.addButton(li[int(i)], QtGui.QMessageBox.ActionRole)
         
      mensagem.exec_()
      
      self.resposta = mensagem.clickedButton().text()
      
      
   def abrir(self):
      self.resposta = False
      SALVAR = "Salvar"
      DESCARTAR = "Descartar"
      CANCELAR = "Cancelar"
      
      if self.botao_salvar.isEnabled() and self.nomearquivo:
         msgbox(li = [SALVAR, DESCARTAR, CANCELAR], texto = "O documento '" + str(self.nomearquivo) + "' foi modificado.\n Deseja salvar as mudanças ou descartá-las?", titulo = "Miojo Notepad")
         
         if self.resposta == SALVAR:
            self.salvar
            
      if self.resposta != CANCELAR:
         try:
            self.arquivo = QtGui.QFileDialog(self)
            self.nomearquivo = self.arquivo.getOpenFileName()
            self.texto = codecs.open(self.nomearquivo, 'r', 'utf-8').read()
            self.ui.caixa_texto.setPlainText(self.texto)
            self.ui.botao_salvar.setEnabled(False)
            self.watcher.addPath(self.nomearquivo)
         except:
            pass
         
         
   def salvar(self):
      textow = codecs.open(self.nomearquivo, 'w', 'utf-8')
      textow.write(self.ui.caixa_texto.toPlainText())
      textow.close
      
      self.ui.botao_salvar.setEnabled(False)
      
      
   def habilita_salvar(self):
      self.ui.botao_salvar.setEnabled(True)
      
      
   def arquivo_alterado(self):
      self.resposta = False
      SOBREESCREVER = "Sobreescrever"
      IGNORAR = "Ignorar"
      RECARREGAR = "Recarregar"
      
      msgbox(li = [SOBREESCREVER, IGNORAR, RECARREGAR], texto = "O documento '" + str(self.nomearquivo) + "' foi modificado por outro programa.\n O que você deseja fazer?", titulo = "Miojo Notepad")
      if self.resposta == SOBREESCREVER:
         self.salvar
         
      elif resposta == RECARREGAR:
         self.ui.caixa_texto.setPlainText(self.texto)
         self.ui.botao_salvar.setEnabled(False)
         
   
app = QtGui.QApplication(sys.argv)
main = Notepad()
main.show()
sys.exit(app.exec_())

Scripts recomendados

Them para fluxbox

Conversor de Python para .exe

Mini-dicionário de termos em Python e PyQT 4

Juntando tabelas em aquivo texto

Pyconv - Conversor de codificação de caracteres


  

Comentários
[1] Comentário enviado por SamL em 08/01/2010 - 19:28h

Legal esse editor.
Só uma opinião, acho que você deveria mudar o nome para algo como MiojoWrite ou MiojEdit. :)
Valeu!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts