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
#!/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_())
Mini-dicionário de termos em Python e PyQT 4
Juntando tabelas em aquivo texto
Pyconv - Conversor de codificação de caracteres
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Modernização e Avanço do Linux. (22)
Comportamento estranho dos aplicativos em usb bootavel do linux mint[D... (1)
Recuperando arquivo corrompido no cartão de memoria pelo linux [RESOLV... (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta