BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
gxkutils.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_UTILS_H__
00003 #define __GXK_UTILS_H__
00004 
00005 #include        <gxk/gxkglobals.hh>
00006 
00007 G_BEGIN_DECLS
00008 
00009 /* --- generated includes --- */
00010 /* type IDs */
00011 #include <gxk/gxkgentypes.h>
00012 /* marshallers */
00013 #include <gxk/gxkmarshal.h>
00014 
00015 
00016 /* --- Gtk+ workarounds and amendments --- */
00017 gboolean        gxk_widget_ancestry_viewable       (GtkWidget       *widget);
00018 void            gxk_cell_editable_is_focus_handler (GtkCellEditable *ecell);
00019 gboolean        gxk_cell_editable_canceled         (GtkCellEditable *ecell);
00020 GtkWidget*      gxk_item_factory_sensitize         (GtkItemFactory  *ifactory,
00021                                                     const gchar     *path,
00022                                                     gboolean         sensitive);
00023 GtkWidget*      gxk_item_factory_get_item          (GtkItemFactory  *ifactory,
00024                                                     const gchar     *path);
00025 GtkWidget*      gxk_item_factory_get_widget        (GtkItemFactory  *ifactory,
00026                                                     const gchar     *path);
00027 void            gxk_widget_proxy_requisition       (GtkWidget       *widget,
00028                                                     gdouble          xscale,
00029                                                     gdouble          yscale);
00030 void            gxk_widget_request_hclient_height  (GtkWidget       *widget,
00031                                                     GtkWidget       *client);
00032 void            gxk_widget_request_vclient_width   (GtkWidget       *widget,
00033                                                     GtkWidget       *client);
00034 gboolean        gxk_widget_has_ancestor            (gpointer         widget,
00035                                                     gpointer         ancestor);
00036 void            gxk_menu_set_active                (GtkMenu         *menu,
00037                                                     GtkWidget       *child);
00038 void            gxk_widget_regulate                (GtkWidget       *widget,
00039                                                     gboolean         sensitive,
00040                                                     gboolean         active);
00041 gboolean        gxk_widget_regulate_uses_active    (GtkWidget       *widget);
00042 gboolean        gxk_menu_check_sensitive           (GtkMenu         *menu);
00043 void            gxk_menu_attach_as_submenu         (GtkMenu         *menu,
00044                                                     GtkMenuItem     *menu_item);
00045 void            gxk_option_menu_set_menu           (GtkOptionMenu   *option_menu,
00046                                                     GtkMenu         *menu);
00047 void            gxk_menu_attach_as_popup           (GtkMenu         *menu,
00048                                                     GtkWidget       *widget);
00049 void            gxk_menu_attach_as_popup_with_func (GtkMenu         *menu,
00050                                                     GtkWidget       *widget,
00051                                                     GtkMenuDetachFunc mdfunc);
00052 void            gxk_menu_popup                     (GtkMenu         *menu,
00053                                                     gint             x,
00054                                                     gint             y,
00055                                                     guint            mouse_button,
00056                                                     guint32          time);
00057 void            gxk_menu_popup_pushable            (GtkMenu         *menu,
00058                                                     gint             x,
00059                                                     gint             y,
00060                                                     gint             pushed_x,
00061                                                     gint             pushed_y,
00062                                                     guint            mouse_button,
00063                                                     guint32          time);
00064 void            gxk_menu_popup_pushed_in           (GtkMenu         *menu,
00065                                                     gint             pushed_x,
00066                                                     gint             pushed_y,
00067                                                     guint            mouse_button,
00068                                                     guint32          time);
00069 GtkWidget*      gxk_widget_find_level_ordered      (GtkWidget       *toplevel,
00070                                                     const gchar     *name);
00071 GtkWidget*      gxk_widget_get_attach_toplevel     (GtkWidget       *widget);
00072 void            gxk_widget_add_font_requisition    (GtkWidget       *widget,
00073                                                     guint            n_chars,
00074                                                     guint            n_digits);
00075 void            gxk_widget_add_option              (gpointer         widget,
00076                                                     const gchar     *option,
00077                                                     const gchar     *value);
00078 gboolean        gxk_widget_check_option            (gpointer         widget,
00079                                                     const gchar     *option);
00080 const gchar*    gxk_widget_get_options             (gpointer         widget);
00081 void            gxk_window_set_menu_accel_group    (GtkWindow       *window,
00082                                                     GtkAccelGroup   *agroup);
00083 GtkAccelGroup*  gxk_window_get_menu_accel_group    (GtkWindow       *window);
00084 void            gxk_window_set_geometry_min_width  (GtkWindow       *window,
00085                                                     guint            min_width);
00086 void            gxk_window_set_geometry_min_height (GtkWindow       *window,
00087                                                     guint            min_height);
00088 void            gxk_window_set_geometry_width_inc  (GtkWindow       *window,
00089                                                     guint            width_increment);
00090 void            gxk_window_set_geometry_height_inc (GtkWindow       *window,
00091                                                     guint            height_increment);
00092 void            gxk_expander_connect_to_widget     (GtkWidget       *expander,
00093                                                     GtkWidget       *widget);
00094 void            gxk_label_set_attributes           (GtkLabel        *label,
00095                                                     ...);
00096 
00097 guint           gxk_container_get_insertion_slot   (GtkContainer    *container);
00098 void            gxk_container_slot_reorder_child   (GtkContainer    *container,
00099                                                     GtkWidget       *widget,
00100                                                     guint            slot);
00101 gboolean        gxk_grab_pointer_and_keyboard      (GdkWindow    *window,
00102                                                     gboolean      owner_events,
00103                                                     GdkEventMask  event_mask,
00104                                                     GdkWindow    *confine_to,
00105                                                     GdkCursor    *cursor,
00106                                                     guint32       time);
00107 void            gxk_ungrab_pointer_and_keyboard    (GdkWindow    *window,
00108                                                     guint32       time);
00109 
00110 
00111 /* --- GtkFileSelection workarounds --- */
00112 GtkWidget*      gxk_file_selection_heal         (GtkFileSelection        *fs);
00113 GtkWidget*      gxk_file_selection_split        (GtkFileSelection        *fs,
00114                                                  GtkWidget              **bbox);
00115 
00116 
00117 /* --- GObject convenience --- */
00118 typedef struct {
00119   const char   *type_name;
00120   GType         parent;
00121   GType        *type_id;
00122   gconstpointer type_data;      /* e.g. GEnumValue array */
00123 } GxkTypeGenerated;
00124 void    gxk_type_register_generated     (guint                   n_entries,
00125                                          const GxkTypeGenerated *entries);
00126 void    g_object_set_double             (gpointer                object,
00127                                          const gchar            *name,
00128                                          gdouble                 v_double);
00129 gdouble g_object_get_double             (gpointer                object,
00130                                          const gchar            *name);
00131 void    g_object_set_long               (gpointer                object,
00132                                          const gchar            *name,
00133                                          glong                   v_long);
00134 glong   g_object_get_long               (gpointer                object,
00135                                          const gchar            *name);
00136 #define g_object_set_int                g_object_set_long       // FIXME
00137 #define g_object_get_int                g_object_get_long       // FIXME
00138 
00139 
00140 /* --- UTF8 helpers --- */
00141 gchar*       gxk_convert_latin1_to_utf8      (const gchar    *string);
00142 gchar*       gxk_filename_to_utf8            (const gchar    *string);
00143 const gchar* gxk_factory_path_get_leaf       (const gchar    *path);
00144 gchar*       gxk_factory_path_unescape_uline (const gchar    *path);
00145 
00146 
00147 /* --- Gtk+ Utilities --- */
00148 void     gxk_widget_viewable_changed            (GtkWidget   *widget);
00149 gboolean gxk_widget_viewable                    (GtkWidget   *widget);
00150 void     gxk_widget_attached_hierarchy_changed  (GtkWidget   *widget);
00151 
00152 
00153 /* --- Gdk convenience --- */
00154 #define GXK_DEFAULT_CURSOR      GDK_LAST_CURSOR ///< Indicates default (inherited) cursor
00155 void     gxk_window_set_cursor_type     (GdkWindow              *window,
00156                                          GdkCursorType           cursor);
00157 void     gxk_window_process_next        (GdkWindow              *window,
00158                                          gboolean                update_children);
00159 void     gdk_draw_hline                 (GdkDrawable            *drawable,
00160                                          GdkGC                  *gc,
00161                                          gint                    x,
00162                                          gint                    y,
00163                                          gint                    width);
00164 void     gdk_draw_vline                 (GdkDrawable            *drawable,
00165                                          GdkGC                  *gc,
00166                                          gint                    x,
00167                                          gint                    y,
00168                                          gint                    height);
00169 void     gxk_color_alloc                (GdkColormap            *colormap,
00170                                          GdkColor               *color);
00171 GdkColor gdk_color_from_rgb             (guint                   rgb_value);
00172 GdkColor gdk_color_from_argb            (guint                   rgb_value);
00173 GdkColor gdk_color_from_rgba            (guint                   rgb_value);
00174 
00175 /* --- Colors --- */
00176 typedef struct {
00177   double value;
00178   guint  rgb;
00179 } GxkColorDot;
00180 typedef struct {
00181   guint        n_colors;
00182   GxkColorDot *colors;
00183 } GxkColorDots;
00184 GxkColorDots*   gxk_color_dots_new              (guint               n_dots,
00185                                                  const GxkColorDot  *dots);
00186 guint           gxk_color_dots_interpolate      (GxkColorDots       *cdots,
00187                                                  double              value,
00188                                                  double              saturation);
00189 void            gxk_color_dots_destroy          (GxkColorDots       *cdots);
00190 
00191 /* --- Gtk convenience --- */
00192 #define GTK_STYLE_THICKNESS(s,xy)       ((s)-> xy##thickness)
00193 void         gxk_widget_make_insensitive          (GtkWidget        *widget);
00194 void         gxk_widget_make_sensitive            (GtkWidget        *widget);
00195 void         gxk_widget_showraise                 (GtkWidget        *widget);
00196 void         gxk_idle_showraise                   (GtkWidget        *widget);
00197 void         gxk_idle_show_widget                 (GtkWidget        *widget);
00198 void         gxk_idle_unrealize_widget            (GtkWidget        *widget);
00199 GtkWidget*   gxk_notebook_create_tabulator        (const gchar      *label_text,
00200                                                    const gchar      *stock_image,
00201                                                    const gchar      *tooltip);
00202 void         gxk_notebook_change_tabulator        (GtkWidget        *tabulator,
00203                                                    const gchar      *label_text,
00204                                                    const gchar      *stock_image,
00205                                                    const gchar      *tooltip);
00206 void         gxk_notebook_set_current_page_widget (GtkNotebook      *notebook,
00207                                                    GtkWidget        *page);
00208 GtkWidget*   gxk_vseparator_space_new             (gboolean          draw_seperator);
00209 GtkWidget*   gtk_notebook_current_widget          (GtkNotebook      *notebook);
00210 GtkWidget*   gxk_notebook_descendant_get_page     (GtkWidget        *widget);
00211 GtkWidget*   gxk_notebook_descendant_get_tab      (GtkWidget        *widget);
00212 void         gxk_notebook_append                  (GtkNotebook      *notebook,
00213                                                    GtkWidget        *child,
00214                                                    const gchar      *label,
00215                                                    gboolean          fillexpand);
00216 GtkWidget*   gtk_box_get_nth_child                (GtkBox           *box,
00217                                                    gint              pos);
00218 void         gxk_scrolled_window_spare_space      (GtkScrolledWindow*scwin);
00219 void         gxk_scrolled_window_unspare_space    (GtkScrolledWindow*scwin);
00220 GtkWidget*   gxk_scrolled_window_create           (GtkWidget        *child,
00221                                                    GtkShadowType     shadow_type,
00222                                                    gdouble           xrequest,
00223                                                    gdouble           yrequest);
00224 
00225 /* functions to affect a widget tree's toplevel */
00226 void         gxk_toplevel_delete                  (GtkWidget        *widget);
00227 void         gxk_toplevel_hide                    (GtkWidget        *widget);
00228 void         gxk_toplevel_activate_default        (GtkWidget        *widget);
00229 
00230 /* widget utilities */
00231 GtkWidget*   gxk_parent_find_descendant           (GtkWidget        *parent,
00232                                                    GType             descendant_type);
00233 void         gxk_widget_modify_as_title           (GtkWidget        *widget);
00234 void         gxk_widget_modify_normal_bg_as_base  (GtkWidget        *widget);
00235 void         gxk_widget_modify_bg_as_base         (GtkWidget        *widget);
00236 void         gxk_widget_modify_base_as_bg         (GtkWidget        *widget);
00237 void         gxk_widget_modify_bg_as_active       (GtkWidget        *widget);
00238 void         gxk_widget_force_bg_clear            (GtkWidget        *widget);
00239 void         gxk_widget_set_tooltip               (gpointer          widget,
00240                                                    const gchar      *tooltip);
00241 void         gxk_widget_set_latent_tooltip        (GtkWidget        *widget,
00242                                                    const gchar      *tooltip);
00243 const gchar* gxk_widget_get_latent_tooltip        (GtkWidget        *widget);
00244 void         gxk_widget_activate_accel_group      (GtkWidget        *widget,
00245                                                    GtkAccelGroup    *accel_group);
00246 void         gxk_size_group                       (GtkSizeGroupMode  sgmode,
00247                                                    gpointer          first_widget,
00248                                                    ...) G_GNUC_NULL_TERMINATED;
00249 
00250 /* tree view convenience */
00251 gint               gxk_tree_spath_index0                (const gchar            *strpath);
00252 gboolean           gxk_tree_model_get_iter              (GtkTreeModel           *tree_model,
00253                                                          GtkTreeIter            *iter,
00254                                                          GtkTreePath            *path);
00255 gboolean           gxk_tree_path_prev                   (GtkTreePath            *path);
00256 guint              gxk_tree_view_add_column             (GtkTreeView            *tree_view,
00257                                                          gint                    position,
00258                                                          GtkTreeViewColumn      *column,
00259                                                          GtkCellRenderer        *cell,
00260                                                          const gchar            *attrib_name,
00261                                                          ...) G_GNUC_NULL_TERMINATED;
00262 void               gxk_tree_view_append_text_columns    (GtkTreeView            *tree_view,
00263                                                          guint                   n_cols,
00264                                                          ...);
00265 GtkTreeViewColumn* gxk_tree_view_add_text_column        (GtkTreeView            *tree_view,
00266                                                          guint                   model_column,
00267                                                          const gchar            *column_flags,
00268                                                          gdouble                 xalign,
00269                                                          const gchar            *title,
00270                                                          const gchar            *tooltip,
00271                                                          gpointer                edited_callback,
00272                                                          gpointer                data,
00273                                                          GConnectFlags           cflags);
00274 GtkTreeViewColumn* gxk_tree_view_add_popup_column       (GtkTreeView            *tree_view,
00275                                                          guint                   model_column,
00276                                                          const gchar            *column_flags,
00277                                                          gdouble                 xalign,
00278                                                          const gchar            *title,
00279                                                          const gchar            *tooltip,
00280                                                          gpointer                edited_callback,
00281                                                          gpointer                popup_callback,
00282                                                          gpointer                data,
00283                                                          GConnectFlags           cflags);
00284 GtkTreeViewColumn* gxk_tree_view_add_toggle_column      (GtkTreeView            *tree_view,
00285                                                          guint                   model_column,
00286                                                          const gchar            *column_flags,
00287                                                          gdouble                 xalign,
00288                                                          const gchar            *title,
00289                                                          const gchar            *tooltip,
00290                                                          gpointer                toggled_callback,
00291                                                          gpointer                data,
00292                                                          GConnectFlags           cflags);
00293 void               gxk_tree_view_column_set_tip_title   (GtkTreeViewColumn      *tree_column,
00294                                                          const gchar            *title,
00295                                                          const gchar            *tooltip);
00296 void               gxk_tree_view_set_editable           (GtkTreeView            *tview,
00297                                                          gboolean                maybe_editable);
00298 
00299 /* tree selection convenience */
00300 void   gxk_tree_selection_select_spath   (GtkTreeSelection      *selection,
00301                                           const gchar           *str_path);
00302 void   gxk_tree_selection_unselect_spath (GtkTreeSelection      *selection,
00303                                           const gchar           *str_path);
00304 void   gxk_tree_selection_select_ipath   (GtkTreeSelection      *selection,
00305                                           gint                   first_index,
00306                                           ...);
00307 void   gxk_tree_selection_unselect_ipath (GtkTreeSelection      *selection,
00308                                           gint                   first_index,
00309                                           ...);
00310 void   gxk_tree_view_select_index        (GtkTreeView           *tview,
00311                                           guint                  index);
00312 void   gxk_tree_selection_force_browse   (GtkTreeSelection      *selection,
00313                                           GtkTreeModel          *model);
00314 void   gxk_tree_view_get_bin_window_pos  (GtkTreeView           *tree,
00315                                           gint                  *x_p,
00316                                           gint                  *y_p);
00317 gboolean gxk_tree_view_get_row_area      (GtkTreeView           *tree,
00318                                           gint                   row,
00319                                           gint                  *y_p,
00320                                           gint                  *height_p,
00321                                           gboolean               content_area);
00322 gboolean gxk_tree_view_get_row_from_coord(GtkTreeView           *tree,
00323                                           gint                   y,
00324                                           gint                  *row_p);
00325 void     gxk_tree_view_focus_row         (GtkTreeView           *tree,
00326                                           gint                   row);
00327 gboolean gxk_tree_view_is_row_selected   (GtkTreeView           *tree,
00328                                           gint                   row);
00329 gint     gxk_tree_view_get_selected_row  (GtkTreeView           *tree);
00330 
00331 /* --- signal convenience --- */
00332 gboolean        gxk_signal_handler_exists       (gpointer        instance,
00333                                                  const gchar    *detailed_signal,
00334                                                  GCallback       callback,
00335                                                  gpointer        data);
00336 gboolean        gxk_signal_handler_pending      (gpointer        instance,
00337                                                  const gchar    *detailed_signal,
00338                                                  GCallback       callback,
00339                                                  gpointer        data);
00340 
00341 
00342 /* --- zlib support --- */
00343 gchar*  gxk_zfile_uncompress    (guint                uncompressed_size,
00344                                  const unsigned char *cdata,
00345                                  guint                cdata_size);
00346 
00347 
00348 G_END_DECLS
00349 
00350 #endif /* __GXK_UTILS_H__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines