Escalas Verticais
Este exemplo demonstra a utilização de escalas verticais (GtkVScale). Escalas são barras com um indicador de valor que pode ser posicionado pelo usuário dentro do intervalo definido pelo programador.
O programa a seguir consiste em uma janela contendo uma caixa horizontal (GtkHBox) com caixas verticais com duas escalas, uma para temperatura em Celsius, e outra para temperatura em Farenheit.
Assim que o usuário altera o valor da escala em Celsius, automaticamente o cursor da escala em Farenheit se posiciona na temperatura correspondente, após realizada a conversão.
<?php
/*
* função onChanged
* Recalcula a escala em graus farenheit
* sempre que a seleção em Celsius mudar
*/
function onChanged($hscale1, $hscale2)
{
$celsius = $hscale1->get_value();
$farenheit = ($celsius * 1.8) + 32;
// °F = °C × 1.8 + 32
$hscale2->set_value($farenheit);
}
// cria janela principal
$window = new GtkWindow;
$window->set_default_size(40,400);
$window->set_position(GTK::WIN_POS_CENTER);
$window->set_title('VScale');
$window->set_border_width(10);
// cria caixa horizontal
$hbox = new GtkHBox;
// cria 2 caixas verticais
$vbox1 = new GtkVBox;
$vbox2 = new GtkVBox;
// cria 2 escalas verticais com seus respectivos ajustes
$hscale1 = new GtkVScale(new GtkAdjustment(20, -200, 200, 0.1, 10, 0));
$hscale2 = new GtkVScale(new GtkAdjustment(20, -200, 200, 0.1, 10, 0));
$hscale1->set_value(70);
$hscale2->set_value(158);
// define a ação para quando a seleção da primeira escala mudar
$hscale1->get_adjustment()->connect_simple('value-changed', 'onChanged', $hscale1, $hscale2);
// cria rótulos de texto
$label1 = new GtkLabel('(Celsius)');
$label2 = new GtkLabel('(Farenheit)');
$label1->set_size_request(100, -1);
$label2->set_size_request(100, -1);
// empacota os rótulos de texto e as escalas
$vbox1->pack_start($label1, false, false);
$vbox1->pack_start($hscale1);
$vbox2->pack_start($label2, false, false);
$vbox2->pack_start($hscale2);
// coloca tudo na caixa horizontal
$hbox->pack_start($vbox1);
$hbox->pack_start($vbox2);
// adiciona a caixa horizontal à janela
$window->add($hbox);
// exibe a janela
$window->show_all();
Gtk::main();
?>




