Notícias:

SMF - Just Installed!

Menu principal

Xmensagem (xmessage)

Iniciado por adalberto, Dezembro 20, 2017, 05:24:59 PM

tópico anterior - próximo tópico

adalberto

Cria uma caixa de mensagem sem a necessidade de biblioteca gráfica Prisma, funciona apenas em Linux.




Para quem é do mundo Linux sabe muito bem o que Xmessage, Zenity e tantos outros diálogos para linha de comando.

Esses programas acima são chamados por scripts sh em linux produzindo uma caixa de mensagem para uma interação gráfica com o usuário.

Em Prisma, basta usar a função sis.execute() e  pegar o número de retorno. Para isso criei uma função para servir de exemplo, usei o xmessage que é por padrão instalado em várias distros.

Veja o código já com exemplos:     (em anexo o convar.pris);


local funcao xmsg(titulo,txt, ...)
   local botoes = {...};
   local bts = '';
   para i,v em ipares(botoes) inicio
     bts = bts .. '"' .. v .. '",'
   fim
   bts = bts:corte(1,-2);
   local cmd = 'xmessage -title "' .. titulo .. '" "' .. txt .. '"  -center -buttons ' .. bts .. ' "$@" "" ;'
  // imprima(cmd);
   local ret,_,num = sis.execute(cmd);
   
   se num entao retorne convnumero(num); senao retorne falso; fim
fim

inclua'convcar' //para a função conv_w
//conv_w para acentos


//simples
xmsg( "ATENCAO", conv_w"\nolá isso é só uma mensagem!\n\nTestando!!!...\n\n");

//com botões.
local ret = xmsg("Aviso", conv_w'\n\n   Deseja realmente desligar o computador?  \n\n', '     Sim    ',
                                                                            conv_w'     Não    ');
                                                                           
imprima(ret);
se ret == 101 entao // primeiro botão, (sempre começa do 100 + 1, 100 + 2 e assim por diante);
  xmsg('Aviso', conv_w(' Você escolheu a opção: ' .. ret .. '\ndesligar o computador \n'),'              ok           ');

senaose ret == 102 entao
  xmsg('Aviso', conv_w(' Você escolheu a opção: ' .. ret .. '\nnão desligar o computador \n'),
  '              ok           ');

senao
  xmsg('Aviso', conv_w' Cancelado pelo usuário! ', '           ok           ');
fim

ret = xmsg('Aviso', conv_w' Erro ao tentar copiar arquivo!',' cancelar ',' tentar denovo ', ' ignorar ');

se ret == 101 entao
  imprima('Opção escolhida: (cancelar) ' .. ret);
senaose ret == 102 entao
  imprima('Opção escolhida: (tentar de novo) ' .. ret);
senaose ret == 103 entao
  imprima('Opção escolhida: (ignorar) ' .. ret);
senao
  imprima('Opção escolhida: (Nenhuma(fechar)) ' .. ret);
fim

poe'\n\n\nsaindo (pressione enter...)\n\n';

leia();