{"id":883,"date":"2015-05-17T01:47:57","date_gmt":"2015-05-17T01:47:57","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=883"},"modified":"2015-06-16T12:57:40","modified_gmt":"2015-06-16T12:57:40","slug":"editor-de-codigo-fonte-simples","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/igprisma\/editor-de-codigo-fonte-simples\/","title":{"rendered":"Editor de c\u00f3digo fonte simples"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Neste exemplo voc\u00ea ver\u00e1 como usar o comando ig.codigo_area_com_buffer\u00a0para criar um simples editor.<\/p>\n<p>Simples mas voc\u00ea poder\u00e1 acrescentar detalhes como di\u00e1logos abrir e salvar arquivos, abas etc. dependendo da criatividade.<\/p>\n<p><a href=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/05\/editor.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-884\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/05\/editor.png\" alt=\"editor\" width=\"395\" height=\"315\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/05\/editor.png 711w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/05\/editor-300x239.png 300w\" sizes=\"auto, (max-width: 395px) 100vw, 395px\" \/><\/a><\/p>\n<p>Segue o c\u00f3digo comentado, bons estudos:<\/p>\n<pre class=\"height-set:true width-set:true width:750 lang:prisma decode:true  \">\/\/ editor 1\r\ninclua 'igbr' \/\/ incluindo a biblioteca gr\u00e1fica igbr\r\n\r\nfuncao abrir_arquivo( sBuf , filename ) \/\/funcao que abre o arquivo, transfere para uma string e insere na area de texto do editor\r\n\r\n  se sBuf == nulo entao retorne falso fim   \/\/sBuf \u00e9 o buffer uma esp\u00e9cie de container invis\u00edvel para todo o texto. \u00c9 atrav\u00e9s do buffer que mudamos o texto\r\n  se filename == nulo entao retorne falso fim \/\/ filename \u00e9 o nome do arquivo passado como argumento.\r\n  se ig.codigo_buffer_sim( sBuf ) == falso entao retorne falso fim   \/\/funcao retorna verdadeiro se a vari\u00e1vel for um buffer v\u00e1lido\r\n  \r\n  local lm = ig.objeto_obt_dado( sBuf , 'gerenciador-linguagem' );  \/\/obtendo o dado que foi passado ao buffer pelo comando ig.objeto_def_dado\r\n  \r\n\/\/ ig.codigo_linguagem_def_pasta( lm, \"lang\/language-specs\" );  \/\/use esta funcao caso os arquivos de configuracao dos fontes estejam em pasta diferente\r\n  \r\n  linguagem = ig.codigo_gerenciador_linguagem_obt_linguagem  (lm, \"prismabr\");  \/\/criando o colorizador, o primeiro parametro \u00e9 o gerenciador de linguagem, o segundo \u00e9 o nome do id do arquivo de configura\u00e7\u00e3o, no nosso caso \u00e9 de prisma br  \r\n  \r\n  imprima( string.formate( \"Language: [%s]\\n\", \r\n                      ig.codigo_linguagem_obt_nome(linguagem)  \/\/usando a funcao para obter o nome da linguagem do arquivo de configura\u00e7\u00e3o.\r\n                      )\r\n       );\r\n       \r\n   se linguagem == nulo entao \/\/caso n\u00e3o encontre o arquivo v\u00e1lido de linguagem retorna erro \r\n      imprima( \r\n        string.formate( \"Nenhuma linguagem encontrada para este tipo: `%s'\\n\", \"text\/x-csrc\")\r\n      );\r\n   senao\r\n   \/\/ this is highlighter para C definied above\r\n      ig.codigo_buffer_def_linguagem( sBuf, linguagem);  \/\/ caso encontre, defina como padrao de coloriza\u00e7\u00e3o dos comandos\r\n   \r\n   fim  \r\n   \r\n   \/\/processo de abertura, leitura e carregamento do texto do arquivo fonte no editor\r\n   \r\n        file = es.abra(filename , 'leitura' ); \/\/funcao prisma que abre um arquivo, 'modo leitura'\r\n         se file == nulo entao text = \"imprima('Ola mundo em Prisma!')\";\/\/se n\u00e3o abrir o arquivo o texto ser\u00e1 esse\r\n         senao\r\n           text = file:leia('*t' ); \/\/ \"*t\" faz com que leia todo o texto do arquivo de uma s\u00f3 vez e armazene na variavel text        \r\n          file:feche(); \/\/fechando o arquivo para disponibilizar o texto.\r\n         fim\r\n         \r\n          ig.texto_buffer_def_texto ( sBuf, text , #text ); \/\/colocando o texto no buffer, parametros: buffer , texto , tamanho do texto;\r\n          ig.texto_area_def_buffer( codigo_area, sBuf); \/\/enfim colocando o buffer com o texto no editor, o texto ficar\u00e1 vis\u00edvel no editor.\r\n                     \r\nfim \/\/fim da funcao abrir_arquivo\r\n\r\n\r\n\r\n\/\/\/criando a janela e os componentes:\r\n\r\n   janela = ig.janela(\"Example ig source view\", 660 , 500); \/\/criando a janela com titulo, largura e altura\r\n   ig.janela_destrua( janela ); \/\/nunca esqueca esse comando, ele faz com que o programa feche quando a janela \u00e9 fechada, se seu programa tiver v\u00e1rias janela, s\u00f3 fa\u00e7a isso com a janela principal, sen\u00e3o ao fechar uma janela secund\u00e1ria o programa ser\u00e1 fechado junto.\r\n   ig.caixa_def_borda_largura( janela , 15 ); \/\/a largura da borda interna da janela.\r\n   \r\n   jan_rolagem = ig.janela_rolagem( nulo , nulo ); \/\/criando uma caixa de rolagem, chamada janela rolagem em igbr\r\n   ig.janela_rolagem_def_policiamento( jan_rolagem, ig.polic_automatico , ig.polic_automatico ); \/\/policiamento das barras de rolagem, tudo automatico.\r\n   \r\n   lm = ig.codigo_gerenciador_linguagem(); \/\/criando o gerenciador de linguagem para criar a colora\u00e7\u00e3o dos comandos\r\n   buffer = ig.codigo_buffer (); \/\/criando o buffer, \u00e9 necess\u00e1rio pois colocamos e modificamos o texto no buffer, e ele \u00e9 posto no editor\r\n   \r\n  \/\/ ig.objet_ref(lm);\r\n   ig.objeto_def_dado( buffer, 'gerenciador-linguagem' , lm  ); \/\/esta funcao serve para armazenar um dado em um componente, \r\n   \/\/o primeiro parametro \u00e9 o componente, o segundo \u00e9 o apelido para resgatar o dado, e o terceiro \u00e9 o dado.\r\n   \r\n   \r\n   codigo_area = ig.codigo_area_com_buffer( buffer ); \/\/criando a area do c\u00f3digo\r\n   ig.codigo_area_def_mostre_numero_linhas( codigo_area, verdadeiro);\r\n   \r\n   \/\/criando uma descricao de fonte para definir a fonte do editor\r\n   font_dec = ig.fonte_descricao_string( \"Courier 10 Pitch\", ig.regular,  12 ); \/\/sempre na sequencia nomefonte, modo[italico,negrito ou regular] , por \u00faltimo sempre o tamanho.\r\n   \r\n   ig.componente_modifique_fonte( codigo_area, font_dec ); \/\/modificando a fonte com a descri\u00e7\u00e3o criada acima   \r\n   \r\n   ig.ad( jan_rolagem, codigo_area); \/\/adicionando o editor (codigo area ) na caixa de rolagem\r\n   \r\n   ig.ad( janela, jan_rolagem);  \/\/adicionando caixa de rolagem na janela.  \r\n   \r\n   ig.componente_mostre_todos( janela ); \/\/mostrando a janela e seus componentes   \r\n   \r\n   abrir_arquivo( buffer, 'editor.prisma'); \/\/passando o buffer e o nome do arquivo a ser aberto no editor   \r\n\r\nig.fimprograma(); \/\/inicia o laco de eventos, deve ser sempre o ultimo comando do programa\r\n\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Copie, salve como editor.prisma, execute com o Geany ou Prismacod e ele abrir\u00e1 seu pr\u00f3prio c\u00f3digo.<\/p>\n<p>Quaisquer d\u00favidas fa\u00e7a uma pergunta no f\u00f3rum, <a title=\"Forum Prisma\" href=\"http:\/\/linguagemprisma.net\/prisma_forum\/\" target=\"_blank\">clicando aqui.<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Att. Adalberto<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Neste exemplo voc\u00ea ver\u00e1 como usar o comando ig.codigo_area_com_buffer\u00a0para criar um simples editor. Simples mas voc\u00ea poder\u00e1 acrescentar detalhes como di\u00e1logos abrir e salvar arquivos, abas etc. dependendo da criatividade. Segue o c\u00f3digo comentado, bons estudos: \/\/ editor 1 inclua &#8216;igbr&#8217; \/\/ incluindo a biblioteca gr\u00e1fica igbr funcao abrir_arquivo( sBuf , filename ) \/\/funcao&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-883","post","type-post","status-publish","format-standard","hentry","category-igprisma","category-interface_grafica"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=883"}],"version-history":[{"count":6,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/883\/revisions"}],"predecessor-version":[{"id":1201,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/883\/revisions\/1201"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}