pspp-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[datasets 15/18] gui: New "entry-dialog" module for prompting for a text


From: Ben Pfaff
Subject: [datasets 15/18] gui: New "entry-dialog" module for prompting for a text string.
Date: Sat, 30 Apr 2011 22:36:43 -0700

This will be used in an upcoming commit to implement File|Rename
Dataset.
---
 src/ui/gui/automake.mk    |    2 +
 src/ui/gui/entry-dialog.c |   64 +++++++++++++++++++++++++++++++++++++++++++++
 src/ui/gui/entry-dialog.h |   27 +++++++++++++++++++
 3 files changed, 93 insertions(+), 0 deletions(-)
 create mode 100644 src/ui/gui/entry-dialog.c
 create mode 100644 src/ui/gui/entry-dialog.h

diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk
index 5672b15..197f60f 100644
--- a/src/ui/gui/automake.mk
+++ b/src/ui/gui/automake.mk
@@ -144,6 +144,8 @@ src_ui_gui_psppire_SOURCES = \
        src/ui/gui/dialog-common.h \
        src/ui/gui/dict-display.h \
        src/ui/gui/dict-display.c \
+       src/ui/gui/entry-dialog.c \
+       src/ui/gui/entry-dialog.h \
        src/ui/gui/examine-dialog.c \
        src/ui/gui/examine-dialog.h \
        src/ui/gui/executor.c \
diff --git a/src/ui/gui/entry-dialog.c b/src/ui/gui/entry-dialog.c
new file mode 100644
index 0000000..019e883
--- /dev/null
+++ b/src/ui/gui/entry-dialog.c
@@ -0,0 +1,64 @@
+/* PSPPIRE - a graphical user interface for PSPP.
+   Copyright (C) 2011 Free Software Foundation
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "ui/gui/entry-dialog.h"
+
+#include "gl/xalloc.h"
+
+/* Creates a modal dialog with PARENT as its parent (this should be the
+   application window that the dialog is associated with), with TITLE as its
+   title, that prompts for a text string with PROMPT as the explanation and
+   DEFAULT_VALUE as the default value.
+
+   Returns a malloc()'d string owned by the caller if the user clicks on OK or
+   otherwise accepts a value, or NULL if the user cancels. */
+char *
+entry_dialog_run (GtkWindow *parent,
+                  const char *title,
+                  const char *prompt,
+                  const char *default_value)
+{
+  GtkWidget *dialog;
+  GtkWidget *vbox;
+  GtkWidget *entry;
+  char *result;
+
+  dialog = gtk_dialog_new_with_buttons (title, parent,
+                                        GTK_DIALOG_NO_SEPARATOR,
+                                        GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+                                        GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+                                        NULL);
+  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
+  vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+
+  gtk_box_pack_start (GTK_BOX (vbox), gtk_label_new (prompt), TRUE, FALSE, 0);
+
+  entry = gtk_entry_new ();
+  gtk_entry_set_text (GTK_ENTRY (entry), default_value);
+  gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
+  gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, FALSE, 0);
+
+  gtk_widget_show_all (dialog);
+
+  result = (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT
+            ? xstrdup (gtk_entry_get_text (GTK_ENTRY (entry)))
+            : NULL);
+  gtk_widget_destroy (dialog);
+
+  return result;
+}
diff --git a/src/ui/gui/entry-dialog.h b/src/ui/gui/entry-dialog.h
new file mode 100644
index 0000000..8f71acd
--- /dev/null
+++ b/src/ui/gui/entry-dialog.h
@@ -0,0 +1,27 @@
+/* PSPPIRE - a graphical user interface for PSPP.
+   Copyright (C) 2011 Free Software Foundation
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef ENTRY_DIALOG_H
+#define ENTRY_DIALOG_H 1
+
+#include <gtk/gtk.h>
+
+char *entry_dialog_run (GtkWindow *parent,
+                        const char *title,
+                        const char *prompt,
+                        const char *default_value);
+
+#endif /* ui/gui/entry-dialog.h */
-- 
1.7.2.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]