#ifndef ROOT_TQtClientWidget
#define ROOT_TQtClientWidget
#ifndef __CINT__
# include <QKeySequence>
# include <QFrame>
# include <QCursor>
# include <map>
#else
class QFrame;
class QColor;
class QPixmap;
#endif
#include "GuiTypes.h"
class QCursor;
class QCloseEvent;
class QPaintEvent;
class TQtClientGuard;
class TQtWidget;
class QShortcut;
class TGWindow;
class TQtClientWidget: public QFrame {
#ifndef __CINT__
Q_OBJECT
#endif
private:
void operator=(const TQtClientWidget&);
TQtClientWidget(const TQtClientWidget&);
protected:
UInt_t fGrabButtonMask;
UInt_t fGrabEventPointerMask;
UInt_t fGrabEventButtonMask;
UInt_t fSelectEventMask;
UInt_t fSaveSelectInputMask;
EMouseButton fButton;
#ifndef __CINT__
std::map<QKeySequence,QShortcut*> fGrabbedKey;
#endif
Bool_t fPointerOwner;
QCursor *fNormalPointerCursor;
QCursor *fGrabPointerCursor;
QCursor *fGrabButtonCursor;
bool fIsClosing;
bool fDeleteNotify;
TQtClientGuard *fGuard;
TQtWidget *fCanvasWidget;
TGWindow *fMyRootWindow;
QColor *fEraseColor;
QPixmap *fErasePixmap;
friend class TQtClientGuard;
friend class TGQt;
#ifndef __CINT__
TQtClientWidget(TQtClientGuard *guard, QWidget* parent=0, const char* name=0, Qt::WFlags f=0);
#else
TQtClientWidget(TQtClientGuard *guard, QWidget* parent=0, const char* name=0, WFlags f=0);
#endif
void SetCanvasWidget(TQtWidget *widget);
virtual void paintEvent ( QPaintEvent * );
public:
enum {kRemove = -1, kTestKey = 0, kInsert = 1};
virtual ~TQtClientWidget();
virtual void closeEvent(QCloseEvent *ev);
virtual void setEraseColor(const QColor &color);
virtual void setErasePixmap (const QPixmap &pixmap);
bool DeleteNotify();
TQtWidget *GetCanvasWidget() const;
void GrabEvent(Event_t &ev,bool own=TRUE);
bool IsClosing();
bool IsGrabbed (Event_t &ev);
bool IsGrabPointerSelected(UInt_t evmask) const;
bool IsGrabButtonSelected (UInt_t evmask) const;
TQtClientWidget *IsKeyGrabbed(const Event_t &ev);
UInt_t IsEventSelected (UInt_t evmask) const;
bool IsGrabOwner() { return fPointerOwner;}
void SetAttributeEventMask(UInt_t evmask);
void SetButtonMask (UInt_t modifier=kAnyModifier,EMouseButton button=kAnyButton);
void SetClosing(bool flag=kTRUE);
void SetCursor();
void SetCursor(Cursor_t cursor);
void SetDeleteNotify(bool flag=true);
void SetButtonEventMask(UInt_t evmask,Cursor_t cursor=0);
void SelectInput (UInt_t evmask);
Bool_t SetKeyMask (Int_t keycode = 0, UInt_t modifier=kAnyModifier,int insert=kInsert);
void UnSetButtonMask (bool dtor=false);
void UnSetKeyMask(Int_t keycode = 0, UInt_t modifier=kAnyModifier);
QCursor *GrabButtonCursor() const;
QCursor *GrabPointerCursor() const;
UInt_t ButtonMask () const;
UInt_t ButtonEventMask() const;
UInt_t SelectEventMask() const;
EMouseButton Button() const;
UInt_t PointerMask () const;
#ifndef __CINT__
protected slots:
void Disconnect();
#endif
public slots:
virtual void Accelerate();
#ifndef Q_MOC_RUN
ClassDef(TQtClientWidget,0)
#endif
};
inline bool TQtClientWidget::DeleteNotify(){return fDeleteNotify; }
inline TQtWidget *TQtClientWidget::GetCanvasWidget() const
{ return fCanvasWidget;}
inline bool TQtClientWidget::IsClosing(){ return fIsClosing; }
inline UInt_t TQtClientWidget::IsEventSelected (UInt_t evmask) const
{
return (evmask & fSelectEventMask);
}
inline void TQtClientWidget::SetCursor()
{
if (fNormalPointerCursor) setCursor(*fNormalPointerCursor);
}
inline void TQtClientWidget::SetCursor(Cursor_t crsr)
{
fNormalPointerCursor = (QCursor *)crsr;
SetCursor();
}
inline void TQtClientWidget::SetClosing(bool flag) { fIsClosing = flag;}
inline void TQtClientWidget::SetDeleteNotify(bool flag){fDeleteNotify = flag;}
inline void TQtClientWidget::SetAttributeEventMask(UInt_t evmask) { SelectInput (evmask);}
inline void TQtClientWidget::SetButtonEventMask(UInt_t evmask,Cursor_t crsr)
{ fGrabEventButtonMask = evmask; fGrabButtonCursor =(QCursor *) crsr; }
inline EMouseButton TQtClientWidget::Button() const { return fButton; }
inline UInt_t TQtClientWidget::ButtonEventMask() const { return fGrabEventButtonMask;}
inline UInt_t TQtClientWidget::ButtonMask() const { return fGrabButtonMask; }
inline UInt_t TQtClientWidget::PointerMask() const { return fGrabEventPointerMask;}
inline UInt_t TQtClientWidget::SelectEventMask() const {return fSelectEventMask;}
inline QCursor *TQtClientWidget::GrabButtonCursor() const
{ return fGrabButtonCursor; }
inline QCursor *TQtClientWidget::GrabPointerCursor() const
{ return fGrabPointerCursor; }
inline bool TQtClientWidget::IsGrabPointerSelected(UInt_t evmask) const
{ return evmask & PointerMask(); }
inline bool TQtClientWidget::IsGrabButtonSelected (UInt_t evmask) const
{ return evmask & ButtonEventMask(); }
#endif