mc/src/panel.h

159 lines
5.0 KiB
C
Raw Normal View History

/** \file panel.h
* \brief Header: defines WPanel structure
*/
#ifndef MC_PANEL_H
#define MC_PANEL_H
1998-02-27 07:54:42 +03:00
#include "lib/global.h"
#include "lib/fs.h" /* MC_MAXPATHLEN */
#include "lib/strutil.h"
#include "dir.h" /* dir_list */
#include "dialog.h" /* Widget */
1998-02-27 07:54:42 +03:00
#define selection(p) (&(p->dir.list[p->selected]))
#define DEFAULT_USER_FORMAT "half type name | size | perm"
#define LIST_TYPES 4
1998-02-27 07:54:42 +03:00
enum list_types {
list_full, /* Name, size, perm/date */
list_brief, /* Name */
list_long, /* Like ls -l */
list_user /* User defined */
1998-02-27 07:54:42 +03:00
};
typedef enum {
view_listing = 0, /* Directory listing */
view_info = 1, /* Information panel */
view_tree = 2, /* Tree view */
view_quick = 3, /* Quick view */
view_nothing = 4, /* Undefined */
} panel_view_mode_t;
1998-02-27 07:54:42 +03:00
enum panel_display_enum {
frame_full, /* full screen frame */
frame_half /* half screen frame */
};
struct format_e;
1998-02-27 07:54:42 +03:00
typedef struct panel_format_struct {
const char *id;
int min_size;
int expands;
align_crt_t default_just;
const char *hotkey;
const char *title_hotkey;
gboolean is_user_choice;
gboolean use_in_user_format;
const char *(*string_fn)(file_entry *, int);
sortfn *sort_routine; /* used by mouse_sort_col() */
} panel_field_t;
extern panel_field_t panel_fields [];
typedef struct WPanel {
1998-02-27 07:54:42 +03:00
Widget widget;
dir_list dir; /* Directory contents */
1998-02-27 07:54:42 +03:00
int list_type; /* listing type (was view_type) */
int active; /* If panel is currently selected */
char cwd [MC_MAXPATHLEN];/* Current Working Directory */
char lwd [MC_MAXPATHLEN];/* Last Working Directory */
GList *dir_history; /* directory history */
char *hist_name; /* directory history name for history file */
1998-02-27 07:54:42 +03:00
int count; /* Number of files in dir structure */
int marked; /* Count of marked files */
int dirs_marked; /* Count of marked directories */
double total; /* Bytes in marked files */
1998-02-27 07:54:42 +03:00
int top_file; /* The file showed on the top of the panel */
int selected; /* Index to the selected file */
int reverse; /* Show listing in reverse? */
int case_sensitive; /* Listing is case sensitive? */
int exec_first; /* Show executable top in list? */
1998-02-27 07:54:42 +03:00
int split; /* Split panel to allow two columns */
int is_panelized; /* Flag: special filelisting, can't reload */
int frame_size; /* half or full frame */
const panel_field_t *current_sort_field;
1998-02-27 07:54:42 +03:00
char *filter; /* File name filter */
int dirty; /* Should we redisplay the panel? */
int user_mini_status; /* Is user_status_format used */
char *user_format; /* User format */
1998-02-27 07:54:42 +03:00
char *user_status_format[LIST_TYPES];/* User format for status line */
struct format_e *format; /* Display format */
struct format_e *status_format; /* Mini status format */
1998-02-27 07:54:42 +03:00
int format_modified; /* If the format was changed this is set */
1998-02-27 07:54:42 +03:00
char *panel_name; /* The panel name */
struct stat dir_stat; /* Stat of current dir: used by execute () */
gboolean searching;
1998-02-27 07:54:42 +03:00
char search_buffer [256];
char search_char [MB_LEN_MAX]; /*buffer for multibytes characters*/
int search_chpoint; /*point after last characters in search_char*/
1998-02-27 07:54:42 +03:00
} WPanel;
WPanel *panel_new (const char *panel_name);
WPanel *panel_new_with_dir (const char *panel_name, const char *dr);
void panel_clean_dir (WPanel *panel);
1998-02-27 07:54:42 +03:00
extern int torben_fj_mode;
extern int show_mini_info;
void panel_reload (WPanel *panel);
void panel_set_sort_order (WPanel *panel, const panel_field_t *sort_order);
void panel_re_sort (WPanel *panel);
void set_panel_encoding (WPanel *);
1998-02-27 07:54:42 +03:00
#define UP_OPTIMIZE 0
#define UP_RELOAD 1
#define UP_ONLY_CURRENT 2
#define UP_KEEPSEL ((char *) -1)
void update_dirty_panels (void);
void update_panels (int force_update, const char *current_file);
1998-02-27 07:54:42 +03:00
void panel_update_cols (Widget *widget, int frame_size);
int set_panel_formats (WPanel *p);
#define other_panel get_other_panel()
1998-02-27 07:54:42 +03:00
extern WPanel *left_panel;
extern WPanel *right_panel;
extern WPanel *current_panel;
void try_to_select (WPanel *panel, const char *name);
1998-02-27 07:54:42 +03:00
void unmark_files (WPanel *panel);
void select_item (WPanel *panel);
extern Hook *select_file_hook;
void recalculate_panel_summary (WPanel *panel);
void file_mark (WPanel *panel, int idx, int val);
void do_file_mark (WPanel *panel, int idx, int val);
1998-02-27 07:54:42 +03:00
void directory_history_next (WPanel *panel);
void directory_history_prev (WPanel *panel);
void directory_history_list (WPanel *panel);
gsize panel_get_num_of_sortable_fields(void);
const char **panel_get_sortable_fields(gsize *);
const panel_field_t *panel_get_field_by_id(const char *);
const panel_field_t *panel_get_field_by_title(const char *);
const panel_field_t *panel_get_field_by_title_hotkey(const char *);
gsize panel_get_num_of_user_possible_fields(void);
const char **panel_get_user_possible_fields(gsize *);
void panel_init(void);
void panel_deinit(void);
#endif /* MC_PANEL_H */