#ifndef _CLASS_WIDGET_H_
#define _CLASS_WIDGET_H_
//=============================================================================
//
// File : KvsObject_widget.h
// Creation date : Mon Sep 11 16:35:32 CET 2000 by Krzysztof Godlewski
//
// This file is part of the KVIrc IRC client distribution
// Copyright (C) 2000 Krzysztof Godlewski
// Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net)
//
// This program is FREE software. You can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the HOPE that it will be USEFUL,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, write to the Free Software Foundation,
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
//=============================================================================
#include "kvi_settings.h"
#include "KviCString.h"
#include "KviTalToolTip.h"
#include "object_macros.h"
#include <QGraphicsEffect>
#ifdef COMPILE_WEBENGINE_SUPPORT
#include <QWebEngineView>
#endif
class KvsObject_widget : public KviKvsObject
{
Q_OBJECT
public:
KVSO_DECLARE_OBJECT(KvsObject_widget)
public:
QWidget * widget() { return (QWidget *)object(); };
protected:
bool init(KviKvsRunTimeContext * pContext, KviKvsVariantList * pParams) override;
#ifdef COMPILE_WEBENGINE_SUPPORT
QWebEngineView * m_pWebview = nullptr;
#endif
bool eventFilter(QObject * o, QEvent * e) override;
KviKvsRunTimeContext * m_pContext = nullptr;
QGraphicsDropShadowEffect * pGraphicsEffect = nullptr;
// ok, it is clear that we're messing with the naming conventions for the
// object classes :D
// let's try to use this one:
// isEnabled
// setEnabled..
// ... etc
// so the name of the C++ function matches exactly the name of the KVS function at this point
// let's also try to keep alphabetic order for the functions here.. so one can find them quickly
bool addWidgetToWrappedLayout(KviKvsObjectFunctionCall * c);
bool backgroundColor(KviKvsObjectFunctionCall * c);
bool centerToScreen(KviKvsObjectFunctionCall * c);
bool colorPalette(KviKvsObjectFunctionCall * c);
bool fontAscent(KviKvsObjectFunctionCall * c);
bool fontDescent(KviKvsObjectFunctionCall * c);
bool fontMetricsHeight(KviKvsObjectFunctionCall * c);
bool fontMetricsWidth(KviKvsObjectFunctionCall * c);
bool fontMetricsLineSpacing(KviKvsObjectFunctionCall * c);
bool foregroundColor(KviKvsObjectFunctionCall * c);
bool geometry(KviKvsObjectFunctionCall * c);
bool globalCursorX(KviKvsObjectFunctionCall * c);
bool globalCursorY(KviKvsObjectFunctionCall * c);
bool hasFocus(KviKvsObjectFunctionCall * c);
bool height(KviKvsObjectFunctionCall *);
bool hide(KviKvsObjectFunctionCall *);
bool isEnabled(KviKvsObjectFunctionCall * c);
bool isTopLevel(KviKvsObjectFunctionCall * c);
bool isVisible(KviKvsObjectFunctionCall * c);
bool loadInterface(KviKvsObjectFunctionCall * c);
bool lower(KviKvsObjectFunctionCall *);
bool mapFromGlobal(KviKvsObjectFunctionCall * c);
bool mapToGlobal(KviKvsObjectFunctionCall * c);
bool move(KviKvsObjectFunctionCall * c);
bool parentWidget(KviKvsObjectFunctionCall * c);
bool raise(KviKvsObjectFunctionCall *);
bool repaint(KviKvsObjectFunctionCall * c);
bool insertIntoStatusBar(KviKvsObjectFunctionCall * c);
bool removeFromStatusBar(KviKvsObjectFunctionCall * c);
bool setParent(KviKvsObjectFunctionCall * c);
bool resize(KviKvsObjectFunctionCall * c);
bool screenResolution(KviKvsObjectFunctionCall * c);
bool setAttribute(KviKvsObjectFunctionCall * c);
bool setBackgroundColor(KviKvsObjectFunctionCall * c);
bool setBackgroundImage(KviKvsObjectFunctionCall * c);
bool setEnabled(KviKvsObjectFunctionCall * c);
bool setFixedHeight(KviKvsObjectFunctionCall * c);
bool setFixedSize(KviKvsObjectFunctionCall * c);
bool setFixedWidth(KviKvsObjectFunctionCall * c);
bool setFocus(KviKvsObjectFunctionCall * c);
bool setFocusPolicy(KviKvsObjectFunctionCall * c);
bool setFont(KviKvsObjectFunctionCall * c);
bool setGeometry(KviKvsObjectFunctionCall * c);
bool setKeyShortcut(KviKvsObjectFunctionCall * c);
bool setMask(KviKvsObjectFunctionCall * c);
bool setMaximumHeight(KviKvsObjectFunctionCall * c);
bool setMaximumWidth(KviKvsObjectFunctionCall * c);
bool setMinimumHeight(KviKvsObjectFunctionCall * c);
bool setMinimumWidth(KviKvsObjectFunctionCall * c);
bool setMouseTracking(KviKvsObjectFunctionCall * c);
bool setForegroundColor(KviKvsObjectFunctionCall * c);
bool setSizePolicy(KviKvsObjectFunctionCall * c);
bool setStyleSheet(KviKvsObjectFunctionCall * c);
bool setToolTip(KviKvsObjectFunctionCall *);
bool setWindowIcon(KviKvsObjectFunctionCall * c);
bool setWindowTitle(KviKvsObjectFunctionCall * c);
bool setWFlags(KviKvsObjectFunctionCall * c);
bool show(KviKvsObjectFunctionCall * c);
bool sizeHint(KviKvsObjectFunctionCall * c);
bool update(KviKvsObjectFunctionCall * c);
bool width(KviKvsObjectFunctionCall *);
bool windowTitle(KviKvsObjectFunctionCall * c);
bool x(KviKvsObjectFunctionCall *);
bool y(KviKvsObjectFunctionCall *);
bool grab(KviKvsObjectFunctionCall *);
#ifdef COMPILE_WEBENGINE_SUPPORT
bool setWebView(KviKvsObjectFunctionCall * c);
#endif
signals:
void aboutToDie();
};
class KviKvsWidget : public QWidget
{
Q_OBJECT
Q_PROPERTY(QSize sizeHint READ sizeHint)
public:
KviKvsWidget(KvsObject_widget * ob, QWidget * par);
~KviKvsWidget();
protected:
KvsObject_widget * m_pObject;
public:
QSize sizeHint() const override;
};
#endif //_CLASS_WIDGET_H_