libyui-gtk  2.44.10
ygtkratiobox.h
1 /********************************************************************
2  * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
3  ********************************************************************/
4 
5 /* YGtkRatioBox uses weights instead of the single state expand boolean.
6 */
7 
8 #ifndef YGTK_RATIO_BOX_H
9 #define YGTK_RATIO_BOX_H
10 
11 #include <gtk/gtk.h>
12 G_BEGIN_DECLS
13 
14 #define YGTK_TYPE_RATIO_BOX (ygtk_ratio_box_get_type ())
15 #define YGTK_RATIO_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
16  YGTK_TYPE_RATIO_BOX, YGtkRatioBox))
17 #define YGTK_RATIO_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
18  YGTK_TYPE_RATIO_BOX, YGtkRatioBoxClass))
19 #define YGTK_IS_RATIO_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
20  YGTK_TYPE_RATIO_BOX))
21 #define YGTK_IS_RATIO_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
22  YGTK_TYPE_RATIO_BOX))
23 #define YGTK_RATIO_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
24  YGTK_TYPE_RATIO_BOX, YGtkRatioBoxClass))
25 
26 typedef struct _YGtkRatioBox
27 {
28  GtkContainer parent;
29 
30  // private (read-only):
31  GList *children;
32  guint spacing;
33 } YGtkRatioBox;
34 
35 typedef struct _YGtkRatioBoxClass
36 {
37  GtkContainerClass parent_class;
39 
40 typedef struct _YGtkRatioBoxChild
41 {
42  GtkWidget *widget;
43  // members
44  gfloat ratio;
46 
47 GType ygtk_ratio_box_get_type (void) G_GNUC_CONST;
48 
49 void ygtk_ratio_box_set_spacing (YGtkRatioBox *box, guint spacing);
50 
51 void ygtk_ratio_box_pack (YGtkRatioBox *box, GtkWidget *child, gfloat ratio);
52 void ygtk_ratio_box_set_child_packing (YGtkRatioBox *box, GtkWidget *child, gfloat ratio);
53 
54 /* RatioHBox */
55 
56 #define YGTK_TYPE_RATIO_HBOX (ygtk_ratio_hbox_get_type ())
57 #define YGTK_RATIO_HBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
58  YGTK_TYPE_RATIO_HBOX, YGtkRatioHBox))
59 #define YGTK_RATIO_HBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
60  YGTK_TYPE_RATIO_HBOX, YGtkRatioHBoxClass))
61 #define YGTK_IS_RATIO_HBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
62  YGTK_TYPE_RATIO_HBOX))
63 #define YGTK_IS_RATIO_HBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
64  YGTK_TYPE_RATIO_HBOX))
65 #define YGTK_RATIO_HBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
66  YGTK_TYPE_RATIO_HBOX, YGtkRatioHBoxClass))
67 
68 typedef struct _YGtkRatioHBox
69 {
70  YGtkRatioBox parent;
72 
73 typedef struct _YGtkRatioHBoxClass
74 {
75  YGtkRatioBoxClass parent_class;
77 
78 GtkWidget* ygtk_ratio_hbox_new (gint spacing);
79 GType ygtk_ratio_hbox_get_type (void) G_GNUC_CONST;
80 
81 /* RatioVBox */
82 
83 #define YGTK_TYPE_RATIO_VBOX (ygtk_ratio_vbox_get_type ())
84 #define YGTK_RATIO_VBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
85  YGTK_TYPE_RATIO_VBOX, YGtkRatioVBox))
86 #define YGTK_RATIO_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
87  YGTK_TYPE_RATIO_VBOX, YGtkRatioVBoxClass))
88 #define YGTK_IS_RATIO_VBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
89  YGTK_TYPE_RATIO_VBOX))
90 #define YGTK_IS_RATIO_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
91  YGTK_TYPE_RATIO_VBOX))
92 #define YGTK_RATIO_VBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
93  YGTK_TYPE_RATIO_VBOX, YGtkRatioVBoxClass))
94 
95 typedef struct _YGtkRatioVBox
96 {
97  YGtkRatioBox parent;
99 
100 typedef struct _YGtkRatioVBoxClass
101 {
102  YGtkRatioBoxClass parent_class;
104 
105 GtkWidget* ygtk_ratio_vbox_new (gint spacing);
106 GType ygtk_ratio_vbox_get_type (void) G_GNUC_CONST;
107 
108 G_END_DECLS
109 #endif /* YGTK_RATIO_BOX_H */
110 
111 /* YGtkAdjSize container allows for better fine grained size constrains. */
112 #ifndef YGTK_ADJ_SIZE_H
113 #define YGTK_ADJ_SIZE_H
114 
115 G_BEGIN_DECLS
116 
117 #define YGTK_TYPE_ADJ_SIZE (ygtk_adj_size_get_type ())
118 #define YGTK_ADJ_SIZE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
119  YGTK_TYPE_ADJ_SIZE, YGtkAdjSize))
120 #define YGTK_ADJ_SIZE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
121  YGTK_TYPE_ADJ_SIZE, YGtkAdjSizeClass))
122 #define YGTK_IS_ADJ_SIZE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
123  YGTK_TYPE_ADJ_SIZE))
124 #define YGTK_IS_ADJ_SIZE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
125  YGTK_TYPE_ADJ_SIZE))
126 #define YGTK_ADJ_SIZE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
127  YGTK_TYPE_ADJ_SIZE, YGtkAdjSizeClass))
128 
129 typedef void (*LimitSizeCb) (guint *width, guint *height, gpointer data);
130 
131 typedef struct _YGtkAdjSize
132 {
133  GtkBin parent;
134  // members
135  guint min_width, min_height, max_width, max_height;
136  LimitSizeCb min_size_cb;
137  gpointer min_size_data;
138  gint only_expand : 2;
139 } YGtkAdjSize;
140 
141 typedef struct _YGtkAdjSizeClass
142 {
143  GtkBinClass parent_class;
145 
146 GType ygtk_adj_size_get_type (void) G_GNUC_CONST;
147 GtkWidget* ygtk_adj_size_new (void);
148 
149 void ygtk_adj_size_set_min (YGtkAdjSize *adj_size, guint min_width, guint min_height);
150 void ygtk_adj_size_set_max (YGtkAdjSize *adj_size, guint max_width, guint max_height);
151 
152 void ygtk_adj_size_set_min_cb (YGtkAdjSize *adj_size, LimitSizeCb min_size_cb, gpointer data);
153 
154 /* Only allow the child to grow (ie. to ask for bigger sizes). */
155 void ygtk_adj_size_set_only_expand (YGtkAdjSize *adj_size, gboolean only_expand);
156 
157 G_END_DECLS
158 #endif /*YGTK_ADJ_SIZE_H*/
159