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_thumb_win.h,v 1.10 2004/12/20 18:15:42 makeinu Exp $ 22 */ 23 24 #ifndef __GIMV_THUMB_WIN_H__ 25 #define __GIMV_THUMB_WIN_H__ 26 27 #include "gimageview.h" 28 29 #include "gimv_image_view.h" 30 #include "gimv_thumb_view.h" 31 32 33 #define GIMV_TYPE_THUMB_WIN (gimv_thumb_win_get_type ()) 34 #define GIMV_THUMB_WIN(obj) (GTK_CHECK_CAST (obj, gimv_thumb_win_get_type (), GimvThumbWin)) 35 #define GIMV_THUMB_WIN_CLASS(klass) (GTK_CHECK_CLASS_CAST (klass, gimv_thumb_win_get_type, GimvThumbWinClass)) 36 #define GIMV_IS_THUMB_WIN(obj) (GTK_CHECK_TYPE (obj, gimv_thumb_win_get_type ())) 37 #define GIMV_IS_THUMB_WIN_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMV_TYPE_THUMB_WIN)) 38 39 40 #define GIMV_THUMB_WIN_MIN_THUMB_SIZE 4 41 #define GIMV_THUMB_WIN_MAX_THUMB_SIZE 640 42 43 /* current page of notebook */ 44 #define GIMV_THUMB_WIN_CURRENT_PAGE -1 45 46 47 typedef struct GimvThumbWinClass_Tag GimvThumbWinClass; 48 typedef struct GimvThumbWinPriv_Tag GimvThumbWinPriv; 49 50 51 /* program status */ 52 typedef enum { 53 GIMV_THUMB_WIN_STATUS_NORMAL, 54 GIMV_THUMB_WIN_STATUS_LOADING, 55 GIMV_THUMB_WIN_STATUS_LOADING_BG, 56 GIMV_THUMB_WIN_STATUS_CHECKING_DUPLICATE, 57 GIMV_THUMB_WIN_STATUS_NO_SENSITIVE 58 } GimvThumbwinStatus; 59 60 61 typedef enum { 62 GIMV_SORT_NAME, 63 GIMV_SORT_ATIME, 64 GIMV_SORT_MTIME, 65 GIMV_SORT_CTIME, 66 GIMV_SORT_SIZE, 67 GIMV_SORT_TYPE, 68 GIMV_SORT_WIDTH, 69 GIMV_SORT_HEIGHT, 70 GIMV_SORT_AREA, 71 GIMV_SORT_NONE 72 } GimvSortItem; 73 74 75 typedef enum { 76 GIMV_SORT_REVERSE = 1 << 0, 77 GIMV_SORT_CASE_INSENSITIVE = 1 << 1, 78 GIMV_SORT_DIR_INSENSITIVE = 1 << 2 79 } GimvSortFlag; 80 81 82 typedef struct GimvThumbwinComposeType_Tag { 83 gboolean pane1_horizontal; 84 gboolean pane2_horizontal; 85 gboolean pane2_attach_to_child1; 86 GimvComponentType widget_type[3]; 87 } GimvThumbwinComposeType; 88 89 extern GimvThumbwinComposeType compose_type[]; 90 91 92 /* thumbnail window composition */ 93 struct GimvThumbWin_Tag 94 { 95 GtkWindow parent; 96 97 GtkWidget *main_vbox; 98 99 /* top of window (menu & toolbar) */ 100 GtkWidget *menubar; 101 GtkWidget *menubar_handle; 102 GtkWidget *toolbar; 103 GtkWidget *toolbar_handle; 104 GtkWidget *location_entry; 105 GtkWidget *summary_mode_menu; 106 107 /* middle of window (main contents) */ 108 GtkWidget *main_contents; 109 GtkWidget *dirview; 110 GtkWidget *notebook; 111 GtkWidget *preview; 112 GtkWidget *pane1; 113 GtkWidget *pane2; 114 115 /* dir view module */ 116 DirView *dv; 117 118 /* image view module */ 119 GimvImageView *iv; 120 121 /* commnet view module */ 122 GimvCommentView *cv; 123 124 /* bottom of window (status bar) */ 125 GtkWidget *status_bar_container; 126 GtkWidget *status_bar1; 127 GtkWidget *status_bar2; 128 GtkWidget *status_bar3; 129 GtkWidget *progressbar; 130 131 /* popup menu */ 132 GtkWidget *thumbview_popup; 133 134 /* sub menus */ 135 GtkWidget *view_menu; 136 GtkWidget *sort_menu; 137 GtkWidget *comp_menu; 138 139 struct /* menuitems */ 140 { 141 GtkWidget *file; 142 GtkWidget *edit; 143 GtkWidget *view; 144 GtkWidget *tool; 145 146 GtkWidget *dirview; 147 GtkWidget *preview; 148 GtkWidget *menubar; 149 GtkWidget *toolbar; 150 GtkWidget *dir_toolbar; 151 GtkWidget *statusbar; 152 GtkWidget *tab; 153 GtkWidget *preview_tab; 154 GtkWidget *fullscr; 155 156 GtkWidget *layout[6]; 157 158 GtkWidget *select; 159 GtkWidget *unselect; 160 GtkWidget *refresh; 161 GtkWidget *reload; 162 GtkWidget *recreate; 163 164 GtkWidget *rename; 165 GtkWidget *copy; 166 GtkWidget *move; 167 GtkWidget *link; 168 GtkWidget *delete; 169 170 GtkWidget *find_sim; 171 172 GtkWidget *sort_name; 173 GtkWidget *sort_access; 174 GtkWidget *sort_time; 175 GtkWidget *sort_change; 176 GtkWidget *sort_size; 177 GtkWidget *sort_type; 178 GtkWidget *sort_width, *sort_height, *sort_area; 179 GtkWidget *sort_rev, *sort_case, *sort_dir; 180 } menuitem; 181 182 struct /* buttons in toolbar */ 183 { 184 GtkWidget *fileopen; 185 GtkWidget *prefs; 186 GtkWidget *refresh; 187 GtkWidget *skip; 188 GtkWidget *stop; 189 GtkWidget *prev; 190 GtkWidget *next; 191 GtkWidget *quit; 192 GtkWidget *size_spin; 193 } button; 194 195 /* window status */ 196 GimvThumbwinStatus status; 197 gboolean show_dirview; 198 gboolean show_preview; 199 gboolean fullscreen; 200 gint win_x; 201 gint win_y; 202 gint win_width; 203 gint win_height; 204 gint pane_size1; 205 gint pane_size2; 206 const gchar *thumbview_summary_mode; 207 GimvImageViewPlayerVisibleType player_visible; 208 GimvSortItem sortitem; 209 GimvSortFlag sortflags; 210 gint layout_type; 211 GtkPositionType tab_pos; 212 gboolean changing_layout; 213 214 gint filenum; /* image files number in this window */ 215 gint pagenum; /* notebook pages number in this window */ 216 gint newpage_count; 217 gulong filesize; 218 219 /* File open dialog */ 220 GtkWidget *open_dialog; 221 222 #ifdef USE_GTK2 223 GSList *accel_group_list; 224 #endif 225 226 GimvThumbWinPriv *priv; 227 }; 228 229 230 struct GimvThumbWinClass_Tag 231 { 232 GtkWindowClass parent_class; 233 }; 234 235 236 GList *gimv_thumb_win_get_list (void); 237 GtkType gimv_thumb_win_get_type (void); 238 239 GtkWidget *gimv_thumb_win_new (void); 240 GimvThumbWin 241 *gimv_thumb_win_open_window (void); 242 243 GimvThumbView 244 *gimv_thumb_win_find_thumbtable (GimvThumbWin *tw, 245 gint pagenum); 246 void gimv_thumb_win_set_statusbar_page_info (GimvThumbWin *tw, 247 gint pagenum); 248 void gimv_thumb_win_loading_update_progress (GimvThumbWin *tw, 249 gint pagenum); 250 void gimv_thumb_win_set_sensitive (GimvThumbWin *tw, 251 GimvThumbwinStatus status); 252 void gimv_thumb_win_set_tab_label_text (GtkWidget *page_container, 253 const gchar *title); 254 void gimv_thumb_win_set_tab_label_state (GtkWidget *page_container, 255 GtkStateType state); 256 GimvThumbView 257 *gimv_thumb_win_create_new_tab (GimvThumbWin *tw); 258 GtkWidget *gimv_thumb_win_detach_tab (GimvThumbWin *tw_dest, 259 GimvThumbWin *tw_src, 260 GimvThumbView *tv); 261 void gimv_thumb_win_close_tab (GimvThumbWin *tw, 262 gint page); 263 void gimv_thumb_win_reload_thumbnail (GimvThumbWin *tw, 264 ThumbLoadType type); 265 void gimv_thumb_win_open_dirview (GimvThumbWin *tw); 266 void gimv_thumb_win_close_dirview (GimvThumbWin *tw); 267 void gimv_thumb_win_open_preview (GimvThumbWin *tw); 268 void gimv_thumb_win_close_preview (GimvThumbWin *tw); 269 void gimv_thumb_win_location_entry_set_text (GimvThumbWin *tw, 270 const gchar *location); 271 GimvSortItem gimv_thumb_win_get_sort_type (GimvThumbWin *tw, 272 GimvSortFlag *flags_ret); 273 /* currently, only GIMV_THUMB_WIN_CURRENT_PAGE will be accepted */ 274 void gimv_thumb_win_sort_thumbnail (GimvThumbWin *tw, 275 GimvSortItem item, 276 GimvSortFlag flags, 277 gint page); 278 void gimv_thumb_win_change_layout (GimvThumbWin *tw, 279 gint layout); 280 void gimv_thumb_win_swap_component (GimvThumbWin *tw, 281 GimvComponentType com1, 282 GimvComponentType com2); 283 void gimv_thumb_win_save_state (GimvThumbWin *tw); 284 285 /* FIXMEEEEEEEEEEEEEEEEEE!! (TOT */ 286 void gimv_thumb_win_notebook_drag_src_unset (GimvThumbWin *tw); 287 void gimv_thumb_win_notebook_drag_src_reset (GimvThumbWin *tw); 288 #ifdef USE_GTK2 289 void gimv_thumb_win_remove_key_accel (GimvThumbWin *tw); 290 void gimv_thumb_win_reset_key_accel (GimvThumbWin *tw); 291 #endif /* USE_GTK2 */ 292 /* END FIXMEEEEEEEEEEEEEEEEEE!! (TOT */ 293 294 #endif /* __GIMV_THUMB_WIN_H__ */ 295