GtkToolPalette

GtkToolPalette — A tool palette with categories

Properties

GtkIconSize icon-size Read / Write
gboolean icon-size-set Read / Write
GtkToolbarStyle toolbar-style Read / Write

Child Properties

gboolean exclusive Read / Write
gboolean expand Read / Write

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkToolPalette

Implemented Interfaces

GtkToolPalette implements AtkImplementorIface, GtkBuildable, GtkOrientable and GtkScrollable.

Includes

#include <gtk/gtk.h>

Description

A GtkToolPalette allows you to add GtkToolItems to a palette-like container with different categories and drag and drop support.

A GtkToolPalette is created with a call to gtk_tool_palette_new().

GtkToolItems cannot be added directly to a GtkToolPalette - instead they are added to a GtkToolItemGroup which can than be added to a GtkToolPalette. To add a GtkToolItemGroup to a GtkToolPalette, use gtk_container_add().

1
2
3
4
5
6
7
8
9
10
GtkWidget *palette, *group;
GtkToolItem *item;

palette = gtk_tool_palette_new ();
group = gtk_tool_item_group_new (_("Test Category"));
gtk_container_add (GTK_CONTAINER (palette), group);

item = gtk_tool_button_new_new (NULL, _("_Open"));
gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "document-open");
gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);

The easiest way to use drag and drop with GtkToolPalette is to call gtk_tool_palette_add_drag_dest() with the desired drag source palette and the desired drag target widget . Then gtk_tool_palette_get_drag_item() can be used to get the dragged item in the “drag-data-received” signal handler of the drag target.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
static void
passive_canvas_drag_data_received (GtkWidget        *widget,
                                   GdkDragContext   *context,
                                   gint              x,
                                   gint              y,
                                   GtkSelectionData *selection,
                                   guint             info,
                                   guint             time,
                                   gpointer          data)
{
  GtkWidget *palette;
  GtkWidget *item;

  // Get the dragged item
  palette = gtk_widget_get_ancestor (gtk_drag_get_source_widget (context),
                                     GTK_TYPE_TOOL_PALETTE);
  if (palette != NULL)
    item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette),
                                           selection);

  // Do something with item
}

GtkWidget *target, palette;

palette = gtk_tool_palette_new ();
target = gtk_drawing_area_new ();

g_signal_connect (G_OBJECT (target), "drag-data-received",
                  G_CALLBACK (passive_canvas_drag_data_received), NULL);
gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette), target,
                                GTK_DEST_DEFAULT_ALL,
                                GTK_TOOL_PALETTE_DRAG_ITEMS,
                                GDK_ACTION_COPY);

CSS nodes

GtkToolPalette has a single CSS node named toolpalette.

Functions

gtk_tool_palette_new ()

GtkWidget *
gtk_tool_palette_new (void);

Creates a new tool palette.

Returns

a new GtkToolPalette

Since: 2.20


gtk_tool_palette_get_exclusive ()

gboolean
gtk_tool_palette_get_exclusive (GtkToolPalette *palette,
                                GtkToolItemGroup *group);

Gets whether group is exclusive or not. See gtk_tool_palette_set_exclusive().

Parameters

palette

a GtkToolPalette

 

group

a GtkToolItemGroup which is a child of palette

 

Returns

TRUE if group is exclusive

Since: 2.20


gtk_tool_palette_set_exclusive ()

void
gtk_tool_palette_set_exclusive (GtkToolPalette *palette,
                                GtkToolItemGroup *group,
                                gboolean exclusive);

Sets whether the group should be exclusive or not. If an exclusive group is expanded all other groups are collapsed.

Parameters

palette

a GtkToolPalette

 

group

a GtkToolItemGroup which is a child of palette

 

exclusive

whether the group should be exclusive or not

 

Since: 2.20


gtk_tool_palette_get_expand ()

gboolean
gtk_tool_palette_get_expand (GtkToolPalette *palette,
                             GtkToolItemGroup *group);

Gets whether group should be given extra space. See gtk_tool_palette_set_expand().

Parameters

palette

a GtkToolPalette

 

group

a GtkToolItemGroup which is a child of palette

 

Returns

TRUE if group should be given extra space, FALSE otherwise

Since: 2.20


gtk_tool_palette_set_expand ()

void
gtk_tool_palette_set_expand (GtkToolPalette *palette,
                             GtkToolItemGroup *group,
                             gboolean expand);

Sets whether the group should be given extra space.

Parameters

