Zikagames - Início Ir para conteúdo
keyboard_arrow_down
account_circle Entrar

Entrar



  • Não recomendado para computadores públicos


  • Esqueceu sua senha?

person_add Cadastre-se
Entre para seguir isso  
ryzen

[ Parte 3 ] Programação: Personalizando e recompilando o Mep Texto Open

Posts Recomendados

Parte 3!

Banner Tutorial.png

Indice:
Parte 1: Clique aqui
Parte 2: Clique aqui
Parte 3: Clique aqui

 

 

Recursos especiais do Mep Texto

Pensando na praticidade… Incluí dois recursos que gosto muito e uso freqüentemente, e normalmente quem viu, gostou também. Um agiliza a inserção de textos e frases muito usados, e o outro salva periodicamente o conteúdo do editor numa pasta especial, para evitar a perda de textos quando o computador reinicia ou trava, ou cai a energia, etc.

 

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:

index_html_5b2e59a3

 

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 Paranoia

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:

index_html_65746b9

 

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:

if pai.Linux then

// 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:

ExtractFileName(‘C:minhas coisasmeu arquivo.txt’);

 

Ela me retornará uma string contendo apenas “meu arquivo.txt”. Agora, ao chamá-la desse modo:

ExtractFileName(‘/mnt/hda1/minhas coisas/meu arquivo.txt’);

 

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:

 

 

Outras considerações importantes para redistribuir o projeto modificado

A checagem de parâmetros passados na linha de comando para o programa é feita direto no código fonte do projeto (“MepTexto.dpr”), antes de qualquer formulário ser carregado. Para abri-lo no Delphi, use o menu “Project > View Source”, estando com o projeto já carregado.

A associação de arquivos poderia ser feita pelo instalador, mas fica mais prático fazê-la pelo próprio programa, simplificando a instalação. Você precisa apenas chamar o executável com o parâmetro correto. A saber, eis os parâmetros suportados:

  • /assoc
Citar

Associa o programa aos arquivos de texto no Windows (“.txt”). Atualmente ele define como ícone padrão o “icTxt.ico”, que deve estar na mesma pasta do executável. Os ícones dos outros tipos de arquivos estão como recursos (resources) na DLL “ImageRes.dll”. Esta DLL não possui funções, e pode ser modificada com um editor de recursos visual, caso você queira trocar os ícones (use, por exemplo, o Resource Hacker).

 

  • /desassoc
Citar

Remove a associação, na verdade reassociando o Bloco de notas (todo Windows vem com o bloco de notas mesmo 😉 É útil e importante chamá-la na desinstalação, senão os usuários não conseguiriam abrir com o duplo clique os arquivos “.txt”, pelo Explorer (claro que poderiam fazer isso reassociando, mas um programa responsável deve cuidar disso, ainda mais num tipo de arquivo genérico, usado por outros programas também).

 

  • /ie
Citar

Associa o editor como visualizador do código-fonte do IE (não funciona com o IE 5 ou mais antigo, mas funciona no 6 e 7). Parece que não funcionou no Windows 2000, mesmo com o IE 6, então incluí no instalador uma instrução para permitir esta associação apenas se ele for instalado no Windows XP ou superior. Todavia, pela tela das opções, o usuário poderá clicar para associar

 

  • /lic
Citar

Exibe a licença de uso, sem carregar todo o programa. O texto exibido é o conteúdo do arquivo “license.txt”, que deve estar na mesma pasta do executável.

 

  • /reset
Citar

Limpa todas as configurações do programa no registro (exceto a associação de arquivos, para isso, use o /desassoc). Basicamente remove a chave “HKEY_CURRENT_USER Software Mep Mep Texto”, com todas as suas subchaves, e também a correspondente na chave HKEY_LOCAL_MACHINE. É importante chamar na desinstalação também, para limpar o registro do sistema do usuário. Para evitar perda de opções, o Mep Texto perguntará ao usuário se ele quer realmente excluir as configurações, e orienta para não fazê-lo caso pretenda reinstalar o programa.

 

Algumas imagens usadas em algumas telas do programa estão como recursos, dentro do arquivo “mt.res”, e podem ser trocadas com editores visuais de recursos, como o já comentado Resource Hacker. Abra o “mt.res” nele, localize a imagem e troque-a pela desejada. Esse arquivo não precisará ser redistribuído, pois os recursos inclusos nele serão embutidos no executável, pelo Delphi, durante a compilação. Eu incluí como recurso pois estas imagens são compartilhadas por várias telas comuns, assim uma única imagem de cada faz parte do programa, evitando colocar as mesmas imagens independentes em cada tela, o que ocuparia mais espaço.

Não deixe de curiar a unit “MepUtil2.pas”, nela existem diversas funções usadas no Mep Texto, por exemplo, para escrita e leitura de dados no registro (já comentadas), para descobrir a versão de Windows utilizada, uma que retorna a pasta do Windows, outra a System, outra a Temp, etc. Se quiser, fique a vontade para usar estas funções em outros programas 🙂

Para redistribuir o programa para os usuários finais, sugiro copiar o executável compilado para a pasta “distrib”, que contém outros arquivos necessários, e então redistribuir esta pasta. Comentando agora os arquivos incluídos, como sugestão de redistribuição (e que são redistribuídos no pacote oficial):

  • MepTexto.exe.manifest
Citar

É o manifesto para ativar suporte aos temas visuais do Windows XP. Sem ele na mesma pasta do programa, os botões e controles visuais não receberão os efeitos dos temas do Windows. Ele pode ser incluído diretamente como um recurso no Delphi (no Delphi 7, basta adicionar a unit “XPMan” na cláusula Uses de qualquer formulário, de preferência, direto no código do projeto – o arquivo “.dpr”). Pensando em possíveis problemas com versões superiores do Windows ou por qualquer outro motivo, preferi deixá-lo num arquivo a parte, que pode ser removido ou renomeado por qualquer um – estando como um recurso embutido, os usuários finais não poderiam desativar o suporte aos temas do Windows facilmente. O nome do arquivo deve ter o mesmo nome do executável, mais a extensão “.manifest”. Se você renomear o executável, deve renomear este arquivo também.

 

  • Arquivos .bat
Citar

São arquivos que chamam o editor com algum parâmetro, para executar algumas ações sem precisar abrir o programa. Os nomes dos arquivos já explicam tudo 🙂

 

  • FundoMT1.bmp
Citar

Aplicado desde a versão 1.1 do Mep Texto, é uma imagem, como sugestão de imagem de fundo para as barras de ferramentas (há nas opções um item para alterar o fundo; caso o usuário não tenha nenhuma imagem, pode usar esta). Depois foram aplicados os estilos de menus dos programas “.NET”, como o Office XP e o Office 2003, no Mep Texto 2.0, praticamente inutilizando o uso de uma imagem de fundo nas barras de ferramentas. Mas se o usuário deixar os menus sem temas, aplicar a imagem de fundo pode dar um efeitinho leve e agradável para alguns.

 

  • HTML.MEP
Citar

Ideal para quem mexe com HTML, mas pode ser personalizado e editado para qualquer uso, como um “modelo”. Ao usar o menu “Arquivo > Novo > Página da web”, ou ao inserir no arquivo atual a base do HTML (com CTRL + F2), o conteúdo deste arquivo será inserido no editor. É um arquivo de texto puro, apenas com a extensão “.mep”, comum nos meus programas, rs.

 

  • icTxt.ico
Citar

O arquivo de ícone usado por padrão para os arquivos de texto, no Windows Explorer, quando feita a associação de arquivos. Os outros ícones estão dentro do ImageRes.dll, e a idéia é, em versões futuras, recolocar esse ícone dentro da DLL. Ao fazer isso, deve-se alterar as referências a ele no código da associação de arquivos, indicando o caminho correto da DLL com o índice do ícone, dentro dela.

 

  • ImageRes.dll
Citar

Já comentado acima, inclui os ícones para os tipos de arquivos que o Mep Texto se associa ao clicar nos botões de associação, na tela das opções. Você pode trocar os ícones usando editores de recursos, como o Resource Hacker. Esta DLL não tem funções, apenas armazena os ícones, por isso não é fornecido o código fonte dela – até porque nem tenho mais, usar programas como o Resource Hacker para editar recursos é muito mais cômodo do que usar os ambientes de programação em geral 🙂 (exceto em alterações em lotes, claro).

 

  • license.txt
Citar

Óbvio, a licença de uso. O conteúdo deste arquivo será exibido dentro do campo de texto na tela de licença de uso. Você não pode removê-lo nem modificá-lo.

 

  • sobrew.mep
Citar

É uma página HTML, novamente aqui com a extensão “.mep”, rs. O conteúdo dela será exibido na tela “Sobre”, dentro do campo de visualização compartilhado, puxado do controle Active-X do Internet Explorer. Você pode remover este componente e as referências dele se você for daqueles “anti-IE”. Como o Windows 98 ou superior vem com o IE integrado, não há problema nenhum em usar esse controle nos programas. E em tempo de programação é muito fácil manipulá-lo, pois o Delphi 5 ou superior já vem com “suporte integrado”, digamos (exceto se você tiver optado pela instalação mínima, ao instalar o Delphi). Talvez devido a isso, o Mep Texto não rodou no Windows que roda do CD, que não tem o IE pronto para uso.

 

  • ic.exe
Citar

Esse arquivo é um exemplo claro e aplicado da POG, “Programação Orientada a Gambiarras”, rs. Ele basicamente cria atalhos para o editor, puxando como base a pasta do programa, sem exibir nada para o usuário. Os atalhos feitos durante a instalação são criados pelo instalador, mas depois de instalado, há um item “Instalar atalhos”, no menu “Configurar” e também na aba “Associação de arquivos” da tela das opções. Esses itens chamam esse arquivo, para, por exemplo, restaurar atalhos que o usuário possa ter perdido (na área de trabalho, menu Iniciar, etc). Esse arquivo é um arquivo SFX comprimido pelo WinRAR, visto que o WinRAR possui função de criação de atalhos nos auto-extraíveis. Fiz dessa forma porque eu queria esse item, de recriação de atalhos, na interface do programa. Mas nenhuma das funções que eu tinha em mãos criaram atalhos corretamente; a idéia é aplicar funções para isso nas versões futuras, removendo então este arquivo. Lógico que o Mep Installer/Inno Setup têm funções de criação de atalhos, eu poderia muito bem ter pego deles, mas… Na falta de tempo, optei por usar o arquivo gerado com o WinRAR; personalizando, é claro, o nome de destino do atalho e a referência ao “MepTexto.exe” na pasta atual. Para o usuário final não importa, os atalhos serão criados normalmente. Tá vendo como é um exemplo de POG? rs

 

Claro que você pode remover ou alterar esses arquivos (exceto o “LICENSE.TXT”!), ou ainda adicionar novos. O melhor, no caso de Windows, seria mesmo criar um instalador, que basicamente copiasse o conteúdo dessa pasta para uma pasta do tipo “C:Arquivos de programasSeu Programa” e criasse atalhos, chamando o editor com o parâmetro “/assoc” logo no final da instalação, e chamando-o na desinstalação com “/desassoc” e depois novamente, com “/reset”.

A instalação eu faço com o Mep Installer, uma versão personalizada por mim do Inno Setup (é um “fork” do Inno, basicamente, mas de código fechado). Basta usar o arquivo de extensão “.mpi” fornecido no pacote do código fonte, compilando-o no Mep Installer, para gerar o instalador. Se você quiser usar o Inno Setup, por ser de código aberto (ou por qualquer outro motivo), pode usar este mesmo arquivo, pois eles são bem compatíveis, exceto um ou outro item (mas mesmo assim bastará remover ou comentar as linhas que não funcionarem no Inno Setup). Outro instalador bom e open source é o da Nullsoft, o NSIS (sim, da mesma dona do Winamp!), mas o script de projeto dele não tem nada a ver com o do Inno e você deveria criar o instalador do zero.

Nota: para quem se perguntar porque o Mep Installer é fechado, sendo baseado no Inno Setup, que é open source… Primeiro, a licença de uso do Inno não impõe esta restrição, ele não é GPL, o autor pede apenas para manter os créditos. Segundo, que sendo open source, não dá para confiar totalmente nas funções de proteção por senha ou número serial da forma como são aplicadas. Eu mudei estas funções, coloquei proteção nativa por número serial fixo, verificações redundantes, personalizei o visual com base num instalador que eu tentava desenvolver antes de conhecer o Inno, deixando a instalação super fácil para os usuários finais… Além de ter opcionalmente a interface de compilação em português 🙂 E como apliquei medidas de proteção, não quis redistribuir o código fonte; mas ele é freeware.

Mesmo sendo um aplicativo de pequeno porte, digamos, mas de uso geral, eu penso muito no sistema do usuário, em respeito a eles, e espero que você aja assim como programador também. Configurações de opções? Grave sob a chave HKEY_CURRENT_USER, é mais prático e melhor. Se você gravar sob a HKEY_LOCAL_MACHINE, todos os usuários ficarão com as mesmas opções, e o pior: usuários limitados não podem gravar dados na maioria dos locais sob esta chave, o que resultará em erros exibidos ao abrir e ao fechar o editor, além de que isso provoca a saída do procedimento atual criado pelo Delphi, não carregando todas as opções posteriores ao ponto em que ocorreu o erro – ao ponto em que a chave não pôde ser gravada. Evite também gravar arquivos nas pastas do Windows ou sob a Arquivos de programas. As versões inciais do Mep Texto gravavam as configurações num arquivo INI, que ficava na pasta do programa (em alguns releases, na pasta do Windows). Como inconvenientes, além de as mesmas opções serem aplicadas a todas as contas, os usuários limitados recebiam mensagens de erro ao abrir e fechar o editor, se a partição da pasta do programa estivesse formatada em NTFS, que é o padrão no Windows. Isso simplesmente porque não teriam direito de escrita nessa pasta. Uma alternativa, caso você prefira salvar as opções num arquivo INI, é gravar o arquivo em uma pasta do usuário, como a “Application Data”, por exemplo, dentro da pasta do perfil dele. Esses caminhos podem ser encontrados no registro, para que você recupere a pasta correta (dê uma curiada na chave “HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Explorer Shell Folders”, e carregue com a função LeReg, por exemplo, para pegar o valor correto da pasta, independentemente do idioma do Windows ou da partição e local da pasta). Gravar o arquivo de configurações na mesma pasta do programa só é útil em programas que serão “móveis”, por exemplo, para rodar o editor a partir de um pen drive, sem alterar nada no computador. Uma dica caso você queira fazer isso, é alterar as funções “EscreveReg” e “LeReg”, da unit “MepUtil.pas”. Assim o programa continua chamando elas, nas inúmeras referências que tem às mesmas, mas elas redirecionariam o que seria gravado no registro para um arquivo INI. Se você fosse alterar todas as ocorrências delas, teria um trabalho absurdamente maior.

Mesmo com todos esses cuidados, uma coisa será inevitável… Ao desinstalar o programa, mesmo que o desisntalador seja programado para remover arquivos de configuração nas pastas do usuário, ele removerá apenas do perfil do usuário que rodar o desinstalador. As outras contas continuarão com as chaves no registro e/ou com os arquivos no HD. No caso do registro, normalmente isso é verificado e limpo ao passar limpadores de registro, que quase sempre varrem a chave “HKEY_CURRENT_USER Software”, em busca de programas que não existem mais. Já no caso dos arquivos, desconheço uma forma de limpá-los, a menos que se crie um limpador e o programa oriente a cada usuário fazer a limpeza. Mas isso seria praticamente insignificante, pois os arquivos de configuração seriam pequenos e únicos para cada usuário, além do que não é comum um computador doméstico ter muitas contas de usuário. Isso é claro, vale apenas para os usuários que chegaram a abrir o programa, pelo menos uma vez.

 

O futuro deste programa

Sonhar nunca é demais, não é? Eis algumas coisas que eu gostaria de implementar ou ver no programa, e trabalho em cima disso ao longo dos tempos sempre que posso, para trazer cada vez mais benefícios aos usuários dele:

  • Auto-correção e verificação ortográfica. O componente SynEdit inclui um item para substituição automática de textos ao digitar, atualmente não usado neste programa, mas sinto falta de um corretor propriamente dito, que destaque as palavras, tenha um dicionário, etc.
  • Ambiente MDI com apenas o campo de edição no formulário do editor. Atualmente o formulário do editor carrega uma instância completa dos menus, componentes visuais, etc. da interface. O ideal seria que os menus, abas e etc. ficassem no formulário “pai”, sendo “fixos”, como ocorre na maioria dos programas MDI. Eu não apliquei isso pois muita coisa precisaria ser alterada. Ao portar a versão 3 do Mep Texto para a 5, basicamente transferi o “frmMepTexto” de formulário principal para secundário e do tipo “MDIChild”, criando um novo vazio (o “pai”) e deixando ele como principal. Manter apenas o editor e uns poucos componentes diretamente relacionados a ele no formulário do editor, economizaria diversos KBytes de memória, otimizando bastante o desempenho quando muitas abas estivessem abertas. Mas mesmo assim, por ser um programa leve, isso não atrapalha tanto. No entanto, estar com 3 abas abertas é diferente de estar com 3 janelas, é claro que da forma que está ele já consome menos memória. Só explicando aqui, pulei a versão 4, que foi fracassada, usando um componente de skins meio problemático. Ela também era SDI, como a 3, e não MDI (não permitia abrir vários arquivos na mesma janela).
  • Melhor suporte a unicode. Não tenho experiência com isso em termos de programação no Delphi, mas gostaria de colocar algo para escolher entre unicode e ASCII ao salvar. Alguns poucos problemas ocorrem, mas ainda bem que o SynEdit normalmente abre e lê corretamente arquivos gerados por programas no Linux – melhor que o Bloco de notas do Windows, para isso, onde normalmente ou funciona os acentos e os textos ficam grudados, sem quebras de linha, ou fica o contrário.
  • Suporte multilíngue! Pensei em aplicar uma vez mas novamente, devido o tempo e trabalho que isso me tomaria, deixei para depois. Não é por “preguiça”, mas daria muito trabalho mesmo, e para fazer um negócio às pressas ou mal feito, simplesmente prefiro não fazer :)*
  • E portá-lo para o Linux, senão diretamente, pelo menos tendo participação no desenvolvimento. Não é que eu divulgue ou faça propaganda do Mep Texto demais, é que ele é considerado por quem testa, realmente superior a editores como o KEdit ou GEdit. Ele perde no quesito corretor ortográfico, por exemplo, e na quantidade de linguagens suportadas na coloração de sintaxe, mas nas outras áreas se mostra muito mais prático e agradável. Quanto à quantidade de linguagens suportadas na coloração de sintaxe, é questão de tempo também, o SynEdit vem com vários componentes prontos, eu não apliquei para linguagens menos usadas para não deixar o editor mais pesado, e não tive reclamações de usuários querendo essas outras linguagens até o momento…

 

Boa sorte! E não se esqueça de me enviar as modificações se você fizer algo significante ou simplesmente interessante 🙂

 

Créditos ao Julio Cesar Bessa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  



  • FIQUE POR DENTRO!
    -Fique por dentro das regras da nossa comunidade! Para mais informações clique aqui!

    - CONFIRA NOSSOS EVENTOS: Premiações em acessórios gamers e gift cards. Para mais informações clique aqui!  
  • streamers parceiros!





×