Fiz uma correção na mensagem questão (botões) e reupei:(4/11/2017)
Muitas vezes por algum motivo é necessário abrir mão da interface gráfica e usar apenas o terminal de comandos, seja por questão de memória, seja em um servidor etc.
Que tal unir um pouco dos dois mundos, criando mensagens box, diálogos e listagem no terminal, usando as teclas (Setas, Enter,X,C) para interagir.
Foi pensando nisso que resolvi criar um conjunto básico gui modo texto para usar em programas feitos em Prisma que rodem no terminal.
(Esta lib estará incluída nas próximas versões Prisma e futuramente quero fazer mais tipos de componentes em modo texto, senha, entra texto, etc.);
Baixe aqui. GuiTerm
(é necessária a biblioteca terminal)
Exemplo 1 (mensagem ok):
local ret = guiterm.mensagem_ok(Titulo,Txt,Col,Lin, Cor);
se Col ou Lin for omitido o valor padrão é 0; Se Cor for omitido padrão é ‘azul’
Cores: ‘azul’,’verde’,’vermelho’,’amarelo’,’cinza’,’preto’,’magenta’
1 2 3 4 5 6 7 8 9 10 11 |
//basico guiterminal local gterm = inclua'guiterminal'; local ret , str = gterm.mensagem_ok('Teste',"Pressione Enter para continuar..."); gterm.limpe_tudo(); gterm.limpe_tudo(); sis.saia(ret); |
Exemplo 2 (mensagem de aviso/alerta):
local ret = guiterm.mensagem_aviso(Titulo,Txt,Col,Lin, Cor);
se Col ou Lin for omitido o valor padrão é 0; Se Cor for omitido padrão é ‘azul’
1 2 3 4 5 6 7 8 |
//basico guiterminal local gterm = inclua'guiterminal'; local ret ,str = gterm.mensagem_aviso('Teste',"Pressione Enter para continuar...",12,5); gterm.limpe_tudo(); sis.saia(ret); |
exemplo 3 (mensagem questão):
local ret, rot = guiterm.mensagem_ok(Titulo,Txt,Col,Lin, Cor,TabBt);
TabBt = { “Bt1”, “BT2”, “BT3”, num=3, cor=’azul’};
num = 3 – foco no botão 3; cor = ‘azul’ cor do foco. Se omitidos o padrão é 1 e Cor;
se Col ou Lin for omitido o valor padrão é 0; Se Cor for omitido padrão é ‘azul’
1 2 3 4 5 6 7 8 9 10 11 12 |
//basico guiterminal local gterm = inclua'guiterminal'; local ret, str; ret, str = gterm.mensagem_questao( 'Questão','Deseja sair?\n \n(use as setas)', 9,4,'vermelho',{'[Sim]','[Não]','[Abortar]',num=3,cor='azul'} //num=3 foco no bt 3 ); gterm.limpe_tudo(); imprima(ret, str); sis.saia(ret); |
Exemplo 4 (Dialogo de escolha):
ret, str = gterm.escolha(Titulo,Texto, Itens, Col, Lin, Alt,Larg, Cor );
Itens = {“item1”, “item2”, “item3”, … }
1 2 3 4 5 6 7 8 9 |
local gterm = inclua'guiterminal'; local ret , str; ret, str = gterm.escolha('Cores',' Escolha uma cor (use as setas):', {'azul','verde','preto','magenta'},12,3,19,45,'azul'); gterm.limpe_tudo(); imprima(ret,str); sis.saia(ret); //retorna o número escolhido, quando for chamado por outro programa. |
Exemplo 5 (listagem de itens):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//basico guiterminal local gterm = inclua'guiterminal'; local Lista = { 'Marcos 3334546 rua A', 'Fernanda 5667777 rua B', 'João 2342342 rua C', 'Marcela 1231244 rua D', 'Marcos 3334546 rua A', 'Fernanda 5667777 rua B', 'João 2342342 rua C', 'Marcela 1231244 rua D' } local ret, str = gterm.listagem('Clientes',' Nome Tel. End.', Lista, 5,3, 19,48,'vermelho'); gterm.limpe_tudo(); imprima(ret,str); sis.saia(ret); //retorna o número escolhido, quando for chamado por outro programa. |
Algumas funções úteis:
gterm.def_corfundo(Cor);
//define a cor de fundo para toda área do terminal
Cor = gterm.obt_corfundo();
//obtém a cor de fundo atual;
gterm.ative_corfundo();
//Apaga a tela do terminal e ativa a cor definida na função anterior.
gterm.limpe_tudo();
//o mesmo que a função anterior;
str = gterm.alin_esquerda(Texto, Tam, Car);
//preenche com caracteres o lado direito de acordo com número Tam. Já descontando o tamanho de Texto.
ex.:
1 2 3 |
s = 'Prisma'; str = gterm.alin_esquerda( s , 20,'*'); imprima(str); //-> Prisma************** |
str = gterm.alin_direita( Texto, Tam, Car);
1 2 3 4 5 |
local gterm = inclua'guiterminal'; s = 'Prisma'; str = gterm.alin_direita( s , 20,'*'); imprima(str); //-> **************Prisma |
str = gterm.alin_centro( Texto, Tam, Car);
1 2 3 4 5 |
local gterm = inclua'guiterminal'; s = 'Prisma'; str = gterm.alin_centro( s , 20,'*'); imprima(str); //-> *******Prisma******* |
Caso Car seja omitido o padrão é espaço.
str = gterm.str_encolha(Str, Tam);
Encolhe uma string Str para o tamanho Tam, se a string for maior que Tam, ela é recortada no meio e então é inserida reticências:
1 2 3 4 5 6 |
local gterm = inclua'guiterminal'; s = 'Prisma - linguagem de programação com comandos em português brasileiro'; s2 = gterm.str_encolha(s, 47); imprima(s2); |
Saída: Prisma – linguagem de p… português brasileiro
OBS.: Teclas Aceitas:
- setas para selecionar itens ou botões.
- C – Cancelar / Sem selecionar item (Para mensagem_questao, listagem e escolha); Retorno é falso + “cancelado”;
- X – Sair / Fechar /Sem selecionar item (Para – mensagem_questao, listagem e escolha); Retorno é falso + “fechado”
- ENTER – Aceitar / Finaliza retornando o item selecionado ( Para todas); Retorno é Número do ítem + rótulo do ítem.
Considerações:
Claro que é bem básico mesmo, mas por ser em terminal é bem legal, espero usar essa lib em servidores modo texto, para facilitar a vida mesmo.
No momento consta 5 componentes e todos caixas de dialogo, nenhuma janela ainda, menu ou outros tipos.
Em breve, atualizações e novos componentes.
Pessoal, até a próxima.
Veja uma gravação da área de trabalho:
Fórum: linguage
👏👏👏👏👏👏 Parabéns!
Mto bom
já vou usar nos meus programas de terminal. Ajuda paca!
👏👏👏👏👏👏
Parabéns!
Mto bom
já vou usar nos meus programas de terminal.
! Ajuda paca!
Sim, há tempos que eu queria fazer isso, já tinha até uns protótipos, aí aperfeiçoei.
Se possível baixe de novo pois subi um novo arquivo com algumas correções.
Por mais que a gente testa ainda fica algumas coisas para trás.
Testa aí, qualquer coisa dá um alô, seja bug, crítica ou sugestão.
Falou, até mais.
Fiz nova correção (a posição dos botões na mensagem questão ficava desconfigurado)
Baixe novamente.