Cria uma caixa de mensagem sem a necessidade de biblioteca gráfica Prisma, funciona apenas em Linux.
(http://linguagemprisma.br4.biz/prisma_forum/index.php?action=dlattach;topic=643.0;attach=62;image)
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();