Ticket #44: More functionally u7z.
[midnight-commander.git] / src / panel.h
blob2effded0ec9010976d29416d7b6c679964992a5e
2 /** \file panel.h
3 * \brief Header: defines WPanel structure
4 */
6 #ifndef MC_PANEL_H
7 #define MC_PANEL_H
9 #include "dir.h" /* dir_list */
10 #include "dialog.h" /* Widget */
11 #include "fs.h" /* MC_MAXPATHLEN */
13 #define selection(p) (&(p->dir.list[p->selected]))
14 #define DEFAULT_USER_FORMAT "half type name | size | perm"
16 #define LIST_TYPES 4
18 enum list_types {
19 list_full, /* Name, size, perm/date */
20 list_brief, /* Name */
21 list_long, /* Like ls -l */
22 list_user /* User defined */
25 enum view_modes {
26 view_listing, /* Directory listing */
27 view_info, /* Information panel */
28 view_tree, /* Tree view */
29 view_quick, /* Quick view */
30 view_nothing /* Undefined */
33 enum panel_display_enum {
34 frame_full, /* full screen frame */
35 frame_half /* half screen frame */
38 struct format_e;
40 typedef struct WPanel {
41 Widget widget;
42 dir_list dir; /* Directory contents */
44 int list_type; /* listing type (was view_type) */
45 int active; /* If panel is currently selected */
46 char cwd [MC_MAXPATHLEN];/* Current Working Directory */
47 char lwd [MC_MAXPATHLEN];/* Last Working Directory */
48 GList *dir_history; /* directory history */
49 char *hist_name; /* directory history name for history file */
50 int count; /* Number of files in dir structure */
51 int marked; /* Count of marked files */
52 int dirs_marked; /* Count of marked directories */
53 double total; /* Bytes in marked files */
54 int top_file; /* The file showed on the top of the panel */
55 int selected; /* Index to the selected file */
56 int reverse; /* Show listing in reverse? */
57 int case_sensitive; /* Listing is case sensitive? */
58 int exec_first; /* Show executable top in list? */
59 int split; /* Split panel to allow two columns */
60 int is_panelized; /* Flag: special filelisting, can't reload */
61 int frame_size; /* half or full frame */
62 sortfn *sort_type; /* Sort type */
63 char *filter; /* File name filter */
65 int dirty; /* Should we redisplay the panel? */
67 int user_mini_status; /* Is user_status_format used */
68 char *user_format; /* User format */
69 char *user_status_format[LIST_TYPES];/* User format for status line */
71 struct format_e *format; /* Display format */
72 struct format_e *status_format; /* Mini status format */
74 int format_modified; /* If the format was changed this is set */
76 char *panel_name; /* The panel name */
77 struct stat dir_stat; /* Stat of current dir: used by execute () */
79 int searching;
80 char search_buffer [256];
81 char search_char [MB_LEN_MAX]; /*buffer for multibytes characters*/
82 int search_chpoint; /*point after last characters in search_char*/
83 } WPanel;
85 WPanel *panel_new (const char *panel_name);
86 WPanel *panel_new_with_dir (const char *panel_name, const char *dr);
87 void panel_clean_dir (WPanel *panel);
89 extern int torben_fj_mode;
90 extern int permission_mode;
91 extern int filetype_mode;
92 extern int show_mini_info;
93 extern int panel_scroll_pages;
94 extern int fast_reload;
96 void panel_reload (WPanel *panel);
97 void panel_set_sort_order (WPanel *panel, sortfn *sort_order);
98 void panel_re_sort (WPanel *panel);
99 void set_panel_encoding (WPanel *);
101 #define UP_OPTIMIZE 0
102 #define UP_RELOAD 1
103 #define UP_ONLY_CURRENT 2
105 #define UP_KEEPSEL ((char *) -1)
107 void update_dirty_panels (void);
108 void update_panels (int force_update, const char *current_file);
109 void panel_update_cols (Widget *widget, int frame_size);
110 int set_panel_formats (WPanel *p);
112 #define other_panel get_other_panel()
114 extern WPanel *left_panel;
115 extern WPanel *right_panel;
116 extern WPanel *current_panel;
118 void try_to_select (WPanel *panel, const char *name);
120 void unmark_files (WPanel *panel);
121 void select_item (WPanel *panel);
123 extern Hook *select_file_hook;
125 void recalculate_panel_summary (WPanel *panel);
126 void file_mark (WPanel *panel, int index, int val);
127 void do_file_mark (WPanel *panel, int index, int val);
129 void directory_history_next (WPanel *panel);
130 void directory_history_prev (WPanel *panel);
131 void directory_history_list (WPanel *panel);
133 #endif