1 /* -*- Mode: C; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 3 -*- */ 2 3 /* 4 * GImageView 5 * Copyright (C) 2001 Takuro Ashie 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 * 21 * $Id: gimv_paned.h,v 1.2 2003/06/13 09:43:32 makeinu Exp $ 22 */ 23 24 /* 25 * These codes are taken from gThumb. 26 * gThumb code Copyright (C) 2001 The Free Software Foundation, Inc. 27 * gThumb author: Paolo Bacchilega 28 */ 29 30 #ifndef __GIMV_PANED_H__ 31 #define __GIMV_PANED_H__ 32 33 #ifdef HAVE_CONFIG_H 34 # include "config.h" 35 #endif 36 37 #include <gdk/gdk.h> 38 #include <gtk/gtkcontainer.h> 39 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif /* __cplusplus */ 44 45 46 #ifndef USE_NORMAL_PANED 47 48 #define GIMV_TYPE_PANED (gimv_paned_get_type ()) 49 #define GIMV_PANED(obj) (GTK_CHECK_CAST ((obj), GIMV_TYPE_PANED, GimvPaned)) 50 #define GIMV_PANED_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GIMV_TYPE_PANED, GimvPanedClass)) 51 #define GIMV_IS_PANED(obj) (GTK_CHECK_TYPE ((obj), GIMV_TYPE_PANED)) 52 #define GIMV_IS_PANED_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMV_TYPE_PANED)) 53 54 typedef struct _GimvPaned GimvPaned; 55 typedef struct _GimvPanedClass GimvPanedClass; 56 57 struct _GimvPaned 58 { 59 GtkContainer container; 60 61 GtkWidget *child1; 62 GtkWidget *child2; 63 64 GdkWindow *handle; 65 GdkGC *xor_gc; 66 67 /*< public >*/ 68 guint16 gutter_size; 69 70 /*< private >*/ 71 gint child1_size; 72 gint last_allocation; 73 gint min_position; 74 gint max_position; 75 76 guint position_set : 1; 77 guint in_drag : 1; 78 guint child1_shrink : 1; 79 guint child1_resize : 1; 80 guint child2_shrink : 1; 81 guint child2_resize : 1; 82 83 gint16 handle_xpos; 84 gint16 handle_ypos; 85 86 /* whether it is an horizontal or a vertical paned. */ 87 guint horizontal : 1; 88 89 /* minimal sizes for child1 and child2. (default value : 0) */ 90 gint child1_minsize; 91 gint child2_minsize; 92 93 /* whether the minimal size option is enabled or not. */ 94 guint child1_use_minsize : 1; 95 guint child2_use_minsize : 1; 96 97 /* stores what child is hiden, if any: 98 * 0 : no child collapsed. 99 * 1,2 : index of the collapsed child. */ 100 guint child_hidden : 2; 101 }; 102 103 struct _GimvPanedClass 104 { 105 GtkContainerClass parent_class; 106 107 void (*xor_line) (GimvPaned *); 108 }; 109 110 111 GtkType gimv_paned_get_type (void); 112 void gimv_paned_add1 (GimvPaned *paned, 113 GtkWidget *child); 114 void gimv_paned_add2 (GimvPaned *paned, 115 GtkWidget *child); 116 void gimv_paned_pack1 (GimvPaned *paned, 117 GtkWidget *child, 118 gboolean resize, 119 gboolean shrink); 120 void gimv_paned_pack2 (GimvPaned *paned, 121 GtkWidget *child, 122 gboolean resize, 123 gboolean shrink); 124 void gimv_paned_set_position (GimvPaned *paned, 125 gint position); 126 gint gimv_paned_get_position (GimvPaned *paned); 127 128 void gimv_paned_set_gutter_size (GimvPaned *paned, 129 guint16 size); 130 131 void gimv_paned_xor_line (GimvPaned *paned); 132 133 /* Set a minimal size for a child. Unset the collapse option if setted. */ 134 void gimv_paned_child1_use_minsize (GimvPaned *paned, 135 gboolean use_minsize, 136 gint minsize); 137 void gimv_paned_child2_use_minsize (GimvPaned *paned, 138 gboolean use_minsize, 139 gint minsize); 140 141 void gimv_paned_hide_child1 (GimvPaned *paned); 142 void gimv_paned_hide_child2 (GimvPaned *paned); 143 void gimv_paned_split (GimvPaned *paned); 144 guint gimv_paned_which_hidden (GimvPaned *paned); 145 146 /* Internal function */ 147 void gimv_paned_compute_position (GimvPaned *paned, 148 gint allocation, 149 gint child1_req, 150 gint child2_req); 151 152 #define gray50_width 2 153 #define gray50_height 2 154 extern char gray50_bits[]; 155 156 #else /* USE_NORMAL_PANED */ 157 158 #include <gtk/gtkpaned.h> 159 160 #define GimvPaned GtkPaned 161 #define GIMV_TYPE_PANED GTK_TYPE_PANED 162 #define GIMV_PANED(paned) GTK_PANED(paned) 163 #define GIMV_IS_PANED(obj) GTK_IS_PANED(paned) 164 #define GIMV_IS_PANED_CLASS(klass) GTK_IS_PANED_CLASS(paned) 165 #define gimv_paned_add1(paned, widget) gtk_paned_add1(paned, widget) 166 #define gimv_paned_add2(paned, widget) gtk_paned_add2(paned, widget) 167 #define gimv_paned_set_position(paned, size) gtk_paned_set_position(paned, size) 168 #define gimv_paned_get_position(paned) gtk_paned_get_position(paned) 169 #define gimv_paned_split(paned) \ 170 { \ 171 gtk_widget_show (paned->child1); \ 172 gtk_widget_show (paned->child2); \ 173 } 174 #define gimv_paned_hide_child1(paned) gtk_widget_hide (paned->child1) 175 #define gimv_paned_hide_child2(paned) gtk_widget_hide (paned->child2) 176 177 guint gimv_paned_which_hidden (GimvPaned *paned); 178 179 #endif /* USE_NORMAL_PANED */ 180 181 182 #ifdef __cplusplus 183 } 184 #endif /* __cplusplus */ 185 186 187 #endif /* __GIMV_PANED_H__ */ 188