Miojo Notepad 0.3
Publicado por Artur Gaspar (última atualização em 08/01/2010)
[ Hits: 6.156 ]
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
#!/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_())
Juntando tabelas em aquivo texto
subwrite - um simples editor de texto em Python
ShellCrypTor criptografador de dados
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Conky não mostra temperaturas da CPU no notebook (0)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (0)









