]> Pileus Git - ~andy/gtk/blob - gtk/gtkmenubutton.h
gtkmenubutton: Add menu button widget
[~andy/gtk] / gtk / gtkmenubutton.h
1 /* GTK - The GIMP Toolkit
2  *
3  * Copyright (C) 2003 Ricardo Fernandez Pascual
4  * Copyright (C) 2004 Paolo Borelli
5  * Copyright (C) 2012 Bastien Nocera
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
22 #error "Only <gtk/gtk.h> can be included directly."
23 #endif
24
25 #ifndef __GTK_MENU_BUTTON_H__
26 #define __GTK_MENU_BUTTON_H__
27
28 #include <gtk/gtk.h>
29
30 G_BEGIN_DECLS
31
32 #define GTK_TYPE_MENU_BUTTON            (gtk_menu_button_get_type ())
33 #define GTK_MENU_BUTTON(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_BUTTON, GtkMenuButton))
34 #define GTK_MENU_BUTTON_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_BUTTON, GtkMenuButtonClass))
35 #define GTK_IS_MENU_BUTTON(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_BUTTON))
36 #define GTK_IS_MENU_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_BUTTON))
37 #define GTK_MENU_BUTTON_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_BUTTON, GtkMenuButtonClass))
38
39 typedef struct _GtkMenuButton        GtkMenuButton;
40 typedef struct _GtkMenuButtonClass   GtkMenuButtonClass;
41 typedef struct _GtkMenuButtonPrivate GtkMenuButtonPrivate;
42
43 struct _GtkMenuButton
44 {
45   GtkToggleButton parent;
46
47   /*< private >*/
48   GtkMenuButtonPrivate *priv;
49 };
50
51 struct _GtkMenuButtonClass
52 {
53   GtkToggleButtonClass parent_class;
54
55   void (*show_menu) (GtkMenuButton *button);
56
57   /* Padding for future expansion */
58   void (*_gtk_reserved1) (void);
59   void (*_gtk_reserved2) (void);
60   void (*_gtk_reserved3) (void);
61   void (*_gtk_reserved4) (void);
62 };
63
64 GType      gtk_menu_button_get_type       (void) G_GNUC_CONST;
65 GtkWidget *gtk_menu_button_new                  (void);
66
67 void       gtk_menu_button_set_menu          (GtkMenuButton *menu_button,
68                                            GtkWidget       *menu);
69 void       gtk_menu_button_set_direction  (GtkMenuButton *menu_button,
70                                            GtkArrowType     direction);
71 void       gtk_menu_button_set_menu_model (GtkMenuButton *menu_button,
72                                            GMenuModel    *menu_model);
73 void       gtk_menu_button_set_parent     (GtkMenuButton *menu_button,
74                                            GtkWidget     *parent);
75
76 G_END_DECLS
77
78 #endif /* __GTK_MENU_BUTTON_H__ */