1 /* GTK - The GIMP Toolkit 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 3 * GtkToolbar copyright (C) Federico Mena 4 * 5 * Copyright (C) 2002 Anders Carlsson <andersca@gnome.org> 6 * Copyright (C) 2002 James Henstridge <james@daa.com.au> 7 * Copyright (C) 2003 Soeren Sandmann <sandmann@daimi.au.dk> 8 * 9 * This library is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU Lesser General Public 11 * License as published by the Free Software Foundation; either 12 * version 2 of the License, or (at your option) any later version. 13 * 14 * This library is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 * Lesser General Public License for more details. 18 * 19 * You should have received a copy of the GNU Lesser General Public 20 * License along with this library; if not, write to the 21 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 22 * Boston, MA 02111-1307, USA. 23 */ 24 25 /* 26 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS 27 * file for a list of people on the GTK+ Team. See the ChangeLog 28 * files for a list of changes. These files are distributed with 29 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 30 */ 31 32 #ifndef __GTK_TOOLBAR_H__ 33 #define __GTK_TOOLBAR_H__ 34 35 36 #if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 37 #error "Only <gtk/gtk.h> can be included directly." 38 #endif 39 40 #include <gtk/gtkcontainer.h> 41 #include <gtk/gtktooltips.h> 42 #include <gtk/gtktoolitem.h> 43 44 #ifndef GTK_DISABLE_DEPRECATED 45 46 /* Not needed, retained for compatibility -Yosh */ 47 #include <gtk/gtkpixmap.h> 48 #include <gtk/gtksignal.h> 49 50 #endif /* GTK_DISABLE_DEPRECATED */ 51 52 G_BEGIN_DECLS 53 54 #define GTK_TYPE_TOOLBAR (gtk_toolbar_get_type ()) 55 #define GTK_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TOOLBAR, GtkToolbar)) 56 #define GTK_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TOOLBAR, GtkToolbarClass)) 57 #define GTK_IS_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TOOLBAR)) 58 #define GTK_IS_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TOOLBAR)) 59 #define GTK_TOOLBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TOOLBAR, GtkToolbarClass)) 60 61 #ifndef GTK_DISABLE_DEPRECATED 62 typedef enum 63 { 64 GTK_TOOLBAR_CHILD_SPACE, 65 GTK_TOOLBAR_CHILD_BUTTON, 66 GTK_TOOLBAR_CHILD_TOGGLEBUTTON, 67 GTK_TOOLBAR_CHILD_RADIOBUTTON, 68 GTK_TOOLBAR_CHILD_WIDGET 69 } GtkToolbarChildType; 70 71 typedef struct _GtkToolbarChild GtkToolbarChild; 72 73 struct _GtkToolbarChild 74 { 75 GtkToolbarChildType type; 76 GtkWidget *widget; 77 GtkWidget *icon; 78 GtkWidget *label; 79 }; 80 81 #endif /* GTK_DISABLE_DEPRECATED */ 82 83 typedef enum 84 { 85 GTK_TOOLBAR_SPACE_EMPTY, 86 GTK_TOOLBAR_SPACE_LINE 87 } GtkToolbarSpaceStyle; 88 89 typedef struct _GtkToolbar GtkToolbar; 90 typedef struct _GtkToolbarClass GtkToolbarClass; 91 typedef struct _GtkToolbarPrivate GtkToolbarPrivate; 92 93 struct _GtkToolbar 94 { 95 GtkContainer container; 96 97 /*< public >*/ 98 gint GSEAL (num_children); 99 GList *GSEAL (children); 100 GtkOrientation GSEAL (orientation); 101 GtkToolbarStyle GSEAL (style); 102 GtkIconSize GSEAL (icon_size); 103 104 #ifndef GTK_DISABLE_DEPRECATED 105 GtkTooltips *GSEAL (tooltips); 106 #else 107 gpointer GSEAL (_tooltips); 108 #endif 109 110 /*< private >*/ 111 gint GSEAL (button_maxw); /* maximum width of homogeneous children */ 112 gint GSEAL (button_maxh); /* maximum height of homogeneous children */ 113 114 guint _gtk_reserved1; 115 guint _gtk_reserved2; 116 117 guint GSEAL (style_set) : 1; 118 guint GSEAL (icon_size_set) : 1; 119 }; 120 121 struct _GtkToolbarClass 122 { 123 GtkContainerClass parent_class; 124 125 /* signals */ 126 void (* orientation_changed) (GtkToolbar *toolbar, 127 GtkOrientation orientation); 128 void (* style_changed) (GtkToolbar *toolbar, 129 GtkToolbarStyle style); 130 gboolean (* popup_context_menu) (GtkToolbar *toolbar, 131 gint x, 132 gint y, 133 gint button_number); 134 135 /* Padding for future expansion */ 136 void (*_gtk_reserved1) (void); 137 void (*_gtk_reserved2) (void); 138 void (*_gtk_reserved3) (void); 139 }; 140 141 GType gtk_toolbar_get_type (void) G_GNUC_CONST; 142 GtkWidget * gtk_toolbar_new (void); 143 144 void gtk_toolbar_insert (GtkToolbar *toolbar, 145 GtkToolItem *item, 146 gint pos); 147 148 gint gtk_toolbar_get_item_index (GtkToolbar *toolbar, 149 GtkToolItem *item); 150 gint gtk_toolbar_get_n_items (GtkToolbar *toolbar); 151 GtkToolItem * gtk_toolbar_get_nth_item (GtkToolbar *toolbar, 152 gint n); 153 154 gboolean gtk_toolbar_get_show_arrow (GtkToolbar *toolbar); 155 void gtk_toolbar_set_show_arrow (GtkToolbar *toolbar, 156 gboolean show_arrow); 157 158 GtkToolbarStyle gtk_toolbar_get_style (GtkToolbar *toolbar); 159 void gtk_toolbar_set_style (GtkToolbar *toolbar, 160 GtkToolbarStyle style); 161 void gtk_toolbar_unset_style (GtkToolbar *toolbar); 162 163 GtkIconSize gtk_toolbar_get_icon_size (GtkToolbar *toolbar); 164 void gtk_toolbar_set_icon_size (GtkToolbar *toolbar, 165 GtkIconSize icon_size); 166 void gtk_toolbar_unset_icon_size (GtkToolbar *toolbar); 167 168 GtkReliefStyle gtk_toolbar_get_relief_style (GtkToolbar *toolbar); 169 gint gtk_toolbar_get_drop_index (GtkToolbar *toolbar, 170 gint x, 171 gint y); 172 void gtk_toolbar_set_drop_highlight_item (GtkToolbar *toolbar, 173 GtkToolItem *tool_item, 174 gint index_); 175 176 177 /* internal functions */ 178 gchar * _gtk_toolbar_elide_underscores (const gchar *original); 179 void _gtk_toolbar_paint_space_line (GtkWidget *widget, 180 GtkToolbar *toolbar, 181 const GdkRectangle *area, 182 const GtkAllocation *allocation); 183 gint _gtk_toolbar_get_default_space_size (void); 184 185 186 187 #ifndef GTK_DISABLE_DEPRECATED 188 189 GtkOrientation gtk_toolbar_get_orientation (GtkToolbar *toolbar); 190 void gtk_toolbar_set_orientation (GtkToolbar *toolbar, 191 GtkOrientation orientation); 192 gboolean gtk_toolbar_get_tooltips (GtkToolbar *toolbar); 193 void gtk_toolbar_set_tooltips (GtkToolbar *toolbar, 194 gboolean enable); 195 196 /* Simple button items */ 197 GtkWidget* gtk_toolbar_append_item (GtkToolbar *toolbar, 198 const char *text, 199 const char *tooltip_text, 200 const char *tooltip_private_text, 201 GtkWidget *icon, 202 GCallback callback, 203 gpointer user_data); 204 GtkWidget* gtk_toolbar_prepend_item (GtkToolbar *toolbar, 205 const char *text, 206 const char *tooltip_text, 207 const char *tooltip_private_text, 208 GtkWidget *icon, 209 GCallback callback, 210 gpointer user_data); 211 GtkWidget* gtk_toolbar_insert_item (GtkToolbar *toolbar, 212 const char *text, 213 const char *tooltip_text, 214 const char *tooltip_private_text, 215 GtkWidget *icon, 216 GCallback callback, 217 gpointer user_data, 218 gint position); 219 220 /* Stock Items */ 221 GtkWidget* gtk_toolbar_insert_stock (GtkToolbar *toolbar, 222 const gchar *stock_id, 223 const char *tooltip_text, 224 const char *tooltip_private_text, 225 GCallback callback, 226 gpointer user_data, 227 gint position); 228 229 /* Space Items */ 230 void gtk_toolbar_append_space (GtkToolbar *toolbar); 231 void gtk_toolbar_prepend_space (GtkToolbar *toolbar); 232 void gtk_toolbar_insert_space (GtkToolbar *toolbar, 233 gint position); 234 void gtk_toolbar_remove_space (GtkToolbar *toolbar, 235 gint position); 236 /* Any element type */ 237 GtkWidget* gtk_toolbar_append_element (GtkToolbar *toolbar, 238 GtkToolbarChildType type, 239 GtkWidget *widget, 240 const char *text, 241 const char *tooltip_text, 242 const char *tooltip_private_text, 243 GtkWidget *icon, 244 GCallback callback, 245 gpointer user_data); 246 247 GtkWidget* gtk_toolbar_prepend_element (GtkToolbar *toolbar, 248 GtkToolbarChildType type, 249 GtkWidget *widget, 250 const char *text, 251 const char *tooltip_text, 252 const char *tooltip_private_text, 253 GtkWidget *icon, 254 GCallback callback, 255 gpointer user_data); 256 257 GtkWidget* gtk_toolbar_insert_element (GtkToolbar *toolbar, 258 GtkToolbarChildType type, 259 GtkWidget *widget, 260 const char *text, 261 const char *tooltip_text, 262 const char *tooltip_private_text, 263 GtkWidget *icon, 264 GCallback callback, 265 gpointer user_data, 266 gint position); 267 268 /* Generic Widgets */ 269 void gtk_toolbar_append_widget (GtkToolbar *toolbar, 270 GtkWidget *widget, 271 const char *tooltip_text, 272 const char *tooltip_private_text); 273 void gtk_toolbar_prepend_widget (GtkToolbar *toolbar, 274 GtkWidget *widget, 275 const char *tooltip_text, 276 const char *tooltip_private_text); 277 void gtk_toolbar_insert_widget (GtkToolbar *toolbar, 278 GtkWidget *widget, 279 const char *tooltip_text, 280 const char *tooltip_private_text, 281 gint position); 282 283 #endif /* GTK_DISABLE_DEPRECATED */ 284 285 286 G_END_DECLS 287 288 #endif /* __GTK_TOOLBAR_H__ */ 289