BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
IView.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Views/SampleDesigner/IView.cpp
6 //! @brief Implements interface IView
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
17 #include <QString>
18 
19 IView::IView(QGraphicsItem* parent) : QGraphicsObject(parent), m_item(0)
20 {
21  connect(this, &IView::xChanged, this, &IView::onChangedX);
22  connect(this, &IView::yChanged, this, &IView::onChangedY);
23 }
24 
26 {
27  if (m_item)
28  m_item->mapper()->unsubscribe(this);
29 }
30 
32 {
33  ASSERT(item);
34  ASSERT(m_item == nullptr);
35 
36  if (toolTip().isEmpty())
37  setToolTip(item->toolTip());
38 
39  m_item = item;
42 
43  m_item->mapper()->setOnPropertyChange([this](const QString& name) { onPropertyChange(name); },
44  this);
45 
46  m_item->mapper()->setOnSiblingsChange([this]() { onSiblingsChange(); }, this);
47 
48  m_item->mapper()->setOnItemDestroy([this](SessionItem*) { m_item = 0; }, this);
49 
51 }
52 
53 void IView::addView(IView*, int) {}
54 
56 {
57  if (!m_item)
58  return;
60 }
61 
63 {
64  if (!m_item)
65  return;
67 }
68 
69 //! updates visual appearance of the item (color, icons, size etc)
71 {
72  update();
73 }
74 
75 void IView::onPropertyChange(const QString& propertyName)
76 {
77  ASSERT(m_item);
78  if (propertyName == SessionGraphicsItem::P_XPOS) {
80  } else if (propertyName == SessionGraphicsItem::P_YPOS) {
82  }
83 }
84 
86 {
88 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines interface IView.
Defines class SessionGraphicsItem.
parent class for graphic representation of all ISampleNode's
Definition: IView.h:25
virtual void onChangedY()
Definition: IView.cpp:62
virtual void onPropertyChange(const QString &propertyName)
Definition: IView.cpp:75
virtual ~IView()
Definition: IView.cpp:25
virtual void setParameterizedItem(SessionItem *item)
Definition: IView.cpp:31
virtual void onSiblingsChange()
Definition: IView.cpp:85
virtual void update_appearance()
updates visual appearance of the item (color, icons, size etc)
Definition: IView.cpp:70
virtual void onChangedX()
Definition: IView.cpp:55
IView(QGraphicsItem *parent=0)
Definition: IView.cpp:19
SessionItem * m_item
Definition: IView.h:51
virtual void addView(IView *childView, int row=0)
Definition: IView.cpp:53
void unsubscribe(const void *caller)
Cancells all subscribtion of given caller.
Definition: ModelMapper.cpp:98
void setOnItemDestroy(std::function< void(SessionItem *)> f, const void *caller=0)
Definition: ModelMapper.cpp:87
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
void setOnSiblingsChange(std::function< void(void)> f, const void *caller=0)
Definition: ModelMapper.cpp:73
static const QString P_XPOS
static const QString P_YPOS
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString toolTip() const
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.
QString const & name(EShape k)
Definition: particles.cpp:21