summaryrefslogtreecommitdiffstats
path: root/examples/script/defaultprototypes
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2009-03-23 10:18:55 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2009-03-23 10:18:55 +0100
commite5fcad302d86d316390c6b0f62759a067313e8a9 (patch)
treec2afbf6f1066b6ce261f14341cf6d310e5595bc1 /examples/script/defaultprototypes
Long live Qt 4.5!
Diffstat (limited to 'examples/script/defaultprototypes')
-rw-r--r--examples/script/defaultprototypes/code.js20
-rw-r--r--examples/script/defaultprototypes/defaultprototypes.pro10
-rw-r--r--examples/script/defaultprototypes/defaultprototypes.qrc5
-rw-r--r--examples/script/defaultprototypes/main.cpp84
-rw-r--r--examples/script/defaultprototypes/prototypes.cpp110
-rw-r--r--examples/script/defaultprototypes/prototypes.h78
6 files changed, 307 insertions, 0 deletions
diff --git a/examples/script/defaultprototypes/code.js b/examples/script/defaultprototypes/code.js
new file mode 100644
index 0000000000..048e1319df
--- /dev/null
+++ b/examples/script/defaultprototypes/code.js
@@ -0,0 +1,20 @@
+//! [0]
+listWidget.addItem("Red");
+listWidget.addItem("Blue");
+listWidget.addItem("Green");
+listWidget.addItem("Cyan");
+listWidget.addItem("Yellow");
+listWidget.addItem("Purple");
+listWidget.addItems(["Orange", "Gray"]);
+//! [0]
+
+//! [1]
+listWidget.currentItemChanged.connect(
+ function(item)
+ {
+ listWidget.setBackgroundColor(item.text);
+ }
+);
+//! [1]
+
+listWidget.show();
diff --git a/examples/script/defaultprototypes/defaultprototypes.pro b/examples/script/defaultprototypes/defaultprototypes.pro
new file mode 100644
index 0000000000..b9a6765ef5
--- /dev/null
+++ b/examples/script/defaultprototypes/defaultprototypes.pro
@@ -0,0 +1,10 @@
+QT += script
+RESOURCES += defaultprototypes.qrc
+SOURCES += main.cpp prototypes.cpp
+HEADERS += prototypes.h
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/script/defaultprototypes
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.js defaultprototypes.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/script/defaultprototypes
+INSTALLS += target sources
diff --git a/examples/script/defaultprototypes/defaultprototypes.qrc b/examples/script/defaultprototypes/defaultprototypes.qrc
new file mode 100644
index 0000000000..ada405b130
--- /dev/null
+++ b/examples/script/defaultprototypes/defaultprototypes.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>code.js</file>
+ </qresource>
+</RCC>
diff --git a/examples/script/defaultprototypes/main.cpp b/examples/script/defaultprototypes/main.cpp
new file mode 100644
index 0000000000..3245ae0327
--- /dev/null
+++ b/examples/script/defaultprototypes/main.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QtScript>
+#include "prototypes.h"
+
+//! [0]
+Q_DECLARE_METATYPE(QListWidgetItem*)
+Q_DECLARE_METATYPE(QListWidget*)
+//! [0]
+
+int main(int argc, char **argv)
+{
+ Q_INIT_RESOURCE(defaultprototypes);
+
+ QApplication app(argc, argv);
+//! [1]
+ QScriptEngine engine;
+
+ ListWidgetItemPrototype lwiProto;
+ engine.setDefaultPrototype(qMetaTypeId<QListWidgetItem*>(),
+ engine.newQObject(&lwiProto));
+
+ ListWidgetPrototype lwProto;
+ engine.setDefaultPrototype(qMetaTypeId<QListWidget*>(),
+ engine.newQObject(&lwProto));
+//! [1]
+
+//! [2]
+ QListWidget listWidget;
+ engine.globalObject().setProperty("listWidget",
+ engine.newQObject(&listWidget));
+//! [2]
+
+ QFile file(":/code.js");
+ file.open(QIODevice::ReadOnly);
+ QScriptValue result = engine.evaluate(file.readAll());
+ file.close();
+ if (engine.hasUncaughtException()) {
+ int lineNo = engine.uncaughtExceptionLineNumber();
+ qWarning() << "line" << lineNo << ":" << result.toString();
+ }
+
+ return app.exec();
+}
diff --git a/examples/script/defaultprototypes/prototypes.cpp b/examples/script/defaultprototypes/prototypes.cpp
new file mode 100644
index 0000000000..b2bad4514c
--- /dev/null
+++ b/examples/script/defaultprototypes/prototypes.cpp
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "prototypes.h"
+#include <QtGui/QListWidgetItem>
+#include <QtGui/QListWidget>
+#include <QtScript/QScriptValue>
+#include <QtScript/QScriptEngine>
+
+Q_DECLARE_METATYPE(QListWidgetItem*)
+Q_DECLARE_METATYPE(QListWidget*)
+
+//! [0]
+ListWidgetItemPrototype::ListWidgetItemPrototype(QObject *parent)
+ : QObject(parent)
+{
+}
+
+QString ListWidgetItemPrototype::text() const
+{
+ QListWidgetItem *item = qscriptvalue_cast<QListWidgetItem*>(thisObject());
+ if (item)
+ return item->text();
+ return QString();
+}
+
+void ListWidgetItemPrototype::setText(const QString &text)
+{
+ QListWidgetItem *item = qscriptvalue_cast<QListWidgetItem*>(thisObject());
+ if (item)
+ item->setText(text);
+}
+
+QString ListWidgetItemPrototype::toString() const
+{
+ return QString("ListWidgetItem(text = %0)").arg(text());
+}
+//! [0]
+
+
+
+//! [1]
+ListWidgetPrototype::ListWidgetPrototype(QObject *parent)
+ : QObject(parent)
+{
+}
+
+void ListWidgetPrototype::addItem(const QString &text)
+{
+ QListWidget *widget = qscriptvalue_cast<QListWidget*>(thisObject());
+ if (widget)
+ widget->addItem(text);
+}
+
+void ListWidgetPrototype::addItems(const QStringList &texts)
+{
+ QListWidget *widget = qscriptvalue_cast<QListWidget*>(thisObject());
+ if (widget)
+ widget->addItems(texts);
+}
+
+void ListWidgetPrototype::setBackgroundColor(const QString &colorName)
+{
+ QListWidget *widget = qscriptvalue_cast<QListWidget*>(thisObject());
+ if (widget) {
+ QPalette palette = widget->palette();
+ QColor color(colorName);
+ palette.setBrush(QPalette::Base, color);
+ widget->setPalette(palette);
+ }
+}
+//! [1]
diff --git a/examples/script/defaultprototypes/prototypes.h b/examples/script/defaultprototypes/prototypes.h
new file mode 100644
index 0000000000..76cecaa81c
--- /dev/null
+++ b/examples/script/defaultprototypes/prototypes.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PROTOTYPES_H
+#define PROTOTYPES_H
+
+#include <QtCore/QObject>
+#include <QtScript/QScriptable>
+
+//! [0]
+class ListWidgetItemPrototype : public QObject, public QScriptable
+{
+ Q_OBJECT
+ Q_PROPERTY(QString text READ text WRITE setText)
+public:
+ ListWidgetItemPrototype(QObject *parent = 0);
+
+ QString text() const;
+ void setText(const QString &text);
+
+public slots:
+ QString toString() const;
+};
+//! [0]
+
+//! [1]
+class ListWidgetPrototype : public QObject, public QScriptable
+{
+ Q_OBJECT
+public:
+ ListWidgetPrototype(QObject *parent = 0);
+
+public slots:
+ void addItem(const QString &text);
+ void addItems(const QStringList &texts);
+ void setBackgroundColor(const QString &colorName);
+};
+//! [1]
+
+#endif