On Tue, 21 Jul 2009 23:45:38 -0400 (EDT)
Allin Cottrell <cottr...@wfu.edu> wrote:
> On Tue, 21 Jul 2009, Dov Grobgeld wrote:
> 
> > Here are two programs that implement through the text viewer
> > widget what you are asking for:
> >
> >    - The Python console in gimp
> >    - GemTcl - a tcl interpreter
> >
> > The way I set up the interaction is to listen to both the
> > key-press-event and the insert-text events of the text-viewer.
> > The key-press-event signals to the insert-event handler that it
> > is supposed to enter eval mode... and the insert-event catches
> > this before the newline is inserted into the buffer, runs the
> > eval and inserts the result into the buffer[.]
> 
> Thanks for the references.  That is pretty much what I have been
> doing up till now.  What I really wanted that was new, though, was
> a loop of precisely the form
> 
> while (get_a_command()) {
>   respond
> }

You can't put a single threaded program in a blocking loop like this
if you are running an event based GUI such as GTK+ or Qt.

You either have to put your blocking loop in a separate thread (and
you must make sure that get_a_command() really does block or you will
have a tight loop using 100% of one of your CPU cores), or use
the event mechanism, which means connecting to a relevant GTK+/GObject
signal such as a key-press-event as suggested (which is in fact
dispatched by the glib main loop).

Chris

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to