Re: PHP-GTK Dialog Windows
| From: | Markus Fischer | Date: | Wed, 13 Mar 2002 21:18:01 +0000 |
| Subject: | Re: PHP-GTK Dialog Windows | ||
| References: | 1 | Groups: | php.gtk.general |
| Request: | Send a blank email to php-gtk-general+get-1509@lists.php.net to get a copy of this message | ||
Here's a small code snipplet from my current project.
Basically it works this way:
.) call the function with the message to display and the
responses the user can give
.) create a dialog window which is modal set_modal(true), put
the message and the necessary buttons into it and conncet the
required signal to the buttons
.) show the dialog and call Gtk::main(). At this point we've
a new mainloop; the dialog window is modal and all other
windows do not react to input (though the still can get
focus); only code which is connected to this window or the
buttons in it will be executing during this phase.
.) Only after the dialog has been closed or one of the
buttons has been click Gtk::main_quit() is called which
leaves the newly created inner loop, destroys the window and
returns the index of the button which was pressed (so you can
easily catch it in a switch statement for example).
function prompt_dialog($message, $prompts) {
if (strlen($message) == '' || count($prompts) == 0)
return;
$dialog = &new GtkWindow(GTK_WINDOW_DIALOG);
$dialog->set_title($message);
$dialog->set_policy(false, false, true);
$dialog->set_position(GTK_WIN_POS_CENTER);
$dialog->connect_object('delete_event', create_function('',
'Gtk::main_quit();'));
$dialog->set_modal(true);
$vbox = &new GtkVBox;
$vbox->show();
$dialog->add(&$vbox);
$label = &new GtkLabel($message);
$label->set_padding(50, 50);
$label->show();
$vbox->pack_start($label);
$action_area = &new GtkHbox(true, 0);
$action_area->show();
$vbox->pack_start($action_area, false, false, 10);
$return_value = false;
foreach ($prompts as $i => $prompt) {
$button = &new GtkButton($prompt);
$button->connect_object('clicked', create_function('$retval,$value',
'$retval = $value; Gtk::main_quit();'), &$return_value, $i);
$button->show();
$action_area->pack_start(&$button, true, true, 5);
}
$dialog->show();
Gtk::main();
$dialog->destroy();
return $return_value;
}
switch (prompt_dialog(_("Save changes ?"), array(1 => _("Yes"),2 =>
_("No"),3 => _("Cancel")))) {
case 1:
$this->do_save_changes();
return true;
case 2:
return true;
case 3:
default:
return false;
}
On Wed, Mar 13, 2002 at 03:40:08PM -0500, Miles wrote :
> I've seen a bit of discussion on this issue, but it still is not very clear
> to me so I would like a bit of clarification if possible. When you pull up
> dialog windows, if defined mid function the code keeps going on. Could
> someone explain the nested gtk::main calls I've seen referenced that I'm
> assuming freeze the code until one of the input buttons is clicked.
>
> Any help would be greatly appreciated!
> --
> Miles Phillips
>
> --
> PHP-GTK General Mailing List (http://gtk.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
--
Please always Cc to me when replying to me on the lists.
GnuPG Key: http://guru.josefine.at/~mfischer/C2272BD0.asc