Newsgroup: it.comp.os.linux.development
Titolo: Non riesco a leggere le entry...

Ho creato in GTK/GNOME una finestra di dialogo come segue:
void configura( void )
{
        GtkWidget *window;
        GtkWidget *table;
        GtkWidget *label;
        GtkWidget *mbox;
        int reply;
        window = gnome_dialog_new( _("Prova"), GNOME_STOCK_BUTTON_C
ANCEL, GNOME_STOCK_BUTTON_OK, NULL );
        gnome_dialog_set_default( GNOME_DIALOG( window ), 1 );
        gnome_dialog_set_close( GNOME_DIALOG( window ), TRUE );
        table = gtk_table_new( 17, 2, TRUE );
        gtk_container_add( GTK_CONTAINER( window ), table );
 
        label = gtk_label_new( "Questa e' la prima volta che eseguite 
questo programma.\nPer poter utilizzare FISCAL bisogna prima riempire i cam
pi qui di seguito:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 2, 0, 1 );
        gtk_widget_show( label );
        label = gtk_label_new( "Denominazione:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 1, 2 );
        gtk_widget_show( label );
        label = gtk_label_new( "Indirizzo:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 2, 3 );
        gtk_widget_show( label );
        label = gtk_label_new( "C.A.P.:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 3, 4 );
        gtk_widget_show( label );
        label = gtk_label_new( "Città:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 4, 5 );
        gtk_widget_show( label );
        label = gtk_label_new( "Provincia:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 5, 6 );
        gtk_widget_show( label );
        label = gtk_label_new( "Partita IVA:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 6, 7 );
        gtk_widget_show( label );
        label = gtk_label_new( "Codice Fiscale:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 7, 8 );
        gtk_widget_show( label );
        label = gtk_label_new( "Telefono:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 8, 9 );
        gtk_widget_show( label );
        label = gtk_label_new( "Cellulare:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 9, 10 );
        gtk_widget_show( label );
        label = gtk_label_new( "Email:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 10, 11 );
        gtk_widget_show( label );
        label = gtk_label_new( "URL:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 11, 12 );
        gtk_widget_show( label );
        label = gtk_label_new( "Banca:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 12, 13 );
        gtk_widget_show( label );
        label = gtk_label_new( "ABI:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 13, 14 );
        gtk_widget_show( label );
        label = gtk_label_new( "CAB:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 14, 15 );
        gtk_widget_show( label );
        label = gtk_label_new( "Numero Conto:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 15, 16 );
        gtk_widget_show( label );
        label = gtk_label_new( "Numero di Serie:" );
        gtk_table_attach_defaults( GTK_TABLE( table ), label, 0, 1, 16, 17 );
        gtk_widget_show( label );
        entry1 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry1, 1, 2, 1, 2 );
        gtk_widget_show( entry1 );
        entry2 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry2, 1, 2, 2, 3 );
        gtk_widget_show( entry2 );
        entry3= gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry3, 1, 2, 3, 4 );
        gtk_widget_show( entry3 );
        entry4 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry4, 1, 2, 4, 5 );
        gtk_widget_show( entry4 );
        entry5 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry5, 1, 2, 5, 6 );
        gtk_widget_show( entry5 );
        entry6 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry6, 1, 2, 6, 7 );
        gtk_widget_show( entry6 );
        entry7 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry7, 1, 2, 7, 8 );
        gtk_widget_show( entry7 );
        entry8 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry8, 1, 2, 8, 9 );
        gtk_widget_show( entry8 );
        entry9 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry9, 1, 2, 9, 10 );
        gtk_widget_show( entry9 );
        entry10 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry10, 1, 2, 10, 11 );
        gtk_widget_show( entry10 );
        entry11 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry11, 1, 2, 11, 12 );
        gtk_widget_show( entry11 );
        entry12 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry12, 1, 2, 12, 13 );
        gtk_widget_show( entry12 );
        entry13 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry13, 1, 2, 13, 14 );
        gtk_widget_show( entry13 );
        entry14 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry14, 1, 2, 14, 15 );
        gtk_widget_show( entry14 );
        entry15 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry15, 1, 2, 15, 16 );
        gtk_widget_show( entry15 );
        entry16 = gtk_entry_new();
        gtk_table_attach_defaults( GTK_TABLE( table ), entry16, 1, 2, 16, 17 );
        gtk_widget_show( entry16 );
 
        gtk_box_pack_start( GTK_BOX( GNOME_DIALOG( window )->vbox ), table,
 TRUE, TRUE, GNOME_PAD );
        mbox = gnome_message_box_new( "Non ho trovato il f
ile di configurazione.\nIl programma deve essere registr
ato.", GNOME_MESSAGE_BOX_INFO, GNOME_STOCK_BUTTON_OK, NULL );
        gtk_widget_show( mbox );
 
        reply = gnome_dialog_run( GNOME_DIALOG( mbox ) );
        gtk_widget_show( table );
        gtk_widget_show( window );
        reply = gnome_dialog_run( GNOME_DIALOG( window ) );
        if ( reply == 0 )
        {
                mbox = gnome_message_box_new( "Il programma non può essere es
eguito se non registrato.", GNOME_MESSAGE_BOX_ERROR, GNOME_STOCK_BUTTON_OK, NULL );
                gtk_widget_show( mbox );
                reply = gnome_dialog_run( GNOME_DIALOG( mbox ) );
                gtk_main_quit();
                exit( 1 );              
        }
        if( reply == 1 )
        {
                salva_utente( window, NULL);
                exit( 1 );
        }
}
e poi ho provato a leggere le entry create con:
int salva_utente( GtkWidget *widget, gpointer data )
{
        struct campi_utenze UTENTE;
        int i;
        GtkWidget *mbox;
        UTENTE.Nome = gtk_entry_get_text( GTK_ENTRY( entry1 ) );
        UTENTE.Indirizzo = gtk_entry_get_text( GTK_ENTRY( entry2 ) );
        UTENTE.CAP = gtk_entry_get_text( GTK_ENTRY( entry3 ) );
        UTENTE.Citta = gtk_entry_get_text( GTK_ENTRY( entry4 ) );
        UTENTE.Provincia = gtk_entry_get_text( GTK_ENTRY( entry5 ) );
        UTENTE.PIVA = gtk_entry_get_text( GTK_ENTRY( entry6 ) );
 
UTENTE.CF
 = gtk_entry_get_text( GTK_ENTRY( entry7 ) );
        UTENTE.Telefono = gtk_entry_get_text( GTK_ENTRY( entry8 ) );
        UTENTE.Cellulare = gtk_entry_get_text( GTK_ENTRY( entry9 ) );
        UTENTE.Email = gtk_entry_get_text( GTK_ENTRY( entry10 ) );
        UTENTE.URL = gtk_entry_get_text( GTK_ENTRY( entry11 ) );
        UTENTE.Banca = gtk_entry_get_text( GTK_ENTRY( entry12 ) );
        UTENTE.ABI = gtk_entry_get_text( GTK_ENTRY( entry13 ) );
        UTENTE.CAB = gtk_entry_get_text( GTK_ENTRY( entry14 ) );
        UTENTE.NConto = gtk_entry_get_text( GTK_ENTRY( entry15 ) );
        UTENTE.NSerie = gtk_entry_get_text( GTK_ENTRY( entry16 ) );
        printf( "-->Testo inserito: %s\n", UTENTE.Nome );
        printf( "-->Testo inserito: %s\n", UTENTE.Indirizzo );
        printf( "-->Testo inserito: %s\n", UTENTE.CAP );
        printf( "-->Testo inserito: %s\n", UTENTE.Citta );
        printf( "-->Testo inserito: %s\n", UTENTE.Provincia );
        printf( "-->Testo inserito: %s\n", UTENTE.PIVA );
        printf( "-->Testo inserito: %s\n", 
UTENTE.CF
 );
        printf( "-->Testo inserito: %s\n", UTENTE.Telefono );
        printf( "-->Testo inserito: %s\n", UTENTE.Cellulare );
        printf( "-->Testo inserito: %s\n", UTENTE.Email );
        printf( "-->Testo inserito: %s\n", UTENTE.URL );
        printf( "-->Testo inserito: %s\n", UTENTE.Banca );
        printf( "-->Testo inserito: %s\n", UTENTE.ABI );
        printf( "-->Testo inserito: %s\n", UTENTE.CAB );
        printf( "-->Testo inserito: %s\n", UTENTE.NConto );
        printf( "-->Testo inserito: %s\n", UTENTE.NSerie );
        i = strcmp( UTENTE.Nome, "" );
        if( i == 0 )                                    // Se UTENTE.Nome = "" allora...
        {
                printf( "Non e' stato inserito il nome...\n" );
                mbox = gnome_message_box_new( "Non e' stato inserito
 il nome...", GNOME_MESSAGE_BOX_INFO, GNOME_STOCK_BUTTON_OK, NULL );
                gtk_widget_show( mbox );
 
                return TRUE;
        }
        printf( "Salvero' i dati...\n" );
        gtk_main_quit();
        return FALSE;
}
e ho definito le entry GtkWidget *entry e ho creatu una struttura UTENTE.
Quando compilo tutto è ok, ma quando eseguo il programma, nelle entry trovo 
NULL e non il testo che ho scritto. Tutto funzionava bene quando invece di 
creare un Dialog avevo creato un window, ma volevo fare il tutto con un 
dialog. 
Dove sbaglio???
Perchè il dialog mi si distrugge appena premo il pulsante ok?
Grazie....

 Perchè il dialog mi si distrugge appena premo il pulsante ok?
perché dovrebbe essere il suo comportamento di default . Ovviamente può
essere modificato accangiando l'evento della pressione del bottone.

Ottavio Campana wrote:

Ho visto che te ne intendi... (sicuramente piu' di me)
mi consiglieresti un buon manuale per utilizzare le GTK+???
Sia su Internet che in libreria (italiano)
grazie 1k
ciao diego
-- 
...e che vuoi di piu' dalla vita??

 libreria (italiano) grazie 1k
tutorial gtk a 
www.gtk.org
tutotial su gnome a 
developer.gnome.org
 (si chiama ggad)