GTK text entry updating programmatically

819 Views Asked by At

I would like to update a text entry on keypress event.

My scenario doesn't have a keyboard, so I am generating it programmatically and trying to update text entry from keypress event handler.

On each key press, I need to update the text entry in GTK window. How can I achieve this? I tried

gtk_entry_set_text (GTK_ENTRY (entry1), buffer);

but it gives a segmentation fault.

I will be getting data from some other user threads, I need to update the text entry with new data and show the gtk window with updated text entry.

The following is my complete code:

GtkEntry *entry1;

static gboolean kp_event_S1_1(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{       
    printf(" - kp_event_S1_1 - \n");
    gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
}


void S1_1(void )
{   
    GtkWidget *Win_1;
    GtkBuilder *builder;        
    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "/home/glade/glade1.glade", NULL);
    window = GTK_WIDGET (gtk_builder_get_object (builder, "Win_1"));
    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),NULL );
    g_signal_connect(G_OBJECT (window), "key_press_event", G_CALLBACK (kp_event_S1_1), NULL);
    gtk_widget_show_all(window);    
    gtk_main();
}
1

There are 1 best solutions below

0
andlabs On

You never assigned the entry1 variable from your GtkBuilder, so entry1 is still NULL at the time of the signal, and the program crashes. You did it for window; doing it for entry1 is similar.