5 #include "dir.h" /* file_entry */
8 #include "widget.h" /* for history loading and saving */
13 list_full
, /* Name, size, perm/date */
14 list_brief
, /* Name */
15 list_long
, /* Like ls -l */
16 list_user
, /* User defined */
17 list_icons
/* iconic display */
21 view_listing
, /* Directory listing */
22 view_info
, /* Information panel */
23 view_tree
, /* Tree view */
24 view_quick
, /* Quick view */
25 view_nothing
/* Undefined */
28 enum panel_display_enum
{
29 frame_full
, /* full screen frame */
30 frame_half
/* half screen frame */
37 #define IS_FIT(x) ((x) & 0x0004)
38 #define MAKE_FIT(x) ((x) | 0x0004)
39 #define HIDE_FIT(x) ((x) & 0x0003)
43 #define J_CENTER_FIT 7
48 #define MARKED_SELECTED 3
52 * This describes a format item. The parse_display_format routine parses
53 * the user specified format and creates a linked list of format_e structures.
55 * parse_display_format computes the actual field allocations if
56 * the COMPUTE_FORMAT_ALLOCATIONs define is set. MC frontends that are
57 * just interested in the parsed display format should not set this define.
59 typedef struct format_e
{
60 struct format_e
*next
;
61 int requested_field_len
;
65 const char *(*string_fn
)(file_entry
*, int len
);
69 /* first format_e has the number of items */
76 dir_list dir
; /* Directory contents */
78 int list_type
; /* listing type (was view_type) */
79 int active
; /* If panel is currently selected */
80 char cwd
[MC_MAXPATHLEN
];/* Current Working Directory */
81 char lwd
[MC_MAXPATHLEN
];/* Last Working Directory */
82 Hist
*dir_history
; /* directory history */
83 char *hist_name
; /* directory history name for history file */
84 int count
; /* Number of files in dir structure */
85 int marked
; /* Count of marked files */
86 int dirs_marked
; /* Count of marked directories */
87 double total
; /* Bytes in marked files */
88 int top_file
; /* The file showed on the top of the panel */
89 int selected
; /* Index to the selected file */
90 int reverse
; /* Show listing in reverse? */
91 int case_sensitive
; /* Listing is case sensitive? */
92 int split
; /* Split panel to allow two columns */
93 int is_panelized
; /* Flag: special filelisting, can't reload */
94 int frame_size
; /* half or full frame */
95 int icons_per_row
; /* Icon view; how many icons displayed per row */
96 sortfn
*sort_type
; /* Sort type */
97 char *filter
; /* File name filter */
99 int dirty
; /* Should we redisplay the panel? */
101 int user_mini_status
; /* Is user_status_format used */
102 char *user_format
; /* User format */
103 char *user_status_format
[LIST_TYPES
];/* User format for status line */
105 format_e
*format
; /* Display format */
106 format_e
*status_format
; /* Mini status format */
108 int format_modified
; /* If the format was changed this is set */
110 char *panel_name
; /* The panel name */
111 struct stat dir_stat
; /* Stat of current dir: used by execute () */
121 char search_buffer
[256];
123 void *port_ui
; /* UI stuff specific to each GUI port */
126 WPanel
*panel_new (const char *panel_name
);
127 void panel_set_size (WPanel
*panel
, int x1
, int y1
, int x2
, int y2
);
128 void paint_paint (WPanel
*panel
);
129 void panel_refresh (WPanel
*panel
);
130 void Xtry_to_select (WPanel
*panel
, char *name
);
131 void panel_clean_dir (WPanel
*panel
);
133 extern int torben_fj_mode
;
134 extern int permission_mode
;
135 extern int filetype_mode
;
136 extern int show_mini_info
;
137 extern int panel_scroll_pages
;
139 #define selection(p) (&(p->dir.list [p->selected]))
141 extern int fast_reload
;
142 extern int extra_info
;
144 /*#define ITEMS(p) ((p)->view_type == view_brief ? (p)->lines *2 : (p)->lines)
146 /* The return value of panel_reload */
149 #define PANEL_ISVIEW(p) (p->view_type == view_brief || \
150 p->view_type == view_full || \
151 p->view_type == view_long || \
152 p->view_type == view_user || \
153 p->view_type == view_tree)
155 #define RP_ONLY_PAINT 0
158 void paint_panel (WPanel
*panel
);
159 void display_mini_info (WPanel
*panel
);
160 void panel_reload (WPanel
*panel
);
162 void panel_set_sort_order (WPanel
*panel
, sortfn
*sort_order
);
163 void panel_re_sort (WPanel
*panel
);
165 extern void paint_info_panel (WPanel
*);
166 extern void paint_quick_view_panel (WPanel
*);
167 void info_frame (WPanel
*panel
);
168 extern WPanel
*the_info_panel
;
169 void panel_update_contents (WPanel
*panel
);
170 void panel_update_cols (Widget
*widget
, int frame_size
);
171 int set_panel_formats (WPanel
*p
);
173 WPanel
*get_current_panel (void);
174 WPanel
*get_other_panel (void);
176 #define other_panel get_other_panel()
178 extern WPanel
*left_panel
;
179 extern WPanel
*right_panel
;
180 extern WPanel
*current_panel
;
182 void try_to_select (WPanel
*panel
, char *name
);
184 #define DEFAULT_USER_FORMAT "half type,name,|,size,|,perm"
186 /* This were in main: */
187 void unmark_files (WPanel
*panel
);
188 void select_item (WPanel
*panel
);
190 extern Hook
*select_file_hook
;
192 void recalculate_panel_summary (WPanel
*panel
);
193 void file_mark (WPanel
*panel
, int index
, int val
);
194 void do_file_mark (WPanel
*panel
, int index
, int val
);
196 sortfn
*get_sort_fn (char *name
);
198 void directory_history_next (WPanel
* panel
);
199 void directory_history_prev (WPanel
* panel
);
200 void directory_history_list (WPanel
* panel
);
202 #endif /* __PANEL_H */