4 #include "dir.h" /* file_entry */
6 #include "widget.h" /* for history loading and saving */
11 list_full
, /* Name, size, perm/date */
12 list_brief
, /* Name */
13 list_long
, /* Like ls -l */
14 list_user
, /* User defined */
15 list_icons
/* iconic display */
19 view_listing
, /* Directory listing */
20 view_info
, /* Information panel */
21 view_tree
, /* Tree view */
22 view_quick
, /* Quick view */
23 view_nothing
/* Undefined */
26 enum panel_display_enum
{
27 frame_full
, /* full screen frame */
28 frame_half
/* half screen frame */
31 #define is_view_special(x) ((x == view_info) || (x == view_quick))
39 #define MARKED_SELECTED 3
43 * This describes a format item. The parse_display_format routine parses
44 * the user specified format and creates a linked list of format_e structures.
46 * parse_display_format computes the actual field allocations if
47 * the COMPUTE_FORMAT_ALLOCATIONs define is set. MC frontends that are
48 * just interested in the parsed display format should not set this define.
50 typedef struct format_e
{
51 struct format_e
*next
;
52 int requested_field_len
;
56 char *(*string_fn
)(file_entry
*, int len
);
60 /* first format_e has the number of items */
67 dir_list dir
; /* Directory contents */
69 int list_type
; /* listing type (was view_type) */
70 int active
; /* If panel is currently selected */
71 char cwd
[MC_MAXPATHLEN
];/* Current Working Directory */
72 char lwd
[MC_MAXPATHLEN
];/* Last Working Directory */
73 Hist
*dir_history
; /* directory history */
74 char *hist_name
; /* directory history name for history file */
75 int count
; /* Number of files in dir structure */
76 int marked
; /* Count of marked files */
77 int dirs_marked
; /* Count of marked directories */
78 long int total
; /* Bytes in marked files */
79 int top_file
; /* The file showed on the top of the panel */
80 int selected
; /* Index to the selected file */
81 int reverse
; /* Show listing in reverse? */
82 int case_sensitive
; /* Listing is case sensitive? */
83 int split
; /* Split panel to allow two columns */
84 int is_panelized
; /* Flag: special filelisting, can't reload */
85 int frame_size
; /* half or full frame */
86 int icons_per_row
; /* Icon view; how many icons displayed per row */
87 sortfn
*sort_type
; /* Sort type */
88 char *filter
; /* File name filter */
90 int dirty
; /* Should we redisplay the panel? */
92 int user_mini_status
; /* Is user_status_format used */
93 char *user_format
; /* User format */
94 char *user_status_format
[LIST_TYPES
];/* User format for status line */
96 format_e
*format
; /* Display format */
97 format_e
*status_format
; /* Mini status format */
99 int format_modified
; /* If the format was changed this is set */
101 char *panel_name
; /* The panel name */
102 struct stat dir_stat
; /* Stat of current dir: used by execute () */
112 char search_buffer
[256];
114 int has_dir_sizes
; /* Set if directories have sizes = to du -s */
117 /* These are standard GtkWidgets */
119 void *xwindow
; /* The toplevel window */
127 void *filter_w
; /* A WInput* */
128 void *current_dir
; /* A WInput* */
131 /* navigation buttons */
138 WPanel
*panel_new (char *panel_name
);
139 void panel_set_size (WPanel
*panel
, int x1
, int y1
, int x2
, int y2
);
140 void paint_paint (WPanel
*panel
);
141 void panel_refresh (WPanel
*panel
);
142 void Xtry_to_select (WPanel
*panel
, char *name
);
144 int is_a_panel (Widget
*);
146 extern int torben_fj_mode
;
147 extern int permission_mode
;
148 extern int filetype_mode
;
149 extern int show_mini_info
;
150 extern int panel_scroll_pages
;
152 #define selection(p) (&(p->dir.list [p->selected]))
154 extern int fast_reload
;
156 extern int extra_info
;
158 /*#define ITEMS(p) ((p)->view_type == view_brief ? (p)->lines *2 : (p)->lines)
160 /* The return value of panel_reload */
163 #define PANEL_ISVIEW(p) (p->view_type == view_brief || \
164 p->view_type == view_full || \
165 p->view_type == view_long || \
166 p->view_type == view_user || \
167 p->view_type == view_tree)
169 #define RP_ONLY_PAINT 0
172 void set_colors (WPanel
*panel
);
173 void paint_panel (WPanel
*panel
);
174 void format_file (char *dest
, WPanel
*panel
, int file_index
, int panel_width
, int attr
, int isstatus
);
175 void repaint_file (WPanel
*panel
, int file_index
, int move
, int attr
, int isstatus
);
176 void display_mini_info (WPanel
*panel
);
177 void panel_reload (WPanel
*panel
);
178 void paint_dir (WPanel
*panel
);
179 void show_dir (WPanel
*panel
);
181 /* NOTE: Have to be ifdefed for HAVE_X */
182 void x_panel_set_size (int index
);
183 void x_create_panel (Dlg_head
*h
, widget_data parent
, WPanel
*panel
);
184 void x_fill_panel (WPanel
*panel
);
185 void x_adjust_top_file (WPanel
*panel
);
186 void x_filter_changed (WPanel
*panel
);
187 void x_add_sort_label (WPanel
*panel
, int index
, char *text
, char *tag
, void *sr
);
188 void x_sort_label_start (WPanel
*panel
);
189 void x_reset_sort_labels (WPanel
*panel
);
190 void x_panel_destroy (WPanel
*panel
);
191 void change_view (WPanel
*panel
, int view_type
);
192 void x_panel_update_marks (WPanel
*panel
);
194 extern void paint_info_panel (WPanel
*);
195 extern void paint_quick_view_panel (WPanel
*);
196 void info_frame (WPanel
*panel
);
197 extern WPanel
*the_info_panel
;
198 void paint_frame (WPanel
*panel
);
199 void panel_update_contents (WPanel
*panel
);
200 void panel_update_cols (Widget
*widget
, int frame_size
);
201 format_e
*use_display_format (WPanel
*panel
, char *format
, char **error
, int isstatus
);
202 char *panel_format (WPanel
*panel
);
203 char *mini_status_format (WPanel
*panel
);
204 int set_panel_formats (WPanel
*p
);
206 WPanel
*get_current_panel (void);
207 WPanel
*get_other_panel (void);
209 #define other_panel get_other_panel()
211 extern WPanel
*left_panel
;
212 extern WPanel
*right_panel
;
213 extern WPanel
*current_panel
;
215 void try_to_select (WPanel
*panel
, char *name
);
217 #define DEFAULT_USER_FORMAT "half type,name,|,size,|,perm"
219 /* This were in main: */
220 void unmark_files (WPanel
*panel
);
221 void select_item (WPanel
*panel
);
222 int ITEMS (WPanel
*p
);
223 void unselect_item (WPanel
*panel
);
225 extern Hook
*select_file_hook
;
227 char *string_file_type (file_entry
*fe
, int len
);
228 char *string_file_size_brief (file_entry
*fe
, int len
);
229 char *string_file_permission (file_entry
*fe
, int len
);
230 char *string_file_nlinks (file_entry
*fe
, int len
);
231 char *string_file_owner (file_entry
*fe
, int len
);
232 char *string_file_group (file_entry
*fe
, int len
);
233 char *string_file_size (file_entry
*fe
, int len
);
234 char *string_file_mtime (file_entry
*fe
, int len
);
235 char *string_file_atime (file_entry
*fe
, int len
);
236 char *string_file_ctime (file_entry
*fe
, int len
);
237 char *string_file_name (file_entry
*fe
, int len
);
238 char *string_space (file_entry
*fe
, int len
);
239 char *string_dot (file_entry
*fe
, int len
);
240 char *string_marked (file_entry
*fe
, int len
);
241 char *string_file_perm_octal (file_entry
*fe
, int len
);
242 char *string_inode (file_entry
*fe
, int len
);
243 char *string_file_ngid (file_entry
*fe
, int len
);
244 char *string_file_nuid (file_entry
*fe
, int len
);
246 void file_mark (WPanel
*panel
, int index
, int val
);
247 void do_file_mark (WPanel
*panel
, int index
, int val
);
248 int file_compute_color (int attr
, file_entry
*fe
);
249 int file_entry_color (file_entry
*fe
);
250 void do_file_mark_range (WPanel
*panel
, int r1
, int r2
);
251 void do_enter (WPanel
*panel
);
253 /* NOTE: Have to be ifdefed for HAVE_X */
254 void x_panel_select_item (WPanel
*panel
, int index
, int val
);
255 void x_select_item (WPanel
*panel
);
256 void x_unselect_item (WPanel
*panel
);
257 sortfn
*get_sort_fn (char *name
);
258 void update_one_panel_widget (WPanel
*panel
, int force_update
, char *current_file
);
259 void panel_update_marks (WPanel
*panel
);
261 void directory_history_next (WPanel
* panel
);
262 void directory_history_prev (WPanel
* panel
);
263 void directory_history_list (WPanel
* panel
);
265 #endif /* __PANEL_H */