1 /*
2  * Copyright (c) 2013 Red Hat, Inc.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or (at your
7  * option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
12  * License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  *
18  * Author: Alexander Larsson <alexl@redhat.com>
19  *
20  */
21 
22 #ifndef __GTK_STACK_H__
23 #define __GTK_STACK_H__
24 
25 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
26 #error "Only <gtk/gtk.h> can be included directly."
27 #endif
28 
29 #include <gtk/gtkcontainer.h>
30 
31 G_BEGIN_DECLS
32 
33 
34 #define GTK_TYPE_STACK (gtk_stack_get_type ())
35 #define GTK_STACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_STACK, GtkStack))
36 #define GTK_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_STACK, GtkStackClass))
37 #define GTK_IS_STACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_STACK))
38 #define GTK_IS_STACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_STACK))
39 #define GTK_STACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_STACK, GtkStackClass))
40 
41 typedef struct _GtkStack GtkStack;
42 typedef struct _GtkStackClass GtkStackClass;
43 
44 typedef enum {
45   GTK_STACK_TRANSITION_TYPE_NONE,
46   GTK_STACK_TRANSITION_TYPE_CROSSFADE,
47   GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT,
48   GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT,
49   GTK_STACK_TRANSITION_TYPE_SLIDE_UP,
50   GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN,
51   GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT,
52   GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN,
53   GTK_STACK_TRANSITION_TYPE_OVER_UP,
54   GTK_STACK_TRANSITION_TYPE_OVER_DOWN,
55   GTK_STACK_TRANSITION_TYPE_OVER_LEFT,
56   GTK_STACK_TRANSITION_TYPE_OVER_RIGHT,
57   GTK_STACK_TRANSITION_TYPE_UNDER_UP,
58   GTK_STACK_TRANSITION_TYPE_UNDER_DOWN,
59   GTK_STACK_TRANSITION_TYPE_UNDER_LEFT,
60   GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT,
61   GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN,
62   GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP,
63   GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT,
64   GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT
65 } GtkStackTransitionType;
66 
67 struct _GtkStack {
68   GtkContainer parent_instance;
69 };
70 
71 struct _GtkStackClass {
72   GtkContainerClass parent_class;
73 };
74 
75 GDK_AVAILABLE_IN_3_10
76 GType                  gtk_stack_get_type                (void) G_GNUC_CONST;
77 
78 GDK_AVAILABLE_IN_3_10
79 GtkWidget *            gtk_stack_new                     (void);
80 GDK_AVAILABLE_IN_3_10
81 void                   gtk_stack_add_named               (GtkStack               *stack,
82                                                           GtkWidget              *child,
83                                                           const gchar            *name);
84 GDK_AVAILABLE_IN_3_10
85 void                   gtk_stack_add_titled              (GtkStack               *stack,
86                                                           GtkWidget              *child,
87                                                           const gchar            *name,
88                                                           const gchar            *title);
89 GDK_AVAILABLE_IN_3_12
90 GtkWidget *            gtk_stack_get_child_by_name       (GtkStack               *stack,
91                                                           const gchar            *name);
92 GDK_AVAILABLE_IN_3_10
93 void                   gtk_stack_set_visible_child       (GtkStack               *stack,
94                                                           GtkWidget              *child);
95 GDK_AVAILABLE_IN_3_10
96 GtkWidget *            gtk_stack_get_visible_child       (GtkStack               *stack);
97 GDK_AVAILABLE_IN_3_10
98 void                   gtk_stack_set_visible_child_name  (GtkStack               *stack,
99                                                           const gchar            *name);
100 GDK_AVAILABLE_IN_3_10
101 const gchar *          gtk_stack_get_visible_child_name  (GtkStack               *stack);
102 GDK_AVAILABLE_IN_3_10
103 void                   gtk_stack_set_visible_child_full  (GtkStack               *stack,
104                                                           const gchar            *name,
105                                                           GtkStackTransitionType  transition);
106 GDK_AVAILABLE_IN_3_10
107 void                   gtk_stack_set_homogeneous         (GtkStack               *stack,
108                                                           gboolean                homogeneous);
109 GDK_AVAILABLE_IN_3_10
110 gboolean               gtk_stack_get_homogeneous         (GtkStack               *stack);
111 GDK_AVAILABLE_IN_3_16
112 void                   gtk_stack_set_hhomogeneous        (GtkStack               *stack,
113                                                           gboolean                hhomogeneous);
114 GDK_AVAILABLE_IN_3_16
115 gboolean               gtk_stack_get_hhomogeneous        (GtkStack               *stack);
116 GDK_AVAILABLE_IN_3_16
117 void                   gtk_stack_set_vhomogeneous        (GtkStack               *stack,
118                                                           gboolean                vhomogeneous);
119 GDK_AVAILABLE_IN_3_16
120 gboolean               gtk_stack_get_vhomogeneous        (GtkStack               *stack);
121 GDK_AVAILABLE_IN_3_10
122 void                   gtk_stack_set_transition_duration (GtkStack               *stack,
123                                                           guint                   duration);
124 GDK_AVAILABLE_IN_3_10
125 guint                  gtk_stack_get_transition_duration (GtkStack               *stack);
126 GDK_AVAILABLE_IN_3_10
127 void                   gtk_stack_set_transition_type     (GtkStack               *stack,
128                                                           GtkStackTransitionType  transition);
129 GDK_AVAILABLE_IN_3_10
130 GtkStackTransitionType gtk_stack_get_transition_type     (GtkStack               *stack);
131 GDK_AVAILABLE_IN_3_12
132 gboolean               gtk_stack_get_transition_running  (GtkStack               *stack);
133 GDK_AVAILABLE_IN_3_18
134 void                   gtk_stack_set_interpolate_size    (GtkStack *stack,
135                                                           gboolean  interpolate_size);
136 GDK_AVAILABLE_IN_3_18
137 gboolean               gtk_stack_get_interpolate_size    (GtkStack *stack);
138 G_END_DECLS
139 
140 #endif
141