Este componente serve para dizer ao usuário que o programa está em atividade e não travado. Muito útil quando o aplicativo precisa fazer várias tarefas e não fique parado aparentando não estar fazendo nada, como por exemplo, copiar ou renomear vários arquivos. Assim o usuário sabe que a ação está em andamento e quanto falta…
Continue readingigprisma
Botão de múltipla opção: ig.botao_radio()
Para se criar um conjunto de botões de marcação com múltiplas escolhas usamos a função: var = ig.botao_radio(‘texto’); E para inserir novas opções, colocamos os demais botões dentro do primeiro, passando o primeiro botão criado como parâmetro antes do texto rótulo: var2 = ig.botao_radio( var , ‘texto2’); E assim por diante, o terceiro, quarto, quantos…
Continue readingCriando um plugin para o prismacod
O plugin é um script prisma podendo ser ou não compilado. Ele passa uma tabela com valores e uma função, possui um elemento rotulo que é o texto a ser mostrado no menu ferramentas do prismacod. Vamos criar um plugin bem básico, veja o código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
retorne {// tabela plugin de retorno nome = 'plugin minimo' ; //nome do plugin para mensagem de erro rotulo = 'minimo' ; //texto que aparecera no menu->ferramentas func = funcao() ig.msg( nulo , 'Plugin minimo' , 'Plugin minimo executado' ); fim } //fim tabela plugin de retorno //nao esqueca que é necessario registrar o plugin no arquivo //plugin_registro.prisma para funcionar; |
Salve com o nome minimo.prisma, coloque-o no diretório padrão…
Continue readingO código fonte do prismacod
Estou disponibilizando o código fonte do prismacod, após várias sessões de correções. Ainda contém algumas limitações, mas é um ótimo meio de estudos para aperfeiçoamento deste pequeno editor. Por enquanto ele está com 1213 linhas de comando em arquivo único, isto pode ser melhorado dividindo-o em várias partes e um programa principal. Tem características…
Continue readingTexto_area, criando um mini editor
Este é um exemplo simples da função ig.texto_area() , como definir um texto e como obter o texto: Obs. Essas funções de obter e definir texto funcionam normalmente também no ig.codigo_area().
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 |
inclua 'igbr' //criando a janela e seus componentes. jan = ig.janela('Texto area' , 400 , 200 ); ig.caixa_def_borda_largura( jan , 8 ); ig.janela_def_posicao( jan , ig.janela_pos_centro); ig.janela_destrua( jan ); caixavertical = ig.caixa('vertical' , falso , 0 ); //criando uma caixa vertical, se preferir use: ig.caixavertical(falso, 0 ); ig.ad( jan , caixavertical); janela_rolagem = ig.janela_rolagem(); //criando uma janela de rolagem ig.ad( caixavertical , janela_rolagem ); editor = ig.texto_area(); //criando uma area de texto ig.componente_modifique_fonte( editor , 'Arial' , ig.negrito , ig.italico , 14 ); ig.ad( janela_rolagem , editor); //colocando a area de texto editor na rolagem bt_abrir = ig.botao'abrir arquivo'; bt_msg = ig.botao'exibir'; //colocando os botoes na caixa vertical ig.caixa_ad( caixavertical , bt_abrir , falso , falso , 1 ) ig.caixa_ad( caixavertical , bt_msg , falso , falso , 1 ); //funcao para abrir arquivo, conectado ao botao bt_abrir funcao abrir (compo , dado ) local _ , select = ig.dialogo_abrir(); //precisamos apenas do segundo retorno, //por isso usei '_' no primeiro retorno //o segundo retorno é uma tabela se tipo(select) == 'tabela' entao imprima'ola' local a = es.abra( select[1] , 'leitura'); se a entao txt = a:leia('*t'); a:feche(); senao txt = 'arquivo nao foi aberto' fim ig.texto_area_def_texto( dado , txt ); fim fim ig.conecte_funcao( bt_abrir , ig.clique , abrir , editor ); //funcao que pega o texto do editor e joga numa mensagem funcao exibir( compo , dado ) txt = ig.texto_area_obt_texto( dado ); ig.msg(nulo , ' ' , txt ); fim ig.conecte_funcao( bt_msg , ig.clique , exibir , editor ); ig.componente_mostre_todos( jan ); ig.fimprograma(); |
Bom, espero que seja útil, qualquer dúvida poste nos comentários, ou no fórum prisma.
Continue readingJanela com barras de rolagem
Muito útil quando queremos uma área deslizante para movimentar os componentes que estão fora do limite visível da janela, veja: janela_rolagem.prisma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//scrolled window (janela rolagem) inclua'igbr' funcao principal() local janela = ig.janela('Janela rolagem' , 400 , 150); ig.janela_destrua(janela); ig.janela_def_posicao( janela , ig.janela_pos_centro); ig.caixa_def_borda_largura( janela , 5); local janela_rolagem = ig.janela_rolagem(); ig.ad( janela , janela_rolagem); local fixo = ig.fixo(); ig.janela_rolagem_ad( janela_rolagem, fixo); local botao1 = ig.botao'botao1'; local botao2 = ig.botao'botao2'; ig.fixo_ad( fixo, botao1,0,500); ig.fixo_ad( fixo, botao2,10,10); ig.componente_mostre_todos( janela ); ig.fimprograma(); fim //fim principal(); |
Detalhes:
1 2 |
local janela_rolagem = ig.janela_rolagem(); ig.ad( janela , janela_rolagem); |
Acima, criamos a janela de rolagem e a adicionamos na janela.
1 |
local fixo = ig.fixo(); |
Criamos um painel fixo (coordenadas fixas);
1 |
ig.janela_rolagem_ad( janela_rolagem, fixo); |
Adicionamos, facilmente, o painel fixo na janela de rolagem com a função…
Continue readingEvento de entrar e sair com o mouse
Como conectar uma função ao evento de passar o mouse em cima do botão, e tirá-lo de cima:
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 |
//evento de passar o mouse dentro de um botao inclua 'igbr' funcao enter_botao( widget ) cor = ig.cor( 27000 , 30325 , 34181 , "*t" ) // o '*t' força o retorno de uma tabela de cor //red , green , blue , pixel = ig.cor( 27000 , 30325 , 34181) //esta forma retorna os 4 elementos separadamente. //ig.componente_modifique_bg( widget , ig.estado_foco , red , green , blue , pixel ); ig.componente_modifique_corfundo( widget , ig.estado_normal , cor ); //passando a tabela cor como parâmetro cor = ig.cor_analise( ig.vermelho ); ig.componente_modifique_corfundo( widget , ig.estado_foco , cor ); //passando a cor analisada como parâmetro fim janela = ig.janela(' Evento Mouse dentro ' , 230 , 150 ); fixo = ig.fixo(); ig.ad( janela , fixo); botao = ig.botao('Button' , 80, 35); //botao com tamanho definido ig.fixo_ad( fixo , botao , 50 , 50 ); ig.componente_modifique_bg( botao , ig.estado_normal , 55500 , 55500 , 55500); ig.conecte_funcao ( botao , ig.dentro , enter_botao ); ig.janela_destrua( janela ); ig.componente_mostre_todos(janela); ig.fimprograma(); |
Bom, o exemplo é fácil, está comentado. Mas qualquer dúvida deixe nos comentários.
Continue readingUma pequena calculadora
Segue o código para ser estudado:
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 81 82 83 |
//example igprisma igcalculadora inclua'igbr' funcao botao_CB( botao, texto) local text = ig.botao_obt_rotulo( botao ); ig.texto_anexe_texto( texto , text ); //ig.componente_def_foco( texto ); fim funcao calculate( componente , texto ) local text = ig.texto_obt_texto(texto); se text == '' entao text = '" "' fim //usarei o comando execute string str = 'resultado = ' .. text ; local x = executestring( str ); ig.texto_def_texto( texto, resultado); fim values = { [0] = "7","8","9","/", //o [0] força começar pelo índice 0 "4","5",'6','*', '1','2','3','-', '0','.','=','+' }; janela = ig.janela('igCalculadora' , 250, 180); ig.janela_def_posicao( janela , ig.janela_pos_centro); ig.conteiner_def_borda_largura( janela , 5 ); caixavertical = ig.caixavertical(falso,0); ig.ad( janela, caixavertical); edit = ig.texto(); ig.texto_def_alinhamento( edit , 1 ); //1=direita 0=esquerda 0.5=centro ig.conecte_funcao( edit , ig.ativado, calculate , edit ); ig.ad( caixavertical, edit); tabela_ = ig.tabela(4,4,verdadeiro); //cria um container tabela de quatro colunas por quatro linhas ig.tabela_def_lin_espacos( tabela_ , 2); ig.tabela_def_col_espacos( tabela_ , 2); pos = 0; para i = 0 , 3 inicio para j = 0, 3 inicio botao = ig.botao(values[pos] ); ig.tabela_ad( tabela_ , botao , j , j +1 , i , i +1); se values[pos] <> '=' entao ig.conecte_funcao(botao, ig.clique, botao_CB, edit ); senao ig.conecte_funcao( botao, ig.clique , calculate , edit ) fim pos = pos + 1; fim fim ig.ad(caixavertical, tabela_); //adicionando a tabela na caixa vertical ig.janela_destrua(janela); ig.componente_mostre_todos(janela); ig.fimprograma(); |
Falou pessoal, qualquer dúvida deixe uma pergunta nos comentários, ou vá no fórum.
Continue readingDiálogo de seleção de cor
Muito útil para escolher uma cor de configuração para seu programa. 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 |
//Z_example of cor selection dialogo inclua'igbr' //importa as funcoes graficas do ig pt-br funcao selec_cor ( comp , janela ) // esta funcao será chamada com o clique do botao. dialogo = ig.dialogo_cor('Selecione uma cor:'); //cria um dialogo de selecao de cor com o titulo 'Selecione uma cor:' ret = ig.dialogo_execute(dialogo); //executa o dialogo e devolve o retorno para 'ret' //botao ok = -5 ou ig.ret_ok se ret == ig.ret_ok entao corselecionada = ig.cor_selecao(dialogo); //obtém a cor selecionada R , G , B , P = ig.cor_selecao_obt_cor_atual( corselecionada ); //funcao acima transforma a cor em r g b e p (profundidade). //outra forma de extrair a cor selecionada para uma tabela: Cor = ig.cor_selecao_obt_cor_atual( corselecionada , '*t'); //o '*t' força o retorno de uma tabela cor.red cor.green cor.blue, cor.pixel imprima("//->" , Cor.red , Cor.green , Cor.blue , Cor.pixel ); imprima("//rgb->" , R , G , B , P ); ig.componente_modifique_bg( janela , ig.estado_normal , Cor ); fim ig.componente_destrua(dialogo); fim //criando a janela principal janela = ig.janela('Dialogo de seleção de cor', 280 , 200); // criando a janela (titulo_string, largura_numero , altura_numero ) ig.janela_def_posicao ( janela , ig.janela_pos_centro ); local cor = ig.cor_analise(ig.branco); ig.componente_modifique_corfundo( janela , ig.estado_normal , cor ); caixavertical = ig.caixa( 'vertical' ,falso,0); //criando a caixavertical ig.ad( janela , caixavertical); //colocando a caixa na janela barraferramenta = ig.barraferramenta(); //criando uma barra de ferramentas ig.barraferramenta_def_estilo( barraferramenta , ig.bf_icones ); //definindo estilo da barra tipo icones. ig.conteiner_def_borda_largura( barraferramenta , 2); //definindo a borda interna da barra de ferramenta cor_bt = ig.ferramenta_botao_estoque( ig.estoque_selecionar_cor ) ; //criando um botao de barra de ferramenta pelo estoque ig.barraferramenta_ad( barraferramenta , cor_bt , -1); //colocando o botao na barra de ferramenta ig.caixa_ad( caixavertical , barraferramenta , falso , falso , 5); //adicionando a barra de ferramenta na caixa ig.conecte_funcao( cor_bt , ig.clique , selec_cor , janela ); // conectando a funcao selec_cor ao clique do botao //e passando janela para callback ig.janela_destrua(janela); //fecha o programa corretamente ao fechar a janela. ig.componente_mostre_todos(janela); //mostra a janela e seus componentes filhos. ig.fimprograma(); //última linha de um programa ig, esta funcao inicia o loop de eventos. |
Continue reading
Diálogo de aviso (warning)
Mais um exemplo de dialogo mensagem, mas agora como o ícones de aviso. 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 |
// Exemplo de dialogo mensagem aviso inclua'igbr' funcao Mostre_aviso( comp , janela ) local dialogo = ig.dialogo_mensagem( janela , //componente pai 'Aviso!' , //titulo 'Operação não permitida' , //texto da mensagem ig.msg_aviso, //icone da mensagem ig.botao_ok //botao da mensagem );//cada parametro pode ficar em uma linha //nao tem problema, so nao se esqueca das virgulas. local x = ig.dialogo_execute( dialogo ); //pega o retorno do clique no dialogo e atribui a x ig.componente_destrua( dialogo ); se x == ig.ret_ok entao imprima'voce clicou em ok' senaose x == ig.ret_fechar entao imprima'voce clicou em fechar' fim imprima(x); //note que o retorno é um número fim //criando a janela principal Janela = ig.janela('Exemplo dialogo aviso' , 400 , 200 ); ig.janela_posicione ( Janela , 10 , 20 ); //posiciona a janela em coluna 10 e linha 20 do monitor //nao confunda com ig.janela_def_posicao( Janela , ig.janela_pos_centro); Fixo = ig.fixo(); ig.ad( Janela , Fixo ); Botao = ig.botao('\nMostrar: \nMensagem de aviso\n'); //note que em ig nao determinamos o tamanho do botao //ele se ajusta ao tamanho do texto //mas se quiser pode usar ig.componente_def_tamanho( Botao , 100 , 100 ) //porem corre o risco de nao caber todo o rotulo no botao. ig.conecte_funcao( Botao , ig.clique , Mostre_aviso , Janela ); //conecta uma funcao ao botao, assim sempre que clicarmos //nele a funcao é executada. ig.fixo_ad( Fixo , Botao , 25 , 35 ); //coloca o botao no fixo na coluna 25 e linha 35 ig.componente_mostre_todos( Janela ); ig.janela_destrua(Janela); ig.fimprograma(); |
Continue reading