summaryrefslogtreecommitdiff
path: root/text_input_dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'text_input_dialog.c')
-rw-r--r--text_input_dialog.c35
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));
+}