28/02/2011 Programação Traduções Lua

Por Steve Donovan - Tradução Breno Ramalho Lemes

Parte 1 | Parte 2

Saída Simples

Mesmo scripts simples precisam dar ao usuário um retorno. Caso contrário, as pessoas ficam ansiosas e começam a se preocupar se os seus arquivos já foram salvos, por exemplo. No IUPLua isso é fácil e leva exatamente uma linha. Note que todos os scripts IUP devem ter pelo menos uma instrução require 'iuplua' no início:

require( "iuplua" )
iup.Message('Seu Aplicativo','Concluído com sucesso!')

É claro que, muitas operações exigem a confirmação do usuário. iup.Alarm é projetado para isso:

require( "iuplua" )
b = iup.Alarm("Exemplo IupAlarm", "Arquivo não salvo! Salvá-lo agora?", "Sim", "Não", "Cancelar")
-- Mostra uma mensagem para cada botão selecionado
if b == 1 then
	iup.Message("Salvar arquivo", "Arquivo salvo com sucesso - saindo do programa")
elseif b == 2 then
	iup.Message("Salvar arquivo", "Arquivo não salvo - saindo mesmo assim")
elseif b == 3 then
	iup.Message("Salvar arquivo", "Operação cancelada")
end

Assim como iup.Message, o primeiro parâmetro aparece na barra de título da caixa de diálogo, o segundo parâmetro aparece acima dos botões, mas iup.Alarm permite que você especifique um número de botões. Então o código de retorno vai dizer qual botão foi pressionado, começando em 1 (que é sempre o jeito Lua).

Entrada Simples

Pedindo um nome de arquivo

A coisa mais comum que um script interativo vai pedir ao usuário é um arquivo, ou conjunto de arquivos. Para casos simples, iup.GetFile fará o isso:

require( "iuplua" )
f, err = iup.GetFile("*.txt")if err == 1 then
	iup.Message("Novo arquivo", f)
elseif err == 0 then
	iup.Message("Arquivo já existente", f)
elseif err == -1 then
	iup.Message("IupFileDlg", "Operação cancelada")
end

Isto irá lhe apresentar a caixa de diálogo abrir arquivo padrão do Windows, e permitir que você escolha um nome de arquivo, ou cancele a operação. Note que esta função retorna dois valores, o nome e um código. O código irá dizer se o arquivo não existe (caso, por exemplo, você digitou um novo nome na caixa de diálogo).

Pedindo texto de várias linhas

A maneira mais simples de obter texto em geral é usar iup.GetText :

require 'iuplua'res = iup.GetText("Me dê seu nome","")
if res ~= "" then
	iup.Message("Obrigado!",res)
end

Se usar esta janela, você pode inserir quantas linhas quiser, e pressionar OK.

Pedindo uma única string ou número

A melhor opção para pedir uma única string é a muito versátil iup.GetParam:

require( "iuplua" )
require( "iupluacontrols" )

res, name = iup.GetParam("Título", nil, "Dê o seu nome: %s\n","")
iup.Message("Olá!",name)

Há duas vantagens sobre a iup.GetText simples, você pode dar uma linha de comando, onde você pode pressionar enter depois de digitar o texto.

O código %s precisa de alguma explicação. Embora você possa de início achar que é um código de formatação estilo C, como você usaria em string.format, na verdade ele descreve como o valor será editado; %s aqui significa simplesmente que uma caixa de texto normal é usada, se você usasse %m, então seria uma caixa de texto de várias linhas (como aquela utilizada pelo iup.GetText).

Se existe um conjunto limitado de opções, então o formato de l% é útil:

require( "iuplua" )
require( "iupluacontrols" )
res, prof = iup.GetParam("Título", nil,
	"Dê sua profissão: %l|Professor|Explorador|Engenheiro|\n",0)

Observe a lista |item1|item2|...| após o formato l% , estas são as opções apresentadas para o usuário. O valor inicial que você dá e o valor que você recebe, serão um índice para a lista de opções. Um pouco confuso, eles começam em 0 (o que não é o jeito Lua!). Então neste caso, 0 significa que "Professor" deve estar selecionado, e se eu selecionar "Engenheiro", então o valor resultante de prof seria 2.

O código i% permite que você insira um número inteiro, com setas para aumentar/diminuir o valor.

require( "iuplua" )
require( "iupluacontrols" )
res, age = iup.GetParam("Título", nil, "Dê a sua idade: %i\n",0)
if res ~= 0 then
	-- o usuário colaborou!
	iup.Message("Sério?", age)
end

Parte 1 | Parte 2


NOTAS DA TRADUÇÃO: você pode baixar um arquivo com todos exemplos desta parte do guia (com as mensagens traduzidas) e também um interpretador Lua e as bibliotecas IupLua para Windows: guiaiuplua-parte2.zip.

br_lemes, o Zumbi insano (Hipossônia)