142 lines
4.6 KiB
C++
Executable File
142 lines
4.6 KiB
C++
Executable File
/* This is really -*-c++-*- */
|
|
#ifndef __VISWIN_H
|
|
#define __VISWIN_H
|
|
|
|
#ifndef __ARRAY_H
|
|
#include <array.h>
|
|
#endif
|
|
|
|
#ifndef __WINDOW_H
|
|
#include <window.h>
|
|
#endif
|
|
|
|
#ifndef __STRINGS_H
|
|
#include <strings.h>
|
|
#endif
|
|
|
|
#ifndef __TEXTFILE_H
|
|
#include <text.h>
|
|
#endif
|
|
|
|
class TViswin : public TScroll_window
|
|
{
|
|
enum { MAXBUT = 4, MAXLEN = 256, BUFFERSIZE = 256, MAXPIC=4};
|
|
enum scroll { none, up, down, left, right };
|
|
|
|
TFilename _filename; // name of visfile
|
|
bool _islink; // "link" button present
|
|
bool _isedit; // "edit" button present
|
|
bool _isprint; // "print" button present
|
|
bool _iscross; // crossbars being drawn
|
|
bool _selecting; // selection in progress
|
|
bool _isselection; // selection active
|
|
bool _isbar; // X-bar drawn instead of cursor at point
|
|
bool _scrolling; // scrolling in progress
|
|
bool _need_update; // full update required
|
|
bool _istimer; // timer successivo attivo?
|
|
bool _isopen; // new lines may arrive
|
|
bool _selflag;
|
|
bool _sel_displayed;
|
|
bool _link_displayed;
|
|
bool _cross_displayed;
|
|
bool _point_displayed;
|
|
long _timer; // timer per evitare autorepeat tasti
|
|
long _wtimer; // wait timer before close()
|
|
scroll _need_scroll; // scrolling required?
|
|
bool _wasneeded; // flag for smart painting
|
|
WINDOW _button[MAXBUT]; // button array
|
|
int _curbut; // button which currently has focus
|
|
int _buttons; // button count
|
|
WINDOW _link_button;
|
|
|
|
long _textrows; // righe di testo
|
|
long _textcolumns; // indovina indovinello
|
|
|
|
TTextfile _txt; // text being displayed
|
|
long _firstline; // 1rst text line being displayed
|
|
long _lastline; // last text line being displayed
|
|
|
|
int _formlen; // length of a page
|
|
|
|
TPoint _point; // current point position
|
|
PNT _cross; // current crossbar point
|
|
TPoint _sel_start; // start of selection (column, line of FILE)
|
|
TPoint _sel_end; // end of selection (ibidem)
|
|
|
|
TArray* _links; // admitted links
|
|
TArray* _hotspots; // hotspots
|
|
|
|
bool need_paint_sel(bool smart = TRUE);
|
|
PICTURE _picture[MAXPIC]; // pictures
|
|
PICTURE _modpic;
|
|
bool _multiple;
|
|
char _linktxt[80];
|
|
int _linkID;
|
|
TToken_string _multiple_link;
|
|
|
|
TArray* _bg;
|
|
bool _isbackground;
|
|
bool _frozen;
|
|
|
|
protected:
|
|
|
|
virtual bool on_key (KEY);
|
|
virtual void open();
|
|
|
|
void shift_screen(scroll);
|
|
void paint_screen();
|
|
void draw_crossbars();
|
|
|
|
void paint_header();
|
|
void paint_point(bool erase = FALSE);
|
|
void paint_row(long r);
|
|
void paint_column(long r, bool end);
|
|
void paint_selection();
|
|
void paint_waitbar(bool xor = TRUE);
|
|
void paint_background(long, int);
|
|
bool call_editor();
|
|
bool in_text(const TPoint& p) const;
|
|
WINDOW add_button(short id, const char* caption);
|
|
void repos_buttons();
|
|
void adjust_selection(TPoint& p1, TPoint& p2);
|
|
void display_selection();
|
|
void erase_selection();
|
|
void display_crossbar();
|
|
void erase_crossbar();
|
|
void display_point();
|
|
void erase_point();
|
|
bool check_link(TPoint* where = NULL);
|
|
bool adjust_box(long& x1, long& x2, long y);
|
|
void paint_link(long, long, long);
|
|
void erase_link(long, long, long);
|
|
void display_link(long, long, long, const char*);
|
|
void freeze() { _frozen = TRUE; }
|
|
protected:
|
|
|
|
virtual void update();
|
|
virtual void handler(WINDOW win, EVENT* ep);
|
|
|
|
public:
|
|
|
|
// gestione "collegamenti": vengono passati il testo completo,
|
|
// il punto di inizio selezione e quello di fine selezione; se
|
|
// non c'e' selezione non viene chiamata affatto (il bottone non fa nulla)
|
|
// Se serve, si faccia stop_run() qui dentro
|
|
virtual void process_link(TTextfile& txt, TPoint start, TPoint end) { }
|
|
void close_print();
|
|
bool frozen() { return _frozen; }
|
|
void abort_print();
|
|
|
|
void add_line(const char* l);
|
|
|
|
TViswin (const char* fname = NULL,
|
|
const char* title = NULL,
|
|
bool editbutton = TRUE,
|
|
bool printbutton = TRUE,
|
|
bool linkbutton = TRUE);
|
|
|
|
virtual ~TViswin ();
|
|
};
|
|
|
|
#endif
|