1 /* GTK - The GIMP Toolkit 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 * Boston, MA 02111-1307, USA. 18 */ 19 20 /* 21 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS 22 * file for a list of people on the GTK+ Team. See the ChangeLog 23 * files for a list of changes. These files are distributed with 24 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 25 */ 26 27 #ifndef __GTK_DIALOG_H__ 28 #define __GTK_DIALOG_H__ 29 30 31 #if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 32 #error "Only <gtk/gtk.h> can be included directly." 33 #endif 34 35 #include <gtk/gtkwindow.h> 36 37 38 G_BEGIN_DECLS 39 40 /* Parameters for dialog construction */ 41 typedef enum 42 { 43 GTK_DIALOG_MODAL = 1 << 0, /* call gtk_window_set_modal (win, TRUE) */ 44 GTK_DIALOG_DESTROY_WITH_PARENT = 1 << 1, /* call gtk_window_set_destroy_with_parent () */ 45 GTK_DIALOG_NO_SEPARATOR = 1 << 2 /* no separator bar above buttons */ 46 } GtkDialogFlags; 47 48 /* Convenience enum to use for response_id's. Positive values are 49 * totally user-interpreted. GTK will sometimes return 50 * GTK_RESPONSE_NONE if no response_id is available. 51 * 52 * Typical usage is: 53 * if (gtk_dialog_run(dialog) == GTK_RESPONSE_ACCEPT) 54 * blah(); 55 */ 56 typedef enum 57 { 58 /* GTK returns this if a response widget has no response_id, 59 * or if the dialog gets programmatically hidden or destroyed. 60 */ 61 GTK_RESPONSE_NONE = -1, 62 63 /* GTK won't return these unless you pass them in 64 * as the response for an action widget. They are 65 * for your convenience. 66 */ 67 GTK_RESPONSE_REJECT = -2, 68 GTK_RESPONSE_ACCEPT = -3, 69 70 /* If the dialog is deleted. */ 71 GTK_RESPONSE_DELETE_EVENT = -4, 72 73 /* These are returned from GTK dialogs, and you can also use them 74 * yourself if you like. 75 */ 76 GTK_RESPONSE_OK = -5, 77 GTK_RESPONSE_CANCEL = -6, 78 GTK_RESPONSE_CLOSE = -7, 79 GTK_RESPONSE_YES = -8, 80 GTK_RESPONSE_NO = -9, 81 GTK_RESPONSE_APPLY = -10, 82 GTK_RESPONSE_HELP = -11 83 } GtkResponseType; 84 85 86 #define GTK_TYPE_DIALOG (gtk_dialog_get_type ()) 87 #define GTK_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_DIALOG, GtkDialog)) 88 #define GTK_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_DIALOG, GtkDialogClass)) 89 #define GTK_IS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_DIALOG)) 90 #define GTK_IS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_DIALOG)) 91 #define GTK_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_DIALOG, GtkDialogClass)) 92 93 94 typedef struct _GtkDialog GtkDialog; 95 typedef struct _GtkDialogClass GtkDialogClass; 96 97 struct _GtkDialog 98 { 99 GtkWindow window; 100 101 /*< public >*/ 102 GtkWidget *GSEAL (vbox); 103 GtkWidget *GSEAL (action_area); 104 105 /*< private >*/ 106 GtkWidget *GSEAL (separator); 107 }; 108 109 struct _GtkDialogClass 110 { 111 GtkWindowClass parent_class; 112 113 void (* response) (GtkDialog *dialog, gint response_id); 114 115 /* Keybinding signals */ 116 117 void (* close) (GtkDialog *dialog); 118 119 /* Padding for future expansion */ 120 void (*_gtk_reserved1) (void); 121 void (*_gtk_reserved2) (void); 122 void (*_gtk_reserved3) (void); 123 void (*_gtk_reserved4) (void); 124 }; 125 126 127 GType gtk_dialog_get_type (void) G_GNUC_CONST; 128 GtkWidget* gtk_dialog_new (void); 129 130 GtkWidget* gtk_dialog_new_with_buttons (const gchar *title, 131 GtkWindow *parent, 132 GtkDialogFlags flags, 133 const gchar *first_button_text, 134 ...); 135 136 void gtk_dialog_add_action_widget (GtkDialog *dialog, 137 GtkWidget *child, 138 gint response_id); 139 GtkWidget* gtk_dialog_add_button (GtkDialog *dialog, 140 const gchar *button_text, 141 gint response_id); 142 void gtk_dialog_add_buttons (GtkDialog *dialog, 143 const gchar *first_button_text, 144 ...) G_GNUC_NULL_TERMINATED; 145 146 void gtk_dialog_set_response_sensitive (GtkDialog *dialog, 147 gint response_id, 148 gboolean setting); 149 void gtk_dialog_set_default_response (GtkDialog *dialog, 150 gint response_id); 151 GtkWidget* gtk_dialog_get_widget_for_response (GtkDialog *dialog, 152 gint response_id); 153 gint gtk_dialog_get_response_for_widget (GtkDialog *dialog, 154 GtkWidget *widget); 155 156 #if !defined (GTK_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) 157 void gtk_dialog_set_has_separator (GtkDialog *dialog, 158 gboolean setting); 159 gboolean gtk_dialog_get_has_separator (GtkDialog *dialog); 160 #endif 161 162 gboolean gtk_alternative_dialog_button_order (GdkScreen *screen); 163 void gtk_dialog_set_alternative_button_order (GtkDialog *dialog, 164 gint first_response_id, 165 ...); 166 void gtk_dialog_set_alternative_button_order_from_array (GtkDialog *dialog, 167 gint n_params, 168 gint *new_order); 169 170 /* Emit response signal */ 171 void gtk_dialog_response (GtkDialog *dialog, 172 gint response_id); 173 174 /* Returns response_id */ 175 gint gtk_dialog_run (GtkDialog *dialog); 176 177 GtkWidget * gtk_dialog_get_action_area (GtkDialog *dialog); 178 GtkWidget * gtk_dialog_get_content_area (GtkDialog *dialog); 179 180 /* For private use only */ 181 void _gtk_dialog_set_ignore_separator (GtkDialog *dialog, 182 gboolean ignore_separator); 183 184 G_END_DECLS 185 186 #endif /* __GTK_DIALOG_H__ */ 187