reactos/rosapps/mc/src/view.h
Thomas Bluemel abef9ffacb fixed warnings
svn path=/trunk/; revision=15218
2005-05-11 16:50:39 +00:00

196 lines
6.5 KiB
C

#ifndef __VIEW_H
#define __VIEW_H
#ifdef WANT_WIDGETS
/* The growing buffers data types */
typedef struct {
char *data;
int present; /* Unused, for DOS port maybe */
} block_ptr_t;
enum ViewSide {
view_side_left,
view_side_right
};
typedef struct {
Widget widget;
char *filename; /* Name of the file */
char *command; /* Command used to pipe data in */
char *localcopy;
int view_active;
int have_frame;
char *data; /* Memory area for the file to be viewed */
/* File information */
int file; /* File descriptor (for mmap and munmap) */
FILE *stdfile; /* Stdio struct for reading file in parts */
int reading_pipe; /* Flag: Reading from pipe(use popen/pclose) */
long bytes_read; /* How much of file is read */
int mmapping; /* Did we use mmap on the file? */
/* Display information */
long last; /* Last byte shown */
long last_byte; /* Last byte of file */
long first; /* First byte in file */
long bottom_first; /* First byte shown when very last page is displayed */
/* For the case of WINCH we should reset it to -1 */
long start_display; /* First char displayed */
int start_col; /* First displayed column, negative */
int edit_cursor; /* HexEdit cursor position in file */
char hexedit_mode; /* Hexidecimal editing mode flag */
char nib_shift; /* A flag for inserting nibbles into bytes */
enum ViewSide view_side; /* A flag for the active editing panel */
int file_dirty; /* Number of changes */
int start_save; /* Line start shift between Ascii and Hex */
int cursor_col; /* Cursor column */
int cursor_row; /* Cursor row */
struct hexedit_change_node *change_list; /* Linked list of changes */
int dirty; /* Number of skipped updates */
int wrap_mode; /* wrap_mode */
/* Mode variables */
int hex_mode; /* Hexadecimal mode flag */
int bytes_per_line; /* Number of bytes per line in hex mode */
int viewer_magic_flag; /* Selected viewer */
int viewer_nroff_flag; /* Do we do nroff style highlighting? */
/* Growing buffers information */
int growing_buffer; /* Use the growing buffers? */
block_ptr_t *block_ptr; /* Pointer to the block pointers */
int blocks; /* The number of blocks in *block_ptr */
/* Search variables */
int search_start; /* First character to start searching from */
int found_len; /* Length of found string or 0 if none was found */
char *search_exp; /* The search expression */
int direction; /* 1= forward; -1 backward */
void (*last_search)(void *, char *);
/* Pointer to the last search command */
int view_quit; /* Quit flag */
int monitor; /* Monitor file growth (like tail -f) */
/* Markers */
int marker; /* mark to use */
int marks [10]; /* 10 marks: 0..9 */
#ifdef HAVE_TK
/* Tk version, line cache */
int current_line; /* The current screen line cached */
char *cache; /* Current cache */
char *color_cache; /* Attributes: keep in sync with cache */
int dest; /* Index in the cache to write to */
int cache_len; /* Length of the cache buffer -1 */
int last_col; /* last column used */
int status_shown; /* Have we show the file information? */
#endif
#ifdef HAVE_GNOME
int current_x, current_y; /* Current x,y position */
int color; /* Current color */
void *gtk_fname; /* filename widget */
void *gtk_offset; /* offset widget */
void *gtk_bytes; /* bytes */
void *gtk_flags; /* flags (growing) */
void *gtk_percent; /* percent */
void *sadj; /* scrollbar adjustment */
#endif
int move_dir; /* return value from widget:
* 0 do nothing
* -1 view previous file
* 1 view next file
*/
struct stat s; /* stat for file */
} WView;
#define vwidth (view->widget.cols - (view->have_frame ? 2 : 0))
#define vheight (view->widget.lines - (view->have_frame ? 2 : 0))
/* Creation/initialization of a new view widget */
WView *view_new (int y, int x, int cols, int lines, int is_panel);
int view_init (WView *view, char *_command, char *_file, int start_line);
int view_file (char *filename, int normal, int internal);
/* Internal view routines */
void view_status (WView *);
void view_percent (WView *, int, int);
void view_update (WView *view);
void view_labels (WView *view);
int view_event (WView *view, Gpm_Event *event,int *result);
void toggle_wrap_mode (WView *);
void toggle_hex_mode (WView *);
void goto_line (WView *);
void regexp_search_cmd (WView *);
void normal_search_cmd (WView *);
void continue_search (WView *);
void change_nroff (WView *view);
void set_monitor (WView *view, int set_on);
void view_move_forward (WView *view, int i);
void view_move_backward (WView *view, int i);
#endif
/* Command: view a file, if _command != NULL we use popen on _command */
/* move direction should be apointer that will hold the direction in which the user */
/* wants to move (-1 previous file, 1 next file, 0 do nothing) */
int view (char *_command, char *_file, int *move_direction, int start_line);
extern int mouse_move_pages_viewer;
extern int max_dirt_limit;
extern int global_wrap_mode;
extern int have_fast_cpu;
extern int default_hex_mode;
extern int default_magic_flag;
extern int default_nroff_flag;
extern int altered_hex_mode;
extern int altered_magic_flag;
extern int altered_nroff_flag;
void view_adjust_size ();
/* A node for building a change list on change_list */
struct hexedit_change_node {
struct hexedit_change_node *next;
long offset;
unsigned char value;
};
#ifdef HAVE_TK
#define DEF_COLOR 0
#define BOLD_COLOR 1
#define UNDERLINE_COLOR 2
#define MARK_COLOR 3
#endif
#ifdef HAVE_X
#ifdef WANT_WIDGETS
void view_add_character (WView *view, int c);
void view_add_string (WView *view, char *s);
void view_gotoyx (WView *view, int r, int c);
void view_set_color (WView *view, int font);
void view_display_clean (WView *view, int h, int w);
void x_destroy_view (WView *);
void x_create_viewer (WView *);
void x_focus_view (WView *);
void x_init_view (WView *);
#ifdef PORT_HAS_VIEW_FREEZE
void view_freeze (WView *view);
void view_thaw (WView *view);
#endif
#endif
#else
# define x_init_view(x)
# define x_destroy_view(x)
# define x_create_viewer(x)
# define x_focus_view(x)
#endif
#endif /* __VIEW_H */