Janelas ímã
Meu primeiro artigo, ajudará a criar janelas, que seguem umas as outras. O código a seguir é uma rapida explicação, porem da pra melhor muito o código, claro!
Criamos 2 janelas, e na janela pai conectamos ao evento 'event'. Neste sinal, o tipo 13 é o 'move'. Assim fazemos a janela filha se mover junto à janela pai.
Para completar, fazemos a janela filha ser transitória da janela Pai com o GtkWindow::set_transient_for().
Até mais.
<?php
function btnOpen_onClick() {
global $visible, $frmGlue, $frmMain, $btnOpen;
if($visible) {
$frmGlue->hide();
$btnOpen->set_label('Open');
$visible = false;
} else {
$frmGlue->show_all();
$btnOpen->set_label('Close');
$visible = true;
}
}
function frmMain_onEvent($window, $event) {
global $frmMain, $frmGlue;
if($event->type == 13) {
$frmGlue->move($event->x + $event->width + 3, $event->y - 22);
}
}
$frmMain = new GtkWindow();
$fixMain = new GtkFixed();
$frmGlue = new GtkWindow();
$frmMain->set_size_request(400, 300);
$frmGlue->set_size_request(100, 300);
$frmMain->set_resizable(false);
$frmGlue->set_resizable(false);
$frmGlue->set_transient_for($frmMain);
$btnOpen = new GtkButton('Open');
$fixMain->put($btnOpen, 8, 8);
$frmMain->add($fixMain);
$frmMain->show_all();
$visible = false;
$frmMain->connect_simple('destroy', array('Gtk', 'main_quit'));
$frmMain->connect('event', 'frmMain_onEvent');
$btnOpen->connect_simple('clicked', 'btnOpen_onClick');
Gtk::main();





