libyui-gtk  2.49.0
ygtkmenubutton.h
1 /********************************************************************
2  * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
3  ********************************************************************/
4 
5 /* YGtkMenuButton is a button that displays a widget when pressed.
6  This widget can either be of type GtkMenu or another, like a
7  GtkCalendar and we'll do the proper "emulation" (the work of
8  the YGtkPopupWindow widget).
9 */
10 
11 #ifndef YGTK_POPUP_WINDOW_H
12 #define YGTK_POPUP_WINDOW_H
13 
14 #include <gtk/gtk.h>
15 G_BEGIN_DECLS
16 
17 #define YGTK_TYPE_POPUP_WINDOW (ygtk_popup_window_get_type ())
18 #define YGTK_POPUP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
19  YGTK_TYPE_POPUP_WINDOW, YGtkPopupWindow))
20 #define YGTK_POPUP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
21  YGTK_TYPE_POPUP_WINDOW, YGtkPopupWindowClass))
22 #define IS_YGTK_POPUP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
23  YGTK_TYPE_POPUP_WINDOW))
24 #define IS_YGTK_POPUP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
25  YGTK_TYPE_POPUP_WINDOW))
26 #define YGTK_POPUP_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
27  YGTK_TYPE_POPUP_WINDOW, YGtkPopupWindowClass))
28 
29 typedef struct _YGtkPopupWindow
30 {
31  GtkWindow parent;
33 
34 typedef struct _YGtkPopupWindowClass
35 {
36  GtkWindowClass parent_class;
38 
39 // don't forget to use gtk_widget_show() on the child!
40 GtkWidget* ygtk_popup_window_new (GtkWidget *child);
41 GType ygtk_popup_window_get_type (void) G_GNUC_CONST;
42 
43 void ygtk_popup_window_popup (GtkWidget *widget, gint x, gint y, guint activate_time);
44 
45 G_END_DECLS
46 #endif /*YGTK_POPUP_WINDOW_H*/
47 
48 #ifndef YGTK_MENU_BUTTON_H
49 #define YGTK_MENU_BUTTON_H
50 
51 G_BEGIN_DECLS
52 
53 #define YGTK_TYPE_MENU_BUTTON (ygtk_menu_button_get_type ())
54 #define YGTK_MENU_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
55  YGTK_TYPE_MENU_BUTTON, YGtkMenuButton))
56 #define YGTK_MENU_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
57  YGTK_TYPE_MENU_BUTTON, YGtkMenuButtonClass))
58 #define IS_YGTK_MENU_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
59  YGTK_TYPE_MENU_BUTTON))
60 #define IS_YGTK_MENU_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
61  YGTK_TYPE_MENU_BUTTON))
62 #define YGTK_MENU_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
63  YGTK_TYPE_MENU_BUTTON, YGtkMenuButtonClass))
64 
65 typedef struct _YGtkMenuButton
66 {
67  GtkToggleButton parent;
68 
69  // private:
70  GtkWidget *label, *popup;
71  gfloat xalign, yalign;
73 
74 typedef struct _YGtkMenuButtonClass
75 {
76  GtkToggleButtonClass parent_class;
78 
79 GtkWidget* ygtk_menu_button_new (void);
80 GtkWidget* ygtk_menu_button_new_with_label (const gchar *label);
81 GType ygtk_menu_button_get_type (void) G_GNUC_CONST;
82 
83 void ygtk_menu_button_set_label (YGtkMenuButton *button, const gchar *label);
84 
85 /* Popup must be either a GtkMenu or a YGtkPopupWindow. */
86 // You may hide your popup "manually" issueing a gtk_widget_hide() on it
87 void ygtk_menu_button_set_popup (YGtkMenuButton *button, GtkWidget *popup);
88 void ygtk_menu_button_set_popup_align (YGtkMenuButton *button, GtkWidget *popup,
89  gfloat xalign, gfloat yalign);
90 
91 G_END_DECLS
92 #endif /*YGTK_MENU_BUTTON_H*/