Newer
Older
Import / research / signals-slots / src / gui / TDT / widget.h
/*
    3D C++ Toolkit (TDT)
    Widget Class
    Copyright (c) 2008
    John Ryland
*/
#ifndef WIDGET_H
#define WIDGET_H


#include <TDT/window.h>


namespace TDT
{


class Widget
{
public:
    Widget(Widget *parent = 0);
    virtual ~Widget();

    /* Properties */
    const char *windowTitle() const { return window()->windowTitle(); }
    const char *windowIconText() const { return window()->windowIconText(); }
    int x() const { return mX; }
    int y() const { return mY; }
    int width() const { return mWidth; }
    int height() const { return mHeight; }
    bool isVisible() const { return mVisible; }
    bool isMinimized() const { return window()->isMinimized(); }
    bool isMaximized() const { return window()->isMaximized(); }
    bool isFullScreen() const { return window()->isFullScreen(); }
    int winId() const { return window()->winId(); }
    int cursor() const { return mCursor; }
    Window *window() { return mWindow; }
    Window const * const window() const { return mWindow; }

    /* Commands */
    void setWindowTitle(const char *title) { window()->setWindowTitle(title); }
    void setWindowIconText(const char *iconText) { window()->setWindowIconText(iconText); }
    void move(int x, int y);
    void resize(int width, int height);
    void setGeometry(int x, int y, int width, int height);
    void show();
    void hide();
    void setVisible(bool visible);
    void showNormal() { window()->showNormal(); }
    void showMinimized() { window()->showMinimized(); }
    void showMaximized() { window()->showMaximized(); }
    void showFullScreen() { window()->showFullScreen(); }
    void setCursor(int cursor);
    void repaint();

    /* Events */
    virtual bool event(Event ev);

    virtual void paintEvent();
    virtual void showEvent();
    virtual void hideEvent();
    virtual void closeEvent();
    virtual void moveEvent(int x, int y);
    virtual void resizeEvent(int width, int height);
    virtual void keyPressEvent(int key, int x, int y);
    virtual void keyReleaseEvent(int key, int x, int y);
    virtual void mousePressEvent(int button, int x, int y);
    virtual void mouseReleaseEvent(int button, int x, int y);
    virtual void mouseMoveEvent(int x, int y);
    virtual void focusInEvent();
    virtual void focusOutEvent();
    virtual void idleEvent();
    virtual void timerEvent(int timerId);
    virtual void overlayDisplayedEvent();

private:
    int mX, mY, mWidth, mHeight;
    int mCursor;
    bool mVisible;
    Window *mWindow;
    Widget *mParent;
};


};


#endif // WIDGET_H