146 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
/*      $Id: progind.h,v 1.3 1994-11-11 18:04:25 guy Exp $     */
 | 
						|
 | 
						|
/* @N
 | 
						|
   progind.h
 | 
						|
   program status and timer boxes
 | 
						|
   fv 20/8/93
 | 
						|
   works for both C and C++
 | 
						|
   @END
 | 
						|
   */
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
#ifndef __PROGIND_H
 | 
						|
#define __PROGIND_H 
 | 
						|
 | 
						|
#ifndef __WINDOW_H
 | 
						|
#include <window.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __STRINGS_H
 | 
						|
#include <strings.h>
 | 
						|
#endif 
 | 
						|
 | 
						|
/* 
 | 
						|
   @C
 | 
						|
   class TIndwin : public TWindow 
 | 
						|
   @END
 | 
						|
   */
 | 
						|
 | 
						|
class TIndwin : public TWindow 
 | 
						|
{
 | 
						|
  /* @DPRIV */
 | 
						|
  enum { IND_CANCELLED = 0x01, IND_FINISHED= 0x02 };
 | 
						|
 | 
						|
  WINDOW    _text;    // Static text
 | 
						|
  WINDOW    _cancel;  // CANCEL button
 | 
						|
  WINDOW    _bar;     // Moving bar and percentage  
 | 
						|
  byte      _flags;
 | 
						|
  /* @END */
 | 
						|
 | 
						|
protected:
 | 
						|
  /* @FPROT */
 | 
						|
 | 
						|
  long    _max;     // maximum value to reach 
 | 
						|
  long    _status;  // current status (set by user)
 | 
						|
  void    draw_window();
 | 
						|
  word    measure_text(TToken_string& t, word& len) const;
 | 
						|
 | 
						|
  virtual void handler(WINDOW w, EVENT* e);
 | 
						|
  virtual void update();
 | 
						|
 | 
						|
  void update_bar();
 | 
						|
  KEY check_stop();
 | 
						|
 | 
						|
public:
 | 
						|
  /* @FPUB */
 | 
						|
  bool iscancelled() const { return _flags & IND_CANCELLED; }
 | 
						|
  bool isfinished()  const { return _flags & IND_FINISHED;  }
 | 
						|
  long status()      const { return _status; }
 | 
						|
  void cancel() { _flags |= IND_CANCELLED; check_stop(); }
 | 
						|
  
 | 
						|
  virtual bool can_be_closed() const;
 | 
						|
  /* @END */
 | 
						|
 | 
						|
  /* @LONGDES
 | 
						|
     si puo' chiamare settext() per cambiare il testo, ma 
 | 
						|
     le dimensioni della finestra sono calcolate sul primo
 | 
						|
     passato, quindi occorre dare spazi se se ne prevede
 | 
						|
     uno piu' lungo
 | 
						|
     @END */
 | 
						|
  void set_text(const char* t);
 | 
						|
 | 
						|
  /* FPUB */
 | 
						|
  TIndwin(long max, const char* txt, bool cancel = TRUE,        bool bar = TRUE, int div = 16);
 | 
						|
  virtual ~TIndwin();
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
   @C
 | 
						|
   class TProgind : public TIndwin
 | 
						|
   @END
 | 
						|
   */
 | 
						|
 | 
						|
class TProgind : public TIndwin
 | 
						|
{
 | 
						|
public:
 | 
						|
  /* @FPUB */
 | 
						|
  void setmax(long m)    { _max = m; }
 | 
						|
  void setstatus(long l) { _status  = l; update_bar(); do_events(); }
 | 
						|
  void addstatus(long l) { setstatus(_status+l); }
 | 
						|
  TProgind(long max, const char* txt = NULL, bool cancel = TRUE,
 | 
						|
           bool bar = TRUE, int div = 10);
 | 
						|
  virtual ~TProgind() {}
 | 
						|
};
 | 
						|
 | 
						|
/*
 | 
						|
   @C
 | 
						|
   class TTimerind : public TIndwin
 | 
						|
   @END
 | 
						|
   */
 | 
						|
 | 
						|
class TTimerind : public TIndwin
 | 
						|
{
 | 
						|
  /* @DPRIV */
 | 
						|
  int _interval;
 | 
						|
  static long _timer_id;
 | 
						|
 | 
						|
protected:
 | 
						|
  /* @FPROT   */
 | 
						|
  virtual void handler(WINDOW w, EVENT* e);
 | 
						|
 | 
						|
public:
 | 
						|
  /* @FPUB   */
 | 
						|
  TTimerind(long msec, const char* txt = NULL, bool cancel = TRUE,
 | 
						|
            bool bar = TRUE, int div = 10, int interval = 1000);
 | 
						|
  virtual ~TTimerind();
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/* @DPRIV */
 | 
						|
/*  extern TIndwin* __indwin__p; */
 | 
						|
 | 
						|
/* @FPUB */
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
  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 */
 |