BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
gxkdialog.hh
Go to the documentation of this file.
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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines