[gegl-qt] QML: Expose NodeViewOptions, update example



commit 90850d175a62d98bf324f0b58f09f3868bc9fe2b
Author: Jon Nordby <jononor gmail com>
Date:   Fri Sep 23 18:57:19 2011 +0200

    QML: Expose NodeViewOptions, update example

 examples/qml-basic/qml-basic.cpp    |    1 +
 examples/qml-basic/qml-basic.qml    |   14 ++++++++++----
 gegl-qt/nodeviewdeclarativeitem.cpp |    9 +++++++++
 gegl-qt/nodeviewdeclarativeitem.h   |    6 +++++-
 gegl-qt/nodeviewoptions.h           |    2 ++
 plugins/qml-plugin/qml-plugin.cpp   |    1 +
 6 files changed, 28 insertions(+), 5 deletions(-)
---
diff --git a/examples/qml-basic/qml-basic.cpp b/examples/qml-basic/qml-basic.cpp
index a16fedc..5d07ae4 100644
--- a/examples/qml-basic/qml-basic.cpp
+++ b/examples/qml-basic/qml-basic.cpp
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
     QDeclarativeView view;
     // Expose the gegl node to QML, so it can be used there
     view.rootContext()->setContextProperty("globalNode", nodeVariant);
+    view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
     view.setSource(QUrl("qrc:/qml-basic.qml"));
     view.show();
     int retCode = a.exec();
diff --git a/examples/qml-basic/qml-basic.qml b/examples/qml-basic/qml-basic.qml
index 1e094c5..96b2e50 100644
--- a/examples/qml-basic/qml-basic.qml
+++ b/examples/qml-basic/qml-basic.qml
@@ -3,10 +3,16 @@ import GeglQt 0.1 as GeglQt
 
 GeglQt.NodeView {
     inputNode: globalNode
-    x: 0
-    y: 0
-    width: 1000
-    height: 1000
+
+    height: 500
+    width: 500
+
+    options: GeglQt.NodeViewOptions {
+        translationX: 0
+        translationY: 0
+        autoScalePolicy: GeglQt.NodeViewOptions.AutoScaleToView
+        autoCenterPolicy: GeglQt.NodeViewOptions.AutoCenterEnabled
+    }
 }
 
 
diff --git a/gegl-qt/nodeviewdeclarativeitem.cpp b/gegl-qt/nodeviewdeclarativeitem.cpp
index 6e858bb..9ab6d4d 100644
--- a/gegl-qt/nodeviewdeclarativeitem.cpp
+++ b/gegl-qt/nodeviewdeclarativeitem.cpp
@@ -68,6 +68,15 @@ NodeViewDeclarativeItem::inputNodeVariant()
     return qVariantFromValue(static_cast<void*>(inputNode()));
 }
 
+void
+NodeViewDeclarativeItem::setOptions(GeglQt::NodeViewOptions* newOptions)
+{
+    if (newOptions != options()) {
+        priv->setOptions(newOptions);
+        Q_EMIT optionsChanged();
+    }
+}
+
 NodeViewOptions *
 NodeViewDeclarativeItem::options() const
 {
diff --git a/gegl-qt/nodeviewdeclarativeitem.h b/gegl-qt/nodeviewdeclarativeitem.h
index af3439e..a844643 100644
--- a/gegl-qt/nodeviewdeclarativeitem.h
+++ b/gegl-qt/nodeviewdeclarativeitem.h
@@ -47,7 +47,10 @@ public:
 
     Q_PROPERTY(QVariant inputNode READ inputNodeVariant WRITE setInputNodeVariant NOTIFY inputNodeChanged)
 
-    Q_INVOKABLE GeglQt::NodeViewOptions *options() const;
+    GeglQt::NodeViewOptions *options() const;
+    void setOptions(GeglQt::NodeViewOptions* newOptions);
+
+    Q_PROPERTY(GeglQt::NodeViewOptions * options READ options WRITE setOptions NOTIFY optionsChanged)
 
     //! reimpl
     void geometryChanged(const QRectF & newGeometry, const QRectF & oldGeometry);
@@ -56,6 +59,7 @@ public:
 
 Q_SIGNALS:
     void inputNodeChanged();
+    void optionsChanged();
 
 private Q_SLOTS:
     void invalidate(QRectF rect);
diff --git a/gegl-qt/nodeviewoptions.h b/gegl-qt/nodeviewoptions.h
index a6a847f..a50c1b1 100644
--- a/gegl-qt/nodeviewoptions.h
+++ b/gegl-qt/nodeviewoptions.h
@@ -29,6 +29,8 @@ namespace GeglQt
 class NodeViewOptions : public QObject
 {
     Q_OBJECT
+    Q_ENUMS(AutoCenter)
+    Q_ENUMS(AutoScale)
 
 public:
     explicit NodeViewOptions(QObject *parent = 0);
diff --git a/plugins/qml-plugin/qml-plugin.cpp b/plugins/qml-plugin/qml-plugin.cpp
index b36f074..f3102fc 100644
--- a/plugins/qml-plugin/qml-plugin.cpp
+++ b/plugins/qml-plugin/qml-plugin.cpp
@@ -15,6 +15,7 @@ QmlPlugin::QmlPlugin(QObject *parent) :
 void QmlPlugin::registerTypes(const char *uri)
 {
     qmlRegisterType<NodeViewDeclarativeItem>(uri, 0, 1, "NodeView");
+    qmlRegisterType<NodeViewOptions>(uri, 0, 1, "NodeViewOptions");
 }
 
 Q_EXPORT_PLUGIN2(qmlplugin, QmlPlugin)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]