#include "text_input_dialog.h" GtkDialog *text_input_dialog_new(GtkWidget *parent, const gchar *msg) { GtkWidget *dialog; GtkWidget *entry; GtkWidget *vbox; dialog = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, msg); gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); entry = gtk_entry_new(); gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_end(GTK_BOX(vbox), entry, FALSE, FALSE, 0); gtk_widget_show(entry); return GTK_DIALOG(dialog); } gchar *text_input_dialog_get_text(GtkWidget *dialog) { GtkWidget *vbox; GtkWidget *entry; GList *list; GtkEntryBuffer *buf; vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); list = gtk_container_get_children(GTK_CONTAINER(vbox)); entry = NULL; for(int i = 0; i < g_list_length(list); i++) if(GTK_IS_ENTRY(g_list_nth_data(list, i))) entry = GTK_WIDGET(g_list_nth_data(list, i)); g_assert(entry != NULL); buf = gtk_entry_get_buffer(GTK_ENTRY(entry)); return g_strdup(gtk_entry_buffer_get_text(buf)); }