Primeiro post, quem diria … eu … escrevendo em um blog … uhaeuhae.
Mas não é um blog qualquer, meus amigos sabem que sou persistente, tenho idéias malucas as vezes e acabo conseguindo torna-las realidade. Por isso este blog vai trazer muitas coisas interessantes, coisas fora do normal.
Bem, então vamos lá.
Um dia tive a maluca idéia de criar campos de usuário, campos onde o usuário personalizaria sua aplicação. Para isso resolvi desenvolver uma janela que “segui-se” a janela mãe, assim parecendo ser uma aplicação só. Deem uma olhada no resultado final:
Este tipo de janela, pode ser usado em muitas outras funcionalidades, show de bola!!
Veja o código simples e bem comentado!
hide();
$btnOpen->set_label('Open');
$visible = false;
} else {
// Mostra a janela filha
$frmGlue->show_all();
$btnOpen->set_label('Close');
$visible = true;
}
}
// Eventos da janela principal
function frmMain_onEvent($window, $event) {
global $frmMain, $frmGlue;
// Verifica se a janela está se movendo
if($event->type == 13) {
// Move a janela filha para proximo da janela principal
$frmGlue->move($event->x + $event->width + 3, $event->y - 22);
}
}
// Cria as janelas
$frmMain = new GtkWindow();
$fixMain = new GtkFixed();
$frmGlue = new GtkWindow();
// Seta o tamanho das janelas
$frmMain->set_size_request(400, 300);
$frmGlue->set_size_request(100, 300);
// Não deixa mudar o tamanho das janelas
$frmMain->set_resizable(false);
$frmGlue->set_resizable(false);
// Aqui está o segredo.
// Aqui faz a janela filha ser realmente filha da janela pai
// ho!ho! obvio, mas é isso mesmo =D
$frmGlue->set_transient_for($frmMain);
// Cria o botão para abrir ou fechar a janela filha
$btnOpen = new GtkButton('Open');
$fixMain->put($btnOpen, 8, 8);
// Mostra tudo
$frmMain->add($fixMain);
$frmMain->show_all();
// Inicia escodido
$visible = false;
// Conecta o sinal ao destruir a aplicação
$frmMain->connect_simple('destroy', array('Gtk', 'main_quit'));
// Conecta o sinal event à janela principal
$frmMain->connect('event', 'frmMain_onEvent');
// Conecta o sinal clicked do botão
$btnOpen->connect_simple('clicked', 'btnOpen_onClick');
// Inicia a aplicação
Gtk::main();
e o resultado final desta maravilha:
Pessoal, maravilha, até a proxima =D
Muito bom. É sempre bom ver mais um amigo aventurando-se no PHP-GTK. continue persistente. Te vejo na nossa Lista e já tô fazendo Ctrl+D no teu blog!
É, primeiro comentario Wendell =D
Achei a palavra aventurar meio perdida, ja que estou nessa a tempos. Somos pioneiros nessa, e espero que com minha iniciativa, ajude a crescer mais ainda essa linguagem fantastica, com esses complementos mais fantasticos ainda =DDD
valeu!
Bruno… maravilha,…pra quem gosta,…é ser livre é assim..http://multitecnica.yolasite.com/3D,..