campo-sirio/include/window.h
guy 4fecfd7f1f tree.cpp Migliorata gestione alberi e campi relativi
utility.h    Aggiunta forward declaration di TFilename
validate.cpp Aggiunto validate per filtrare solo le ditte valide
window.h     Nessuna differenza rilevata da diff
xvtility.cpp Migliorata generazione rettangoli per supportare i campi
             di tipo TWindowed_field


git-svn-id: svn://10.65.10.50/trunk@6589 c028cbd2-c16b-5b4b-a496-9718f37d4682
1998-05-04 08:17:15 +00:00

433 lines
14 KiB
C++
Executable File

#ifndef __WINDOW_H
#define __WINDOW_H
#ifndef __STRINGS_H
#include <strings.h>
#endif
#ifndef __XVTILITY_H
#include <xvtility.h>
#endif
void close_all_dialogs();
bool can_close();
WINDOW cur_win();
// @doc EXTERNAL
// @class TPoint | Struttura per la definizione di un punto sullo schermo
//
// @author:(INTERNAL) Guido
struct TPoint
{
// @cmember Coordinata x del punto
long x;
// @cmember Coordinata y del punto
long y;
// @cmember Costruttore
TPoint(long sx = 0, long sy = 0) : x(sx), y(sy)
{}
// @cmember Costruttore (occorre passare il punto)
TPoint(const PNT& pnt)
{ set(pnt); }
// @cmember Setta le coordinate x e y del punto
void set(long sx, long sy)
{ x = sx; y = sy; }
// @cmember Setta le coordinate x e y del punto
void set(const PNT& pnt)
{ x = pnt.h/CHARX; y = pnt.v/CHARY; }
// @cmember Operatore di assegnamento tra punti
TPoint& operator= (const PNT& pnt)
{ set(pnt); return *this; }
// @cmember Operatore di assegnamento tra punti
TPoint& operator= (TPoint pnt)
{ set(pnt.x,pnt.y); return *this; }
// @cmember Confronta se due punti sono uguali (TRUE se uguali)
bool operator ==(const TPoint& p)
{ return p.x == x && p.y == y; }
// @cmember Confronta se due punti sono diversi (TRUE se diversi)
bool operator !=(const TPoint& p)
{ return p.x != x || p.y != y; }
};
///////////////////////////////////////////////////////////
// TImage
///////////////////////////////////////////////////////////
// @doc EXTERNAL
// @class TImage | Classe per la gestione delle imagini a video
//
// @base public | TObject
class TImage : public TObject
// @author:(INTERNAL) Guido
{
// @access Private Member
// @cmember:(INTERNAL) Immagine de gestire
XVT_IMAGE _image;
// @cmember:(INTERNAL) Rettangolo originale (origine 0,0 e dimensioni originali) dell'immagine
RCT _src;
// @cmember:(INTERNAL) Rettangolo di visualizzazione dell'immagine (dove mettere l'immagine)
RCT _dst;
// @access Public Member
public:
// @cmember Fa corrispondere la palette della finestra a quella dell'immagine
void set_palette(WINDOW w) const;
// @cmember Permette di settare la posizione della figura
void set_pos(int x, int y);
// @cmember Disegna l'immagine nella poszione di default e nella dimensione
// di defalut
void draw(WINDOW w) const ;
// @cmember Disegna l'immagine con dimensione default in un punto dello schermo
void draw(WINDOW w, int x, int y) const;
// @cmember Disegna/modifica l'immagine sullo schermo
void draw(WINDOW w, const RCT& dst) const;
// @cmember Disegna l'immagine sulla finestra
void draw(WINDOW w, const RCT& dst, const RCT& src) const;
// @cmember Setta l'immagine e le sue dimensioni
XVT_IMAGE set(XVT_IMAGE i);
// @cmember Legge l'immagine dal file
XVT_IMAGE load(const char* n);
// @cmember Legge l'immagine dal file di risorse
XVT_IMAGE load(short id);
// @cmember Controlla che l'immagine sia un oggetto valido (diverso da NULL)
virtual bool ok() const
{ return _image != NULL; }
// @cmember Ritorna la larghezza dell'immagine
short width() const
{ return _src.right; }
// @cmember Ritorna l'altezza dell'immagine
short height() const
{ return _src.bottom; }
// @cmember Ritorna il rettangolo dell'immagine originale
const RCT& rect() const
{ return _src; }
// @cmember Setta i colori dell'immagine in modo da renderla trasparente
// usando i colori di default (di Morpurgo)
void convert_to_default_colors();
// @cmember Setta i colori dell'immagine in modo da renderla trasparente
// usando l'angolo in alto a sinistra dell'imagine stessa
void convert_transparent_color(COLOR transparent);
// @cmember Setta l'<p n>.esime entry della paletta al colore <p c>
void set_clut(byte n, COLOR c);
// @cmember Costruttore. Viene passato il nome del file
TImage(const char* n);
// @cmember Costruttore. Viene passato l'identificatore dell'immagine sul file di risorsa
TImage(short id);
// @cmember Costruttore. Viene passata l'immagine e le sue diemsioni
TImage(const TImage& i, short width, short height);
// @cmember Costruttore. Viene passata l'immagine e le sue diemsioni
TImage(short width, short height, XVT_IMAGE_FORMAT fmt = XVT_IMAGE_CL8);
// @cmember Distruttore
virtual ~TImage();
};
// @doc EXTERNAL
// @class TWindow | Classe per la definizione di una finestra generica
class TWindow : public TObject
{
// @author:(INTERNAL) Guido
// @cfriend TWindow_manager
friend class TWindow_manager;
// @access:(INTERNAL) Private Member
// @cmember:(INTERNAL) Set di drawing tools (definito in xvttype.h)
static DRAW_CTOOLS _ct;
// @cmember:(INTERNAL) Indica se e' stato salvato il set di drawing tools
static bool _ctools_saved;
// @cmember:(INTERNAL) Descrittore finestra
WINDOW _win;
// @cmember:(INTERNAL) Codice del tasto di uscita
KEY _lastkey;
// @cmember:(INTERNAL) Compila la struttura <p _ct> con i valori correnti
// (TRUE se la compilazione ha luogo)
bool save_ctools();
// @cmember:(INTERNAL) Ripristina i valori dalla struttura <p _ct> (TRUE se i valori
// vengono recuperati)
bool restore_ctools();
// @access Protected Member
protected:
// @cmember Indica che la finestra e' aperta
bool _open : 1;
// @cmember Indica che la finestra e' modale
bool _modal : 1;
// @cmember Indica che la finestra e' abilitata
bool _active : 1;
// @cmember Indica che la finestra e' in esecuzione
bool _running : 1;
// @cmember Indica che le coordinate sono in pixel
bool _pixmap : 1;
// @cmember Intercetta tutti i messaggi diretti alla finestra di XVT
static long XVT_CALLCONV1 window_handler(WINDOW win, EVENT* ep);
// @cmember Crea la finestra
virtual WINDOW create(short x, short y, short dx, short dy, const char* title = "", long flags = WSF_NONE, WIN_TYPE rt = W_DOC, WINDOW parent = NULL_WIN, int menu = 0) ;
// @cmember Cambia l'handle della finestra di XVT (usare con cautela)
void set_win(WINDOW w)
{ _win = w; }
// @cmember Permette di modificare il flag <p _modal>
void set_modal(bool m)
{ _modal = m; }
// @cmember Fa' l'update della finstra
virtual void update()
{}
// @access Public Member
public:
// @cmember Costruttore
TWindow();
// @cmember Distruttore
virtual ~TWindow();
// @cmember Ritorna l'identificatore della classe finestra
virtual word class_id() const;
// @cmember Gestisce la pressione dei bottoni
virtual void on_button(short dlg);
// @cmember Gestisce gli eventi della finestra
virtual void handler(WINDOW win, EVENT* ep);
// @cmember Mette la finestra in primo piano
virtual void set_focus();
// @cmember Ritorna il descrittore della finestra
virtual WINDOW win() const
{ return _win; }
// @cmember Ritorna il descrittore della finestra padre
WINDOW parent() const;
// @cmember Gestisce la pressione del tasto
virtual bool on_key(KEY)
{ return TRUE; }
// @cmember Ritorna TRUE se la finestra e' aperta
bool is_open() const
{ return _open; }
// @cmember Ritorna TRUE se la finestra e' modale
bool is_modal() const
{ return _modal; }
// @cmember Ritorna TRUE se la finestra e' in esecuzione
bool is_running() const
{ return _running; }
// @cmember Ritorna TRUE se la finestra e' attiva
bool active() const
{ return _active; }
// @cmember Determina numero di righe e colonne nella finestra
TPoint size() const;
// @cmember Ritorna il numero di righe della finestra
short rows() const
{ return (short)size().y; }
// @cmember Ritorna il numero di colonnedella finestra
short columns() const
{ return (short)size().x; }
// @cmember Inizia l'esecuzione della finestra
virtual void start_run()
{}
// @cmember Interrompe l'esecuzione della finestra
virtual bool stop_run(KEY key);
// @cmember Forza ridisegno della finestra
void force_update();
// @cmember Cambia il colore dello sfondo
void set_background_color(COLOR col);
// @cmember Mostra la finestra
virtual void open();
// @cmember Nasconde la finestra
virtual void close();
// @cmember Indica se la finestra puo' essere chiusa brutalmente
virtual bool can_be_closed() const;
// @cmember Permette di fare tutti gli aggiornamenti necessari
virtual void on_idle();
// @cmember Iconizza la finestra
void iconize() const;
// @cmember Massimizza la finestra
void maximize() const;
// @cmember Attiva/disattiva la finestra
virtual void activate(bool = TRUE);
// @cmember Disattiva la finestra (chiama <mf TWindow::activate>)
void deactivate()
{ activate(FALSE); }
// @cmember Mostra la finestra modale
void open_modal();
// @cmember Nasconde la finestra modale
void close_modal();
// @cmember Esegue la finestra
virtual KEY run();
// @cmember Ritorna l'ultimo tasto
KEY last_key() const
{ return _lastkey; }
// @cmember Permette di settare il titolo della finestra
virtual void set_caption(const char* title);
// @cmember Ritorna il titolo della finestra
virtual const char* get_caption(TString& str) const;
// @cmember Riempie la finestra con il colore <p color>
void clear(COLOR color);
// @cmember Setta il draw mode
void set_mode(DRAW_MODE mode);
// @cmember Setta il colore della finestra e dello sfondo
void set_color(COLOR fore, COLOR back);
// @cmember Setta opaque_text
void set_opaque_text(bool o);
// @cmember Sceglie la penna da utilizzare nella finestra
void set_pen(COLOR color, int width = 1, PAT_STYLE pat = PAT_SOLID, PEN_STYLE st = P_SOLID);
// @cmember Nasconde la penna
void hide_pen();
// @cmember Nasconde il pennello
void hide_brush();
// @cmember Sceglie il pennello da utilizzare nella finestra (vedi <mf TWindow::set_pen>)
void set_brush(COLOR color, PAT_STYLE = PAT_SOLID);
// @cmember Sceglie il font da utilizzare nella finestra
void set_font(const char* family = XVT_FFN_FIXED, int style = 0, int dim = 0);
// @cmember Converte le coordinate logiche (caratteri) in coordinate fisiche (pixel)
virtual PNT log2dev(long x, long y) const;
// @cmember Converte le coordinate fisiche (pixel) in coordinate logiche (caratteri)
virtual TPoint dev2log(const PNT& p) const;
// @cmember Disegna un rettangolo con la possibilita' di settare la penna e il draw_mode
void frame(short left, short top, short right, short bottom, int flag);
// @cmember Chiama <mf TWindow::frame> con il flag 2
void rect(short left, short top, short right, short bottom);
// @cmember Chiama <mf TWindow::frame> con il flag 1
void bar(short left, short top, short right, short bottom);
// @cmember Chiama <mf TWindow::frame> con il flag 5
void invert_bar(short left, short top, short right, short bottom);
// @cmember Scrive una stringa nella finestra all posizione indicata
void stringat(short x, short y, const char* str);
// @cmember Scrive il testo formattato nella finestra all posizione indicata
void printat(short x, short y, const char* fmt, ...);
// @cmember Disegna una linea nella finestra
void line(short x0, short y0, short x1, short y1);
// @cmember Disegna una icona nella finestra
void icon(short x0, short y0, int iconid = -1);
// @cmember Aggiunge voci di menu' durante l'esecuzione di una finestra
bool add_menu(TString_array& menu, MENU_TAG id = 0, bool force = TRUE);
// @cmember Rimuove il menu' runtime dalla finestra
bool remove_menu(MENU_TAG id);
// @cmember Chiamata ad ogni cambio ditta
virtual void on_firm_change()
{}
};
// @doc INTERNAL
// @class TTemp_window | Classe per la definizione di finestre temporanee
//
// @base public | TWindow
class TTemp_window : public TWindow
{
// @author:(INTERNAL) Guido
// @access Public Member
public:
// @cmember Costruttore
TTemp_window(WINDOW w);
// @cmember Distruttore
virtual ~TTemp_window();
};
// @doc EXTERNAL
// @class TScroll_window | Classe per la definizione di finestre con scrollbar
//
// @base public | TWindow
class TScroll_window : public TWindow
{
// @author:(INTERNAL) Guido
// @access:(INTERNAL) Private Member
// @cmember:(INTERNAL) Posizione attuale della scrollbar
TPoint _origin;
// @cmember:(INTERNAL) Massima lunghezza della scrollbar
TPoint _max;
// @cmember:(INTERNAL) Utilizzato per finestre molto grosse, per poter gestire l-intera finestra
short _shift;
// @cmember:(INTERNAL) Indica se sommare (TRUE) o no alle coordinate attuali le coordinate passate
bool _autoscroll : 1;
// @cmember:(INTERNAL) Indica che la finestra ha la barra di scorrimento orizzontale
bool _has_hscroll : 1;
// @cmember:(INTERNAL) Indica che la finestra ha la barra di scorrimento verticale
bool _has_vscroll : 1;
// @access Protected Member
protected:
// @cmember Crea la finestra (vedi <mf TWindow::create>)
virtual WINDOW create(short x, short y, short dx, short dy, const char* title = "", long flags = WSF_NONE, WIN_TYPE rt = W_DOC, WINDOW parent = NULL_WIN, int menu = 0) ;
// @cmember Converte le coordinate logiche (caratteri) in coordinate fisiche (pixel)
virtual PNT log2dev(long x, long y) const;
// @access Public Member
public:
// @cmember Costruttore
TScroll_window();
// @cmember Gestice la pressione del tasto
virtual bool on_key(KEY key);
// @cmember Gestisce l'handler della finestra (vedi <mf TWindow::handler>)
virtual void handler(WINDOW win, EVENT* ep);
// @cmember Setta punto di massimo scroll
void set_scroll_max(long maxx, long maxy);
// @cmember Aggiorna la scrollbar
void update_thumb(long x = -1, long y = -1);
// @cmember Setta il member <p _autoscroll>
void autoscroll(bool on)
{ _autoscroll = on; }
// @cmember Ritorna il membro <p _autoscroll>
bool autoscrolling() const
{ return _autoscroll; }
// @cmember Ritorna il punto di origine
const TPoint& origin() const
{ return _origin; }
// @cmember Ritorna il punto massimo
const TPoint& range() const
{ return _max; }
};
#endif // __WINDOW_H