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_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__ */