Sabemos que não basta criar um botão, ou um menu, ou qualquer outro componente que seja para realizar ações.
É preciso dizer o que vai ser executado quando esses componentes forem ativados, clicados etc.
é para isso que conectamos uma função ao clique de um botão, por exemplo. Para que quando for clicado a função seja executada.
Mas em alguns casos você irá preferir que a função seja desativada para que não seja mais executada. Neste caso existe um modo de desconectar a função.
É muito simples, basta que, ao conectar, seja retornado o id da conexão:
id = ig.conecte_funcao( componente , ig.evento_nome , funcao_exec );
Depois com o id, basta desconectar:
ig.desconecte( componente , id ); //muito fácil, não é
Veja um programinha completo exemplificando o uso do desconecte():
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 |
//como desconectar uma funcao conectada ao evento de um componente. inclua'igbr' //incluindo a biblioteca gráfica handler_id = nulo; //criando uma variável para receber o id de conexão funcao botao_clicado( ) //função que será conectada ao botao imprima'O botao foi clicado\n'; ig.msg( janela , ' Desconecte ' , ' A função está conectadada ao botão agora! '); fim //função conectada ao seletor (checagem): funcao desconecte_funcao( widget , botao ) se ig.botao_seletor_obt_ativo( widget ) entao handler_id = ig.conecte_funcao(botao , ig.clique , botao_clicado ); senao ig.desconecte( botao , handler_id); //desconecta o evento do botao à funcao fim fim // ---- CRIANDO A JANELA E COMPONENTES -------------- janela = ig.janela('Desconete', 250, 150); ig.janela_def_posicao( janela , ig.janela_pos_centro); //criando uma caixa fixa para colocar os componentes // em posições fixas: fixo = ig.fixo(); ig.ad( janela , fixo); //adicione o fixo na janela //criando o botao botao = ig.botao('Clique aqui'); //adicione o botao no fixo na posição col 30 x lin 50 ig.fixo_ad( fixo , botao , 30,50); //crie um botao seletor (checagem) check = ig.botao_checagem('Conectar funcao'); //defina o seletor como ativo(marcado): ig.botao_seletor_def_ativo( check , verdadeiro); ig.fixo_ad( fixo , check , 130 , 50); //conectando o botao handler_id = ig.conecte_funcao( botao , ig.clique , botao_clicado ); //conectando o seletor(checagem) ig.conecte_funcao( check , ig.marcado , desconecte_funcao, botao); //ligando o evento de fechar a janela ao fechamento do programa ig.janela_destrua( janela ); //mostre a janela e seus componentes filhos ig.componente_mostre_todos( janela ); //inicia o laço de eventos do gtk: ig.fimprograma(); |
Bom, é isso aí, qualquer dúvida pode perguntar aqui, ou no fórum. Até logo.