palette

a GtkToolPalette

 

group

a GtkToolItemGroup which is a child of palette

 

expand

whether the group should be given extra space

 

Since: 2.20


gtk_tool_palette_get_group_position ()

gint
gtk_tool_palette_get_group_position (GtkToolPalette *palette,
                                     GtkToolItemGroup *group);

Gets the position of group in palette as index. See gtk_tool_palette_set_group_position().

Parameters

palette

a GtkToolPalette

 

group

a GtkToolItemGroup

 

Returns

the index of group or -1 if group is not a child of palette

Since: 2.20


gtk_tool_palette_set_group_position ()

void
gtk_tool_palette_set_group_position (GtkToolPalette *palette,
                                     GtkToolItemGroup *group,
                                     gint position);

Sets the position of the group as an index of the tool palette. If position is 0 the group will become the first child, if position is -1 it will become the last child.

Parameters

palette

a GtkToolPalette

 

group

a GtkToolItemGroup which is a child of palette

 

position

a new index for group

 

Since: 2.20


gtk_tool_palette_get_icon_size ()

GtkIconSize
gtk_tool_palette_get_icon_size (GtkToolPalette *palette);

Gets the size of icons in the tool palette. See gtk_tool_palette_set_icon_size().

Parameters

palette

a GtkToolPalette

 

Returns

the GtkIconSize of icons in the tool palette.

[type int]

Since: 2.20


gtk_tool_palette_set_icon_size ()

void
gtk_tool_palette_set_icon_size (GtkToolPalette *palette,
                                GtkIconSize icon_size);

Sets the size of icons in the tool palette.

Parameters

palette

a GtkToolPalette

 

icon_size

the GtkIconSize that icons in the tool palette shall have.

[type int]

Since: 2.20


gtk_tool_palette_unset_icon_size ()

void
gtk_tool_palette_unset_icon_size (GtkToolPalette *palette);

Unsets the tool palette icon size set with gtk_tool_palette_set_icon_size(), so that user preferences will be used to determine the icon size.

Parameters

palette

a GtkToolPalette

 

Since: 2.20


gtk_tool_palette_get_style ()

GtkToolbarStyle
gtk_tool_palette_get_style (GtkToolPalette *palette);

Gets the style (icons, text or both) of items in the tool palette.

Parameters

palette

a GtkToolPalette

 

Returns

the GtkToolbarStyle of items in the tool palette.

Since: 2.20


gtk_tool_palette_set_style ()

void
gtk_tool_palette_set_style (GtkToolPalette *palette,
                            GtkToolbarStyle style);

Sets the style (text, icons or both) of items in the tool palette.

Parameters

palette

a GtkToolPalette

 

style

the GtkToolbarStyle that items in the tool palette shall have

 

Since: 2.20


gtk_tool_palette_unset_style ()

void
gtk_tool_palette_unset_style (GtkToolPalette *palette);

Unsets a toolbar style set with gtk_tool_palette_set_style(), so that user preferences will be used to determine the toolbar style.

Parameters

palette

a GtkToolPalette

 

Since: 2.20


gtk_tool_palette_add_drag_dest ()

void
gtk_tool_palette_add_drag_dest (GtkToolPalette *palette,
                                GtkWidget *widget,
                                GtkDestDefaults flags,
                                GtkToolPaletteDragTargets targets,
                                GdkDragAction actions);

Sets palette as drag source (see gtk_tool_palette_set_drag_source()) and sets widget as a drag destination for drags from palette . See gtk_drag_dest_set().

Parameters

palette

a GtkToolPalette

 

widget

a GtkWidget which should be a drag destination for palette

 

flags

the flags that specify what actions GTK+ should take for drops on that widget

 

targets

the GtkToolPaletteDragTargets which the widget should support

 

actions

the GdkDragActions which the widget should suppport

 

Since: 2.20


gtk_tool_palette_get_drag_item ()

GtkWidget *
gtk_tool_palette_get_drag_item (GtkToolPalette *palette,
                                const GtkSelectionData *selection);

Get the dragged item from the selection. This could be a GtkToolItem or a GtkToolItemGroup.

Parameters

palette

a GtkToolPalette

 

selection

a GtkSelectionData

 

Returns

the dragged item in selection.

[transfer none]

Since: 2.20


gtk_tool_palette_get_drag_target_group ()

const GtkTargetEntry *
gtk_tool_palette_get_drag_target_group
                               (void);

