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();
}
You never assigned the
entry1
variable from your GtkBuilder, soentry1
is stillNULL
at the time of the signal, and the program crashes. You did it forwindow
; doing it forentry1
is similar.