mirror of
https://github.com/reactos/reactos.git
synced 2024-11-04 05:43:30 +00:00
abef9ffacb
svn path=/trunk/; revision=15218
195 lines
6.5 KiB
C
195 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 */
|