Get the target entry for a dragged GtkToolItemGroup.

Returns

the GtkTargetEntry for a dragged group.

[transfer none]

Since: 2.20


gtk_tool_palette_get_drag_target_item ()

const GtkTargetEntry *
gtk_tool_palette_get_drag_target_item (void);

Gets the target entry for a dragged GtkToolItem.

Returns

the GtkTargetEntry for a dragged item.

[transfer none]

Since: 2.20


gtk_tool_palette_get_drop_group ()

GtkToolItemGroup *
gtk_tool_palette_get_drop_group (GtkToolPalette *palette,
                                 gint x,
                                 gint y);

Gets the group at position (x, y).

Parameters

palette

a GtkToolPalette

 

x

the x position

 

y

the y position

 

Returns

the GtkToolItemGroup at position or NULL if there is no such group.

[nullable][transfer none]

Since: 2.20


gtk_tool_palette_get_drop_item ()

GtkToolItem *
gtk_tool_palette_get_drop_item (GtkToolPalette *palette,
                                gint x,
                                gint y);

Gets the item at position (x, y). See gtk_tool_palette_get_drop_group().

Parameters

palette

a GtkToolPalette

 

x

the x position

 

y

the y position

 

Returns

the GtkToolItem at position or NULL if there is no such item.

[nullable][transfer none]

Since: 2.20


gtk_tool_palette_set_drag_source ()

void
gtk_tool_palette_set_drag_source (GtkToolPalette *palette,
                                  GtkToolPaletteDragTargets targets);

Sets the tool palette as a drag source. Enables all groups and items in the tool palette as drag sources on button 1 and button 3 press with copy and move actions. See gtk_drag_source_set().

Parameters

palette

a GtkToolPalette

 

targets

the GtkToolPaletteDragTargets which the widget should support

 

Since: 2.20


gtk_tool_palette_get_hadjustment ()

GtkAdjustment *
gtk_tool_palette_get_hadjustment (GtkToolPalette *palette);

gtk_tool_palette_get_hadjustment has been deprecated since version 3.0 and should not be used in newly-written code.

Use gtk_scrollable_get_hadjustment()

Gets the horizontal adjustment of the tool palette.

Parameters

palette

a GtkToolPalette

 

Returns

the horizontal adjustment of palette .

[transfer none]

Since: 2.20


gtk_tool_palette_get_vadjustment ()

GtkAdjustment *
gtk_tool_palette_get_vadjustment (GtkToolPalette *palette);

gtk_tool_palette_get_vadjustment has been deprecated since version 3.0 and should not be used in newly-written code.

Use gtk_scrollable_get_vadjustment()

Gets the vertical adjustment of the tool palette.

Parameters

palette

a GtkToolPalette

 

Returns

the vertical adjustment of palette .

[transfer none]

Since: 2.20

Types and Values

struct GtkToolPalette

struct GtkToolPalette;

This should not be accessed directly. Use the accessor functions below.


struct GtkToolPaletteClass

struct GtkToolPaletteClass {
  GtkContainerClass parent_class;
};

Members


enum GtkToolPaletteDragTargets

Flags used to specify the supported drag targets.

Members

GTK_TOOL_PALETTE_DRAG_ITEMS

Support drag of items.

 

GTK_TOOL_PALETTE_DRAG_GROUPS

Support drag of groups.

 

Property Details

The “icon-size” property

  “icon-size”                GtkIconSize

The size of the icons in a tool palette. When this property is set, it overrides the default setting.

This should only be used for special-purpose tool palettes, normal application tool palettes should respect the user preferences for the size of icons.

Flags: Read / Write

Default value: GTK_ICON_SIZE_SMALL_TOOLBAR

Since: 2.20


The “icon-size-set” property

  “icon-size-set”            gboolean

Is TRUE if the “icon-size” property has been set.

Flags: Read / Write

Default value: FALSE

Since: 2.20


The “toolbar-style” property

  “toolbar-style”            GtkToolbarStyle

The style of items in the tool palette.

Flags: Read / Write

Default value: GTK_TOOLBAR_ICONS

Since: 2.20

Child Property Details

The “exclusive” child property

  “exclusive”                gboolean

Whether the item group should be the only one that is expanded at a given time.

Flags: Read / Write

Default value: FALSE

Since: 2.20


The “expand” child property

  “expand”                   gboolean

Whether the item group should receive extra space when the palette grows. at a given time.

Flags: Read / Write

Default value: FALSE

Since: 2.20