Inserção rápida de textos
Nomes, endereços, assinaturas, e-mails, sites, frases… Quantas coisas repetidas as pessoas não precisam digitar, hein? Para poupar tempo do usuário, o Mep Texto pode carregar uma lista de palavras definidas pela pessoa, e inserir facilmente os textos. Basta teclar F9 ou CTRL + Espaço, na tela do editor. Veja:
A lista exibirá todas as palavras ou frases cadastradas, a menos que o usuário chame-a com alguma coisa já digitada à esquerda do cursor. Neste caso, serão exibidos apenas os itens que começam com o que está digitado, filtrando as opções.
As palavras e frases ficam salvas por padrão no arquivo “TextosMT.mep”, na pasta “Meus documentos” do usuário. Estando na pasta “Meus documentos”, fica fácil o backup e edição, além de ser privado e separado das outras contas de usuário do computador. Ao inicializar o editor, se esse arquivo existir, a lista é carregada automaticamente.
Na primeira vez que o usuário chamar a lista, como o arquivo não existirá, o programa dará algumas orientações e criará o arquivo. Deve-se deixar cada palavra ou expressão em uma linha; não precisa definir palavras únicas, pode-se usar frases ou nomes com espaços, também. Não há limite aplicado na quantidade de itens que podem ser guardados na lista, mas quanto mais, mais memória será usada. Não é recomendável deixar com mais de 100, no geral, visto que cada aba manterá a lista carregada, na sua instância do “frmMepTexto”, o formulário do editor.
Todo o trabalho é feito por um componente pronto, que acompanha o SynEdit. Na inicialização, basicamente chama-se um método do SynEdit para carregar o texto do arquivo definido.
Backup Paranóia
Quem nunca perdeu textos e arquivos com o computador? Seja porque o sistema travou (o que é muito comum no Windows 9x/Me), ou reiniciou sozinho (salve, Windows XP!), ou ainda por motivos de força maior, como queda de energia (se bem que os outros casos também são de força maior, né). Inicialmente eu fiquei com um pé atrás quando pensei em implantar esse recurso, pesando no desempenho, mas vale a pena. O Windows e os programas gravam muita coisa temporária, mesmo que apaguem depois, eles gravam. Gravar arquivos continuamente, especialmente arquivos pequenos, não é nenhum sufoco para o HD. Dada a facilidade na recuperação depois, inclusive de “versões anteriores” dos arquivos, decidi colocar um sistema de backup literalmente paranóico: ele fica gravando de tempos em tempos o texto do editor, num arquivo separado, numa pasta especial. Com o tempo a pasta vai ficando cheia de arquivos, mas o usuário pode limpá-la a qualquer momento, além do que, esse recurso vem desativado por padrão, ou seja, somente se o usuário quiser ele terá isso. O editor salva os backups utilizando como nome de arquivo a data e hora sem separadores (nem barra, nem dois pontos) e o nome do arquivo aberto. Como usa a hora incluindo os segundos, é praticamente impossível (pelo menos, muito raro!) de ele tentar salvar dois arquivos com o mesmo nome, ao mesmo tempo. Por padrão, a pasta de salvamento destes backups é a “Backup Mep Texto”, que fica dentro da pasta “Meus documentos” do usuário também, garantindo privacidade. Nas opções, o usuário pode escolher qualquer outra pasta. O tempo padrão é de 20 em 20 segundos, isso faz com que a pessoa perca praticamente um parágrafo pequeno, se cair a energia, por exemplo. O bom desse backup é que ele independe do arquivo aberto no editor em si, inclusive o backup será salvo mesmo se a pessoa não salvar o arquivo, apenas por abrir o editor e sair digitando. Como medida de “inteligência”, ele não salva backups de arquivos salvos não modificados (por exemplo, que a pessoa esteja apenas lendo na tela), ou se o editor estiver vazio. A pasta pode ser aberta (e/ou limpa) pelo menu “Configurar > Backup paranóia”; esse item só aparece se o backup estiver ativado nas opções. Eu já recuperei coisas importantes graças a esse recurso, alguns amigos também… Para quem usa muito um editor de textos puro, vale a pena (meu formato de arquivo preferido é o txt! Abre em qualquer lugar, é leve e pequenininho, ainda pode ser comprimido a alta taxas de compactação…).
Tecnicamente é usado o tão temido “Timer”, “Temporizador”, para ficar salvando os backups. Na tela das opções há uma orientação para o usuário não definir um tempo muito baixo, pois isso poderia reduzir o desempenho do sistema, especialmente se muitas abas ou janelas estivessem abertas.
Mas, para quem não gostou da idéia, há também um outro recurso importante, que faz falta no Bloco de notas: o salvamento automático do arquivo atual. Diferentemente do backup paranóia, este salva o texto do arquivo aberto no próprio arquivo, como se o usuário clicasse no botão “Salvar”. Novamente será utilizado um “Timer”, mas isso vem desativado por padrão, a pessoa tem que ativar em cada sessão ou aba do editor, toda vez que quiser:
Mep Texto no Linux?
Rodando ele no Linux com o Wine (testei no 0.9.25-1), vi que quase tudo funcionava a contento, dando até para usá-lo como editor no lugar do KEdit ou GEdit, sem maiores problemas. A versão testada inicialmente foi a 5.0 beta 3, com os skins (que foram aplicados na 5.0 beta 2, pois a 5.0 beta 1 já era MDI mas sem skins). Os skins não funcionaram, entendo que é complicado pra o Wine, aliás é de se admirar que ele possa funcionar. Era necessário então desativar os skins no registro, antes de abrir o Mep Texto. Pensando nisso incluí, a partir de então, na instalação, um item para o usuário selecionar, se está usando o Windows ou o Linux. Isso não é problema para o Mep Texto Open, que não usa os skins (não me refiro aos skins das barras de menus, mas sim das janelas e itens visuais da interface em si).
Aproveitando, e para facilitar a compatibilidade dele no Linux sob as versões atuais do Wine, inclui uma configuração especialmente para isso. Uma variável no formulário “pai”, nomeada de “linux”, e pública para todo o projeto, para que possa ser acessada de qualquer tela. Ela é inicializada com base na opção “Linux” da chave do registro do programa, que pode ter o valor 1 (otimizado para o Linux) ou 0 (para rodar no Windows). Incluí também um item para o usuário marcar ou desmarcar isso nas opções, na aba “Outras configurações”, caso ele queira ou precise.
Entre outras coisas, quando ele está “otimizado” para o Linux, estas coisas são alteradas:
- Na tela das opções, na aba “Associação de arquivos”, é exibida uma mensagem por cima, dizendo que a associação de arquivos não irá funcionar – pois isso no Linux dependerá da interface gráfica usada, e não do que o programa gravaria sob a chave HKEY_CLASSES_ROOT, do registro. Aliás, foi bom comentar: para alterar os itens desta aba, em tempo de desenvolvimento, clique dentro do painel da mensagem e arraste-o para algum canto, pois os botões ficam por baixo. Antes de fechar e compilar, arraste-o de volta para a posição original, cobrindo toda a tela. Ele está com a propriedade “Visible” configurada para False, mas esta é alterada para True em tempo de execução, se a opção de otimização para o Linux estiver ativa.
- Quando algum arquivo está aberto, o menu “Arquivo” exibe outros itens, como “Renomear”, “Excluir”, “Propriedades”, “Abrir em outro programa”, etc. Algumas destas funções não funcionaram no Wine, por usarem algumas janelas comuns da API do Windows talvez ainda não implantadas totalmente. Então estes itens são desativados também.
- O salvamento… Posso estar errado, mas parece ser um bug da versão 7 do Delphi. Ela inclui suporte nativo às janelas “Abrir” e “Salvar” do Windows com a barra de locais, recurso que foi implantado no Windows 2000/Me. Esse suporte não existe nativamente nas versões mais velhas do Delphi, claro, pois foram lançadas antes do Windows 2000/Me. Mas não é esse o problema. As janelas “Abrir” e “Salvar” retornam ao programa o nome do arquivo selecionado, com a extensão, e esta dependerá do item que o usuário selecionar na lista “Arquivos do tipo”. Pois bem, ela deveria retornar o nome já com a devida extensão, isso funciona na janela “Salvar” do Delphi 5. Mas nos programas compilados com o Delphi 7, ele retornava o nome sem a extensão, a menos que o usuário digitasse manualmente no campo do nome do arquivo. Então o que eu fiz, coloquei na função de salvamento uma instrução que verifica qual item na lista de tipos de arquivos foi selecionado (usando o índice do item da lista), e dependendo do número retornado, era adicionada ao final do nome do arquivo, a extensão correta. Se você modificar ou adicionar mais tipos de arquivo, deverá alterar isso também (localize o item “SFiltroSalvar” na unidade “UnitMensagens”). Pois bem, um bug unido do Delphi 7 com o Windows, digamos, rs. No entanto, no Wine, ele me retornava a extensão correta de acordo com o item selecionado pelo usuário no campo “Salvar como tipo”, isso seria o certo (parabéns, Wine :). Como eu havia programado para aplicar a extensão “manualmente” via programação, ao salvar no Wine, o arquivo ficava com duas extensões. Coloquei então um verificador, se ele estiver otimizado para o Linux, então não adiciona a extensão, deixando o nome que o Wine retornar, pois este já virá com a extensão.
- Existem outras pequenas modificações, como o item “Sobre o Windows” do menu “Ajuda”, que mudará para “Sobre o Wine”, etc.
Para encontrar as outras mudanças, use o recurso “Find in files” do menu “Search” do Delphi, e localize por “pai.linux”. Se você definir alguma coisa útil para o Linux, que não seja para o Windows, ou vice-versa, pode usar esta variável que já está pronta e é inicializada corretamente, colocando um verificador, por exemplo:
// faça coisas aqui para o Linux
else
// agora faça para o Windows
Alguns ajustes ainda são necessários, isso se dará nos próximos releases oficiais. Entre eles está a verificação nos nomes de arquivos e abertura de pastas… Basicamente adicionar o comando “explorer” antes do nome da pasta, assim o Wine já abre num visualizador de arquivos incluso com ele (pois atualmente as pastas simplesmente não são abertas), e mudar as funções de verificação dos arquivos ou fazer alguma gambiarra… Afinal, os caminhos dos arquivos no Linux não começam com uma letra e dois pontos, como “C:arquivo.txt”, por exemplo, mas sim “/mnt/hda1/arquivo.txt”. Como as funções inclusas no Delphi são para o Windows, as que verificam nomes de arquivos esperam encontrar uma letra e dois pontos antes do nome. A função “ExtractFileName”, que retorna o nome do arquivo sem o caminho, por exemplo. Ao chamá-la assim:
Ela me retornará uma string contendo apenas “meu arquivo.txt”. Agora, ao chamá-la desse modo:
Ela me retornará “/mnt/hda1/minhas coisas/meu arquivo.txt”, o que não é viável, pois eu queria apenas o nome do arquivo, sem o caminho. Isso é preocupante, pois com o Wine, os programas para Windows podem acessar arquivos do sistema Linux usando a nomenclatura do Linux! Alguns aplicativos reclamam, mas reclamam simplesmente porque verificam o caminho do arquivo, que é um caminho inválido para o Windows. Se o programa tentar gravar ou abrir um arquivo dando como caminho “/mnt/hda1/home/mah/.kde/AutoStart”, por exemplo, ele conseguirá, pois (pelo menos nas versões atuais) o Wine permite e entrega o arquivo correto. Verifiquei isso ao associar os arquivos de texto ao Mep Texto, sob o Wine. Ele tanto pode abrir os arquivos usando as letras mapeadas pelo Wine como o caminho no estilo Linux. Ao abrir, editar e salvar arquivos pelo editor, tudo bem. Mas… O Mep Texto não conseguia salvar o backup paranóia para o arquivo atual, se ele estivesse referenciado com o caminho no estilo Linux. Simples: no backup paranóia, o Mep Texto usa o nome do arquivo, além da data/hora. Ele pega só o nome do arquivo, não o caminho completo, usando para isso a função “ExtractFileName”, provida pelo Delphi. Mas, ao usá-la com um caminho estilo Linux, a função retorna o nome do arquivo completo, incluindo as barras. Assim o editor não consegue salvar o arquivo na pasta de backup, por conter barras no nome. O erro não irrita o usuário, pois apenas uma mensagem é exibida na barra de status, mas o ideal seria funcionar. Estou para implementar nos próximos releases, na função de salvamento do Backup Paranóia, isso: verificar o nome do arquivo e pegar a parte depois da última barra, isso seria mais garantido; substituir as barras por outro caractere qualquer que seja permitido nos nomes de arquivos, e gravar o arquivo de backup com o caminho completo (isso seria inviável, pois dependendo da pasta, o nome podeira ficar muito grande); ou encontrar uma função correspondente à “ExtractFileName” que funcione tanto para caminhos Windows como Linux.
Apesar disso tudo, o Mep Texto é um programa para Windows, seguindo o formato win32/pe. O que ajuda aí é todo o poder do Wine, que vem a ser uma espécie de “subsistema Windows open source, for Linux”. Veja mais informações sobre melhorias para rodar o Mep Texto no Linux, inclusive de como associar os arquivos para abri-lo com um duplo clique como se fosse um editor “nativo”, em:
http://janelasepinguins.blogspot.com/2007/05/rodando-o-mep-texto-no-linux.html
Deixe seu comentário