|
Visual
Tcl - Parte 3
Continuando o nosso programa da semana passada (Executor),
adicionaremos uma facilidade de história, para salvar os
comandos que executamos anteriormente, em um objeto chamado "listbox".
Primeiramente, devemos modificar a nossa janela
principal para conter mais um botão, que daremos o nome de
"história". Aproveitamos também para criar um
apelido para a nossa caixa de entrada, teclando Alt-A
ou no menu "Options->SetAlias", e
introduzindo seu apelido: "entrada".
|

janela principal
|
O próximo passo é criar um novo toplevel
e empacotar (com o "pack") nele um "listbox"
com barras de rolagem. O Visual Tcl já tem esse objeto como
um composto (menu"Compound-> Insert -> System -> ScrollableListbox").
Precisaremos
também criar
um apelido para o "listbox", digamos "comandos",
e para a segunda janela ou toplevel, digamos "comandos_top".
|

fig.2 - janela com listbox e scrollbars
|
Controlaremos
o aparecimento da segunda janela com o comando "Window",
definido automaticamente pelo Visual Tcl. O subcomando "hide"
faz a janela desaparecer sem destruí-la, enquanto que o
subcomando "show" torna a deixá-la visível.
Através dos apelidos, podemos acessar os nomes reaisdos
objetos (widgets) no vetor "widget". Por
exemplo, nossa caixa de entrada será agora "widget
(entrada)"¸ muito mais mnemônico que ".top17.e18"
ou algo parecido.
Quando
o usuário aciona o botão "RUN", salvamos
nas variáveis "e" e "l" os
nomes da "entrada" e "comandos",
respectivamente (tabela.1). Em seguida, inserimos no final da "listbox"
o conteúdo da "entrada" e usamos um "if"
para não deixá-la crescer mais que 20 linhas. Você pode
colocar números maiores, se preferir. Então executamos, como
mostrado na semana anterior, e finalmente limpamos o conteúdo
da caixa de entrada, com o comando "delete 0 end",
isto é, do primeiro ao último índice.
O botão "história" é o mais simples, pois
somente irá mostrar a segunda janela, usando o comando "Window
show" (tabela.2). A parte com mais truques é o "binding"
para a "listbox". Queremos que, quando
clicarmos duplamente numa linha dessa lista, este valor seja
colocado na caixa de entrada (mas sem executar nada) e em
seguida fazer a segunda janela desaparecer novamente.
Para isso, devemos selecionar a "listbox",
com o cuidado de não incluir todo o "toplevel"
nessa seleção e usar o editor de bindings, com o comando Alt-B
ou menu "Options-> Bindings" (fig.3 -
editor de bindings).
|

editor de bindings
|
Na linha contendo "Event" escreveremos "<Double-Button-1>"
que significa um duplo-clique no botão da esquerda do
mouse e introduzimos na caixa de texto superior (com o rótulo
"Command") os comandos desejados (tabela.3).
Ao concluir, pressionamos o botão "Add"
e em seguida "Done".
tabela.1
-----------------------------------------------
Comando executado pelo botão "RUN":
set e $widget(entrada)
set l $widget(comandos)
$l insert end [$e get]
if {[$l size] > 20} {
$l
delete 0
}
eval exec [$e get]
$e delete 0 end
-----------------------------------------------
tabela.2
-----------------------------------------------
Comando executado pelo botão "história":
Window show $widget(comandos_top)
-----------------------------------------------
tabela.3
--------------------------------------------------------------
Binding para o duplo-clique em um item da lista de comandos:
(<Double-Button-1>)
set e $widget(entrada)
set l $widget(comandos)
$e
delete 0 end
$e insert end [$l get [$l
curselection]]
Window hide $widget(comandos_top)
--------------------------------------------------------------
Anteriores
Visual
Tcl Parte 2 (21/09/1999)
O
Visual Tcl (14/09/99)
Programando
para Linux (08/09/1999)

|