r2241: Added button in options window to purge thumbnails cache.
[rox-filer.git] / ROX-Filer / src / filer.h
blob83c33ed4a1a4e87919291a29946b545f90507a85
1 /*
2 * $Id$
4 * ROX-Filer, filer for the ROX desktop project
5 * By Thomas Leonard, <tal197@users.sourceforge.net>.
6 */
8 #ifndef _FILER_H
9 #define _FILER_H
11 #include <gtk/gtk.h>
13 enum {
14 RESIZE_STYLE = 0,
15 RESIZE_ALWAYS = 1,
16 RESIZE_NEVER = 2,
19 typedef enum
21 OPEN_SHIFT = 0x01, /* Do ShiftOpen */
22 OPEN_SAME_WINDOW = 0x02, /* Directories open in same window */
23 OPEN_CLOSE_WINDOW = 0x04, /* Opening files closes the window */
24 OPEN_FROM_MINI = 0x08, /* Non-dir => close minibuffer */
25 } OpenFlags;
27 typedef enum
29 FILER_NEEDS_RESCAN = 0x01, /* Call may_rescan after scanning */
30 FILER_UPDATING = 0x02, /* (scanning) items may already exist */
31 FILER_CREATE_THUMBS = 0x04, /* Create thumbs when scan ends */
32 } FilerFlags;
34 /* Numbers used in options */
35 typedef enum
37 VIEW_TYPE_COLLECTION = 0, /* Icons view */
38 VIEW_TYPE_DETAILS = 1 /* TreeView details list */
39 } ViewType;
41 /* iter's next method has just returned the clicked item... */
42 typedef void (*TargetFunc)(FilerWindow *filer_window,
43 ViewIter *iter,
44 gpointer data);
46 struct _FilerWindow
48 GtkWidget *window;
49 GtkBox *toplevel_vbox;
50 gboolean scanning; /* State of the 'scanning' indicator */
51 gchar *sym_path; /* Path the user sees */
52 gchar *real_path; /* realpath(sym_path) */
53 ViewIface *view;
54 ViewType view_type;
55 gboolean temp_item_selected;
56 gboolean show_hidden;
57 FilerFlags flags;
58 SortType sort_type;
59 GtkSortType sort_order;
61 DetailsType details_type;
62 DisplayStyle display_style;
63 DisplayStyle display_style_wanted;
65 Directory *directory;
67 gboolean had_cursor; /* (before changing directory) */
68 char *auto_select; /* If it we find while scanning */
70 GtkWidget *message; /* The 'Running as ...' message */
72 GtkWidget *minibuffer_area; /* The hbox to show/hide */
73 GtkWidget *minibuffer_label; /* The operation name */
74 GtkWidget *minibuffer; /* The text entry */
75 int mini_cursor_base; /* XXX */
76 MiniType mini_type;
78 /* TRUE if hidden files are shown because the minibuffer leafname
79 * starts with a dot.
81 gboolean temp_show_hidden;
83 TargetFunc target_cb;
84 gpointer target_data;
86 GtkWidget *toolbar;
87 GtkWidget *toolbar_text;
88 GtkWidget *scrollbar;
90 gint open_timeout; /* Will resize and show window... */
92 GtkStateType selection_state; /* for drawing selection */
94 gboolean show_thumbs;
95 GList *thumb_queue; /* paths to thumbnail */
96 GtkWidget *thumb_bar, *thumb_progress;
97 int max_thumbs; /* total for this batch */
100 extern FilerWindow *window_with_focus;
101 extern GList *all_filer_windows;
102 extern GHashTable *child_to_filer;
103 extern Option o_filer_auto_resize, o_unique_filer_windows;
104 extern Option o_filer_size_limit;
106 /* Prototypes */
107 void filer_init(void);
108 FilerWindow *filer_opendir(const char *path, FilerWindow *src_win, const gchar *wm_class);
109 gboolean filer_update_dir(FilerWindow *filer_window, gboolean warning);
110 void filer_update_all(void);
111 DirItem *filer_selected_item(FilerWindow *filer_window);
112 void change_to_parent(FilerWindow *filer_window);
113 void full_refresh(void);
114 void filer_openitem(FilerWindow *filer_window, ViewIter *iter, OpenFlags flags);
115 void filer_check_mounted(const char *real_path);
116 void filer_close_recursive(const char *path);
117 void filer_change_to(FilerWindow *filer_window,
118 const char *path, const char *from);
119 gboolean filer_exists(FilerWindow *filer_window);
120 void filer_open_parent(FilerWindow *filer_window);
121 void filer_detach_rescan(FilerWindow *filer_window);
122 void filer_target_mode(FilerWindow *filer_window,
123 TargetFunc fn,
124 gpointer data,
125 const char *reason);
126 void filer_window_autosize(FilerWindow *filer_window);
127 GList *filer_selected_items(FilerWindow *filer_window);
128 void filer_create_thumb(FilerWindow *filer_window, const gchar *pathname);
129 void filer_cancel_thumbnails(FilerWindow *filer_window);
130 void filer_set_title(FilerWindow *filer_window);
131 void filer_create_thumbs(FilerWindow *filer_window);
132 void filer_add_tip_details(FilerWindow *filer_window,
133 GString *tip, DirItem *item);
134 void filer_selection_changed(FilerWindow *filer_window, gint time);
135 void filer_lost_selection(FilerWindow *filer_window, guint time);
136 void filer_window_set_size(FilerWindow *filer_window, int w, int h);
137 gboolean filer_window_delete(GtkWidget *window,
138 GdkEvent *unused,
139 FilerWindow *filer_window);
140 void filer_set_view_type(FilerWindow *filer_window, ViewType type);
141 void filer_window_toggle_cursor_item_selected(FilerWindow *filer_window);
142 void filer_perform_action(FilerWindow *filer_window, GdkEventButton *event);
143 gint filer_motion_notify(FilerWindow *filer_window, GdkEventMotion *event);
144 gint filer_key_press_event(GtkWidget *widget, GdkEventKey *event,
145 FilerWindow *filer_window);
147 #endif /* _FILER_H */