summaryrefslogtreecommitdiff
path: root/gtk/gtkmenubutton.h
blob: 412f43ca3b00bcd17be6b818fab2e6de0bbb648c (plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* GTK - The GIMP Toolkit
 *
 * Copyright (C) 2003 Ricardo Fernandez Pascual
 * Copyright (C) 2004 Paolo Borelli
 * Copyright (C) 2012 Bastien Nocera
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __GTK_MENU_BUTTON_H__
#define __GTK_MENU_BUTTON_H__

#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

#include <gtk/gtktogglebutton.h>
#include <gtk/gtkpopover.h>

G_BEGIN_DECLS

#define GTK_TYPE_MENU_BUTTON            (gtk_menu_button_get_type ())
#define GTK_MENU_BUTTON(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_BUTTON, GtkMenuButton))
#define GTK_IS_MENU_BUTTON(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_BUTTON))

typedef struct _GtkMenuButton        GtkMenuButton;

/**
 * GtkMenuButtonCreatePopupFunc:
 * @menu_button: the `GtkMenuButton`
 * @user_data: User data passed to gtk_menu_button_set_create_popup_func()
 *
 * User-provided callback function to create a popup for a
 * `GtkMenuButton` on demand.
 *
 * This function is called when the popup of @menu_button is shown,
 * but none has been provided via [method@Gtk.MenuButton.set_popover]
 * or [method@Gtk.MenuButton.set_menu_model].
 */
typedef void  (*GtkMenuButtonCreatePopupFunc) (GtkMenuButton *menu_button,
                                               gpointer       user_data);

GDK_AVAILABLE_IN_ALL
GType        gtk_menu_button_get_type       (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_ALL
GtkWidget   *gtk_menu_button_new            (void);

GDK_AVAILABLE_IN_ALL
void         gtk_menu_button_set_popover    (GtkMenuButton *menu_button,
                                             GtkWidget     *popover);
GDK_AVAILABLE_IN_ALL
GtkPopover  *gtk_menu_button_get_popover    (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void         gtk_menu_button_set_direction  (GtkMenuButton *menu_button,
                                             GtkArrowType   direction);
GDK_AVAILABLE_IN_ALL
GtkArrowType gtk_menu_button_get_direction  (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void         gtk_menu_button_set_menu_model (GtkMenuButton *menu_button,
                                             GMenuModel    *menu_model);
GDK_AVAILABLE_IN_ALL
GMenuModel  *gtk_menu_button_get_menu_model (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void         gtk_menu_button_set_icon_name (GtkMenuButton *menu_button,
                                            const char    *icon_name);
GDK_AVAILABLE_IN_ALL
const char * gtk_menu_button_get_icon_name (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_4_4
void         gtk_menu_button_set_always_show_arrow (GtkMenuButton *menu_button,
                                                    gboolean       always_show_arrow);
GDK_AVAILABLE_IN_4_4
gboolean     gtk_menu_button_get_always_show_arrow (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void         gtk_menu_button_set_label (GtkMenuButton *menu_button,
                                        const char    *label);
GDK_AVAILABLE_IN_ALL
const char * gtk_menu_button_get_label (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void         gtk_menu_button_set_use_underline (GtkMenuButton *menu_button,
                                                gboolean       use_underline);
GDK_AVAILABLE_IN_ALL
gboolean     gtk_menu_button_get_use_underline (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void           gtk_menu_button_set_has_frame (GtkMenuButton  *menu_button,
                                              gboolean        has_frame);
GDK_AVAILABLE_IN_ALL
gboolean       gtk_menu_button_get_has_frame (GtkMenuButton  *menu_button);

GDK_AVAILABLE_IN_ALL
void          gtk_menu_button_popup (GtkMenuButton *menu_button);
GDK_AVAILABLE_IN_ALL
void          gtk_menu_button_popdown (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_ALL
void          gtk_menu_button_set_create_popup_func (GtkMenuButton                *menu_button,
                                                     GtkMenuButtonCreatePopupFunc  func,
                                                     gpointer                      user_data,
                                                     GDestroyNotify                destroy_notify);

GDK_AVAILABLE_IN_4_4
void          gtk_menu_button_set_primary (GtkMenuButton *menu_button,
                                           gboolean       primary);
GDK_AVAILABLE_IN_4_4
gboolean      gtk_menu_button_get_primary (GtkMenuButton *menu_button);

GDK_AVAILABLE_IN_4_6
void          gtk_menu_button_set_child   (GtkMenuButton *menu_button,
                                           GtkWidget     *child);
GDK_AVAILABLE_IN_4_6
GtkWidget *   gtk_menu_button_get_child   (GtkMenuButton *menu_button);

G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkMenuButton, g_object_unref)

G_END_DECLS

#endif /* __GTK_MENU_BUTTON_H__ */