diff options
Diffstat (limited to 'text_input_dialog.c')
-rw-r--r-- | text_input_dialog.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/text_input_dialog.c b/text_input_dialog.c new file mode 100644 index 0000000..da18b24 --- /dev/null +++ b/text_input_dialog.c @@ -0,0 +1,35 @@ +#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); + entry = gtk_entry_new(); + + 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)); +} |