1 /* Murrine theme engine 2 * Copyright (C) 2006-2007-2008-2009 Andrea Cimitan 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 * Boston, MA 02111-1307, USA. 18 * 19 */ 20 21 #ifndef SUPPORT_H 22 #define SUPPORT_H 23 24 #include <gtk/gtk.h> 25 #include <math.h> 26 #include <string.h> 27 28 #include "murrine_types.h" 29 #include "cairo-support.h" 30 31 #define RADIO_SIZE 13 32 #define CHECK_SIZE 13 33 34 /* Opacity settings */ 35 #define GRADIENT_OPACITY 0.90 36 #define WINDOW_OPACITY 0.88 37 #define ENTRY_OPACITY 0.90 38 #define NOTEBOOK_OPACITY 0.92 39 #define MENUBAR_OPACITY 0.88 40 #define MENUBAR_GLOSSY_OPACITY 0.88 41 #define MENUBAR_STRIPED_OPACITY 0.94 42 #define TOOLBAR_OPACITY 0.88 43 #define TOOLBAR_GLOSSY_OPACITY 0.88 44 #define MENU_OPACITY 0.90 45 #define TOOLTIP_OPACITY 0.90 46 47 /* From gtk-engines 20071109 */ 48 #define MRN_IS_WIDGET(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkWidget")) 49 #define MRN_IS_CONTAINER(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkContainer")) 50 #define MRN_IS_BIN(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkBin")) 51 52 #define MRN_IS_ARROW(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkArrow")) 53 54 #define MRN_IS_SEPARATOR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkSeparator")) 55 #define MRN_IS_VSEPARATOR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkVSeparator")) 56 #define MRN_IS_HSEPARATOR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkHSeparator")) 57 58 #define MRN_IS_HANDLE_BOX(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkHandleBox")) 59 #define MRN_IS_HANDLE_BOX_ITEM(object) ((object) && MRN_IS_HANDLE_BOX(object->parent)) 60 #define MRN_IS_BONOBO_DOCK_ITEM(object) ((object) && murrine_object_is_a ((GObject*)(object), "BonoboDockItem")) 61 #define MRN_IS_BONOBO_DOCK_ITEM_GRIP(object) ((object) && murrine_object_is_a ((GObject*)(object), "BonoboDockItemGrip")) 62 #define MRN_IS_BONOBO_TOOLBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "BonoboUIToolbar")) 63 #define MRN_IS_EGG_TOOLBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "Toolbar")) 64 #define MRN_IS_TOOLBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkToolbar")) 65 #define MRN_IS_PANEL_APPLET(object) ((object) && murrine_object_is_a ((GObject*)(object), "PanelApplet")) 66 #define MRN_IS_PANEL_WIDGET(object) ((object) && murrine_object_is_a ((GObject*)(object), "PanelWidget")) 67 68 #define MRN_IS_COMBO_BOX_ENTRY(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkComboBoxEntry")) 69 #define MRN_IS_COMBO_BOX(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkComboBox")) 70 #define MRN_IS_COMBO(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkCombo")) 71 #define MRN_IS_OPTION_MENU(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkOptionMenu")) 72 73 #define MRN_IS_TOGGLE_BUTTON(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkToggleButton")) 74 #define MRN_IS_CHECK_BUTTON(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkCheckButton")) 75 #define MRN_IS_RADIO_BUTTON(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkRadioButton")) 76 #define MRN_IS_SPIN_BUTTON(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkSpinButton")) 77 78 #define MRN_IS_STATUSBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkStatusbar")) 79 #define MRN_IS_PROGRESS_BAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkProgressBar")) 80 81 #define MRN_IS_MENU_SHELL(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkMenuShell")) 82 #define MRN_IS_MENU(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkMenu")) 83 #define MRN_IS_MENU_BAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkMenuBar")) 84 #define MRN_IS_MENU_ITEM(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkMenuItem")) 85 86 #define MRN_IS_CHECK_MENU_ITEM(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkCheckMenuItem")) 87 88 #define MRN_IS_RANGE(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkRange")) 89 90 #define MRN_IS_SCROLLED_WINDOW(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkScrolledWindow")) 91 92 #define MRN_IS_SCROLLBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkScrollbar")) 93 #define MRN_IS_VSCROLLBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkVScrollbar")) 94 #define MRN_IS_HSCROLLBAR(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkHScrollbar")) 95 96 #define MRN_IS_SCALE(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkScale")) 97 #define MRN_IS_VSCALE(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkVScale")) 98 #define MRN_IS_HSCALE(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkHScale")) 99 100 #define MRN_IS_PANED(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkPaned")) 101 #define MRN_IS_VPANED(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkVPaned")) 102 #define MRN_IS_HPANED(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkHPaned")) 103 104 #define MRN_IS_BOX(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkBox")) 105 #define MRN_IS_VBOX(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkVBox")) 106 #define MRN_IS_HBOX(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkHBox")) 107 108 #define MRN_IS_CLIST(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkCList")) 109 #define MRN_IS_TREE_VIEW(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkTreeView")) 110 #define MRN_IS_ENTRY(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkEntry")) 111 #define MRN_IS_BUTTON(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkButton")) 112 #define MRN_IS_FIXED(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkFixed")) 113 114 #define TOGGLE_BUTTON(object) (MRN_IS_TOGGLE_BUTTON(object)?(GtkToggleButton *)object:NULL) 115 116 #define MRN_IS_NOTEBOOK(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkNotebook")) 117 #define MRN_IS_CELL_RENDERER_TOGGLE(object) ((object) && murrine_object_is_a ((GObject*)(object), "GtkCellRendererToggle")) 118 119 #define MRN_WIDGET_HAS_DEFAULT(object) ((object) && MRN_IS_WIDGET(object) && GTK_WIDGET_HAS_DEFAULT(object)) 120 121 G_GNUC_INTERNAL GtkTextDirection murrine_get_direction (GtkWidget *widget); 122 G_GNUC_INTERNAL GtkWidget *murrine_special_get_ancestor (GtkWidget *widget, GType widget_type); 123 G_GNUC_INTERNAL GdkColor* murrine_get_parent_bgcolor (GtkWidget *widget); 124 G_GNUC_INTERNAL GtkWidget* murrine_get_parent_window (GtkWidget *widget); 125 G_GNUC_INTERNAL gboolean murrine_is_combo_box (GtkWidget *widget); 126 G_GNUC_INTERNAL gboolean murrine_is_combo_box_entry (GtkWidget *widget); 127 G_GNUC_INTERNAL GtkWidget* murrine_find_combo_box_widget(GtkWidget *widget); 128 G_GNUC_INTERNAL void murrine_gtk_treeview_get_header_index (GtkTreeView *tv, 129 GtkWidget *header, 130 gint *column_index, 131 gint *columns, 132 gboolean *resizable); 133 G_GNUC_INTERNAL void murrine_gtk_clist_get_header_index (GtkCList *clist, 134 GtkWidget *button, 135 gint *column_index, 136 gint *columns); 137 G_GNUC_INTERNAL void murrine_option_menu_get_props (GtkWidget *widget, 138 GtkRequisition *indicator_size, 139 GtkBorder *indicator_spacing); 140 G_GNUC_INTERNAL MurrineStepper murrine_scrollbar_get_stepper (GtkWidget *widget, GdkRectangle *stepper); 141 G_GNUC_INTERNAL MurrineStepper murrine_scrollbar_visible_steppers (GtkWidget *widget); 142 G_GNUC_INTERNAL MurrineJunction murrine_scrollbar_get_junction (GtkWidget *widget); 143 G_GNUC_INTERNAL gboolean murrine_is_panel_widget (GtkWidget *widget); 144 G_GNUC_INTERNAL void murrine_set_toolbar_parameters (ToolbarParameters *toolbar, 145 GtkWidget *widget, 146 GdkWindow *window, 147 gint x, gint y); 148 G_GNUC_INTERNAL void murrine_get_notebook_tab_position (GtkWidget *widget, 149 gboolean *start, 150 gboolean *end); 151 152 #endif /* SUPPORT_H */ 153