[Glade-users] Glade widget updating problem.

Micah Carrick email at micahcarrick.com
Thu Dec 28 19:18:17 EST 2006


You could use the callback for the button's "clicked" event to create a 
g_timeout with the 1s interval. The function handling the g_timeout 
could contain update your GtkRange and then call:

while (gtk_events_pending ()) gtk_main_iteration ();

This will ensure that the GUI is updated each time. When you're done 
incrementing the range, you can return FALSE from the g_timout function 
to destroy the timeout.

- Micah Carrick
http://www.micahcarrick.com | http://www.gtkforums.com

Koen Lekkerkerker wrote:
> Hi everybody, I have a problem (again) with glade. Or actually GTK2. The
> problem is that my GUI (or better GUI-elements) isn't updated frequently
> enough (or at least, that is my conclusion). I my case it is like this: 
> I have a button. When i click it i want a scale to be set to a value 0,
> a second later it needs to be 1, another second later 2, and so one
> untill 10. When I make a GUI with code that fits this, it will work. But
> the scale goes from 0 to 1 to 2 to 4 to 5 to 7 to 8 to 10. These double
> steps dure 2 seconds (as logical). I found out that de widgets
> themselves are updated directly (by using g_print(x); in my terminal)
> but that their graphical appearance in the GUI isn't updated frequently
> enough. Point is that I wan't the GUI to be synced with the value of the
> widgets. I have this problem using glade3 and libglade2. I had the exact
> same problem with glade2 using the code of it's built-in code generator.
> Can anybody please help me with this? The code of my app is below. But
> first another little question: is it possible to make a complete
> compilation of a libglade/gtk program with the GUI built in? So that it
> doesn't need the libglade library and the xml-file to run?
> Thanks a lot in advance! 
> Koen
>
> Here is my terminal command:
>         cc -o testprogram gl3test.c `pkg-config --cflags --libs
>         libglade-2.0` -export-dynamic
>
> And here is my c file (gl3test.c):
>
>         #ifdef HAVE_CONFIG_H
>         #  include <config.h>
>         #endif
>         
>         
>         #include <gtk/gtk.h>
>         #include <stdio.h>
>         #include <glade/glade.h>
>         
>         static GtkWidget *label;
>         static GtkWidget *scale;
>         
>         void
>         on_button1_clicked                    (GtkButton       *button,
>                                                 gpointer
>         user_data)
>         {
>         int x;
>         char test[3];
>         gtk_label_set_text(GTK_LABEL(label),"goedzo");
>           for( x=0;x<=10;x++){
>             gtk_range_set_value(GTK_RANGE(scale),x);
>             usleep(1000000);
>             sprintf(test,"%d",x);
>             gtk_label_set_text(GTK_LABEL(label),test);
>             g_print("%d\n",x);
>             }
>         gtk_range_set_value(GTK_RANGE(scale),0);
>         gtk_label_set_text(GTK_LABEL(label),"klik nog een keer");
>         g_print("klaar");
>         }
>         
>         int main(int argc, char *argv[]) {
>             GladeXML *xml;
>         
>             gtk_init(&argc, &argv);
>         
>             /* load the interface */
>             xml = glade_xml_new("gl3test.glade", NULL, NULL);
>         
>             scale = glade_xml_get_widget(xml, "hscale1");
>             label = glade_xml_get_widget(xml, "label1");
>         
>             /* connect the signals in the interface */
>             glade_xml_signal_autoconnect(xml);
>             /* start the event loop */
>             gtk_main();
>         
>             return 0;
>         }
>
> and this is my xml-file (gl3test.glade):
>
>         <?xml version="1.0" encoding="UTF-8" standalone="no"?>
>         <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
>         <!--Generated with glade3 3.0.3 on Mon Dec 25 22:08:52 2006 by
>         koen at koen-desktop-->
>         <glade-interface>
>           <widget class="GtkWindow" id="window1">
>             <property name="width_request">200</property>
>             <property name="height_request">599</property>
>             <property name="visible">True</property>
>             <property name="can_focus">True</property>
>             <property name="can_default">True</property>
>             <property name="title" translatable="yes">testje</property>
>             <property
>         name="window_position">GTK_WIN_POS_CENTER</property>
>             <property name="default_width">199</property>
>             <property name="default_height">600</property>
>             <property name="icon">itunes-blue150.jpg</property>
>             <child>
>               <widget class="GtkVBox" id="vbox1">
>                 <property name="visible">True</property>
>                 <child>
>                   <widget class="GtkHScale" id="hscale1">
>                     <property name="visible">True</property>
>                     <property name="adjustment">2 0 10 1 0 0</property>
>                     <property name="value_pos">GTK_POS_LEFT</property>
>                   </widget>
>                 </child>
>                 <child>
>                   <widget class="GtkButton" id="button1">
>                     <property name="visible">True</property>
>                     <property name="label"
>         translatable="yes">button</property>
>                     <signal name="clicked"
>         handler="on_button1_clicked"/>
>                   </widget>
>                   <packing>
>                     <property name="position">1</property>
>                   </packing>
>                 </child>
>                 <child>
>                   <widget class="GtkLabel" id="label1">
>                     <property name="visible">True</property>
>                     <property name="label"
>         translatable="yes">tekst</property>
>                   </widget>
>                   <packing>
>                     <property name="position">2</property>
>                   </packing>
>                 </child>
>               </widget>
>             </child>
>           </widget>
>         </glade-interface>
>
>
>
>
>
> _______________________________________________
> Glade-users maillist  -  Glade-users at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/glade-users
>
>   


More information about the Glade-users mailing list