// This may look like C code, but it is really -*- C++ -*-
// Module PI : Peida Interactive      PIBaseWdg
//                                    Reza  95-96
// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA

#ifndef PIBWDGX_H_SEEN
#define PIBWDGX_H_SEEN

#include "pisysdep.h"
#include "pibwdggen.h"

#include "pigraphx.h"
            
#include "pigraphps.h"

class PIBaseWdgX : public PIBaseWdgGen
{

public:
// Les methodes ...

                     PIBaseWdgX(PIContainerGen *par, char *nom,
                                int sx=10, int sy=10, int px=0, int py=0);
  virtual            ~PIBaseWdgX();

  virtual void       FinishCreate();   // appele par la fenetre mere, apres XtRealize()

//  Activation des evenements   
  virtual void       ActivatePtrCross();
  virtual void       ActivateButton(int bid);
  virtual void       ActivateMove(int bid);
  virtual void       ActivateKeyboard();

//  Divers : couleur de fond, Effacement fenetre,  forme de la souris
  virtual void       SetBackgroundColor(PIColors col=PI_White);
  virtual void       EraseWindow(int x0=0, int y0=0, int dx=0, int dy=0);
  virtual void       SelPointerShape(PIPointer ptr=PI_ArrowPointer);
  virtual PIColors   GetBackgroundColor();
  virtual PIPointer  GetPointerShape();
  virtual void       AssignKeyboard();

// Acces aux caracteristiques du dernier evenement 
  virtual void       GetLastEventInfo(PIKeyModifier& kmod, unsigned long& tm);

// On redefinit IsVisible() pour tenir compte de l appel a FinsihCreate  
  virtual bool       IsVisible();

//  Fonction qui doit etre appelee pour rafraichir la fenetre 
  virtual void       Refresh();

//  Appel depuis le PIXtBaseWidget uniquement (ExposeEvt de Xt )
  virtual void       eXposeProcess(int x0, int y0, int dx, int dy);
 
protected:
  void               Init();
  PIPointer mPtrS;
  PIColors mBCol;
  bool finishDone;       // Si FinsihCreate appele
};

typedef PIBaseWdgX PIBaseWdg;

#endif /* PIBWDGX_H_SEEN */
