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_ASSORTMENT_H__ 00003 #define __GXK_ASSORTMENT_H__ 00004 00005 #include "gxkutils.hh" 00006 00007 G_BEGIN_DECLS 00008 00009 #define GXK_ASSORTMENT_PRIORITY (G_PRIORITY_HIGH - 10) 00010 00011 /* --- assortment --- */ 00012 #define GXK_TYPE_ASSORTMENT_ENTRY (gxk_assortment_entry_get_type ()) 00013 #define GXK_TYPE_ASSORTMENT (gxk_assortment_get_type ()) 00014 #define GXK_ASSORTMENT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GXK_TYPE_ASSORTMENT, GxkAssortment)) 00015 #define GXK_ASSORTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXK_TYPE_ASSORTMENT, GxkAssortmentClass)) 00016 #define GXK_IS_ASSORTMENT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GXK_TYPE_ASSORTMENT)) 00017 #define GXK_IS_ASSORTMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXK_TYPE_ASSORTMENT)) 00018 #define GXK_ASSORTMENT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GXK_TYPE_ASSORTMENT, GxkAssortmentClass)) 00019 typedef struct GxkAssortment GxkAssortment; 00020 typedef void (*GxkAssortmentDelete) (gpointer user_data, 00021 GObject *object, 00022 gpointer owner); 00023 typedef struct { 00024 gchar *label; 00025 gchar *stock_icon; /* stock_id for the icon or NULL */ 00026 gchar *tooltip; 00027 gpointer user_data; 00028 gpointer owner; 00029 GObject *object; 00030 GxkAssortmentDelete free_func; 00031 guint ref_count; 00032 } GxkAssortmentEntry; 00033 struct GxkAssortment 00034 { 00035 GObject parent_instance; 00036 gchar *publishing_name; 00037 GSList *entries; 00038 GxkAssortmentEntry *selected; 00039 guint block_count; 00040 }; 00041 typedef struct { 00042 GObjectClass parent_class; 00043 void (*entry_added) (GxkAssortment *self, 00044 GxkAssortmentEntry *entry); 00045 void (*entry_changed) (GxkAssortment *self, 00046 GxkAssortmentEntry *entry); 00047 void (*entry_remove) (GxkAssortment *self, 00048 GxkAssortmentEntry *entry); 00049 void (*selection_changed) (GxkAssortment *self); 00050 } GxkAssortmentClass; 00051 00052 /* --- assortment --- */ 00053 GType gxk_assortment_entry_get_type (void); 00054 GType gxk_assortment_get_type (void); 00055 GxkAssortment* gxk_assortment_new (void); 00056 GxkAssortmentEntry* gxk_assortment_find_data (GxkAssortment *self, 00057 gpointer entry_user_data); 00058 GxkAssortmentEntry* gxk_assortment_insert (GxkAssortment *self, 00059 guint position, 00060 const gchar *label, 00061 const gchar *stock_icon, /* maybe NULL */ 00062 const gchar *tooltip, 00063 gpointer user_data, 00064 GObject *object, 00065 gpointer owner, 00066 GxkAssortmentDelete free_func); 00067 void gxk_assortment_changed (GxkAssortment *self, 00068 GxkAssortmentEntry *entry); 00069 void gxk_assortment_remove (GxkAssortment *self, 00070 GxkAssortmentEntry *entry); 00071 void gxk_assortment_dispose (GxkAssortment *self); 00072 void gxk_assortment_block_selection (GxkAssortment *self); 00073 void gxk_assortment_select (GxkAssortment *self, 00074 GxkAssortmentEntry *entry); 00075 void gxk_assortment_select_data (GxkAssortment *self, 00076 gpointer entry_user_data); 00077 void gxk_assortment_unblock_selection (GxkAssortment *self); 00078 void gxk_assortment_manage_menu (GxkAssortment *self, 00079 GtkMenu *menu); 00080 00081 /* --- publishing --- */ 00082 void gxk_widget_publish_assortment (gpointer widget, 00083 const gchar *publishing_name, 00084 GxkAssortment *assortment); 00085 typedef void (*GxkAssortmentClient) (gpointer client_data, 00086 GtkWindow *window, 00087 GxkAssortment *assortment, 00088 GtkWidget *publisher); 00089 void gxk_window_add_assortment_client (GtkWindow *window, 00090 GxkAssortmentClient added_func, 00091 GxkAssortmentClient removed_func, 00092 gpointer client_data); 00093 void gxk_window_remove_assortment_client (GtkWindow *window, 00094 gpointer client_data); 00095 00096 00097 G_END_DECLS 00098 00099 #endif /* __GXK_ASSORTMENT_H__ */