GTK text entry updating programmatically

813 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
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.