Neste exemplo você verá como usar o comando ig.codigo_area_com_buffer para criar um simples editor.
Simples mas você poderá acrescentar detalhes como diálogos abrir e salvar arquivos, abas etc. dependendo da criatividade.
Segue o código comentado, bons estudos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
// editor 1 inclua 'igbr' // incluindo a biblioteca gráfica igbr funcao abrir_arquivo( sBuf , filename ) //funcao que abre o arquivo, transfere para uma string e insere na area de texto do editor se sBuf == nulo entao retorne falso fim //sBuf é o buffer uma espécie de container invisível para todo o texto. É através do buffer que mudamos o texto se filename == nulo entao retorne falso fim // filename é o nome do arquivo passado como argumento. se ig.codigo_buffer_sim( sBuf ) == falso entao retorne falso fim //funcao retorna verdadeiro se a variável for um buffer válido local lm = ig.objeto_obt_dado( sBuf , 'gerenciador-linguagem' ); //obtendo o dado que foi passado ao buffer pelo comando ig.objeto_def_dado // ig.codigo_linguagem_def_pasta( lm, "lang/language-specs" ); //use esta funcao caso os arquivos de configuracao dos fontes estejam em pasta diferente linguagem = ig.codigo_gerenciador_linguagem_obt_linguagem (lm, "prismabr"); //criando o colorizador, o primeiro parametro é o gerenciador de linguagem, o segundo é o nome do id do arquivo de configuração, no nosso caso é de prisma br imprima( string.formate( "Language: [%s]\n", ig.codigo_linguagem_obt_nome(linguagem) //usando a funcao para obter o nome da linguagem do arquivo de configuração. ) ); se linguagem == nulo entao //caso não encontre o arquivo válido de linguagem retorna erro imprima( string.formate( "Nenhuma linguagem encontrada para este tipo: `%s'\n", "text/x-csrc") ); senao // this is highlighter para C definied above ig.codigo_buffer_def_linguagem( sBuf, linguagem); // caso encontre, defina como padrao de colorização dos comandos fim //processo de abertura, leitura e carregamento do texto do arquivo fonte no editor file = es.abra(filename , 'leitura' ); //funcao prisma que abre um arquivo, 'modo leitura' se file == nulo entao text = "imprima('Ola mundo em Prisma!')";//se não abrir o arquivo o texto será esse senao text = file:leia('*t' ); // "*t" faz com que leia todo o texto do arquivo de uma só vez e armazene na variavel text file:feche(); //fechando o arquivo para disponibilizar o texto. fim ig.texto_buffer_def_texto ( sBuf, text , #text ); //colocando o texto no buffer, parametros: buffer , texto , tamanho do texto; ig.texto_area_def_buffer( codigo_area, sBuf); //enfim colocando o buffer com o texto no editor, o texto ficará visível no editor. fim //fim da funcao abrir_arquivo ///criando a janela e os componentes: janela = ig.janela("Example ig source view", 660 , 500); //criando a janela com titulo, largura e altura ig.janela_destrua( janela ); //nunca esqueca esse comando, ele faz com que o programa feche quando a janela é fechada, se seu programa tiver várias janela, só faça isso com a janela principal, senão ao fechar uma janela secundária o programa será fechado junto. ig.caixa_def_borda_largura( janela , 15 ); //a largura da borda interna da janela. jan_rolagem = ig.janela_rolagem( nulo , nulo ); //criando uma caixa de rolagem, chamada janela rolagem em igbr ig.janela_rolagem_def_policiamento( jan_rolagem, ig.polic_automatico , ig.polic_automatico ); //policiamento das barras de rolagem, tudo automatico. lm = ig.codigo_gerenciador_linguagem(); //criando o gerenciador de linguagem para criar a coloração dos comandos buffer = ig.codigo_buffer (); //criando o buffer, é necessário pois colocamos e modificamos o texto no buffer, e ele é posto no editor // ig.objet_ref(lm); ig.objeto_def_dado( buffer, 'gerenciador-linguagem' , lm ); //esta funcao serve para armazenar um dado em um componente, //o primeiro parametro é o componente, o segundo é o apelido para resgatar o dado, e o terceiro é o dado. codigo_area = ig.codigo_area_com_buffer( buffer ); //criando a area do código ig.codigo_area_def_mostre_numero_linhas( codigo_area, verdadeiro); //criando uma descricao de fonte para definir a fonte do editor font_dec = ig.fonte_descricao_string( "Courier 10 Pitch", ig.regular, 12 ); //sempre na sequencia nomefonte, modo[italico,negrito ou regular] , por último sempre o tamanho. ig.componente_modifique_fonte( codigo_area, font_dec ); //modificando a fonte com a descrição criada acima ig.ad( jan_rolagem, codigo_area); //adicionando o editor (codigo area ) na caixa de rolagem ig.ad( janela, jan_rolagem); //adicionando caixa de rolagem na janela. ig.componente_mostre_todos( janela ); //mostrando a janela e seus componentes abrir_arquivo( buffer, 'editor.prisma'); //passando o buffer e o nome do arquivo a ser aberto no editor ig.fimprograma(); //inicia o laco de eventos, deve ser sempre o ultimo comando do programa |
Copie, salve como editor.prisma, execute com o Geany ou Prismacod e ele abrirá seu próprio código.
Quaisquer dúvidas faça uma pergunta no fórum, clicando aqui.
Att. Adalberto