[Glade-users] Calling Perl GTK modules
Damon Chaplin
damon at karuna.uklinux.net
Mon Oct 10 06:11:41 EDT 2005
On Thu, 2005-10-06 at 14:40 -0400, Dale wrote:
> Hello all...
>
> I'm a little confused as to how to go about something.
>
> I have a small (well, sort of) module called CheckSecure that is
> nothing more than a user/password popup I want to use for
> authentication via LDAP. The module works great like this:
>
> require CheckSecure;
> my $auth = CheckSecure::check_secure;
> if ($auth) {
> #do whatever
> }
>
> It does the popup, and returns the value to me. I can use it from a
> non-GUI Perl script, and it's perfect. However...
>
> I'm not sure how to use it from a GTK program. When I call the module
> like this, my GTK program isn't waiting to get a response back. The
> $auth variable has no value when I'm trying to use it, because a value
> hasn't been returned from CheckSecure yet.
>
> I originally had Gtk->main and Gtk->main_quit in the module, but I
> have since removed them, because of course ->main_quit was killing the
> GTK app that was calling the module. My main problem is just
> retrieving the value though.
You need to create your own GMainLoop and run it to handle your dialog
(which should be modal), just as the gtk_dialog_run() code does:
ri.loop = g_main_loop_new (NULL, FALSE);
GDK_THREADS_LEAVE ();
g_main_loop_run (ri.loop);
GDK_THREADS_ENTER ();
g_main_loop_unref (ri.loop);
Actually the simplest thing to do is just use gtk_dialog_run().
Damon
More information about the Glade-users
mailing list