campo-sirio/include/progind.h
guy 2c2d972216 prefix.* Migliorata gestione handles dei file aperti
progind.cpp  Corretta gestione messaggi multiriga per XI_R4
progind.h    Trasformate da void a bool i metodi setstatus e addstatus
rectypes.h   Aggiunti due nuovi TDirtype _studir e extdir
relapp.cpp   Migliorata gestione stringhe fisse
relation.cpp Adeguati i cursori alla nuova gestione handles
relation.h   Tolto _filename dai cursori e messo _indexfirm


git-svn-id: svn://10.65.10.50/trunk@6457 c028cbd2-c16b-5b4b-a496-9718f37d4682
1998-03-30 13:50:30 +00:00

174 lines
4.8 KiB
C++
Executable File

#ifndef __PROGIND_H
#define __PROGIND_H
#ifdef __cplusplus
#ifndef __STRINGS_H
#include <strings.h>
#endif
#ifndef __WINDOW_H
#include <window.h>
#endif
#ifndef __CONTROLS_H
class TControl;
class TField_control;
#endif
// @doc EXTERNAL
// @class TIndwin | Classe base per la gestione delle finestre con le barre di attesa
//
// @base public | TWindow
class TIndwin : public TWindow
// @author:(INTERNAL) Villa
{
// @access:(INTERNAL) Private Member
enum {
// @ccost:(INTERNAL) IND_CANCELLED | 0x01 | Controlla se e' stato premuto il tasto "Annulla"
IND_CANCELLED = 0x01,
// @ccost:(INTERNAL) IND_FINISHED | 0x02 | Controlla se l'operazione e' terminata
IND_FINISHED= 0x02 };
// @cmember:(INTERNAL) Testo da inserire nella finestra
TField_control* _text;
// @cmember:(INTERNAL) Bottone "Annulla"
TControl* _cancel;
// @cmember:(INTERNAL) Movimento della barra e percentuale
WINDOW _bar;
// @cmember:(INTERNAL) Flag che indica quali operazioni sono state effettuate
byte _flags;
// @access Protected Member
protected:
// @cmember Massimo valore da ricercare
long _max;
// @cmember Stato corrente dell'esecuzione (settato dell'utente)
long _status;
// @cmember Ritorna il numero di linee necessarie per scrivere il testo nella finestra
word measure_text(TToken_string& t, word& len) const;
// @cmember Calcola il rettangolo della barra di attesa
RCT* get_bar_rct(RCT& r) const;
// @cmember Gestisce gli eventi tasto della finestra
virtual bool on_key(KEY k);
// @cmember Gestisce gli eventi bottone della finestra
virtual void on_button(short id);
// @cmember Aggiorna la barra di attesa (chiama update_bar)
virtual void update();
// @cmember Aggiorna la barra di attesa
void update_bar();
// @cmember Controlla se ha terminato la barra di attesa
KEY check_stop();
// @access Public Member
public:
// @cmember Controlla se e' stato premuto il tasto "Annulla"
bool iscancelled() const
{ do_events(); return (_flags & IND_CANCELLED) != 0; }
// @cmember Controlla se e' finito l'operazione
bool isfinished() const
{ do_events(); return (_flags & IND_FINISHED) != 0; }
// @cmember Ritorna lo stato dell'operazione (quantita' dell'applicazione gia' fatta)
long status() const
{ do_events(); return _status; }
// @cmember Ferma l'operazione (chiude la finestra)
void cancel()
{ _flags |= IND_CANCELLED; do_events(); check_stop(); }
// @cmember Controlla se l'operazione puo' essere chiusa
virtual bool can_be_closed() const;
// @cmember Setta il testo della finestra
void set_text(const char* t);
// @cmember Costruttore
TIndwin(long max, const char* txt, bool cancel = TRUE, bool bar = TRUE, int div = 16);
// @cmember Distruttore
virtual ~TIndwin();
};
// @doc EXTERNAL
// @class TProgind | Classe per la gestione della barra di attesa di una applicazione
//
// @base public | TIndwin
class TProgind : public TIndwin
// @author:(INTERNAL) Villa
{
// @access Public Member
public:
// @cmember Setta il valore massimo della barra d'attesa
void setmax(long m)
{ _max = m; }
// @cmember Setta lo stato della barra d'attesa
bool setstatus(long l);
// @cmember Aggiorna la barra d'attesa aggiungendo l'incremento fatto dell'applicazione
bool addstatus(long l)
{ return setstatus(_status+l); }
// @cmember Costruttore
TProgind(long max, const char* txt = NULL, bool cancel = TRUE, bool bar = TRUE, int div = 60);
// @cmember Distruttore
virtual ~TProgind()
{}
};
// @doc EXTERNAL
// @class TTimerind | Classe per la definizione di una barra d'attesa gestita
// dal tempo e non dallo stato dell'applicazione
//
// @base public | TIndwin
class TTimerind : public TIndwin
// @author:(INTERNAL) Villa
{
// @access:(INTERNAL) Private Member
// @cmember:(INTERNAL) Intervallo di tempo
int _interval;
// @cmember:(INTERNAL) Indice di tempo
static long _timer_id;
// @access Protected Member
protected:
// @cmember Gestisce gli eventi della finestra
virtual void handler(WINDOW w, EVENT* e);
// @access Public Member
public:
// @cmember Costruttore
TTimerind(long msec, const char* txt = NULL, bool cancel = TRUE, bool bar = TRUE, int div = 10, int interval = 1000);
// @cmember Distruttore
virtual ~TTimerind();
};
#endif
#ifdef __cplusplus
extern "C" {
#endif
// Non commentate perche' destinate a sparire
void progind_create(long, const char*, bool, bool, int);
void progind_set_status(long);
void progind_cancel();
bool progind_iscancelled();
bool progind_isfinished();
void progind_destroy();
void timerind_create(long, const char*, bool, bool, int, int);
void timerind_cancel();
bool timerind_iscancelled();
bool timerind_isfinished();
void timerind_destroy();
#ifdef __cplusplus
}
#endif
#endif /* __PROGIND_H */