Newsgroup: it.comp.os.linux.development
Titolo: Recuperare il testo in un combo su gtk+ 2.

Ciao NG!
Sto lavorando con le gtk+ 2 su win, quindi scusate se sono un po' OT ma credo
che chi sviluppa con le gtk lo faccia perlopiù sotto linux. Ho creato con
Glade la mia interfaccia e ora sto aggiuggendo il mio coice. Ho delle
difficoltà ad ottenere il contenuto di un combobox. Questo è il codice (dal
file callbacks.c, creato da Glade):
1       void
2       on_bt_ok_clicked                       (GtkButton       *button,
3                                               gpointer         user_data)
4      {
5           GtkWidget *entry1 = lookup_widget(GTK_WIDGET(button),
"committente"); 6           gchar *committente =
gtk_entry_get_text(GTK_ENTRY(entry1));[...]
7           GtkWidget *entry4 = lookup_widget(GTK_WIDGET(button),
"comune_combo"); 8           gchar *comune_combo =
gtk_entry_get_text(GTK_ENTRY(GTK_COMBO (entry4)->entry));[...]
9      }
Questo è il codice che dovrebbe attivarsi alla pressione di un bottone.
Nelle linee 5-6 recupero l'input di un campo testo e fin qui funziona.
lookup_widget() è una funzione fornita da Glade, che ritorna un puntatore
GtkWidget di un widget, passando il nome del widget. Nelle linee 7-8 provo a
fare la stessa cosa con un combo box. La compilazione va a buon fine e posso
eseguire il programma, am quando clicco il bottone ottengo un errore
"GTK_IS_ENTRY Failed". Ho trovato il codice sul tutorial ufficiale delle gtk,
per cui credo che sia corretto. Qualcuno ha idea di perchè non funzoni?
Ciao e grazie, Gio

'Azz! Sylpheed mi ha sballato l'indentazione del codice. Lo
riscrivo qui:
1       void
2       on_bt_ok_clicked                       (GtkButton       *button,
3                                               gpointer         user_data)
4      {
5           GtkWidget *entry1 = lookup_widget(GTK_WIDGET(button), "committente");
6           gchar *committente = gtk_entry_get_text(GTK_ENTRY(entry1));
[...]
7           GtkWidget *entry4 = lookup_widget(GTK_WIDGET(button), "comune_combo");
8           gchar *comune_combo = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO (entry4)->entry));
[...]
9      }
L'errore preciso che mi dà é:
Gtk-CRIRTICAL **: file gtkentry.c: line 3437 <gtk_entry_get_text>:
assertion 'GTK_IS_ENTRY <entry>' failed

 9      }
Piccola digressione ... quando vedo questi snippet ringrazio Dio (o Alex
Martelli ^__-) di avermi fatto conoscere a Python :-D
-- 
Tra due mali scelgo sempre quello che non ho mai provato. (Mae West) 


Non conosco python ma il framework di kde (o le qt in generale) sono
_molto_ piu leggibili....... Questo è uno dei motivi per i quali non mi
avvicinerò mai a gtk
-- 
Filippo Santovito

 avvicinerò mai a gtk
Ti posso assicura che con Python ed i relativi bindings è tutta un'altra
storia.
Ad esempio per fare quello che richiede l'OP, cioè recuperare il testo
in un combo basta:
testo=combo.entry.get_text()
-- 
I think. Therefore I am DANGEROUS.
 |\ |       |HomePage   : 
http://nem01.altervista.org
 | \|emesis |XPN (my nr): 
http://xpn.altervista.org

 testo=combo.entry.get_text()
Bello! Però il C è molto più *spendibile* sul mercato del lavoro,
rispetto al Python.
E poi Glade produce codice solo in C e C++.
Ciao, Gio

 ha
scritto::

a parte che lo produce anche per altri linguaggi, questa 'feature' è
destinata a sparire in glade3. Fateci caso, il mondo va verso
interfacce dichiarative in xml (purtroppo?).
libglade+libxml2 sono pochi kb, sono molto efficienti e disponibili su
tute le piattaforme.

 E poi Glade produce codice solo in C e C++.
E che c'entra? io in passato usavo libglade con python...
-- 
Io la Laura Antonelli me la farei ancora. (Maurizio Mosca)
