MNote2 – Correções Versão 2.10

Estou preparando uma nova versão do editor MNote2.

Com algumas correções identificadas, o MNote2, vem com algumas melhorias.

  • Correção arquivos de Configuração
  • Correção nas rotinas associadas a TSynCompletion
  • Inclusão de rotinas associadas a TSynAutoComplete
  • Correção de carga de arquivos por parâmetros em prompt
  • Libs de acesso ao Banco Mysql/Postgres/Sqlite

Correção arquivos de Configuração

Este problema foi identificado, pois os arquivos de configuração estavam em pasta que exigia permissão de administrador para serem modificados.

Houve uma alteração no código dos arquivos de configuração, permitindo que os arquivos sejam gravados sem permissão especial. Tambem foi agregado condicionais de compilação (diretivas) para permitir customização caso necessário para ambientes heterogênios.

Fontes modificados:

  • setmain.pas
  • setbanco.pas
  • setFolder.pas
  • setMQuery.pas

Tipo de mudança

Foi criado uma variavel

 FPATH : string;

Foram adicionados os caminhos do FPATH, nas funções IdentificaArquivo e SalvaContexto, dos fontes acima.

Correção nas rotinas associadas a TSynCompletion

Este problema ocorre na indicação do código para apontamento da classe TSynCompletion.

O ponto correto é através da classe TItem, na propriedade synCompletion.

No código havia dois pontos divergentes.

Inclusão de rotinas associadas a TSynAutoComplete

Neste processo associado, inclui código da classe TSynAutoComplete, que é um complemento da estilização de código, onde o sistema propoem blocos associados a tipo.

Esta rotina fica criada na main.pas, mas é indicada na Item.pas.

AutoComplete : TSynAutoComplete; 

O código é criado na função NovoItem, onde é criado o objeto, que posteriormente é manipulado diretamente pela classe TItem.

function TfrmMNote.NovoItem():TTabSheet;
var
   tb : TTabSheet;
   syn : TSynEdit;
   item : TItem;
   SynCompletion : TSynCompletion;
   synAutoComplet : TSynAutoComplete;
begin
  tb := pgMain.AddTabSheet();

  syn := TSynEdit.Create(tb);
  syn.Parent := tb;
  syn.Align:= alClient;
  syn.Lines.Clear;
  syn.PopupMenu := popSysEdit;
  syn.OnChange:= @synChange;
  (*Complete*)
  SynCompletion := TSynCompletion.Create(self);
  SynCompletion.Editor := syn;
  SynCompletion.OnCodeCompletion:=@SynCompletion1CodeCompletion;
  SynCompletion.OnExecute:=@SynCompletion1Execute;
  SynCompletion.OnSearchPosition:=@SynCompletion1SearchPosition;

  (*Autocomplete*)
  synAutoComplet := TSynAutoComplete.create(self);
  synAutoComplet.Editor := syn;

  tb.PopupMenu := popFechar;
  tb.Tag:= Integer(pointer(syn)); //Guarda o Sys
  tb.ImageIndex:=0;

  item := TItem.create();
  item.AtribuiNovoNome();
  item.synCompletion:= SynCompletion;    //Ponteiro de SynCompletion
  item.AutoComplete :=  synAutoComplet;  //Ponteiro de synAutocompletion

  syn.Tag:= longint(pointer(item));
  tb.Caption:= item.Name;
  pgMain.Refresh();
  application.ProcessMessages;
  result := tb;
end;             

Correção de carga de arquivos por parâmetros em prompt

Neste problema, identificamos que ao tentar realizar a carga do programa por parâmetro o mesmo não era iniciado.

Após analise, identificamos que o problema do programa era associado ao painel.

O programa estava pegando sempre o item atual, desta forma ele modificava o item errado.

Uma correção foi implementada.

      tb := NovoItem();

      //tb := pgMain.ActivePage;
      syn := TSynEdit(tb.tag);
      try
        item := Titem(syn.tag);
        fSynCompletion := item.synCompletion;
        fAutoComplete := item.AutoComplete;
        syn.Lines.LoadFromFile(arquivo);

        item.ItemType := classificaTipo(arquivo);            

Foi mudado o NovoItem, passando de Procedure para Function, onde passo o tb diretamente, sem necessidade de capturar.

tb := pgMain.ActivePage;

O erro era justamente na rotina acima. Que foi comentada nos testes e posteriormente apagado.

Libs de acesso ao Banco Mysql/Postgres/Sqlite

Preparação para próxima versão, onde já contempla libs de conexão de banco de dados.

Criação da Pasta Libs, contemplando arquivos de conexão há bancos de dados.

Revisão e lançamento das versões

As correções serão lançadas em master no git e estarão disponíveis na versão 2.10.