dialog enhancements
- From: Havoc Pennington <hp redhat com>
- To: gtk-devel-list redhat com
- Subject: dialog enhancements
- Date: 24 Mar 2000 10:54:32 -0500
Hi,
Trying to make GtkDialog a little less useless than it currently is,
while retaining backward compatibility.
Here's what I added:
- changed the action_area to be a button box
- buttons can be referred to by position in the box, as with
GnomeDialog
- can auto-create buttons by passing a NULL-terminated varargs
list of button labels; as with GnomeDialog, eventually these
labels could also be stock button IDs
- gtk_dialog_run() function to block waiting for modal dialog
- button_clicked signal on the dialog so you don't have to
connect to each button separately
Then I did a GtkMessageDialog subclass, which simply packs a label,
sets the dialog title, and eventually adds one of those little pixmaps
representing the dialog type. Pretty much identical to Motif, Qt, and
GNOME message boxes.
Headers appended, I have implementation too though.
Havoc
typedef struct _GtkDialog GtkDialog;
typedef struct _GtkDialogClass GtkDialogClass;
struct _GtkDialog
{
GtkWindow window;
/*< public >*/
GtkWidget *vbox;
GtkWidget *action_area;
/*< private >*/
guint action_area_add_handler;
guint action_area_remove_handler;
};
struct _GtkDialogClass
{
GtkWindowClass parent_class;
void (* button_clicked) (GtkDialog *dialog, gint button_position);
};
GtkType gtk_dialog_get_type (void);
GtkWidget* gtk_dialog_new (void);
/* Think of a better name ;-) */
GtkWidget* gtk_dialog_new_improved (const gchar *title,
GtkWindow *parent,
const gchar *first_button_name,
...);
void gtk_dialog_append_button (GtkDialog *dialog,
const gchar *button_name);
void gtk_dialog_append_buttons (GtkDialog *dialog,
const gchar *first_button_name,
...);
void gtk_dialog_append_buttons_valist (GtkDialog *dialog,
const gchar *first,
va_list list);
void gtk_dialog_append_button_widget (GtkDialog *dialog,
GtkWidget *button);
GtkWidget* gtk_dialog_get_button_widget (GtkDialog *dialog,
gint position);
gint gtk_dialog_get_button_widget_position (GtkDialog *dialog,
GtkWidget *button);
gint gtk_dialog_run (GtkDialog *dialog);
/* emit button_clicked signal */
void gtk_dialog_button_clicked (GtkDialog *dialog,
gint button);
/* Message dialog */
/* FIXME move to gtkenums.h */
typedef enum
{
GTK_MESSAGE_INFO,
GTK_MESSAGE_WARNING,
GTK_MESSAGE_QUESTION,
GTK_MESSAGE_ERROR
} GtkMessageType;
typedef enum
{
GTK_BUTTONS_NONE,
GTK_BUTTONS_OK,
GTK_BUTTONS_CLOSE,
GTK_BUTTONS_CANCEL,
GTK_BUTTONS_YES_NO,
GTK_BUTTONS_OK_CANCEL
} GtkButtonsType;
/* FIXME move stock #defines to a separate header */
#define GTK_STOCK_BUTTON_OK "OK"
#define GTK_STOCK_BUTTON_CANCEL "Cancel"
#define GTK_STOCK_BUTTON_CLOSE "Close"
#define GTK_STOCK_BUTTON_YES "Yes"
#define GTK_STOCK_BUTTON_NO "No"
typedef struct _GtkMessageDialog GtkMessageDialog;
typedef struct _GtkMessageDialogClass GtkMessageDialogClass;
struct _GtkMessageDialog
{
GtkDialog dialog;
/*< public >*/
GtkWidget *label;
};
struct _GtkMessageDialogClass
{
GtkDialogClass parent_class;
};
GtkType gtk_message_dialog_get_type (void);
GtkWidget* gtk_message_dialog_new (GtkMessageType type,
GtkButtonsType buttons,
GtkWindow *parent,
const gchar *message_format,
...) G_GNUC_PRINTF(3, 4);
GtkWidget* gtk_message_dialog_new_with_buttons (GtkMessageType type,
GtkWindow *parent,
const gchar *message,
const gchar *first_button,
...);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]