{"id":906,"date":"2015-05-21T01:28:42","date_gmt":"2015-05-21T01:28:42","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=906"},"modified":"2015-05-21T13:11:56","modified_gmt":"2015-05-21T13:11:56","slug":"mensagem-deseja-fechar-programa-sim-fecha-nao-cancela","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/igprisma\/mensagem-deseja-fechar-programa-sim-fecha-nao-cancela\/","title":{"rendered":"Deseja fechar programa?"},"content":{"rendered":"<p>Muitas vezes queremos exibir uma mensagem de aviso se o usu\u00e1rio quer realmente fechar o programa, isso quando \u00e9 pressionado o bot\u00e3o fechar da janela (x):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-918\" src=\"http:\/\/linguagemprisma.net\/blog\/wp-content\/uploads\/2015\/05\/mensagem_sair-300x274.png\" alt=\"mensagem_sair\" width=\"300\" height=\"274\" srcset=\"https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/05\/mensagem_sair-300x274.png 300w, https:\/\/linguagemprisma.br4.biz\/blog\/wp-content\/uploads\/2015\/05\/mensagem_sair.png 314w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>Sa\u00edda no Ubuntu 14.04<\/p>\n<p>Algumas fun\u00e7\u00f5es deste exemplo s\u00f3 estar\u00e3o dispon\u00edveis a partir de 22-05-2015<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:prisma decode:true  \">\/\/exemplo de como perguntar ao usu\u00e1rio se quer ou n\u00e3o \r\n\/\/sair do programa.\r\n\r\ninclua 'igbr'\r\n\r\nfuncao sair(janela)\r\nig.botao_mostre_imagem( verdadeiro ); \/\/mostrar icones nos botoes.\r\ndialog = ig.dialogo_mensagem( nulo , 'Aten\u00e7\u00e3o' , 'Sair do programa?' ,\r\nig.msg_questao , \/\/tipo de mensagem\r\nig.botao_sim_nao \/\/tipos de bot\u00f5es\r\n);\r\n\r\nx = ig.dialogo_execute( dialog );\r\nig.componente_destrua( dialog );\r\n\r\nimprima(x); \r\nret = x\r\n\/\/com o novo comando ig.conecte_funcao (diferente do ig.conecte)\r\n\/\/ podemos retornar um valor bool direto para funcao call back C \r\n\/\/sem precisar usar a funcao ig.def_retorno_evento();\r\n\r\n\/\/para sair \u00e9 s\u00f3 retornar verdadeiro, se retornar falso o programa n\u00e3o \u00e9 fechado.\r\n\r\nse ret == ig.ret_sim entao\r\n\r\nimprima 'sim'; retorne falso;\r\n\r\nsenaose ret == ig.ret_nao entao\r\n\r\nimprima 'Nao' ; retorne verdadeiro;\r\n\r\nsenaose ret == ig.ret_cancelar entao\r\n\r\nimprima 'cancelar' ; retorne verdadeiro\r\n\r\nsenaose ret == ig.ret_fechar entao\r\n\r\nimprima 'fechar' ; retorne verdadeiro\r\nfim \/\/fim se\r\n\r\n\r\nfim \/\/fim funcao\r\n\r\n\r\njan = ig.janela'minha janelinha'\r\n\r\n\/\/nova funcao:\r\nig.conecte_permutado( jan , ig['destruido'] , ig.fimjanela , nulo );\r\n\r\n\/\/nova funcao:\r\nig.conecte_funcao( jan , ig.evento_delete , sair , nulo )\r\n\r\n\r\nig.componente_mostre( jan);\r\nig.fimprograma();\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>O segredo \u00e9 conectar o evento <span style=\"color: #ff0000;\">ig.evento_delete<\/span> na janela, use a fun\u00e7\u00e3o nova <span style=\"color: #ff0000;\"><strong>ig.conecte_funcao<\/strong><\/span>\u00a0(dispon\u00edvel na atualiza\u00e7\u00e3o a partir de 22-05-2015). Sua sintaxe \u00e9 : ( componente_conectado , tipo_evento , funcao , userdata ); e na fun\u00e7\u00e3o call back (conectada) retorne verdadeiro caso queira que o programa feche ou falso para cancelar e retornar.<\/p>\n<p>Se usar a fun\u00e7\u00e3o<strong> ig.conecte\u00a0<\/strong>dever\u00e1 usar na callback a funcao\u00a0<span style=\"color: #ff0000;\">ig.def_retorno_evento( falso \/ verdadeiro );<\/span><\/p>\n<h2><strong><span style=\"color: #ff0000;\">Obs.:<\/span><\/strong><\/h2>\n<p><em>Veja que n\u00e3o passamos mais o terceiro argumento como string, \u00e9 o nome da fun\u00e7\u00e3o mesmo, e o quarto argumento \u00e9 o userdata, qualquer dado que o usu\u00e1rio queira mandar para a fun\u00e7\u00e3o call back, s\u00f3 \u00e9 poss\u00edvel mandar um userdata, caso queira mandar v\u00e1rios dados use uma tabela e mande a tabela, se n\u00e3o tiver nada para mandar use nulo como argumento.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Novidades:<\/p>\n<pre class=\"lang:prisma decode:true\">ig.conecte_permutado( jan , ig['destruido'] , ig.fimjanela , nulo );<\/pre>\n<p>Esta fun\u00e7\u00e3o conecta o evento de um componente a uma fun\u00e7\u00e3o call back, e passa o quarto par\u00e2metro como argumento da fun\u00e7\u00e3o call back.<\/p>\n<p>No exemplo acima conectamos o evento fechar(ig.destruido) da janela na fun\u00e7\u00e3o ig.fimjanela que n\u00e3o precisa de argumento por isso o quarto par\u00e2metro da fun\u00e7\u00e3o conecte_permutado foi nulo.<\/p>\n<p>Outro exemplo, conectar o evento clique do bot\u00e3o \u00e0 fun\u00e7\u00e3o imprima:<\/p>\n<pre class=\"lang:prisma decode:true\">ig.conecte_permutado( bt_exemplo , ig['clique'] , imprima , \"Ola Mundo\" );<\/pre>\n<p>E toda vez que clicar no bot\u00e3o a quarto par\u00e2metro (&#8220;Ola Mundo&#8221;) ser\u00e1 passado como argumento para fun\u00e7\u00e3o imprima.<\/p>\n<p>O mesmo que: imprima(&#8220;Ola Mundo&#8221;);<\/p>\n<pre class=\"lang:prisma decode:true\">ig.conecte_funcao( jan , ig.evento_delete , sair , nulo )<\/pre>\n<p>conectamos aqui o evento de destruir a janela (fech\u00e1-la) \u00e0 fun\u00e7\u00e3o sair, e como n\u00e3o queremos passar nenhum argumento extra, o quarto par\u00e2metro ficou nulo.<\/p>\n<p>Lembre-se:<\/p>\n<p>ig.conecte = fun\u00e7\u00e3o antiga que executa uma string como terceiro par\u00e2metro.<\/p>\n<p>Atualiza\u00e7\u00e3o:<\/p>\n<p>ig.conecte_permutado = nova fun\u00e7\u00e3o ( a partir de 22-05-2015 ) que executa uma fun\u00e7\u00e3o com o quarto par\u00e2metro como argumento.<\/p>\n<p>ig.conecte_funcao = nova funcao para conectar fun\u00e7\u00f5es, e passa seu quarto par\u00e2metro como argumento extra da fun\u00e7\u00e3o call back.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p><strong>Veja os tipos de mensagens, bot\u00f5es e retornos poss\u00edveis:<\/strong><\/p>\n<p><strong>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u00a0tipo de bot\u00f5es para dialogo<\/strong><br \/>\nig.botao_ok;\u00a0ig.botao_sim_nao;\u00a0ig.botao_cancelar;\u00a0ig.botao_fechar;\u00a0ig.botao_nulo;\u00a0ig.botao_ok_cancelar.<br \/>\n<strong>\/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; tipos de retornos de di\u00e1logos<\/strong><\/p>\n<p>ig.ret_ok;\u00a0ig.ret_aplicar;\u00a0ig.ret_cancelar;\u00a0ig.ret_aceitar;\u00a0ig.ret_fechar;\u00a0ig.ret_delete_evento;\u00a0ig.ret_ajuda;<\/p>\n<p>ig.ret_nao;\u00a0ig.ret_nulo;\u00a0ig.ret_rejeitar;\u00a0ig.ret_sim;<br \/>\n<strong>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-tipos de mensagens<\/strong><\/p>\n<p>ig.msg_informacao;\u00a0ig.msg_aviso;\u00a0ig.msg_outro;\u00a0ig.msg_erro;\u00a0ig.msg_questao;<\/p>\n<p>&nbsp;<\/p>\n<p>Infelizmente, s\u00f3 vou poder postar a atualiza\u00e7\u00e3o dia 22-05-2015, devido ao emprego que toma muito tempo.<\/p>\n<p>Qualquer d\u00favida deixe seu coment\u00e1rio aqui, ou v\u00e1 ao <a title=\"f\u00f3rum prisma\" href=\"http:\/\/linguagemprisma.net\/prisma_forum\/\" target=\"_blank\">f\u00f3rum prisma clicando aqui.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Muitas vezes queremos exibir uma mensagem de aviso se o usu\u00e1rio quer realmente fechar o programa, isso quando \u00e9 pressionado o bot\u00e3o fechar da janela (x): Sa\u00edda no Ubuntu 14.04 Algumas fun\u00e7\u00f5es deste exemplo s\u00f3 estar\u00e3o dispon\u00edveis a partir de 22-05-2015 &nbsp; \/\/exemplo de como perguntar ao usu\u00e1rio se quer ou n\u00e3o \/\/sair do programa&#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-906","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\/906","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=906"}],"version-history":[{"count":15,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/906\/revisions"}],"predecessor-version":[{"id":927,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/906\/revisions\/927"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}