[Notes2-team] Planos do n2 =?ISO-8859-1?Q?Vers=E3o_0=2E0=2E3?=
Brought to you by:
andersonrb
From: Anderson R. B. <no...@ig...> - 2003-08-13 04:11:18
|
Ol=E1 pessoal, estive dando umas modificadas no nosso planejamento, atualizando ele com as discuss=F5es que tivemos ultimamente e dando uma meiorada. Modifica=E7=F5es - Adicionado se=E7=E3o EDITANDO TEXTO >> FAVORITOS, EDITANDO TEXTO >>=20 TASKLIST, E EDITANDO TEXTO >> CLIPBOARD HISTORY; - Adicionada se=E7=E3o A AJUDA DO NOTES 2; - Adicionada a se=E7=E3o NAVEGANDO NO C=D3DIGO {CLASSVIEW, COMBOS, ETC.} - Modifica=E7=F5es na parte sobre o analisador de erros para incluir a=20 capacidade; dele de auto completar (a parte sobre a implementa=E7=E3o est=E1 meio enr= olada=20 ainda); - V=E1rias modifica=E7=F5es tentando deixar o texto menor, mais objetivo = e claro; Planejamento do Notes 2 Editando texto Para poder atender a todas as sugest=F5es feitas pelos usu=E1rios, a Equi= pe=20 do Notes decidiu construir um componente (controle) de edi=E7=E3o pr=F3pr= io=20 (baseado no famoso componente de edi=E7=E3o SynEdit). Este componente de=20 edi=E7=E3o funcionara no Windows e no Linux exatamente da mesma forma. As= =20 capacidades dele s=E3o discutidas abaixo: Colora=E7=E3o de c=F3digo Este =E9 o pedido mais frequente dos usu=E1rios e, com a constru=E7=E3o d= o novo=20 componente, poderemos atend=EA-lo. O componente usar=E1 defini=E7=F5es qu= e=20 ficar=E3o todas em arquivos XML. Isto significa que a colora=E7=E3o de c=F3= digo=20 ser=E1 altamente flex=EDvel, podendo ser configurada em detalhes pelo=20 usu=E1rio inclusive permitindo que a comunidade adicione ao Notes suporte= =20 a linguagens n=E3o suportadas pela distribui=E7=E3o padr=E3o. Implementa=E7=E3o: a implementa=E7=E3o da colora=E7=E3o de c=F3digo se da= r=E1 de forma=20 semelhante a de um editor para Linux chamado Kate. Assim, o texto seria=20 dividido em blocos definidos atrav=E9s de arquivos XML (por exemplo:=20 coment=E1rio, string, inteiro, etc.) e n=E3o por simples tokens separados= =20 por espa=E7os em branco. Para evitar que o parser fique lento, sugere-se=20 que, como no Kate, existam regras pr=E9-prontas para detectar alguns tipo= s=20 de blocos: inteiros, hexadecimais, octais, ponto flutuante, keyword=20 (pr=E9-definindo que uma keyword =E9 uma string sem espa=E7os, iniciada p= or=20 uma letra e que permite al=E9m de letras, n=FAmero e o caracter "_"; as=20 keywords s=E3o fornecidas pelo arquivo xml). Regras para diferenciar bloc= o=20 de textos poder=E3o ser facilmente criadas tanto usando express=F5es=20 regulares como tags que permitem procurar por strings exatas, por um=20 =FAnico caracter, por dois caracteres, por qualquer um dos caracteres=20 listados, e pelo intervalo entre uma string/caracter e outra. Este=20 modelo foi escolhido por se encaixar perfeitamente nas id=E9ias da equipe= =20 e por que o modelo =E9 altamente flex=EDvel podendo ser usado para defini= r a=20 colora=E7=E3o de qualquer linguagem de programa=E7=E3o - seja de script, = de=20 marca=E7=E3o, etc. Analisador e corretor de erros / auto-completar O editor poder=E1 detectar erros no c=F3digo enquanto o usu=E1rio digita=20 dispensando o uso de compiladores e debugers para a localiza=E7=E3o e=20 corre=E7=E3o de erros simples de programa=E7=E3o. Al=E9m de detectar os e= rros, o=20 editor poder=E1 sugerir corre=E7=F5es baseado nas estruturas padr=F5es da= =20 linguagem que o usu=E1rio estiver usando. O corretor poder=E1 ser usado p= elo=20 usu=E1rio para completar certas constru=E7=F5es. Por exemplo, um usu=E1ri= o=20 poder=E1 digitar "if (x=3D=3Dy" e pedir para o editor auto-completar o c=F3= digo,=20 o que o deixaria semelhante a "if (x=3D=3Dy) { }". Implementa=E7=E3o: o analisador buscaria por estruturas chaves=20 (principalmente aquelas de controle, como if, while, for, etc.) que=20 estariam definidas em um arquivo XML da linguagem. Por exemplo, ao=20 encontrar a palavra-chave if, ele testaria o bloco de c=F3digo para ver s= e=20 ele est=E1 de acordo com os modelos que ele conhece. Se o modelo n=E3o=20 estiver de acordo com a estrutura que o analisador conhece ele marcar=E1 = o=20 trecho de c=F3digo como errado. O usu=E1rio poder=E1 corrigir o erro=20 manaulmente ou atrav=E9s de sugest=F5es dadas pelo analisador. As sugest=F5= es=20 ser=E3o feitas de forma a transformar o bloco reconhecido como errado na=20 estrutura que ele conhece que for mais parecida com o bloco de c=F3digo. Debugando O editor teria a capacidade de setar breakpoints quando informado de que=20 a linguagem pode ser debugada pelo Notes. Al=E9m disto, erros de=20 compila=E7=E3o seriam marcados, quando poss=EDvel, de forma semelhante ao= s=20 erros marcados pelo analisador. Folding Alguns dos editores mais novos permitem que o usu=E1rio esconda certas=20 partes do c=F3digo. =C9 semelhante a usar o Windows Explorer (ou o=20 Konqueror/Nautilus no linux) s=F3 que no lugar de poder navegar certas=20 pastas e arquivos, pode-se navegar pelas partes do seu c=F3digo. O foldin= g=20 poder=E1 ser controlado pelo usu=E1rio. Bastar=E1 selecionar algumas linh= as de=20 c=F3digo que um pequeno =EDcone aparecer=E1: clicando nele aquela parte d= o=20 c=F3digo ser=E1 escondida, bastando clicar nele novamente para mostrar a=20 parte escondida novamente. As =E1reas de folding poder=E3o ser marcadas=20 tamb=E9m manualmente: bastar=E1 adicionar "{{{" para iniciar uma =E1rea d= e=20 folding e "}}}" para fech=E1-la (sem as aspas). Selecionando as linhas e=20 clicando no =EDcone para esconder o trecho o Notes adicionar=E1 estes=20 marcadores automaticamente. Implementa=E7=E3o: ser=E1 usado como base o c=F3digo para folding do edi= tor=20 JediEdit, j=E1 que ele n=E3o difere muito das especifica=E7=F5es de foldi= ng=20 desejado pela equipe. Modifica=E7=F5es ser=E3o feitas conforme necess=E1r= io para=20 que o comportamento descrito acima seja alcan=E7ado. Intellisense/Code completion, ToolTip com argumentos e Templates O editor poder=E1 completar nomes de classes, constantes, etc. como nas=20 IDEs da Microsoft=AE e da Borland=AE. Al=E9m disto, mostrar=E1 tooltips (dicas) mostrando os par=E2metros de m=E9= todos=20 e fun=E7=F5es quando o usu=E1rio teclar "(" (ou outro caracter dependendo= da=20 linguagem). Para completar, o editor suportar=E1 templates. Estes s=E3o=20 palavras especiais definidas pelo usu=E1rio que s=E3o transformadas pelo=20 editor (quando invocado) em uma string maior. Por exemplo, ser=E1 poss=ED= vel=20 definir a palavra "class" e ent=E3o invocar a fun=E7=E3o para que o edi= tor=20 substitua class pela defini=E7=E3o de classe da linguagem que estiver sen= do=20 editada. Implementa=E7=E3o: ????????????? *Favoritos* O Notes 2 usar=E1 um modelo de bookmakers diferente do usado em algumas=20 IDEs (como o Delphi, Context, etc.). Ao inv=E9s de limitar o usu=E1rio a=20 nove bookmakers nomeados simplesmente com n=FAmeros de 0 a 9 - que for=E7= am=20 o usu=E1rio a lembrar a correspond=EAncia entre nome do bookmaker e parte= do=20 c=F3digo de cabe=E7a - a equipe optou por usar um modelo semelhante ao us= ado=20 pelo editor jEdit. O usu=E1rio simplesmente dir=E1 ao Notes 2 (clicando = no=20 menu, usando atalhos, etc.) em que linha do c=F3digo ele quer que o Notes= =20 2 crie o bookmaker. O Notes 2 criar=E1 um bookmaker para aquela linha e=20 permitir=E1 ao usu=E1rio voltar a aquela linha de v=E1rias formas: ele po= der=E1=20 seleciona-lo na lista de bookmakers - cada item da lsita ter=E1 o formato= =20 [n=FAmero da linha]: "[in=EDcio da linha]"... (por exemplo: 42 : "if (x=3D= =3Dy){=20 // fechamos o prog"...) - ou usar itens como "pr=F3ximo bookmaker" e=20 "bookmaker anterior". Os bookmakers de cada arquivo ser=E3o salvos no=20 arquivo que cont=E9m o projeto que est=E1 sendo editado. Assim o usu=E1ri= o=20 ter=E1 eles sempre =E0 m=E3o, mesmo ap=F3s fechar e abrir o arquivo. *TaskList* As tarefas ficar=E3o anotadas diretamente no c=F3digo fonte, atrav=E9s de= =20 coment=E1rios iniciados por certas palavras chaves (como "TODO:" por=20 exemplo). Estes coment=E1rios ser=E3o coletados e mostrados no gerenciado= r=20 de tarefas. Como as tarefas ficar=E3o no pr=F3prio c=F3digo, as tarefas=20 poder=E3o ser facilmente compartilhadas pela equipe mesmo que algu=E9m da= =20 equipe resolva n=E3o usar o Notes 2. *Clipboard History* O Notes guardar os =FAltimos trechos de c=F3digo copiados para a =E1rea d= e=20 transfer=EAncia, permitindo ao usu=E1rio colar estes trechos ou reenvi=E1= -los=20 para a =E1rea de transfer=EAncia. Split O velho edit do DOS e outros editores atuais permitem que o componente=20 de edi=E7=E3o seja dividido em 2. No Notes 2 est=E1 capacidade estar=E1 presente, podendo dividir o editor=20 tanto horizontalmente quanto verticalmente, quantas vezes o usu=E1rio qui= ser. Implementa=E7=E3o: ???????????? Navegando no C=F3digo *ClassView* Permitir=E1 ao usu=E1rio visualizar a estrutura do c=F3digo e navegar por= ela.=20 O ClassView mostrar=E1 todas as classes do arquivo que estiver sendo=20 editado, com todos os m=E9todos, propriedades, campos, etc. *Barra com combos para navega=E7=E3o* O usu=E1rio poder=E1 navegar pelo c=F3digo usando uma barra de navega=E7=E3= o. Esta=20 barra ter=E1 dois bombos - um listando todas as classes do c=F3digo e out= ro=20 mostrando os m=E9tos/propriedades da classe selecionada no primeiro combo= .=20 Selecionando os itens de cada combo o usu=E1rio poder=E1 pular rapidament= e=20 para os trechos do c=F3digo que quiser editar. * Incremental search* O Incremental Search ser=E1 um localizar diferente: permitir=E1 ao usu=E1= rio=20 ver os resultados da localiza=E7=E3o enquanto digita o que quer localizar= .=20 Por exemplo, se o usu=E1rio quiser localizar "int", quando digitar "i" o=20 Notes 2 mostrar=E1 visualemnte todas as ocorr=EAncias de "i" no texto;=20 quando o usu=E1rio digitar o pr=F3ximo carater ("n") o Notes 2 mostrar=E1= =20 todos os "in" existentes no texto; e assim por diante. *Indo e vindo nos locais editados* Com o Notes 2 o usu=E1rio poder=E1 voltar para as partes do c=F3digo que = rec=E9m=20 editou. Toda vez que o usu=E1rio come=E7ar a editar uma parte de c=F3digo= =20 muito distante daquela que ele estava editando anteriormente, o Notes=20 guardar=E1 a localiza=E7=E3o da regi=E3o que ele estava editando. Se o us= u=E1rio=20 precisar voltar para ela, bastar=E1 clicar numa op=E7=E3o do menu - ele n= =E3o=20 precisar=E1 lembrar em que linha que ele estava. O Notes guardar=E1 a=20 localiza=E7=E3o de todas as =FAltimas partes editadas permitindo ao usu=E1= rio=20 trabalhar em partes diferentes do c=F3digo sem se perder. A Interface A interface do Notes 2 ser=E1 altamente configur=E1vel. Isso ocorrer=E1 p= or=20 que menus e toolbars ser=E3o criados a partir de arquivos XML, ao inv=E9s= de=20 estarem definidos dentro do bin=E1rio. Al=E9m disto, o Notes 2 suportar=E1= =20 skins (temas) que poder=E3o alterar os controles (bot=F5es, campos de=20 edi=E7=E3o, combos, etc.) e os =EDcones padr=F5es. Apesar de altamente=20 configur=E1vel, continuar=E1 simples de usar, pois sua organiza=E7=E3o se= guir=E1 a=20 forma a qual os programadores j=E1 est=E3o acostumados. Implementa=E7=E3o: existir=E3o dois arquivos xml, um que define os menus = e=20 outro que define as toolbars. As a=E7=F5es dos itens dos menus/toolbars=20 ser=E3o definidas pela tag "onClick" de cada um dos itens. Dito de outra=20 forma, a string definida em onClick =E9 que dir=E1 ao notes o que ele dev= e=20 fazer quando o usu=E1rio clicar no item. O Notes trar=E1 muitos m=E9todos= =20 pr=E9-definidos. Estes m=E9todos poder=E3o ser chamados usando uma string= =20 contendo "Notes." seguido do nome do m=E9todo. Por exemplo, ao detectar u= m=20 click no primeiro item do primeiro menu, o Notes l=EA a string contida na= =20 tag onClick do item (seria bom guardar esta string no pr=F3prio intem).=20 Digamos que a string =E9 esta: "Notes.New()". Este m=E9todo faz o Notes=20 abrir o di=E1logo para novos arquivos e projetos - que =E9 o que ocorre=20 depois de um parser interno entender o que significa a string. Este=20 mesmo parser ser=E1 usado para enteder todos os m=E9todos onClick. Al=E9m= dos=20 m=E9todos providos pelo Notes, estar=E3o dispon=EDveis os m=E9todos das=20 extens=F5es instaladas pelo usu=E1rio. A extens=F5es ser=E3o sempre respo= ns=E1veis=20 por adicionar itens a menus/toolbars usando as op=E7=F5es do Notes eXtens= ion=20 Installer. Digamos que o usu=E1rio queira usar uma extens=E3o chamada=20 "SuperSearch" que adiciona ao Notes um di=E1logo para fazer pesquisa de=20 milh=F5es de formas diferentes. O usu=E1rio n=E3o ter=E1 muitos problemas= para=20 isto: basta chamar o Notes eXtension Installer e escolher que extens=E3o=20 ele quer instalar. De acordo com o script xml de instala=E7=E3o da extens= =E3o,=20 o eXtension Installer adicionar=E1 itens aos menus, aos toolbars, ao=20 ToolBox, etc. Estes itens tamb=E9m ter=E3o a tag onClick, exatamente com= o=20 os itens que chamam os m=E9todos do Notes. Mas as strings onClick =20 come=E7ar=E3o com "Extension." ao inv=E9s de "Notes." e ser=E3o seguidas = de sua=20 categoria (comandos, di=E1logos, etc.), de seu nome e, por =FAltimo, do=20 m=E9todo contido na extens=E3o a ser chamado. (Nem todas as extens=F5es=20 poder=E3o ser chamadas deste modo, pois algumas delas n=E3o adicionam nov= os=20 m=E9todos ao notes, mas sim colora=E7=E3o de syntaxe para alguma nova=20 linguagem, templates, etc.) Um exemplo seria um comando, implementado na=20 forma de um script em PHP, que formata o c=F3digo Java de acordo com os=20 estilos recomendados pela Sun=AE. A string para chamar esta extens=E3o se= ria=20 a seguinte: "Extension.Command.PhpJavaFormater.Execute()". Todas as=20 extens=F5es que adicionam m=E9todos ao Notes poder=E3o ser chamadas pelo=20 m=E9todo "Execute()". Em scripts este m=E9todo n=E3o existe, mas o Notes=20 entende que a extens=E3o =E9 um script e o executa. No caso de plugins=20 (DLLs, DSOs, BPLs), este m=E9todo dever=E1 ser implementado ou ele dever=E1= =20 usar o arquivo extension.xml para pedir ao Notes que chame outro m=E9todo= =20 no lugar dele. As complexidades ficam sempre a cargo do Notes, pois os=20 usu=E1rios e os desenvolvedores de extens=F5es podem sempre usar um m=E9t= odo=20 padr=E3o para chamar as extens=F5es. Como ser=E1 a interface? Num programa t=E3o configur=E1vel quanto o Notes 2, esta =E9 uma pergunta= =20 dif=EDcil de responder. Temos pensando em uma estrutura assim (de cima=20 para baixo): menus; barra de ferramentas; tabs (para mudar entre os=20 arquivos abertos) e um bot=E3o seletor de projetos (no Notes 2 voc=EA=20 poder=E1 abrir v=E1rios projetos ao mesmo tempo, clique no bot=E3o para m= udar=20 de um para outro); na esquerda um painel vertical onde ficaram v=E1rias=20 ferramentas (gerenciador de projetos, gerenciador CVS, etc.) e na=20 direita a =E1rea de edi=E7=E3o; um painel horizotal (abaixo do editor, ma= s n=E3o=20 abaixo do painel vertical) com outras ferramentas (sa=EDda de=20 compiladores, gerenciador de tarefas, etc.); e, por =FAltimo, a barra de=20 status. Implementa=E7=E3o: ??? aguardando sugest=F5es sobre como os temas poder=E3= o ser=20 implementados ??? Dando poder ao teclado A maioria dos programadores usa muito mais o teclado que o mouse - o que=20 difere uma IDE como o Notes 2 de outros aplicativos. Ent=E3o prometemos=20 desde j=E1 dar uma aten=E7=E3o especial a ele. No caso do editor, AutoIn= dent,=20 SmartIndent, SmartHome, SmartEnd, SmartPaste ajudar=E3o a diminuir o temp= o=20 que um programador gasta escrevendo e formatando o c=F3digo. Al=E9m dist= o,=20 o editor poder=E1 usar features normalmente s=F3 encontradadas em editore= s=20 da Borland=AE, como as setas que podem se movimentar livremente no texto.= =20 Al=E9m disto tudo, as teclas de atalho poder=E3o ser totalmente=20 configuradas. Pensamos at=E9 em permitir que algumas delas mudem conforme= =20 a linguagem que se est=E1 editando!!! Implementa=E7=E3o: algumas destas caracter=EDsticas j=E1 vem implementada= s no=20 SynEdit, componente que modificaremos para construir o controle de=20 edi=E7=E3o. No caso do SmatIndent deveremos permitir que seja configurad= o,=20 como todo o resto, atrav=E9s de um arquivo XML para cada linguagem. O=20 arquivo poder=E1 conter at=E9 diferentes estilos de indenta=E7=E3o que po= der=E3o=20 ser escolhidos pelo usu=E1rio como aquele que ele quer usar. No caso das=20 teclas de atalho, bastar=E1 reusarmos o parser das tags onClick referido=20 na descri=E7=E3o da implementa=E7=E3o da interface para que fa=E7amos ela= s=20 altamente configur=E1veis. Integra=E7=E3o Sendo programadores, estamos cientes de que um editor de c=F3digo n=E3o =E9= a=20 =FAnica ferramenta necess=E1ria durante o desenvolvimento. Por isto o No= tes=20 2 ter=E1 uma boa integra=E7=E3o com compiladores, debugers, CVS, FTP, etc= . =20 Outros IDEs fazem isto construindo novas ferramentas (quase sempre=20 propriet=E1rias) diferentes daquelas que os programadores est=E3o=20 acostumados a usar. Queremos que o Notes 2 se integre com as ferramentas=20 que est=E3o a=ED e que voc=EA j=E1 sabe usar. Nada de inventar a roda e=20 obrig=E1-lo a aprender algo que voc=EA n=E3o quer. Implementa=E7=E3o: a implementa=E7=E3o depende em larga escala aqui de um= a=20 classe ou procedures que nos permitam ler e escrever em programas de=20 modo texto - ou seja, comunicarmos atrav=E9s de pipes. =C9 isto que=20 precisaremos para nos integrarmos com CVS, compiladores e debugers.=20 Alguns aplicativos (como o cvs e o jdb, debuger do java) exigem que voc=EA= =20 al=E9m de ler sua s=E1ida (stdout) possam tamb=E9m escrever nela (stdin).= A=20 partir deste c=F3digo ser=E1 necess=E1rio criar o suporte para cada ferra= menta=20 de forma separada, j=E1 que cada um deste possui comandos completamente=20 diferentes. No caso de debugers e compiladores este suporte poderia ser=20 feito atrav=E9s de extens=F5es: al=E9m de possibilitar que suporte a novo= s=20 compiladores/debugers seja facilmente adicionado, isto diminuiria o=20 n=FAmero de forms linkados diretamente no bin=E1rio. As extens=F5es usari= am=20 APIs do Notes para que pudessem se comunicarem com os aplicativos por=20 pipes de forma mais f=E1cil e multi-plataforma. No caso do CVS, o suporte= =20 poderia ser interno, j=E1 que trata-se de algo amplamente usado. O mesmo=20 com o FTP - mas neste a implementa=E7=E3o n=E3o precisaria de um programa= =20 externo para rodar (existe uma biblioteca SL chamada Synapse para=20 Delphi/Kylix que nos permitir=E1 fazer isto facilmente). Compiladores e debugers O Notes suportaria por padr=E3o os compiladores mais usados no windows=20 (vc++, delphi, free pascal, gcc, java, etc.) e no linux (gcc e suas=20 varia=E7=F5es, java, kylix, etc.). Para cada compilador (o compilador do=20 projeto ser=E1 escolhido pelo usu=E1rio nas propriedades do projeto) o No= tes=20 exibir=E1 um di=E1lgo diferente, permitindo que o usu=E1rio configure tod= as as=20 op=E7=F5es do compilador como se estivesse usando uma IDE espec=EDfica pa= ra a=20 sua linguagem. Quanto aos debugers, seriam suportados aqueles mais=20 usados, como o GNU Debuger, o jdb, etc.=20 CVS O gerenciado de CVS do Notes permitir=E1 que voc=EA use esta ferramenta d= e=20 maneira f=E1cil e sem sair da IDE. O gerenciador estar=E1 integrado ao=20 resto do Notes, permitindo por exemplo que um novo projeto seja criado a=20 partir do downlod (checkout) de fontes de um servidor local ou remoto. =20 Assim voc=EA podecom facilitade come=E7ar a participar de um dos muitos=20 projetos de software livre existentes! Sites din=E2micos e Linguagens de Script Os desenvolvedores de sites din=E2micos (php, jsp, asp, etc.) n=E3o foram= =20 esquecidos. Voc=EA poder=E1 publicar o projeto para um ftp ou para uma pa= sta=20 local e ver o resultado em um dos seus browser - tudo isto sem sair da=20 IDE. Da mesma forma, os desenvolvedores de script poder=E3o rodar seus=20 aplciativos facilmente. No caso de linguagens de script muito usadas e=20 que possuam um debuger padr=E3o, este ser=E1 suportado da mesma forma que= os=20 debugers para linguagens compiladas. Extensibilidade Por mais que nos esforcemos, nunca poderemos oferecer tudo o que um=20 usu=E1rio precisa. H=E1 ferramentas que s=E3o muito espec=EDficas, isto =E9= , =FAteis=20 apenas para uma linguagem ou para alguns poucos usu=E1rios. H=E1 linguage= ns=20 que n=E3o existem ainda ou outras, mais antigas, que poder=E3o n=E3o ser=20 suportadas por padr=E3o quando o Notes 2 for lan=E7ado. E al=E9m disto, t= odos=20 os membros da equipe s=E3o humanos! Para resolver o problema, o Notes 2=20 ser=E1 altamente extens=EDvel: voc=EA poder=E1 adicionar suporte a novas=20 linguagens, criar novos comandos na sua linguagem de script preferida=20 para fazer pequenas modifica=E7=F5es no c=F3digo ou, at=E9 mesmo, escreve= r novos=20 di=E1logos e ferramentas - plugins - em C/C++, Object Pascal, etc. Al=E9m= de=20 tudo isto, as extens=F5es poder=E3o ser instaladas atrav=E9s do Notes e f= ar=E3o=20 todas as modifica=E7=F5es necess=E1rias para que voc=EA possa sair usando= elas=20 sem precisar ler manuais complicados. Plugins Os plugins ser=E3o as extens=F5es mais poderosas no Notes 2. Isto por que= os=20 plugins ter=E3o acesso a uma API do Notes, feita especialmente para eles.= =20 Com isto poder=E3o conseguir todo tipo de informa=E7=F5es que precisarem,= =20 poder=E3o alterar certos comportamentos, capturar eventos, usar=20 bibliotecas do Notes (como a de express=F5es regulares ou a de=20 configura=E7=F5es), etc. Um plugin poder=E1 implementar "servi=E7os" (um = novo=20 comportamento, como inserir uma quebra de linha toda vez que voc=EA=20 digitar "{"), di=E1logos, novas ferramentas que podem ser dockadas aos=20 pain=E9is do Notes 2, etc. Implementa=E7=E3o: o c=F3digo para a implementa=E7=E3o dos plugins j=E1 e= xiste,=20 ent=E3o n=E3o h=E1 tanto trabalho pela frente. Talvez a maior dificuldade= seja=20 o que incluiremos na API - pois precisamos saber extamente de que=20 m=E9todos temos para poder permitir que plugins usem eles. Scripts No Notes 2 voc=EA poder=E1 usar a sua linguagem de scripts preferida para= =20 adicionar novas ferramentas ao Notes (claro que voc=EA precisar=E1 ter o=20 interpretador j=E1 instalado, n=E3o d=E1 para querer que o Notes aprenda = a=20 interpretar todas as linguagens de scripts existentes). Outra novidade=20 =E9 que voc=EA poder=E1 ter interfaces simples para o seus scripts - usan= do=20 apenas a sua linguagem de script e um pouco de XML (que =E9 f=E1cil). Com= =20 isto voc=EA poder=E1 adicionar, por exemplo, um bot=E3o na barra de=20 ferramentas que, quando acionado, mostre ao usu=E1rio um di=E1logo com=20 v=E1rias op=E7=F5es permitindo a ele criar uma tabela HTML em poucos segu= ndos. Implementa=E7=E3o: relativamente simples. O Notes l=EA primeiro o arquiv= o XML=20 que define a gui. Cada membro da gui possui o nome de uma vari=E1vel=20 anexado a ele. Conforme o usu=E1rio manipula a GUI, estes valores s=E3o=20 armazenados nas vari=E1veis. Por exemplo, se a GUI possui um campo de=20 texto e o usu=E1rio preenche nele "Isto =E9 o valor da vari=E1vel" e a=20 vari=E1vel associada ao campo chama-se MinhaVari=E1vel, MinhaVari=E1vel=20 armazena a string "Isto =E9 o valor da vari=E1vel". Quando o usu=E1rio c= lcia=20 OK na GUI, o Notes abre o arquivo de script e substitu=ED nele as=20 vari=E1veis pelo valor que o usu=E1rio deu para elas. Por exemplo, achand= o=20 %MinhaVari=E1vel% no script, o Notes a substituirpa por "Isto =E9 o valor= da=20 vari=E1vel". Depois disto, o Notes executa o script. O script cria ent=E3= o=20 alguns arquivos: um com a sua sa=EDda (normalmente =E9 o texto modificado= );=20 outro com erros, quando necess=E1rio; e um terceiro que definir=E1 o que = o=20 Notes far=E1 com a suas sa=EDda. Suporte a novas linguagens Atrav=E9s das extens=F5es ser=E1 poss=EDvel tamb=E9m adicionar suporte a = outras=20 linguagens e melhorar o suporte as linguagens que s=E3o suportadas no=20 Notes 2 por padr=E3o. Uma extens=E3o poder=E1 conter templates, o arquivo= de=20 colora=E7=E3o de c=F3digo para a linguagem, snippets, scripts, plugins, e= tc. *A ajuda do Notes 2* A ajuda do Notes 2 trar=E1 todas as informa=E7=F5es sobre como operar o N= otes=20 2, tutoriais para os novos usu=E1rios e ferramentas que facilitar=E3o a =20 resolu=E7=E3o de d=FAvidas ligadas as linguagens suportadas pelo Notes. A= =20 ajuda estar=E1 totalmente integrada a IDE, n=E3o tendo nenhuma depend=EAn= cia=20 de sistemas exteriores e/ou propriet=E1rios. Em um painel - organizado de= =20 forma semelhante ao toolbox - o usu=E1rio ter=E1 acesso a tr=EAs ferramen= tas:=20 "NotesStart"; "Ajuda do Notes 2"; e "Ajuda das linguagens". O NotesStart=20 ser=E1 um painel que trar=E1 links para aquilo que quem est=E1 iniciando = a=20 usar o Notes precisa - permitindo abrir os trechos mais importantes da=20 documenta=E7=E3o e realizar as tarefas mais comuns. A "Ajuda do Notes"=20 possuir=E1 um =EDndice de toda a documenta=E7=E3o do Notes 2 e dar=E1 ao = usu=E1rio a=20 possibilidade de procurar na documenta=E7=E3o. A "Ajuda das linguagens"=20 permitir=E1 ao usu=E1rio procurar por informa=E7=F5es nos sites mais impo= rtantes=20 sobre a linguagem que est=E1 usando e trar=E1 links para f=F3rums, listas= de=20 discuss=E3o, etc. Em resumo: a Ajuda do Notes trar=E1 v=E1rias ferramenta= s=20 permitindo ao usu=E1rio ir muito al=E9m do acesso a documenta=E7=E3o, pro= curando=20 gui=E1-lo as melhores solu=E7=F5es para as suas d=FAvidas de forma r=E1pi= da e=20 intuitiva. Mais detalhes ToolBox O Notes SE incluia o menu inserir. Apesar de ser altamente funcional,=20 ele tinha um problema: voc=EA tinha que navegar pelos submenus at=E9 acha= r o=20 que queria inserir. Para solucionar este problema, a equipe do Notes=20 incluir=E1 um ToolBox no painel vertical, que facilitar=E1 o acesso aos=20 c=F3digos do menu inserir. Ferramentas para SQL e XML O Notes 2 incluir=E1 tamb=E9m ferramentas para que voc=EA possa manipular= =20 banco de dados, construir querys SQL com facilidade e editar visualmente=20 arquivos XML. |