2 * Copyright (C) 2007 Openismus GmbH
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.
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.
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.
24 #include "gtktoolshell.h"
25 #include "gtkwidget.h"
30 * SECTION:gtktoolshell
31 * @Short_description: Interface for containers containing GtkToolItem widgets
32 * @Title: GtkToolShell
34 * The #GtkToolShell interface allows container widgets to provide additional
35 * information when embedding #GtkToolItem widgets.
37 * @see_also: #GtkToolbar, #GtkToolItem
43 * Dummy structure for accessing instances of #GtkToolShellIface.
47 typedef GtkToolShellIface GtkToolShellInterface;
48 G_DEFINE_INTERFACE (GtkToolShell, gtk_tool_shell, GTK_TYPE_WIDGET);
50 static GtkReliefStyle gtk_tool_shell_real_get_relief_style (GtkToolShell *shell);
51 static GtkOrientation gtk_tool_shell_real_get_text_orientation (GtkToolShell *shell);
52 static gfloat gtk_tool_shell_real_get_text_alignment (GtkToolShell *shell);
53 static PangoEllipsizeMode gtk_tool_shell_real_get_ellipsize_mode (GtkToolShell *shell);
56 gtk_tool_shell_default_init (GtkToolShellInterface *iface)
58 iface->get_relief_style = gtk_tool_shell_real_get_relief_style;
59 iface->get_text_orientation = gtk_tool_shell_real_get_text_orientation;
60 iface->get_text_alignment = gtk_tool_shell_real_get_text_alignment;
61 iface->get_ellipsize_mode = gtk_tool_shell_real_get_ellipsize_mode;
65 gtk_tool_shell_real_get_relief_style (GtkToolShell *shell)
67 return GTK_RELIEF_NONE;
71 gtk_tool_shell_real_get_text_orientation (GtkToolShell *shell)
73 return GTK_ORIENTATION_HORIZONTAL;
77 gtk_tool_shell_real_get_text_alignment (GtkToolShell *shell)
82 static PangoEllipsizeMode
83 gtk_tool_shell_real_get_ellipsize_mode (GtkToolShell *shell)
85 return PANGO_ELLIPSIZE_NONE;
90 * gtk_tool_shell_get_icon_size:
91 * @shell: a #GtkToolShell
93 * Retrieves the icon size for the tool shell. Tool items must not call this
94 * function directly, but rely on gtk_tool_item_get_icon_size() instead.
96 * Return value: (type int): the current size for icons of @shell
101 gtk_tool_shell_get_icon_size (GtkToolShell *shell)
103 return GTK_TOOL_SHELL_GET_IFACE (shell)->get_icon_size (shell);
107 * gtk_tool_shell_get_orientation:
108 * @shell: a #GtkToolShell
110 * Retrieves the current orientation for the tool shell. Tool items must not
111 * call this function directly, but rely on gtk_tool_item_get_orientation()
114 * Return value: the current orientation of @shell
119 gtk_tool_shell_get_orientation (GtkToolShell *shell)
121 return GTK_TOOL_SHELL_GET_IFACE (shell)->get_orientation (shell);
125 * gtk_tool_shell_get_style:
126 * @shell: a #GtkToolShell
128 * Retrieves whether the tool shell has text, icons, or both. Tool items must
129 * not call this function directly, but rely on gtk_tool_item_get_toolbar_style()
132 * Return value: the current style of @shell
137 gtk_tool_shell_get_style (GtkToolShell *shell)
139 return GTK_TOOL_SHELL_GET_IFACE (shell)->get_style (shell);
143 * gtk_tool_shell_get_relief_style:
144 * @shell: a #GtkToolShell
146 * Returns the relief style of buttons on @shell. Tool items must not call this
147 * function directly, but rely on gtk_tool_item_get_relief_style() instead.
149 * Return value: The relief style of buttons on @shell.
154 gtk_tool_shell_get_relief_style (GtkToolShell *shell)
156 GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
158 return iface->get_relief_style (shell);
162 * gtk_tool_shell_rebuild_menu:
163 * @shell: a #GtkToolShell
165 * Calling this function signals the tool shell that the overflow menu item for
166 * tool items have changed. If there is an overflow menu and if it is visible
167 * when this function it called, the menu will be rebuilt.
169 * Tool items must not call this function directly, but rely on
170 * gtk_tool_item_rebuild_menu() instead.
175 gtk_tool_shell_rebuild_menu (GtkToolShell *shell)
177 GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
179 if (iface->rebuild_menu)
180 iface->rebuild_menu (shell);
184 * gtk_tool_shell_get_text_orientation:
185 * @shell: a #GtkToolShell
187 * Retrieves the current text orientation for the tool shell. Tool items must not
188 * call this function directly, but rely on gtk_tool_item_get_text_orientation()
191 * Return value: the current text orientation of @shell
196 gtk_tool_shell_get_text_orientation (GtkToolShell *shell)
198 GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
200 return iface->get_text_orientation (shell);
204 * gtk_tool_shell_get_text_alignment:
205 * @shell: a #GtkToolShell
207 * Retrieves the current text alignment for the tool shell. Tool items must not
208 * call this function directly, but rely on gtk_tool_item_get_text_alignment()
211 * Return value: the current text alignment of @shell
216 gtk_tool_shell_get_text_alignment (GtkToolShell *shell)
218 GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
220 return iface->get_text_alignment (shell);
224 * gtk_tool_shell_get_ellipsize_mode
225 * @shell: a #GtkToolShell
227 * Retrieves the current ellipsize mode for the tool shell. Tool items must not
228 * call this function directly, but rely on gtk_tool_item_get_ellipsize_mode()
231 * Return value: the current ellipsize mode of @shell
236 gtk_tool_shell_get_ellipsize_mode (GtkToolShell *shell)
238 GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
240 return iface->get_ellipsize_mode (shell);
244 * gtk_tool_shell_get_text_size_group:
245 * @shell: a #GtkToolShell
247 * Retrieves the current text size group for the tool shell. Tool items must not
248 * call this function directly, but rely on gtk_tool_item_get_text_size_group()
251 * Return value: (transfer none): the current text size group of @shell
256 gtk_tool_shell_get_text_size_group (GtkToolShell *shell)
258 GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
260 if (iface->get_text_size_group)
261 return GTK_TOOL_SHELL_GET_IFACE (shell)->get_text_size_group (shell);