BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __GXK_DIALOG_H__ 00003 #define __GXK_DIALOG_H__ 00004 00005 #include "gxkutils.hh" 00006 00007 G_BEGIN_DECLS 00008 00009 /* --- type macros --- */ 00010 #define GXK_TYPE_DIALOG (gxk_dialog_get_type ()) 00011 #define GXK_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GXK_TYPE_DIALOG, GxkDialog)) 00012 #define GXK_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXK_TYPE_DIALOG, GxkDialogClass)) 00013 #define GXK_IS_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GXK_TYPE_DIALOG)) 00014 #define GXK_IS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXK_TYPE_DIALOG)) 00015 #define GXK_DIALOG_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GXK_TYPE_DIALOG, GxkDialogClass)) 00016 00017 00018 /* --- typedefs & enums --- */ 00019 typedef struct _GxkDialog GxkDialog; 00020 typedef struct _GxkDialogClass GxkDialogClass; 00021 typedef enum 00022 { 00023 GXK_DIALOG_HIDE_ON_DELETE = 1 << 0, /* hide instead of destroy on window manager delete event */ 00024 GXK_DIALOG_IGNORE_ESCAPE = 1 << 1, /* prevents delete event generation on Escape key presses */ 00025 GXK_DIALOG_DELETE_BUTTON = 1 << 2, /* add a "Close" button */ 00026 GXK_DIALOG_STATUS_BAR = 1 << 3, /* add a status bar */ 00027 GXK_DIALOG_WINDOW_GROUP = 1 << 4, 00028 GXK_DIALOG_MODAL = 1 << 5, 00029 GXK_DIALOG_POPUP_POS = 1 << 6, /* popup at mouse pointer */ 00030 GXK_DIALOG_PRESERVE_STATE = 1 << 7 /* don't always reset size etc. upon hiding */ 00031 } GxkDialogFlags; 00032 00033 00034 /* --- structures --- */ 00035 struct _GxkDialog 00036 { 00037 GtkWindow window; 00038 00039 GtkWidget *vbox; 00040 00041 /*< private >*/ 00042 GtkObject *alive_object; /* dialog is destroyed with this object */ 00043 GxkDialogFlags flags; 00044 gpointer *pointer_loc; /* nullified on destroy */ 00045 GtkWidget *status_bar; 00046 GtkWidget *default_widget; 00047 GtkWidget *focus_widget; 00048 GtkWidget *sep; 00049 GtkWidget *hbox; 00050 GtkWidget *mbox; 00051 GtkWidget *child; 00052 }; 00053 struct _GxkDialogClass 00054 { 00055 GtkWindowClass parent_class; 00056 }; 00057 00058 00059 /* --- prototypes --- */ 00060 GType gxk_dialog_get_type (void); 00061 gpointer gxk_dialog_new (gpointer pointer_loc, 00062 GtkObject *alive_object, 00063 GxkDialogFlags flags, 00064 const gchar *title, 00065 GtkWidget *child); 00066 gpointer gxk_dialog_new_radget (gpointer pointer_loc, 00067 GtkObject *alive_object, 00068 GxkDialogFlags flags, 00069 const gchar *title, 00070 const gchar *domain_name, 00071 const gchar *radget_name); 00072 void gxk_dialog_set_sizes (GxkDialog *dialog, 00073 gint min_width, 00074 gint min_height, 00075 gint default_width, 00076 gint default_height); 00077 void gxk_dialog_set_title (GxkDialog *dialog, 00078 const gchar *title); 00079 void gxk_dialog_set_focus (GxkDialog *dialog, 00080 GtkWidget *widget); 00081 void gxk_dialog_set_default (GxkDialog *dialog, 00082 GtkWidget *widget); 00083 void gxk_dialog_set_child (GxkDialog *dialog, 00084 GtkWidget *child); 00085 GtkWidget* gxk_dialog_get_child (GxkDialog *dialog); 00086 GxkDialog* gxk_dialog_get_status_window (void); 00087 void gxk_dialog_add_flags (GxkDialog *dialog, 00088 GxkDialogFlags flags); 00089 void gxk_dialog_clear_flags (GxkDialog *dialog, 00090 GxkDialogFlags flags); 00091 void gxk_dialog_remove_actions (GxkDialog *dialog); 00092 #define gxk_dialog_action( dialog, action, callback, data) \ 00093 gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, (GxkDialogMultiFlags) 0) 00094 #define gxk_dialog_default_action( dialog, action, callback, data) \ 00095 gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, GXK_DIALOG_MULTI_DEFAULT) 00096 #define gxk_dialog_action_swapped( dialog, action, callback, data) \ 00097 gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, GXK_DIALOG_MULTI_SWAPPED) 00098 #define gxk_dialog_default_action_swapped( dialog, action, callback, data) \ 00099 gxk_dialog_action_multi ((dialog), (action), (callback), (data), 0, GXK_DIALOG_MULTI_DEFAULT | GXK_DIALOG_MULTI_SWAPPED) 00100 00101 00102 /* --- internal --- */ 00103 typedef enum /*< skip >*/ 00104 { 00105 GXK_DIALOG_MULTI_DEFAULT = 1, 00106 GXK_DIALOG_MULTI_SWAPPED = 2 00107 } GxkDialogMultiFlags; 00108 GtkWidget* gxk_dialog_action_multi (GxkDialog *dialog, 00109 const gchar *action, 00110 gpointer callback, 00111 gpointer data, 00112 const gchar *icon_stock_id, 00113 GxkDialogMultiFlags multi_mode); 00114 00115 G_END_DECLS 00116 00117 // == Flags Enumeration Operators in C++ == 00118 #ifdef __cplusplus 00119 constexpr GxkDialogFlags operator& (GxkDialogFlags s1, GxkDialogFlags s2) { return GxkDialogFlags (s1 & (long long unsigned) s2); } 00120 inline GxkDialogFlags& operator&= (GxkDialogFlags &s1, GxkDialogFlags s2) { s1 = s1 & s2; return s1; } 00121 constexpr GxkDialogFlags operator| (GxkDialogFlags s1, GxkDialogFlags s2) { return GxkDialogFlags (s1 | (long long unsigned) s2); } 00122 inline GxkDialogFlags& operator|= (GxkDialogFlags &s1, GxkDialogFlags s2) { s1 = s1 | s2; return s1; } 00123 constexpr GxkDialogFlags operator~ (GxkDialogFlags s1) { return GxkDialogFlags (~(long long unsigned) s1); } 00124 constexpr GxkDialogMultiFlags operator& (GxkDialogMultiFlags s1, GxkDialogMultiFlags s2) { return GxkDialogMultiFlags (s1 & (long long unsigned) s2); } 00125 inline GxkDialogMultiFlags& operator&= (GxkDialogMultiFlags &s1, GxkDialogMultiFlags s2) { s1 = s1 & s2; return s1; } 00126 constexpr GxkDialogMultiFlags operator| (GxkDialogMultiFlags s1, GxkDialogMultiFlags s2) { return GxkDialogMultiFlags (s1 | (long long unsigned) s2); } 00127 inline GxkDialogMultiFlags& operator|= (GxkDialogMultiFlags &s1, GxkDialogMultiFlags s2) { s1 = s1 | s2; return s1; } 00128 constexpr GxkDialogMultiFlags operator~ (GxkDialogMultiFlags s1) { return GxkDialogMultiFlags (~(long long unsigned) s1); } 00129 #endif // __cplusplus 00130 00131 #endif /* __GXK_DIALOG_H__ */