1 /* Helper functions for gtk-engines 2 * 3 * Copyright (C) 2006 Andrew Johnson <acjgenius@earthlink.net> 4 * Copyright (C) 2006 Thomas Wood <thos@gnome.org> 5 * Copyright (C) 2006-2007 Benjamin Berg <benjamin@sipsolutions.net> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this library; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 * 21 * Project contact: <gnome-themes-list@gnome.org> 22 * 23 * 24 * Written by Andrew Johnson <acjgenius@earthlink.net> 25 * Written by Benjamin Berg <benjamin@sipsolutions.net> 26 * Written by Thomas Wood <thos@gnome.org> 27 * modified by Andrea Cimitan <andrea.cimitan@gmail.com> 28 * 29 */ 30 31 #ifndef WIDGET_INFORMATION_H 32 #define WIDGET_INFORMATION_H 33 34 #include "general-support.h" 35 #include <glib.h> 36 #include <gtk/gtk.h> 37 38 typedef enum { 39 GE_HINT_TREEVIEW, 40 GE_HINT_TREEVIEW_HEADER, 41 GE_HINT_STATUSBAR, 42 GE_HINT_COMBOBOX_ENTRY, 43 GE_HINT_SPINBUTTON, 44 GE_HINT_SCALE, 45 GE_HINT_VSCALE, 46 GE_HINT_HSCALE, 47 GE_HINT_SCROLLBAR, 48 GE_HINT_VSCROLLBAR, 49 GE_HINT_HSCROLLBAR, 50 GE_HINT_PROGRESSBAR, 51 GE_HINT_MENUBAR, 52 GE_HINT_COUNT 53 } GEHint; 54 55 /* ALL OF THE FOLLOWING SHOULD DIE ... 56 * instead the hint system will be used, and a huge switch ;-) */ 57 58 /* Object Type Lookups/Macros 59 60 Based on/modified from functions in 61 Smooth-Engine. 62 */ 63 #define GE_IS_WIDGET(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkWidget")) 64 #define GE_IS_CONTAINER(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkContainer")) 65 #define GE_IS_BIN(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkBin")) 66 67 #define GE_IS_ARROW(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkArrow")) 68 69 #define GE_IS_SEPARATOR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkSeparator")) 70 #define GE_IS_VSEPARATOR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkVSeparator")) 71 #define GE_IS_HSEPARATOR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkHSeparator")) 72 73 #define GE_IS_HANDLE_BOX(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkHandleBox")) 74 #define GE_IS_HANDLE_BOX_ITEM(object) ((object) && GE_IS_HANDLE_BOX(object->parent)) 75 #define GE_IS_BONOBO_DOCK_ITEM(object) ((object) && ge_object_is_a ((GObject*)(object), "BonoboDockItem")) 76 #define GE_IS_BONOBO_DOCK_ITEM_GRIP(object) ((object) && ge_object_is_a ((GObject*)(object), "BonoboDockItemGrip")) 77 #define GE_IS_BONOBO_TOOLBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "BonoboUIToolbar")) 78 #define GE_IS_EGG_TOOLBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "Toolbar")) 79 #define GE_IS_TOOLBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkToolbar")) 80 #define GE_IS_PANEL_WIDGET(object) ((object) && (ge_object_is_a ((GObject*)(object), "PanelWidget") || ge_object_is_a ((GObject*)(object), "PanelApplet"))) 81 82 #define GE_IS_COMBO_BOX_ENTRY(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkComboBoxEntry")) 83 #define GE_IS_COMBO_BOX(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkComboBox")) 84 #define GE_IS_COMBO(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkCombo")) 85 #define GE_IS_OPTION_MENU(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkOptionMenu")) 86 87 #define GE_IS_TOGGLE_BUTTON(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkToggleButton")) 88 #define GE_IS_CHECK_BUTTON(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkCheckButton")) 89 #define GE_IS_SPIN_BUTTON(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkSpinButton")) 90 91 #define GE_IS_STATUSBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkStatusbar")) 92 #define GE_IS_PROGRESS_BAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkProgressBar")) 93 94 #define GE_IS_MENU_SHELL(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkMenuShell")) 95 #define GE_IS_MENU(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkMenu")) 96 #define GE_IS_MENU_BAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkMenuBar")) 97 #define GE_IS_MENU_ITEM(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkMenuItem")) 98 99 #define GE_IS_CHECK_MENU_ITEM(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkCheckMenuItem")) 100 101 #define GE_IS_RANGE(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkRange")) 102 103 #define GE_IS_SCROLLBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkScrollbar")) 104 #define GE_IS_VSCROLLBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkVScrollbar")) 105 #define GE_IS_HSCROLLBAR(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkHScrollbar")) 106 107 #define GE_IS_SCALE(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkScale")) 108 #define GE_IS_VSCALE(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkVScale")) 109 #define GE_IS_HSCALE(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkHScale")) 110 111 #define GE_IS_PANED(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkPaned")) 112 #define GE_IS_VPANED(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkVPaned")) 113 #define GE_IS_HPANED(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkHPaned")) 114 115 #define GE_IS_BOX(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkBox")) 116 #define GE_IS_VBOX(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkVBox")) 117 #define GE_IS_HBOX(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkHBox")) 118 119 #define GE_IS_CLIST(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkCList")) 120 #define GE_IS_TREE_VIEW(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkTreeView")) 121 #define GE_IS_ENTRY(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkEntry")) 122 #define GE_IS_BUTTON(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkButton")) 123 #define GE_IS_FIXED(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkFixed")) 124 125 #define TOGGLE_BUTTON(object) (GE_IS_TOGGLE_BUTTON(object)?(GtkToggleButton *)object:NULL) 126 127 #define GE_IS_NOTEBOOK(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkNotebook")) 128 #define GE_IS_CELL_RENDERER_TOGGLE(object) ((object) && ge_object_is_a ((GObject*)(object), "GtkCellRendererToggle")) 129 130 #define GE_WIDGET_HAS_DEFAULT(object) ((object) && GE_IS_WIDGET(object) && GTK_WIDGET_HAS_DEFAULT(object)) 131 132 133 GE_INTERNAL gboolean ge_check_hint (GEHint hint, GQuark style_hint, GtkWidget *widget); 134 135 GE_INTERNAL gboolean ge_object_is_a (const GObject * object, const gchar * type_name); 136 137 GE_INTERNAL gboolean ge_is_combo_box_entry (GtkWidget * widget); 138 GE_INTERNAL gboolean ge_is_combo_box (GtkWidget * widget, gboolean as_list); 139 GE_INTERNAL gboolean ge_is_combo (GtkWidget * widget); 140 GE_INTERNAL gboolean ge_is_in_combo_box (GtkWidget * widget); 141 142 GE_INTERNAL gboolean ge_is_toolbar_item (GtkWidget * widget); 143 144 GE_INTERNAL gboolean ge_is_panel_widget_item (GtkWidget * widget); 145 146 GE_INTERNAL gboolean ge_is_bonobo_dock_item (GtkWidget * widget); 147 148 GE_INTERNAL GtkWidget *ge_find_combo_box_widget_parent (GtkWidget * widget); 149 150 GE_INTERNAL void ge_option_menu_get_props (GtkWidget * widget, 151 GtkRequisition * indicator_size, 152 GtkBorder * indicator_spacing); 153 154 GE_INTERNAL void ge_button_get_default_border (GtkWidget *widget, 155 GtkBorder *border); 156 157 GE_INTERNAL gboolean ge_widget_is_ltr (GtkWidget *widget); 158 159 GE_INTERNAL guint ge_rc_parse_hint (GScanner *scanner, GQuark *quark); 160 161 #endif /* WIDGET_INFORMATION_H */ 162