171 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #ifdef __cplusplus
 | |
| #ifndef __PROGIND_H
 | |
| #define __PROGIND_H 
 | |
| 
 | |
| #ifndef __STRINGS_H
 | |
| #include <strings.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __WINDOW_H
 | |
| #include <window.h>
 | |
| #endif
 | |
| 
 | |
| #ifndef __CONTROLS_H
 | |
| class TControl;
 | |
| #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
 | |
|   TControl* _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 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; }
 | |
|   // @cmember Controlla se e' finito l'operazione
 | |
|   bool isfinished() const
 | |
|   { do_events(); return _flags & IND_FINISHED;  }
 | |
|   // @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
 | |
|   void setstatus(long l)
 | |
|   { _status  = l; update_bar(); do_events(); }
 | |
|   // @cmember Aggiorna la barra d'attesa aggiungendo l'incremento fatto dell'applicazione
 | |
|   void addstatus(long l)
 | |
|   { setstatus(_status+l); }
 | |
|   // @cmember Costruttore
 | |
|   TProgind(long max, const char* txt = NULL, bool cancel = TRUE, bool bar = TRUE, int div = 10);
 | |
|   // @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, 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, char*, bool, bool, int, int);
 | |
|   void timerind_cancel();
 | |
|   bool timerind_iscancelled();
 | |
|   bool timerind_isfinished();
 | |
|   void timerind_destroy();
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif  /* __PROGIND_H */
 |