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