From 0e11b24f0fa5ad80b7736d94368af0be527d1289 Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Thu, 7 Aug 2014 15:11:01 +0200 Subject: [PATCH] Added TranformationItem and View and necessary connection with Particle --- GUI/coregui/Models/GUIObjectBuilder.cpp | 1 + GUI/coregui/Models/ItemFactory.cpp | 3 + GUI/coregui/Models/ParticleItem.cpp | 5 +- GUI/coregui/Models/TransformationItem.cpp | 19 +++++ GUI/coregui/Models/TransformationItem.h | 18 ++++ GUI/coregui/Models/item_constants.h | 1 + .../SampleDesigner/DesignerHelper.cpp | 3 + .../SampleDesigner/DesignerHelper.h | 9 +- .../InterferenceFunctionViews.h | 7 +- .../SampleDesigner/ParticleView.cpp | 14 +++- .../Components/SampleDesigner/ParticleView.h | 2 + .../SampleDesigner/SampleViewFactory.cpp | 5 ++ .../SampleDesigner/TransformationView.cpp | 15 ++++ .../SampleDesigner/TransformationView.h | 19 +++++ .../Views/Components/widgetbox/widgetbox.xml | 84 ++++++++++--------- 15 files changed, 157 insertions(+), 48 deletions(-) create mode 100644 GUI/coregui/Models/TransformationItem.cpp create mode 100644 GUI/coregui/Models/TransformationItem.h create mode 100644 GUI/coregui/Views/Components/SampleDesigner/TransformationView.cpp create mode 100644 GUI/coregui/Views/Components/SampleDesigner/TransformationView.h diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp index 8e98343054f..69d09f28056 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.cpp +++ b/GUI/coregui/Models/GUIObjectBuilder.cpp @@ -10,6 +10,7 @@ #include "MaterialEditor.h" #include "MaterialModel.h" #include "ParticleItem.h" +#include "TransformationItem.h" #include "FormFactorItems.h" #include "InterferenceFunctionItems.h" #include "TransformFromDomain.h" diff --git a/GUI/coregui/Models/ItemFactory.cpp b/GUI/coregui/Models/ItemFactory.cpp index 195322346b8..8f7bb5848f0 100644 --- a/GUI/coregui/Models/ItemFactory.cpp +++ b/GUI/coregui/Models/ItemFactory.cpp @@ -18,6 +18,7 @@ #include "LayerItem.h" #include "ParticleLayoutItem.h" #include "ParticleItem.h" +#include "TransformationItem.h" #include "ParticleCoreShellItem.h" #include "InterferenceFunctionItems.h" #include "InstrumentItem.h" @@ -44,6 +45,7 @@ ItemFactory::ItemMap_t initializeItemMap() { result[Constants::LayerType] = &createInstance<LayerItem>; result[Constants::ParticleLayoutType] = &createInstance<ParticleLayoutItem>; result[Constants::ParticleType] = &createInstance<ParticleItem>; + result[Constants::TransformationType] = &createInstance<TransformationItem>; result[Constants::ParticleCoreShellType] = &createInstance<ParticleCoreShellItem>; result[Constants::InterferenceFunction1DParaCrystalType] = &createInstance<InterferenceFunction1DParaCrystalItem>; result[Constants::InterferenceFunction2DParaCrystalType] = &createInstance<InterferenceFunction2DParaCrystalItem>; @@ -110,6 +112,7 @@ QStringList ItemFactory::m_valid_top_item_names = QStringList() << Constants::LayerType << Constants::ParticleLayoutType << Constants::ParticleType + << Constants::TransformationType << Constants::ParticleCoreShellType << Constants::InterferenceFunction1DParaCrystalType << Constants::InterferenceFunction2DParaCrystalType diff --git a/GUI/coregui/Models/ParticleItem.cpp b/GUI/coregui/Models/ParticleItem.cpp index 9863c2d8d65..0f099b17f36 100644 --- a/GUI/coregui/Models/ParticleItem.cpp +++ b/GUI/coregui/Models/ParticleItem.cpp @@ -30,12 +30,11 @@ ParticleItem::ParticleItem(ParameterizedItem *parent) { setItemName(Constants::ParticleType); setItemPort(ParameterizedItem::PortInfo::Port0); - //registerGroupProperty(P_FORM_FACTOR, Constants::CylinderType); registerGroupProperty(P_FORM_FACTOR, Constants::FormFactorGroup); - registerProperty(P_MATERIAL, MaterialUtils::getDefaultMaterialProperty().getVariant()); - registerProperty(P_DEPTH, 0.0); registerProperty(P_ABUNDANCE, 1.0); + + addToValidChildren(Constants::TransformationType, PortInfo::Port0, 1); } diff --git a/GUI/coregui/Models/TransformationItem.cpp b/GUI/coregui/Models/TransformationItem.cpp new file mode 100644 index 00000000000..c33137c0f91 --- /dev/null +++ b/GUI/coregui/Models/TransformationItem.cpp @@ -0,0 +1,19 @@ +#include "TransformationItem.h" +#include "ParticleItem.h" +#include "GUIHelpers.h" +#include <QDebug> + +const QString TransformationItem::P_POS = "Position"; +const QString TransformationItem::P_ROT = "Rotation"; + + +TransformationItem::TransformationItem(ParameterizedItem *parent) + : ParameterizedGraphicsItem(Constants::TransformationType, parent) +{ + setItemName(Constants::TransformationType); + setItemPort(ParameterizedItem::PortInfo::Port0); + + registerGroupProperty(P_POS, Constants::VectorType); + registerGroupProperty(P_ROT, Constants::VectorType); +} + diff --git a/GUI/coregui/Models/TransformationItem.h b/GUI/coregui/Models/TransformationItem.h new file mode 100644 index 00000000000..b4c743a13d4 --- /dev/null +++ b/GUI/coregui/Models/TransformationItem.h @@ -0,0 +1,18 @@ +#ifndef TRANSFORMATIONITEM_H +#define TRANSFORMATIONITEM_H + +#include "ParameterizedGraphicsItem.h" +#include <QVector> + +class TransformationItem : public ParameterizedGraphicsItem +{ + Q_OBJECT +public: + static const QString P_POS, P_ROT; + explicit TransformationItem(ParameterizedItem *parent=0); + ~TransformationItem(){} +}; + + +#endif // TRANSFORMATIONITEM_H + diff --git a/GUI/coregui/Models/item_constants.h b/GUI/coregui/Models/item_constants.h index 9aac45c0903..8471f19af1b 100644 --- a/GUI/coregui/Models/item_constants.h +++ b/GUI/coregui/Models/item_constants.h @@ -14,6 +14,7 @@ const ModelType MultiLayerType = "MultiLayer"; const ModelType ParticleType = "Particle"; const ModelType ParticleLayoutType = "ParticleLayout"; const ModelType ParticleCoreShellType = "ParticleCoreShell"; +const ModelType TransformationType = "Transformation"; const ModelType InterferenceFunction1DParaCrystalType = "InterferenceFunction1DParaCrystal"; const ModelType InterferenceFunction2DParaCrystalType = "InterferenceFunction2DParaCrystal"; const ModelType InterferenceFunction2DLatticeType = "InterferenceFunction2DLattice"; diff --git a/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.cpp b/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.cpp index 3bd989b145b..e7bba120d10 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.cpp +++ b/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.cpp @@ -142,6 +142,9 @@ QRectF DesignerHelper::getDefaultBoundingRect(const QString &name) else if (name==Constants::ParticleLayoutType) { return QRectF(0, 0, getDefaultParticleLayoutWidth(), getDefaultParticleLayoutHeight()); } + else if (name==Constants::TransformationType) { + return QRectF(0, 0, getDefaultTransformationWidth(), getDefaultTransformationHeight()); + } else if (name.startsWith(Constants::FormFactorType) || name==Constants::ParticleType || name==Constants::ParticleCoreShellType) { return QRectF(0, 0, getDefaultParticleWidth(), getDefaultParticleHeight()); } diff --git a/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.h b/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.h index 491b93ed456..ceea41b6f05 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.h +++ b/GUI/coregui/Views/Components/SampleDesigner/DesignerHelper.h @@ -23,7 +23,8 @@ public: InterferenceFunction1DParaType, InterferenceFunction2DParaType, InterferenceFunction2DLatticeType, - ParticleType + ParticleType, + TransformationType }; static int getDefaultLayerWidth() { return m_default_layer_width; } @@ -40,10 +41,14 @@ public: static int getDefaultInterferenceFunctionWidth() { return m_default_layer_height*4; } static int getDefaultInterferenceFunctionHeight() { return m_default_layer_height*4; } - static int getDefaultParticleWidth() { return m_default_layer_height*3; } + static int getDefaultParticleWidth() { return m_default_layer_height*3.5; } static int getDefaultParticleHeight() { return m_default_layer_height*4; } static QColor getDefaultParticleColor() { return QColor(210, 223, 237); } + static int getDefaultTransformationWidth() { return m_default_layer_height*4; } + static int getDefaultTransformationHeight() { return m_default_layer_height*2; } + static QColor getDefaultTransformationColor() { return QColor(145, 50, 220); } + static int getDefaultMaterialWidth() { return m_default_layer_height*1.2; } static int getDefaultMaterialHeight() { return m_default_layer_height*1.2; } static QColor getDefaultMaterialColor() { return QColor(qrand() % 256, qrand() % 256, qrand() % 256); } diff --git a/GUI/coregui/Views/Components/SampleDesigner/InterferenceFunctionViews.h b/GUI/coregui/Views/Components/SampleDesigner/InterferenceFunctionViews.h index 51712c2db99..10f35231703 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/InterferenceFunctionViews.h +++ b/GUI/coregui/Views/Components/SampleDesigner/InterferenceFunctionViews.h @@ -1,5 +1,5 @@ -#ifndef PARACRYSTALVIEWS_H -#define PARACRYSTALVIEWS_H +#ifndef INTERFERENCEFUNCTIONVIEWS_H +#define INTERFERENCEFUNCTIONVIEWS_H #include "ConnectableView.h" @@ -41,5 +41,4 @@ public: int type() const { return Type; } }; - -#endif +#endif // INTERFERENCEFUNCTIONVIEWS_H diff --git a/GUI/coregui/Views/Components/SampleDesigner/ParticleView.cpp b/GUI/coregui/Views/Components/SampleDesigner/ParticleView.cpp index a0cdb2b0a1d..85a0619dc79 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/ParticleView.cpp +++ b/GUI/coregui/Views/Components/SampleDesigner/ParticleView.cpp @@ -1,6 +1,7 @@ #include "ParticleView.h" #include "ParticleItem.h" #include "FancyGroupProperty.h" +#include "GUIHelpers.h" #include <QPainter> #include <QStyleOptionGraphicsItem> #include <QObject> @@ -15,7 +16,7 @@ ParticleView::ParticleView(QGraphicsItem *parent) setColor(DesignerHelper::getDefaultParticleColor()); setRectangle(DesignerHelper::getDefaultBoundingRect(Constants::ParticleType)); addPort("out", NodeEditorPort::Output, NodeEditorPort::FormFactor); - addPort("rotation", NodeEditorPort::Input, NodeEditorPort::GeometryTransformation); + addPort("transformation", NodeEditorPort::Input, NodeEditorPort::GeometryTransformation); m_roundpar = 5; m_label_vspace = 45; } @@ -70,3 +71,14 @@ void ParticleView::onPropertyChange(const QString &propertyName) IView::onPropertyChange(propertyName); } } + +void ParticleView::addView(IView *childView, int /*row*/) +{ + qDebug() << "ParticleView::addView() xxx " << m_item->itemName() << childView->getParameterizedItem()->itemName() << childView->type() << DesignerHelper::ParticleType; + if(childView->type() == DesignerHelper::TransformationType) { + connectInputPort(dynamic_cast<ConnectableView *>(childView), 0); + } + else { + throw GUIHelpers::Error("ParticleView::addView() -> Error. Unknown view"); + } +} diff --git a/GUI/coregui/Views/Components/SampleDesigner/ParticleView.h b/GUI/coregui/Views/Components/SampleDesigner/ParticleView.h index a038fda06c2..3faf81c0b06 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/ParticleView.h +++ b/GUI/coregui/Views/Components/SampleDesigner/ParticleView.h @@ -23,6 +23,8 @@ public: void onPropertyChange(const QString &propertyName); + void addView(IView *childView, int row = 0); // to add Transformation + private: QPixmap m_pixmap; diff --git a/GUI/coregui/Views/Components/SampleDesigner/SampleViewFactory.cpp b/GUI/coregui/Views/Components/SampleDesigner/SampleViewFactory.cpp index 308e3a3e063..178eac0cd50 100644 --- a/GUI/coregui/Views/Components/SampleDesigner/SampleViewFactory.cpp +++ b/GUI/coregui/Views/Components/SampleDesigner/SampleViewFactory.cpp @@ -4,6 +4,7 @@ #include "LayerView.h" #include "ParticleLayoutView.h" #include "ParticleView.h" +#include "TransformationView.h" #include "ParticleCoreShellView.h" #include "InterferenceFunctionViews.h" #include "GUIHelpers.h" @@ -15,6 +16,7 @@ QStringList SampleViewFactory::m_valid_item_names = QStringList() << Constants::LayerType << Constants::ParticleLayoutType << Constants::ParticleType + << Constants::TransformationType << Constants::ParticleCoreShellType << Constants::InterferenceFunction1DParaCrystalType << Constants::InterferenceFunction2DParaCrystalType @@ -45,6 +47,9 @@ IView *SampleViewFactory::createSampleView(const QString &name) else if (name==Constants::ParticleType) { return new ParticleView(); } + else if (name==Constants::TransformationType) { + return new TransformationView(); + } else if (name==Constants::ParticleCoreShellType) { return new ParticleCoreShellView(); } diff --git a/GUI/coregui/Views/Components/SampleDesigner/TransformationView.cpp b/GUI/coregui/Views/Components/SampleDesigner/TransformationView.cpp new file mode 100644 index 00000000000..e3278f55c2a --- /dev/null +++ b/GUI/coregui/Views/Components/SampleDesigner/TransformationView.cpp @@ -0,0 +1,15 @@ +#include "TransformationView.h" +#include "DesignerHelper.h" +#include "item_constants.h" + + +TransformationView::TransformationView(QGraphicsItem *parent) + : ConnectableView(parent) +{ + setName(Constants::TransformationType); + setLabel("Transformation"); + setColor(DesignerHelper::getDefaultTransformationColor()); + setRectangle( DesignerHelper::getDefaultBoundingRect(getName()) ); + addPort("out", NodeEditorPort::Output, NodeEditorPort::GeometryTransformation); + m_roundpar = 3; +} diff --git a/GUI/coregui/Views/Components/SampleDesigner/TransformationView.h b/GUI/coregui/Views/Components/SampleDesigner/TransformationView.h new file mode 100644 index 00000000000..f62f5450c73 --- /dev/null +++ b/GUI/coregui/Views/Components/SampleDesigner/TransformationView.h @@ -0,0 +1,19 @@ +#ifndef TRANSFORMATIONVIEW_H +#define TRANSFORMATIONVIEW_H + + +#include "ConnectableView.h" + +class TransformationView : public ConnectableView +{ + Q_OBJECT + +public: + enum { Type = DesignerHelper::TransformationType }; + + TransformationView(QGraphicsItem *parent = 0); + + int type() const { return Type; } +}; + +#endif // TRANSFORMATIONVIEW_H diff --git a/GUI/coregui/Views/Components/widgetbox/widgetbox.xml b/GUI/coregui/Views/Components/widgetbox/widgetbox.xml index d9d1e56df8d..fdc8c3386a9 100644 --- a/GUI/coregui/Views/Components/widgetbox/widgetbox.xml +++ b/GUI/coregui/Views/Components/widgetbox/widgetbox.xml @@ -1,9 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <widgetbox version="0.5"> - + <category name="Layers"> - - + <categoryentry name="Multi Layer" icon="images/MultiLayer.png"> <widget class="MultiLayer"> <property name="objectName"> @@ -19,12 +18,11 @@ </property> </widget> </categoryentry> - + </category> - - + <category name="Particle layouts"> - + <categoryentry name="Basic particle layout" icon="images/ParticleLayout.png"> <widget class="ParticleLayout"> <property name="objectName"> @@ -32,12 +30,11 @@ </property> </widget> </categoryentry> - + </category> - - + <category name="Interference functions"> - + <categoryentry name="1D paracrystal" icon="images/ParaCrystal1D.png"> <widget class="InterferenceFunction1DParaCrystal"> <property name="objectName"> @@ -45,7 +42,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="2D paracrystal" icon="images/ParaCrystal2D.png"> <widget class="InterferenceFunction2DParaCrystal"> <property name="objectName"> @@ -53,8 +50,13 @@ </property> </widget> </categoryentry> +<<<<<<< HEAD <categoryentry name="2D lattice" icon="images/Lattice2D.png"> +======= + + <categoryentry name="2D lattice" icon="images/ParaCrystal2D.png"> +>>>>>>> Added TranformationItem and View and necessary connection with Particle <widget class="InterferenceFunction2DLattice"> <property name="objectName"> <string notr="true">somestring</string> @@ -63,8 +65,7 @@ </categoryentry> </category> - - + <category name="Particles"> <categoryentry name="Anisotropic pyramid" icon="images/ff_anisopyramid_32.png"> @@ -74,7 +75,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Box" icon="images/ff_box_32.png"> <widget class="FormFactorBox"> <property name="objectName"> @@ -82,7 +83,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Cone" icon="images/ff_cone_32.png"> <widget class="FormFactorCone"> <property name="objectName"> @@ -90,7 +91,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Cone6" icon="images/ff_cone6_32.png"> <widget class="FormFactorCone6"> <property name="objectName"> @@ -98,7 +99,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Cuboctahedron" icon="images/ff_cubeoct_32.png"> <widget class="FormFactorCuboctahedron"> <property name="objectName"> @@ -106,7 +107,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Cylinder" icon="images/ff_cylinder_32.png"> <widget class="FormFactorCylinder"> <property name="objectName"> @@ -114,7 +115,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Ellipsoidal cylinder" icon="images/ff_ellipscylinder_32.png"> <widget class="FormFactorEllipsoidalCylinder"> <property name="objectName"> @@ -122,7 +123,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Full sphere" icon="images/ff_fullsphere_32.png"> <widget class="FormFactorFullSphere"> <property name="objectName"> @@ -130,7 +131,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Full spheroid" icon="images/ff_fullspheroid_32.png"> <widget class="FormFactorFullSpheroid"> <property name="objectName"> @@ -138,7 +139,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Hemi ellipsoid" icon="images/ff_hemiellipsoid_32.png"> <widget class="FormFactorHemiEllipsoid"> <property name="objectName"> @@ -146,7 +147,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Prism3" icon="images/ff_prism3_32.png"> <widget class="FormFactorPrism3"> <property name="objectName"> @@ -154,7 +155,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Prism6" icon="images/ff_prism6_32.png"> <widget class="FormFactorPrism6"> <property name="objectName"> @@ -162,7 +163,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Pyramid" icon="images/ff_pyramid_32.png"> <widget class="FormFactorPyramid"> <property name="objectName"> @@ -170,7 +171,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Ripple1" icon="images/ff_ripple1_32.png"> <widget class="FormFactorRipple1"> <property name="objectName"> @@ -178,7 +179,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Ripple2" icon="images/ff_ripple2_32.png"> <widget class="FormFactorRipple2"> <property name="objectName"> @@ -194,7 +195,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Truncated sphere" icon="images/ff_truncsphere_32.png"> <widget class="FormFactorTruncatedSphere"> <property name="objectName"> @@ -202,7 +203,7 @@ </property> </widget> </categoryentry> - + <categoryentry name="Truncated spheroid" icon="images/ff_truncspheroid_32.png"> <widget class="FormFactorTruncatedSpheroid"> <property name="objectName"> @@ -210,11 +211,22 @@ </property> </widget> </categoryentry> - + + </category> + + <category name="Transformations"> + + <categoryentry name="Transformation" icon="images/Transformation.png"> + <widget class="Transformation"> + <property name="objectName"> + <string notr="true">somestring</string> + </property> + </widget> + </categoryentry> + </category> - <category name="Particle assemblies"> <categoryentry name="Core shell particle" icon="images/ParticleCoreShell.png"> @@ -224,14 +236,11 @@ </property> </widget> </categoryentry> - + </category> - - <category name="Standard samples"> - - <categoryentry name="Example #1 (no interference)" icon="images/Transformation.png"> + <categoryentry name="Example #1 (no interference)" icon="images/sample_layers2.png"> <widget class="example01"> <property name="objectName"> <string notr="true">somestring</string> @@ -280,6 +289,5 @@ </categoryentry> </category> - </widgetbox> -- GitLab