qWarning("cast went wrong in data_clear");
}
+//// Objects ////
+
+// DeclarativeAction
+DeclarativeAction::DeclarativeAction(QObject *parent) : DeclarativeObjectProxy<QAction>(parent)
+{
+ connectAllSignals(m_proxiedObject, this);
+}
+
+CUSTOM_METAOBJECT(DeclarativeAction, QAction)
+
//// Layouts ////
// DeclarativeHBoxLayout
void DeclarativeMainWindow::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
{
- if (widget) {
+ QMenuBar *menuBar = qobject_cast<QMenuBar*>(widget);
+ if (menuBar) {
+ m_proxiedObject->setMenuBar(menuBar);
+ } else if (widget) {
if (m_proxiedObject->centralWidget()) {
- qmlInfo(this) << "The QMainWindow contains a central widget already";
+ qmlInfo(declarativeObject) << "The QMainWindow contains a central widget already";
return;
}
CUSTOM_METAOBJECT(DeclarativeMainWindow, QMainWindow)
+// DeclarativeMenu
+DeclarativeMenu::DeclarativeMenu(QObject *parent) : DeclarativeWidgetProxy<QMenu>(parent)
+{
+ connectAllSignals(m_proxiedObject, this);
+}
+
+void DeclarativeMenu::addObject(QObject *object, AbstractDeclarativeObject *declarativeObject)
+{
+ QAction *action = qobject_cast<QAction*>(object);
+ if (!action) {
+ qmlInfo(declarativeObject) << "The QMenu can only contain QMenu or QAction";
+ return;
+ }
+
+ m_proxiedObject->addAction(action);
+
+ m_children.append(declarativeObject);
+}
+
+void DeclarativeMenu::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
+{
+ QMenu *menu = qobject_cast<QMenu*>(widget);
+ if (!menu) {
+ qmlInfo(declarativeObject) << "The QMenu can only contain QMenu or QAction";
+ return;
+ }
+
+ m_proxiedObject->addMenu(menu);
+
+ m_children.append(declarativeObject);
+}
+
+void DeclarativeMenu::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+ Q_UNUSED(layout);
+ Q_UNUSED(declarativeObject);
+ qmlInfo(this) << "Can not set a QLayout to a QMenu";
+}
+
+CUSTOM_METAOBJECT(DeclarativeMenu, QMenu)
+
+// DeclarativeMenuBar
+DeclarativeMenuBar::DeclarativeMenuBar(QObject *parent) : DeclarativeWidgetProxy<QMenuBar>(parent)
+{
+ connectAllSignals(m_proxiedObject, this);
+}
+
+void DeclarativeMenuBar::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
+{
+ QMenu *menu = qobject_cast<QMenu*>(widget);
+ if (!menu) {
+ qmlInfo(declarativeObject) << "The QMenuBar can only contain QMenus";
+ return;
+ }
+
+ m_proxiedObject->addMenu(menu);
+
+ m_children.append(declarativeObject);
+}
+
+void DeclarativeMenuBar::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+ Q_UNUSED(layout);
+ Q_UNUSED(declarativeObject);
+ qmlInfo(this) << "Can not set a QLayout to a QMenuBar";
+}
+
+CUSTOM_METAOBJECT(DeclarativeMenuBar, QMenuBar)
+
// DeclarativePushButton
DeclarativePushButton::DeclarativePushButton(QObject *parent) : DeclarativeWidgetProxy<QPushButton>(parent)
{
#include <QtCore/QObject>
#include <QtCore/QPointer>
+#include <QtGui/QAction>
#include <QtGui/QCalendarWidget>
#include <QtGui/QCheckBox>
#include <QtGui/QHBoxLayout>
#include <QtGui/QLabel>
#include <QtGui/QMainWindow>
+#include <QtGui/QMenu>
+#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QSlider>
#include <QtGui/QTabWidget>
class DeclarativeObjectProxy : public AbstractDeclarativeObject
{
public:
- DeclarativeObjectProxy(QObject *parent = 0) : AbstractDeclarativeObject(parent), m_proxiedObject(new T) {}
+ DeclarativeObjectProxy(QObject *parent = 0) : AbstractDeclarativeObject(parent), m_proxiedObject(new T(0)) {}
~DeclarativeObjectProxy() { delete m_proxiedObject; }
if (declarativeObject) {
QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
if (widget) {
-/*
- if (DeclarativeObjectProxy<T>::m_proxiedObject->layout()) {
- qmlInfo(this) << "Can not add Widget since a Layout is set already";
- return;
- }
-*/
addWidget(widget, declarativeObject);
return;
}
}
}
+ addObject(declarativeObject->object(), declarativeObject);
+
DeclarativeObjectProxy<T>::dataAppend(object);
}
DeclarativeObjectProxy<T>::m_children.append(declarativeObject);
DeclarativeObjectProxy<T>::m_proxiedObject->setLayout(layout);
}
+
+ virtual void addObject(QObject *object, AbstractDeclarativeObject *declarativeObject)
+ {
+ object->setParent(DeclarativeObjectProxy<T>::m_proxiedObject);
+ DeclarativeObjectProxy<T>::m_children.append(declarativeObject);
+ }
+};
+
+//// Objects ///
+class DeclarativeAction : public DeclarativeObjectProxy<QAction>
+{
+ DECLARATIVE_OBJECT
+
+ public:
+ DeclarativeAction(QObject *parent = 0);
};
//// Layouts ////
virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
};
+class DeclarativeMenu : public DeclarativeWidgetProxy<QMenu>
+{
+ DECLARATIVE_OBJECT
+
+ public:
+ DeclarativeMenu(QObject *parent = 0);
+
+ protected:
+ virtual void addObject(QObject *object, AbstractDeclarativeObject *declarativeObject);
+ virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+ virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+};
+
+class DeclarativeMenuBar : public DeclarativeWidgetProxy<QMenuBar>
+{
+ DECLARATIVE_OBJECT
+
+ public:
+ DeclarativeMenuBar(QObject *parent = 0);
+
+ protected:
+ virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+ virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+};
+
class DeclarativePushButton : public DeclarativeWidgetProxy<QPushButton>
{
DECLARATIVE_OBJECT
: QObject(parent)
, d(new Private(this, url))
{
+ // objects
+ qmlRegisterType<QAction>();
+ qmlRegisterType<DeclarativeAction>("QtGui", 1, 0, "Action");
+
// layouts
qmlRegisterType<DeclarativeHBoxLayout>("QtGui", 1, 0, "HBoxLayout");
qmlRegisterType<DeclarativeVBoxLayout>("QtGui", 1, 0, "VBoxLayout");
qmlRegisterType<DeclarativeCheckBox>("QtGui", 1, 0, "CheckBox");
qmlRegisterType<DeclarativeLabel>("QtGui", 1, 0, "Label");
qmlRegisterType<DeclarativeMainWindow>("QtGui", 1, 0, "MainWindow");
+ qmlRegisterType<DeclarativeMenu>("QtGui", 1, 0, "Menu");
+ qmlRegisterType<DeclarativeMenuBar>("QtGui", 1, 0, "MenuBar");
qmlRegisterType<DeclarativePushButton>("QtGui", 1, 0, "PushButton");
qmlRegisterType<DeclarativeSlider>("QtGui", 1, 0, "Slider");
qmlRegisterType<TabWidgetTabHeader>();
import QtGui 1.0
MainWindow {
+
+ MenuBar {
+ Menu {
+ title: qsTr("File")
+
+ Action {
+ text: "Close"
+ }
+ }
+
+ Menu {
+ title: qsTr("Edit")
+
+ Action {
+ text: "Copy"
+ }
+
+ Action {
+ text: "Paste"
+ }
+ }
+
+ Menu {
+ title: qsTr("Help")
+
+ Action {
+ text: "About"
+ }
+
+ Action {
+ text: "About Qt"
+ }
+ }
+ }
+
TextEdit {
+ id: textEdit
}
}