El jue, 11 de 03 de 2004 a las 15:37, Ori Idan escribiÃ:
I created the menu items using 'gtk_menu_item_new_with_label' so I guess there should be a way to read the label. I don't know why it has to be so complicated, why not add a simple function to read the label as I think it is a very common task. What I did was to add a string to the menu item using 'g_object_set_data' but this seems to me as just adding more complexity for something that should be done otherwise.
Ok, so you used gtk_menu_item_new_with_label(const gchar *label); Then in this GtkMenuItem there is only one GtkLabel - this is not always true. The GtkMenuItem heritage is this one: [....] GtkBin GtkItem GtkMenuItem A GtkBin is nothing but a container that can have one child - in this case your label. There's a function to retrieve this child widget, gtk_bin_get_child() but you can also get it as it's public member "child" (GtkBin*) bin->child So you can get the child label of a GtkMenuItem with : gtk_bin_get_child( GTK_BIN(GtkMenuItem*) ). Check the following test code: /* File: label.c Compile: gcc `pkg-config --cflags --libs gtk+-2.0` label.c -o label Run with ./label */ #include <gtk/gtk.h> int main( int argc, char* argv[]) { GtkWidget* item; GtkWidget* label; gtk_init(&argc, &argv); item = gtk_menu_item_new_with_label("Blah"); label = gtk_bin_get_child (GTK_BIN(item)); if( GTK_IS_LABEL(label) ){ // just a sanity check gtk_label_set_text(GTK_LABEL(label),"Text"); }else{ g_print("is not a label"); return 0; } g_print( "The text in the label is %s\n", gtk_label_get_text(GTK_LABEL(label)) ); return 0; } /* end */ Hope this helps. -- Iago Rubio http://www.iagorubio.com GPGkey pgp.rediris.es id 0x909BD4DD fingerprint = D18A B950 5F03 BB9A DD89 AA75 FEDF 1978 909B D4DD ********** iago.rubio(AT)hispalinux.es ********** --------------------------------------------------
Attachment:
signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente