2007-12-14 10:57:46 +00:00
|
|
|
/* gtktoolshell.c
|
|
|
|
* Copyright (C) 2007 Openismus GmbH
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
2012-02-27 13:01:10 +00:00
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
2007-12-14 10:57:46 +00:00
|
|
|
*
|
|
|
|
* Author:
|
|
|
|
* Mathias Hasselmann
|
|
|
|
*/
|
|
|
|
|
2008-06-22 14:28:52 +00:00
|
|
|
#include "config.h"
|
2007-12-14 10:57:46 +00:00
|
|
|
#include "gtktoolshell.h"
|
|
|
|
#include "gtkwidget.h"
|
|
|
|
#include "gtkintl.h"
|
2010-07-09 17:22:23 +00:00
|
|
|
|
2007-12-14 10:57:46 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* SECTION:gtktoolshell
|
2009-11-27 04:52:20 +00:00
|
|
|
* @Short_description: Interface for containers containing GtkToolItem widgets
|
2009-10-15 01:47:45 +00:00
|
|
|
* @Title: GtkToolShell
|
2007-12-14 10:57:46 +00:00
|
|
|
*
|
|
|
|
* The #GtkToolShell interface allows container widgets to provide additional
|
|
|
|
* information when embedding #GtkToolItem widgets.
|
|
|
|
*
|
|
|
|
* @see_also: #GtkToolbar, #GtkToolItem
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* GtkToolShell:
|
|
|
|
*
|
|
|
|
* Dummy structure for accessing instances of #GtkToolShellIface.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2010-08-25 19:59:15 +00:00
|
|
|
typedef GtkToolShellIface GtkToolShellInterface;
|
|
|
|
G_DEFINE_INTERFACE (GtkToolShell, gtk_tool_shell, GTK_TYPE_WIDGET);
|
|
|
|
|
2011-08-09 14:55:01 +00:00
|
|
|
static GtkReliefStyle gtk_tool_shell_real_get_relief_style (GtkToolShell *shell);
|
|
|
|
static GtkOrientation gtk_tool_shell_real_get_text_orientation (GtkToolShell *shell);
|
|
|
|
static gfloat gtk_tool_shell_real_get_text_alignment (GtkToolShell *shell);
|
|
|
|
static PangoEllipsizeMode gtk_tool_shell_real_get_ellipsize_mode (GtkToolShell *shell);
|
2007-12-14 10:57:46 +00:00
|
|
|
|
2010-08-25 19:59:15 +00:00
|
|
|
static void
|
|
|
|
gtk_tool_shell_default_init (GtkToolShellInterface *iface)
|
|
|
|
{
|
2011-08-09 14:55:01 +00:00
|
|
|
iface->get_relief_style = gtk_tool_shell_real_get_relief_style;
|
|
|
|
iface->get_text_orientation = gtk_tool_shell_real_get_text_orientation;
|
|
|
|
iface->get_text_alignment = gtk_tool_shell_real_get_text_alignment;
|
|
|
|
iface->get_ellipsize_mode = gtk_tool_shell_real_get_ellipsize_mode;
|
|
|
|
}
|
|
|
|
|
|
|
|
static GtkReliefStyle
|
|
|
|
gtk_tool_shell_real_get_relief_style (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return GTK_RELIEF_NONE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static GtkOrientation
|
|
|
|
gtk_tool_shell_real_get_text_orientation (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return GTK_ORIENTATION_HORIZONTAL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gfloat
|
|
|
|
gtk_tool_shell_real_get_text_alignment (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return 0.5f;
|
|
|
|
}
|
|
|
|
|
|
|
|
static PangoEllipsizeMode
|
|
|
|
gtk_tool_shell_real_get_ellipsize_mode (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return PANGO_ELLIPSIZE_NONE;
|
2007-12-14 10:57:46 +00:00
|
|
|
}
|
|
|
|
|
2010-08-25 19:59:15 +00:00
|
|
|
|
2007-12-14 10:57:46 +00:00
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_icon_size:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves the icon size for the tool shell. Tool items must not call this
|
|
|
|
* function directly, but rely on gtk_tool_item_get_icon_size() instead.
|
|
|
|
*
|
2009-12-18 10:58:36 +00:00
|
|
|
* Return value: (type int): the current size for icons of @shell
|
2007-12-14 10:57:46 +00:00
|
|
|
*
|
2008-02-15 23:42:42 +00:00
|
|
|
* Since: 2.14
|
2007-12-14 10:57:46 +00:00
|
|
|
**/
|
|
|
|
GtkIconSize
|
|
|
|
gtk_tool_shell_get_icon_size (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return GTK_TOOL_SHELL_GET_IFACE (shell)->get_icon_size (shell);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_orientation:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves the current orientation for the tool shell. Tool items must not
|
|
|
|
* call this function directly, but rely on gtk_tool_item_get_orientation()
|
|
|
|
* instead.
|
|
|
|
*
|
|
|
|
* Return value: the current orientation of @shell
|
|
|
|
*
|
2008-02-15 23:42:42 +00:00
|
|
|
* Since: 2.14
|
2007-12-14 10:57:46 +00:00
|
|
|
**/
|
|
|
|
GtkOrientation
|
|
|
|
gtk_tool_shell_get_orientation (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return GTK_TOOL_SHELL_GET_IFACE (shell)->get_orientation (shell);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_style:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves whether the tool shell has text, icons, or both. Tool items must
|
2011-01-06 14:06:24 +00:00
|
|
|
* not call this function directly, but rely on gtk_tool_item_get_toolbar_style()
|
2007-12-14 10:57:46 +00:00
|
|
|
* instead.
|
|
|
|
*
|
|
|
|
* Return value: the current style of @shell
|
|
|
|
*
|
2008-02-15 23:42:42 +00:00
|
|
|
* Since: 2.14
|
2007-12-14 10:57:46 +00:00
|
|
|
**/
|
|
|
|
GtkToolbarStyle
|
|
|
|
gtk_tool_shell_get_style (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
return GTK_TOOL_SHELL_GET_IFACE (shell)->get_style (shell);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_relief_style:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Returns the relief style of buttons on @shell. Tool items must not call this
|
|
|
|
* function directly, but rely on gtk_tool_item_get_relief_style() instead.
|
|
|
|
*
|
|
|
|
* Return value: The relief style of buttons on @shell.
|
|
|
|
*
|
2008-02-15 23:42:42 +00:00
|
|
|
* Since: 2.14
|
2007-12-14 10:57:46 +00:00
|
|
|
**/
|
|
|
|
GtkReliefStyle
|
|
|
|
gtk_tool_shell_get_relief_style (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
|
|
|
|
|
2011-08-09 14:55:01 +00:00
|
|
|
return iface->get_relief_style (shell);
|
2007-12-14 10:57:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_rebuild_menu:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Calling this function signals the tool shell that the overflow menu item for
|
|
|
|
* tool items have changed. If there is an overflow menu and if it is visible
|
|
|
|
* when this function it called, the menu will be rebuilt.
|
|
|
|
*
|
|
|
|
* Tool items must not call this function directly, but rely on
|
|
|
|
* gtk_tool_item_rebuild_menu() instead.
|
|
|
|
*
|
2008-02-15 23:42:42 +00:00
|
|
|
* Since: 2.14
|
2007-12-14 10:57:46 +00:00
|
|
|
**/
|
|
|
|
void
|
|
|
|
gtk_tool_shell_rebuild_menu (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
|
|
|
|
|
|
|
|
if (iface->rebuild_menu)
|
|
|
|
iface->rebuild_menu (shell);
|
|
|
|
}
|
|
|
|
|
2009-07-13 17:13:59 +00:00
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_text_orientation:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves the current text orientation for the tool shell. Tool items must not
|
|
|
|
* call this function directly, but rely on gtk_tool_item_get_text_orientation()
|
|
|
|
* instead.
|
|
|
|
*
|
|
|
|
* Return value: the current text orientation of @shell
|
|
|
|
*
|
2010-06-04 14:28:11 +00:00
|
|
|
* Since: 2.20
|
2009-07-13 17:13:59 +00:00
|
|
|
**/
|
|
|
|
GtkOrientation
|
|
|
|
gtk_tool_shell_get_text_orientation (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
|
|
|
|
|
2011-08-09 14:55:01 +00:00
|
|
|
return iface->get_text_orientation (shell);
|
2009-07-13 17:13:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_text_alignment:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves the current text alignment for the tool shell. Tool items must not
|
|
|
|
* call this function directly, but rely on gtk_tool_item_get_text_alignment()
|
|
|
|
* instead.
|
|
|
|
*
|
|
|
|
* Return value: the current text alignment of @shell
|
|
|
|
*
|
2010-06-04 14:28:11 +00:00
|
|
|
* Since: 2.20
|
2009-07-13 17:13:59 +00:00
|
|
|
**/
|
|
|
|
gfloat
|
|
|
|
gtk_tool_shell_get_text_alignment (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
|
|
|
|
|
2011-08-09 14:55:01 +00:00
|
|
|
return iface->get_text_alignment (shell);
|
2009-07-13 17:13:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_ellipsize_mode
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves the current ellipsize mode for the tool shell. Tool items must not
|
|
|
|
* call this function directly, but rely on gtk_tool_item_get_ellipsize_mode()
|
|
|
|
* instead.
|
|
|
|
*
|
|
|
|
* Return value: the current ellipsize mode of @shell
|
|
|
|
*
|
2010-06-04 14:28:11 +00:00
|
|
|
* Since: 2.20
|
2009-07-13 17:13:59 +00:00
|
|
|
**/
|
|
|
|
PangoEllipsizeMode
|
|
|
|
gtk_tool_shell_get_ellipsize_mode (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
|
|
|
|
|
2011-08-09 14:55:01 +00:00
|
|
|
return iface->get_ellipsize_mode (shell);
|
2009-07-13 17:13:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gtk_tool_shell_get_text_size_group:
|
|
|
|
* @shell: a #GtkToolShell
|
|
|
|
*
|
|
|
|
* Retrieves the current text size group for the tool shell. Tool items must not
|
|
|
|
* call this function directly, but rely on gtk_tool_item_get_text_size_group()
|
|
|
|
* instead.
|
|
|
|
*
|
2010-09-18 16:42:15 +00:00
|
|
|
* Return value: (transfer none): the current text size group of @shell
|
2009-07-13 17:13:59 +00:00
|
|
|
*
|
2010-06-04 14:28:11 +00:00
|
|
|
* Since: 2.20
|
2009-07-13 17:13:59 +00:00
|
|
|
**/
|
|
|
|
GtkSizeGroup *
|
|
|
|
gtk_tool_shell_get_text_size_group (GtkToolShell *shell)
|
|
|
|
{
|
|
|
|
GtkToolShellIface *iface = GTK_TOOL_SHELL_GET_IFACE (shell);
|
|
|
|
|
|
|
|
if (iface->get_text_size_group)
|
|
|
|
return GTK_TOOL_SHELL_GET_IFACE (shell)->get_text_size_group (shell);
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|