Olá, este exemplo demonstra como definir a fonte e a cor do rotulo de botões:
(Antes de executar algum exemplo sempre dê uma olhada na página de downloads
Baixa a versão mais atual de Prisma, ok!)
segue o código para estudo:
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 84 85 86 87 88 89 90 91 92 93 |
//exemplo de botao com caixa // a biblioteca ig é incrivel porque te dá várias opções para fazer algo, entao voce escolhe qual //é melhor para cada situação: inclua 'igbr'; janela = ig.janela( "Exemplo de botões customizados" , 300 , 200 ); ig.janela_def_posicao( janela , ig.jan_pos_centro ); ig.conecte( janela , ig.destruido , "ig.fimjanela( )" ); //conecta o evento destruir da janela a funcao fechar programa. ig.caixa_def_borda_largura ( janela , 20 ); //definindo a largura da borda da janela imagem = ig.imagem_estoque ( ig.estoque'save' , 3 ); //imagem save (salvar) do estoque tamanho 3 rotulo = ig.rotulo "botao legal" ; //cria um rotulo para o botão. ig.componente_modifique_fonte ( rotulo , "Arial bold italic 22 " ); //definindo a fonte do rotulo do botao ig.componente_modifique_fg ( rotulo , ig.estado_normal , 0 , 999999 , 99999 ); //a cor do rotulo estado normal ig.componente_modifique_fg ( rotulo , ig.estado_foco , 0 , 99999999 , 99999999 ); //a cor quando o mouse passar em cima. caixah = ig.caixa ("horizontal" , falso , 0 ); //outro modo de criar caixa, neste caso define-se horizontal ou vertical no primeiro parâmetro. os outros dois é igual ao já aprendido ig.caixa_ad ( caixah , imagem , falso , falso , 3 ); //colocando a imagem na caixa horizontal ig.caixa_ad ( caixah , rotulo , falso , falso , 3 ) ; //colocando o rotulo na caixa horizontal botao = ig.botao( ); //cria um botao sem parametro algum ig.componente_def_nome ( botao , '<<botao legal>>' ); //define um apelido (nome) para o botao ig.ad ( botao , caixah ); //Por fim coloca a caixa horizontal(que ja contem a imagem e o rotulo) dentro do botao, pois botao é um tipo de caixa muito específico; //vamos criar agora um botao no estilo vertical, imagem em cima e texto embaixo. usaremos a caixa vertical: caixav = ig.caixa( "vertical" , falso , 0 ); //criando uma caixa vertical; //o comando acima é o mesmo que ig.caixavertical ( falso , 0 ); imagem2 = ig.imagem_estoque ( ig.estoque'open' , 3 ); //imagem do estoque tamanho 3 rotulo2 = ig.rotulo 'botao abrir' ; ig.componente_modifique_fonte ( rotulo2 , "Arial bold 35 "); ig.componente_modifique_fg ( rotulo2 , ig.estado_normal , 2222222 , 0 , 0 ); //muda cor da fonte botao em estado normal ig.componente_modifique_fg ( rotulo2 , ig.estado_foco , 0 , 0 , 2222222 );//muda cor da fonte do botao quando o mouse estiver em cima //Lembre-se as cores são trabalhadas em R G B (vermelho, verde e azul ) sao os tres ultimos numeros //tente modificar os numeros para ver o que acontece ig.caixa_ad( caixav , imagem2 , falso , falso , 2 ); //colocando a imagem dentro da caixa vertical ig.caixa_ad( caixav , rotulo2 , falso , falso , 2 ) ; //adicionando o rotulo na caixa vertical botao2 = ig.botao( ); ig.ad ( botao2 , caixav ); //funcao para ser conectada ao botao: funcao botao_responda ( bt , jan ) local rotulo = ig.componente_obt_nome ( bt ); //obtendo a string do nome criado acima //lembre-se que os .. é um operador de unir strings, ok: ig.msg( jan , "Titulo da mensagem" , "O botao " .. rotulo .. " foi clicadon" ); fim //fim da funcao botao_responda //agora vamos conectar a função acima no botao legal, para que ao clicar nele esta funçao seja executada: ig.conecte ( botao , ig.clique , "botao_responda ( %s , janela )" ); //observe que na funcao conecte, o terceiro parametro é a funcao callback, e nela consta dois parametros //o primeiro é o %s que será substituido pelo id do proprio componente conectado, no caso o botao legal //o segundo é a janela, que será usada na mensagem como 'jan' funcao abrir ( bt , janela ) arq = ig.dialogo_abrir ( janela , "Abrir arquivo" ); //observe que ao abrir o dialogo, aparecera uma //mensagem na tela do cmd, é normal, apenas diz que não foi encontrado o tema de icones se arq == ig.ret_cancelar entao arq = "Foi cancelado pelo usuário" senaose arq == ig.ret_fechar entao arq = "Foi fechado pelo usuário" fim //o retorno ok nao tem para ig.dialogo_abrir ja que é o proprio arquivo quando for apertado ok //os retornos sao numeros, ig.ret_cancelar = -6 e ig.ret_fechar = -4, porém a variavel é mais //facil de lembrar do que o proprio numero ig.msg( janela , "Arquivo aberto" , arq ); imprima ( arq ); fim //fim funcao abrir ig.conecte( botao2 , ig.clique , "abrir ( %s , janela )" ); fixo = ig.fixo( ); //criamos uma caixa fixa para receber componentes, lembre-se caixas conseguem conter //mais de um componente ig.ad ( janela , fixo ); //adicionando o fixo na janela, obs. janelas são caixas que so podem conter um componente. ig.fixo_ad ( fixo , botao , 1 , 0 ); //adicionando o botao no fixo, na col 100 e linha 50. ig.fixo_ad ( fixo , botao2, 1 , 50 );//adicionando o botao abrir no fixo; ig.componente_mostre_todos ( janela ); //torna a janela visivel com todos seus componentes adicionados ig.fimprograma ( ) ; //inicia o loop de eventos do gtk |
São poucas novidades aqui, antes de tudo criamos uma imagem e um rótulo para o botão:
1 2 3 |
imagem = ig.imagem_estoque ( ig.estoque'save' , 3 ); //imagem save (salvar) do estoque tamanho 3 rotulo = ig.rotulo "botao legal" ; //cria um rotulo para o botão. |
Definimos a fonte e a cor do texto do rótulo:
Na fonte temos o primeiro parâmetro o rótulo, e segundo uma string descrevendo a fonte. Na string
sempre o nome da fonte primeiro, e no final o número, no meio devem ficar os estilos da fonte,
se é italico = italic, se é negrito = bold.
Quanto a cor do fg (foreground = letra (relevo) ), temos o rótulo como primeiro parâmetro,
o estado que pode ser ig.estado_normal (o modo como aparece ao abrir o programa),
e o ig.estado_foco que é quando o mouse fica em cima do botão.
As cores são em formado RGB (red, green, blue), isto é, um número de 0 – 99999999
para o vermelho, outro para o verde e outro para o azul, é a combinação desses três números
que gera a cor. Veja:
1 2 3 |
ig.componente_modifique_fonte ( rotulo , "Arial bold italic 22 " ); //definindo a fonte do rotulo do botao ig.componente_modifique_fg ( rotulo , ig.estado_normal , 0 , 999999 , 99999 ); //a cor do rotulo estado normal ig.componente_modifique_fg ( rotulo , ig.estado_foco , 0 , 99999999 , 99999999 ); //a cor quando o mouse passar em cima. |
Criamos uma caixa para pôr dentro a imagem e o rótulo:
Um detalhe aqui é que aprendemos a fazer caixas assim: ig.caixavertical(falso,0), ou ig.caixahorizontal( falso, 0 ),
mas como você pode observar tem uma segunda maneira de fazer, ig.caixa( “vertical”/”horizontal” , falso/verdadeiro, numero );
1 2 3 4 5 6 |
caixah = ig.caixa ("horizontal" , falso , 0 ); //outro modo de criar caixa, neste caso define-se horizontal ou vertical no primeiro parâmetro. os outros dois é igual ao já aprendido ig.caixa_ad ( caixah , imagem , falso , falso , 3 ); //colocando a imagem na caixa horizontal ig.caixa_ad ( caixah , rotulo , falso , falso , 3 ) ; //colocando o rotulo na caixa horizontal |
Depois criamos o botão vazio, sem parâmetro algum, pois a lógica é preenchê-lo
com a caixa que já contém a imagem e o rótulo, para isso usamos a função ig.ad
para adicionar a caixa no botão:
1 2 |
botao2 = ig.botao( ); ig.ad ( botao2 , caixav ); |
Fazemos o mesmo com o segundo botão, mas ao invés de criar uma caixa horizontal, utilizamos
uma vertical;
Uma novidade aqui é a função dialogo_abrir para obter o caminho de um arquivo:
o primeiro parâmetro é o componente pai, neste caso a janela principal, e o segundo é o Título
1 |
arq = ig.dialogo_abrir ( janela , "Abrir arquivo" ); |
O retorno pode ser: ig.ret_fechar (= -4) se o usuário fechar o dialogo abrir no x da janelinha
ig.ret_cancelar (= -6) se o usuário clicar o botão cancelar
ou a string do caminho selecionado caso o usuário dê duplo clique no arquivo ou o selecione e clique no
botão Abrir.
Bom, é isso aí pessoal, qualquer dúvida postem a pergunta no fórum ou aqui mesmo no post, ok.
Lembrando que algumas funções não estou explicando mais porque já falei sobre elas anteriormente em
outros exemplos, certo!
Att. Adalberto