BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
gxkassortment.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_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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines