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/gtkwidget.h> 30 #include <gtk/gtkselectionmodel.h> 31 32 G_BEGIN_DECLS 33 34 35 #define GTK_TYPE_STACK (gtk_stack_get_type ()) 36 #define GTK_STACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_STACK, GtkStack)) 37 #define GTK_IS_STACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_STACK)) 38 39 typedef struct _GtkStack GtkStack; 40 41 #define GTK_TYPE_STACK_PAGE (gtk_stack_page_get_type ()) 42 #define GTK_STACK_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_STACK_PAGE, GtkStackPage)) 43 #define GTK_IS_STACK_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_STACK_PAGE)) 44 45 typedef struct _GtkStackPage GtkStackPage; 46 47 typedef enum { 48 GTK_STACK_TRANSITION_TYPE_NONE, 49 GTK_STACK_TRANSITION_TYPE_CROSSFADE, 50 GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT, 51 GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT, 52 GTK_STACK_TRANSITION_TYPE_SLIDE_UP, 53 GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN, 54 GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT, 55 GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN, 56 GTK_STACK_TRANSITION_TYPE_OVER_UP, 57 GTK_STACK_TRANSITION_TYPE_OVER_DOWN, 58 GTK_STACK_TRANSITION_TYPE_OVER_LEFT, 59 GTK_STACK_TRANSITION_TYPE_OVER_RIGHT, 60 GTK_STACK_TRANSITION_TYPE_UNDER_UP, 61 GTK_STACK_TRANSITION_TYPE_UNDER_DOWN, 62 GTK_STACK_TRANSITION_TYPE_UNDER_LEFT, 63 GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT, 64 GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN, 65 GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP, 66 GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT, 67 GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT, 68 GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT, 69 GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT, 70 GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT 71 } GtkStackTransitionType; 72 73 GDK_AVAILABLE_IN_ALL 74 GType gtk_stack_page_get_type (void) G_GNUC_CONST; 75 GDK_AVAILABLE_IN_ALL 76 GtkWidget * gtk_stack_page_get_child (GtkStackPage *self); 77 GDK_AVAILABLE_IN_ALL 78 gboolean gtk_stack_page_get_visible (GtkStackPage *self); 79 GDK_AVAILABLE_IN_ALL 80 void gtk_stack_page_set_visible (GtkStackPage *self, 81 gboolean visible); 82 GDK_AVAILABLE_IN_ALL 83 gboolean gtk_stack_page_get_needs_attention (GtkStackPage *self); 84 GDK_AVAILABLE_IN_ALL 85 void gtk_stack_page_set_needs_attention (GtkStackPage *self, 86 gboolean setting); 87 GDK_AVAILABLE_IN_ALL 88 gboolean gtk_stack_page_get_use_underline (GtkStackPage *self); 89 GDK_AVAILABLE_IN_ALL 90 void gtk_stack_page_set_use_underline (GtkStackPage *self, 91 gboolean setting); 92 GDK_AVAILABLE_IN_ALL 93 const char * gtk_stack_page_get_name (GtkStackPage *self); 94 GDK_AVAILABLE_IN_ALL 95 void gtk_stack_page_set_name (GtkStackPage *self, 96 const char *setting); 97 GDK_AVAILABLE_IN_ALL 98 const char * gtk_stack_page_get_title (GtkStackPage *self); 99 GDK_AVAILABLE_IN_ALL 100 void gtk_stack_page_set_title (GtkStackPage *self, 101 const char *setting); 102 GDK_AVAILABLE_IN_ALL 103 const char * gtk_stack_page_get_icon_name (GtkStackPage *self); 104 GDK_AVAILABLE_IN_ALL 105 void gtk_stack_page_set_icon_name (GtkStackPage *self, 106 const char *setting); 107 108 109 110 GDK_AVAILABLE_IN_ALL 111 GType gtk_stack_get_type (void) G_GNUC_CONST; 112 113 GDK_AVAILABLE_IN_ALL 114 GtkWidget * gtk_stack_new (void); 115 GDK_AVAILABLE_IN_ALL 116 GtkStackPage * gtk_stack_add_child (GtkStack *stack, 117 GtkWidget *child); 118 GDK_AVAILABLE_IN_ALL 119 GtkStackPage * gtk_stack_add_named (GtkStack *stack, 120 GtkWidget *child, 121 const char *name); 122 GDK_AVAILABLE_IN_ALL 123 GtkStackPage * gtk_stack_add_titled (GtkStack *stack, 124 GtkWidget *child, 125 const char *name, 126 const char *title); 127 GDK_AVAILABLE_IN_ALL 128 void gtk_stack_remove (GtkStack *stack, 129 GtkWidget *child); 130 131 GDK_AVAILABLE_IN_ALL 132 GtkStackPage * gtk_stack_get_page (GtkStack *stack, 133 GtkWidget *child); 134 GDK_AVAILABLE_IN_ALL 135 GtkWidget * gtk_stack_get_child_by_name (GtkStack *stack, 136 const char *name); 137 GDK_AVAILABLE_IN_ALL 138 void gtk_stack_set_visible_child (GtkStack *stack, 139 GtkWidget *child); 140 GDK_AVAILABLE_IN_ALL 141 GtkWidget * gtk_stack_get_visible_child (GtkStack *stack); 142 GDK_AVAILABLE_IN_ALL 143 void gtk_stack_set_visible_child_name (GtkStack *stack, 144 const char *name); 145 GDK_AVAILABLE_IN_ALL 146 const char * gtk_stack_get_visible_child_name (GtkStack *stack); 147 GDK_AVAILABLE_IN_ALL 148 void gtk_stack_set_visible_child_full (GtkStack *stack, 149 const char *name, 150 GtkStackTransitionType transition); 151 GDK_AVAILABLE_IN_ALL 152 void gtk_stack_set_hhomogeneous (GtkStack *stack, 153 gboolean hhomogeneous); 154 GDK_AVAILABLE_IN_ALL 155 gboolean gtk_stack_get_hhomogeneous (GtkStack *stack); 156 GDK_AVAILABLE_IN_ALL 157 void gtk_stack_set_vhomogeneous (GtkStack *stack, 158 gboolean vhomogeneous); 159 GDK_AVAILABLE_IN_ALL 160 gboolean gtk_stack_get_vhomogeneous (GtkStack *stack); 161 GDK_AVAILABLE_IN_ALL 162 void gtk_stack_set_transition_duration (GtkStack *stack, 163 guint duration); 164 GDK_AVAILABLE_IN_ALL 165 guint gtk_stack_get_transition_duration (GtkStack *stack); 166 GDK_AVAILABLE_IN_ALL 167 void gtk_stack_set_transition_type (GtkStack *stack, 168 GtkStackTransitionType transition); 169 GDK_AVAILABLE_IN_ALL 170 GtkStackTransitionType gtk_stack_get_transition_type (GtkStack *stack); 171 GDK_AVAILABLE_IN_ALL 172 gboolean gtk_stack_get_transition_running (GtkStack *stack); 173 GDK_AVAILABLE_IN_ALL 174 void gtk_stack_set_interpolate_size (GtkStack *stack, 175 gboolean interpolate_size); 176 GDK_AVAILABLE_IN_ALL 177 gboolean gtk_stack_get_interpolate_size (GtkStack *stack); 178 179 GDK_AVAILABLE_IN_ALL 180 GtkSelectionModel * gtk_stack_get_pages (GtkStack *stack); 181 182 G_END_DECLS 183 184 #endif 185