BEAST - Free Software Audio Synthesizer and Tracker  0.9.2
gxkdialog.hh
Go to the documentation of this file.
1  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
2 #ifndef __GXK_DIALOG_H__
3 #define __GXK_DIALOG_H__
4 
5 #include "gxkutils.hh"
6 
7 G_BEGIN_DECLS
8 
9 /* --- type macros --- */
10 #define GXK_TYPE_DIALOG (gxk_dialog_get_type ())
11 #define GXK_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GXK_TYPE_DIALOG, GxkDialog))
12 #define GXK_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXK_TYPE_DIALOG, GxkDialogClass))
13 #define GXK_IS_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GXK_TYPE_DIALOG))
14 #define GXK_IS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXK_TYPE_DIALOG))
15 #define GXK_DIALOG_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GXK_TYPE_DIALOG, GxkDialogClass))
16 
17 
18 /* --- typedefs & enums --- */
19 typedef struct _GxkDialog GxkDialog;
20 typedef struct _GxkDialogClass GxkDialogClass;
21 typedef enum
22 {
23  GXK_DIALOG_HIDE_ON_DELETE = 1 << 0, /* hide instead of destroy on window manager delete event */
24  GXK_DIALOG_IGNORE_ESCAPE = 1 << 1, /* prevents delete event generation on Escape key presses */
25  GXK_DIALOG_DELETE_BUTTON = 1 << 2, /* add a "Close" button */
26  GXK_DIALOG_STATUS_BAR = 1 << 3, /* add a status bar */
27  GXK_DIALOG_WINDOW_GROUP = 1 << 4,
28  GXK_DIALOG_MODAL = 1 << 5,
29  GXK_DIALOG_POPUP_POS = 1 << 6, /* popup at mouse pointer */
30  GXK_DIALOG_PRESERVE_STATE = 1 << 7 /* don't always reset size etc. upon hiding */
31 } GxkDialogFlags;
32 
33 
34 /* --- structures --- */
35 struct _GxkDialog
36 {
37  GtkWindow window;
38 
39  GtkWidget *vbox;
40 
41  /*< private >*/
42  GtkObject *alive_object; /* dialog is destroyed with this object */
43  GxkDialogFlags flags;
44  gpointer *pointer_loc; /* nullified on destroy */
45  GtkWidget *status_bar;
46  GtkWidget *default_widget;
47  GtkWidget *focus_widget;
48  GtkWidget *sep;
49  GtkWidget *hbox;
50  GtkWidget *mbox;
51  GtkWidget *child;
52 };
54 {
55  GtkWindowClass parent_class;
56 };
57 
58 
59 /* --- prototypes --- */
60 GType gxk_dialog_get_type (void);
61 gpointer gxk_dialog_new (gpointer pointer_loc,
62  GtkObject *alive_object,
63  GxkDialogFlags flags,
64  const gchar *title,
65  GtkWidget *child);
66 gpointer gxk_dialog_new_radget (gpointer pointer_loc,
67  GtkObject *alive_object,
68  GxkDialogFlags flags,
69  const gchar *title,
70  const gchar *domain_name,
71  const gchar *radget_name);
72 void gxk_dialog_set_sizes (GxkDialog *dialog,
73  gint min_width,
74  gint min_height,
75  gint default_width,
76  gint default_height);
77 void gxk_dialog_set_title (GxkDialog *dialog,
78  const gchar *title);
79 void gxk_dialog_set_focus (GxkDialog *dialog,
80  GtkWidget *widget);
81 void gxk_dialog_set_default (GxkDialog *dialog,
82  GtkWidget *widget);
83 void gxk_dialog_set_child (GxkDialog *dialog,
84  GtkWidget *child);
85 GtkWidget* gxk_dialog_get_child (GxkDialog *dialog);
86 GxkDialog* gxk_dialog_get_status_window (void);
87 void gxk_dialog_add_flags (GxkDialog *dialog,
88  GxkDialogFlags flags);
89 void gxk_dialog_clear_flags (GxkDialog *dialog,
90  GxkDialogFlags flags);
91 void gxk_dialog_remove_actions (GxkDialog *dialog);
92 #define gxk_dialog_action( dialog, action, callback, data) \
93  gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, (GxkDialogMultiFlags) 0)
94 #define gxk_dialog_default_action( dialog, action, callback, data) \
95  gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, GXK_DIALOG_MULTI_DEFAULT)
96 #define gxk_dialog_action_swapped( dialog, action, callback, data) \
97  gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, GXK_DIALOG_MULTI_SWAPPED)
98 #define gxk_dialog_default_action_swapped( dialog, action, callback, data) \
99  gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, GXK_DIALOG_MULTI_DEFAULT | GXK_DIALOG_MULTI_SWAPPED)
100 
101 
102 /* --- internal --- */
103 typedef enum /*< skip >*/
104 {
105  GXK_DIALOG_MULTI_DEFAULT = 1,
106  GXK_DIALOG_MULTI_SWAPPED = 2
107 } GxkDialogMultiFlags;
108 GtkWidget* gxk_dialog_action_multi (GxkDialog *dialog,
109  const gchar *action,
110  gpointer callback,
111  gpointer data,
112  const gchar *icon_stock_id,
113  GxkDialogMultiFlags multi_mode);
114 
115 G_END_DECLS
116 
117 // == Flags Enumeration Operators in C++ ==
118 #ifdef __cplusplus
119 constexpr GxkDialogFlags operator& (GxkDialogFlags s1, GxkDialogFlags s2) { return GxkDialogFlags (s1 & (long long unsigned) s2); }
120 inline GxkDialogFlags& operator&= (GxkDialogFlags &s1, GxkDialogFlags s2) { s1 = s1 & s2; return s1; }
121 constexpr GxkDialogFlags operator| (GxkDialogFlags s1, GxkDialogFlags s2) { return GxkDialogFlags (s1 | (long long unsigned) s2); }
122 inline GxkDialogFlags& operator|= (GxkDialogFlags &s1, GxkDialogFlags s2) { s1 = s1 | s2; return s1; }
123 constexpr GxkDialogFlags operator~ (GxkDialogFlags s1) { return GxkDialogFlags (~(long long unsigned) s1); }
124 constexpr GxkDialogMultiFlags operator& (GxkDialogMultiFlags s1, GxkDialogMultiFlags s2) { return GxkDialogMultiFlags (s1 & (long long unsigned) s2); }
125 inline GxkDialogMultiFlags& operator&= (GxkDialogMultiFlags &s1, GxkDialogMultiFlags s2) { s1 = s1 & s2; return s1; }
126 constexpr GxkDialogMultiFlags operator| (GxkDialogMultiFlags s1, GxkDialogMultiFlags s2) { return GxkDialogMultiFlags (s1 | (long long unsigned) s2); }
127 inline GxkDialogMultiFlags& operator|= (GxkDialogMultiFlags &s1, GxkDialogMultiFlags s2) { s1 = s1 | s2; return s1; }
128 constexpr GxkDialogMultiFlags operator~ (GxkDialogMultiFlags s1) { return GxkDialogMultiFlags (~(long long unsigned) s1); }
129 #endif // __cplusplus
130 
131 #endif /* __GXK_DIALOG_H__ */
void gxk_dialog_add_flags(GxkDialog *dialog, GxkDialogFlags flags)
Definition: gxkdialog.cc:351
void gxk_dialog_set_title(GxkDialog *dialog, const gchar *title)
Definition: gxkdialog.cc:336
GtkWidget * gxk_dialog_action_multi(GxkDialog *dialog, const gchar *action, gpointer callback, gpointer data, const gchar *icon_stock_id, GxkDialogMultiFlags multi_mode)
Definition: gxkdialog.cc:622
void gxk_dialog_set_child(GxkDialog *dialog, GtkWidget *child)
Definition: gxkdialog.cc:403
GxkDialog * gxk_dialog_get_status_window(void)
Definition: gxkdialog.cc:584
void gxk_dialog_set_sizes(GxkDialog *dialog, gint min_width, gint min_height, gint default_width, gint default_height)
Definition: gxkdialog.cc:307
gpointer gxk_dialog_new(gpointer pointer_loc, GtkObject *alive_object, GxkDialogFlags flags, const gchar *title, GtkWidget *child)
Definition: gxkdialog.cc:244
void gxk_dialog_remove_actions(GxkDialog *dialog)
Definition: gxkdialog.cc:604
void gxk_dialog_set_default(GxkDialog *dialog, GtkWidget *widget)
Definition: gxkdialog.cc:448
GtkWidget * gxk_dialog_get_child(GxkDialog *dialog)
Definition: gxkdialog.cc:388
void gxk_dialog_set_focus(GxkDialog *dialog, GtkWidget *widget)
Definition: gxkdialog.cc:428
Definition: gxkdialog.hh:53
void gxk_dialog_clear_flags(GxkDialog *dialog, GxkDialogFlags flags)
Definition: gxkdialog.cc:370
Definition: gxkdialog.hh:35