Re: [gtk-list] RPC and redrawing a window (long)
- From: Brian Masney <masneyb ns newwave net>
- To: "K. M. Hawarden-Ogata" <hawarden duke ifa hawaii edu>
- cc: GTK List <gtk-list redhat com>, recipient list not shown: ;
- Subject: Re: [gtk-list] RPC and redrawing a window (long)
- Date: Tue, 18 May 1999 21:04:12 -0400 (EDT)
Hello,
Add this to the end of your collect_data_msg () function:
while (gtk_events_pending ()) {
gtk_main_iteration ();
}
Brian
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS d? s: a-- C++++ UL++++>$ P+ L+++ E--- W+(--) N+ w--- O- M-- V(--)
PS PE Y+ PGP>+++ t++@ 5-- X+ R* tv b+ DI++ D+ G e h++ r* y+
------END GEEK CODE BLOCK------
On Tue, 18 May 1999, K. M. Hawarden-Ogata wrote:
> Hello All,
> I hope someone can help me with this. Unfortunately it requires some
> knowledge of rpcs, I think
> (if you don't know what that is, you can probably forget the rest of this
> message =) ).
>
> I have a GUI application that is supposed to talk to another computer over a
> network, using rpcs. While the connection is being created, a message is
> supposed to be displayed in my drawing area that lets the user know that the
> program is attempting to set up a connection. This worked fine under Motif:
>
> if( (tval.tv_sec % Lc.interval) == 0)
> {
> collecting_data_msg(); /*this is supposed to print the message.
> See code below.*/
>
> /* get sample from temperature controller */
> if( (rc=rpc_temper_get_values( Lc.hostname, 0, &sam )) != ERR_NONE )
> {
> XmtCliPrintf( Cli_w, "rpc_temper_get_values(): ERROR %s",
> Error_string[abs(rc)]);
> return;
> }
> /* record ems of communication */
> Lc.rpc_ems = elapse_ms( &tval );
>
> blah blah
> }
>
>
> void collecting_data_msg( void )
> {
> Widget widget = Status_w;
> Display *dpy = XtDisplay( widget );
> Window window = XtWindow( widget );
>
> Dimension da_wid, da_hgt;
>
> int x, y, l,
> char_wid, char_hgt;
> char *c;
>
> char_wid = Nor_font_wid;
> char_hgt = Nor_font_hgt;
>
> XtVaGetValues( widget, XmNwidth, &da_wid, XmNheight, &da_hgt, NULL);
>
> c = " Collecting Data, Please Wait ";
> l = strlen( c );
> y = da_hgt - (2*char_hgt);
> x = (da_wid - (l*char_wid))/2;
> XSetForeground( dpy, Nor_gc, CM_color[CM_YELLOW]);
> XSetBackground( dpy, Nor_gc, CM_color[CM_RED]);
> XDrawImageString( dpy, window, Nor_gc, x, y, c, l);
>
> XSetBackground( dpy, Nor_gc, CM_color[CM_BLACK]);
> XFlush(dpy);
> }
>
>
> Okay, so when I rewrote these functions under GTK, my collecting_data_msg
> looks like this:
>
>
> void collecting_data_msg( )
> {
> int x, y, l,
> char_wid, char_hgt,
> da_wid, da_hgt;
> char *c;
>
> gdk_window_get_size( Status_w->window, &da_wid, &da_hgt);
>
> char_wid = Fixed_font_wid;
> char_hgt = Fixed_font_hgt;
>
> c = " Collecting Data, Please Wait ";
> l = strlen( c );
> y = da_hgt - (2*char_hgt);
> x = (da_wid - (l*char_wid))/2;
> gdk_gc_set_foreground( Nor_gc, &CM.colors[CM_RED] );
> gdk_draw_rectangle( Status_w->window, Nor_gc, TRUE, x, y-(char_hgt-3),
> l*char_wid, char_hgt );
> gdk_gc_set_foreground( Nor_gc, &CM.colors[CM_YELLOW] );
> gdk_draw_text( Status_w->window, Fixed_font, Nor_gc, x, y, c, l );
> printf( "collecting_data_msg: %s\n", c );
>
> }
>
>
> the function call is:
>
>
> if( (tval.tv_sec % Lc.interval) == 0)
> {
> Lc.collect = 1;
> collecting_data_msg( );
> printf( "TIMER_FUNCTION: if( (tval.tv_sec mod Lc.interval) == 0)\n" );
>
> /* get sample from temperature controller */
> if( (rc=rpc_temper_get_values( Lc.hostname, 0, &sam )) != ERR_NONE )
> {
> printTextOut( "rpc_temper_get_values():\n ERROR %s",
> Error_string[abs(rc)] );
> return 0;
> }
> /* record ems of communication */
> Lc.rpc_ems = elapse_ms( &tval );
>
> blah blah
> }
>
> The strange part is that the printf statement in the collecting_data_msg
> function is printed, but the string is not printed on the drawing area
> widget until the rpc stuff times out. I'm afraid I don't know a lot about
> RPCs, but as far as I can tell, the actually rpc calls are working fine.
>
> Thank you so much if you can help,
>
> Miranda
>
>
> /------------------------------------------------------------------------\
> | Miranda Hawarden-Ogata Email: hawarden@irtf.ifa.hawaii.edu |
> | NASA IRTF, Institute of Astronomy Phone: (808) 974-4206 |
> | 1175 Manono St., Bldg 393 Fax: (808) 974-4207 |
> | Hilo, HI 96720 |
> \------------------------------------------------------------------------/
>
>
> --
> To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]