Port to GtkDialog. Strdup the text returned by GtkEntry after destroying

* e-request.c (e_request_string): Port to GtkDialog.  Strdup the
text returned by GtkEntry after destroying the dialog, not before.
Use gtk_editable_select_region() instead of
gtk_entry_select_region().  Add a little bit of padding to make it
look less crampy and set a default width.

* e-dialog-utils.h (e_gnome_dialog_set_parent): Declare only if
GNOME_DISABLE_DEPRECATED is not #defined.
(e_gnome_warning_dialog_parented): Likewise.
(e_gnome_ok_cancel_dialog_parented): Likewise.

svn path=/trunk/; revision=19657
This commit is contained in:
Ettore Perazzoli
2003-01-27 21:08:46 +00:00
parent 1d9a3023e5
commit dd15703ae5
3 changed files with 43 additions and 24 deletions

View File

@ -26,11 +26,11 @@
#include "e-request.h"
#include <libgnomeui/gnome-dialog.h>
#include <gtk/gtklabel.h>
#include <gtk/gtkentry.h>
#include <gtk/gtkbox.h>
#include <gtk/gtkdialog.h>
#include <gtk/gtkentry.h>
#include <gtk/gtklabel.h>
#include <gtk/gtkstock.h>
/**
@ -52,7 +52,7 @@ e_request_string (GtkWindow *parent,
const char *default_string)
{
GtkWidget *prompt_label;
const char *text = NULL;
char *text;
GtkWidget *dialog;
GtkWidget *entry;
GtkWidget *vbox;
@ -60,42 +60,42 @@ e_request_string (GtkWindow *parent,
g_return_val_if_fail (title != NULL, NULL);
g_return_val_if_fail (prompt != NULL, NULL);
dialog = gnome_dialog_new (title, GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, NULL);
gnome_dialog_set_parent (GNOME_DIALOG (dialog), parent);
gnome_dialog_set_default (GNOME_DIALOG (dialog), 0);
gnome_dialog_close_hides (GNOME_DIALOG (dialog), TRUE);
vbox = GNOME_DIALOG (dialog)->vbox;
dialog = gtk_dialog_new_with_buttons (title, parent,
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
gtk_window_set_default_size (GTK_WINDOW (dialog), 275, -1);
vbox = GTK_DIALOG (dialog)->vbox;
prompt_label = gtk_label_new (prompt);
gtk_box_pack_start (GTK_BOX (vbox), prompt_label, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), prompt_label, TRUE, TRUE, 3);
entry = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (entry), default_string);
gtk_entry_select_region (GTK_ENTRY (entry), 0, -1);
gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);
gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 3);
gtk_widget_grab_focus (entry);
gnome_dialog_editable_enters (GNOME_DIALOG (dialog), GTK_EDITABLE (entry));
gtk_widget_show (prompt_label);
gtk_widget_show (entry);
gtk_widget_show (dialog);
switch (gnome_dialog_run (GNOME_DIALOG (dialog))) {
case 0:
/* OK. */
text = gtk_entry_get_text (GTK_ENTRY (entry));
switch (gtk_dialog_run (GTK_DIALOG (dialog))) {
case GTK_RESPONSE_OK:
text = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
break;
case -1:
case 1:
/* Cancel. */
case GTK_RESPONSE_CANCEL:
text = NULL;
break;
default:
g_assert_not_reached ();
}
gtk_widget_destroy (dialog);
return text ? g_strdup (text) : NULL;
return text;
}