Miojo Notepad 0.3
Publicado por Artur Gaspar (última atualização em 08/01/2010)
[ Hits: 5.715 ]
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_())
Serialização em Python usando pickle
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Impressora Canon Ip 1800 (Drivers) 64 bit (1)
Erro ao converter string para inteiro (6)
Diferença entre formas de instalar o Samba [RESOLVIDO] (4)
Dongle Bluetooth 5.0 não funciona no Pop Os 22.04 (0)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (24)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba