BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
HorizontalLineView Class Reference

This is a view of HorizontalLineItem mask. More...

Inheritance diagram for HorizontalLineView:
[legend]
Collaboration diagram for HorizontalLineView:
[legend]

Public Member Functions

 HorizontalLineView ()
 
virtual void addView (IShape2DView *childView, int row=0)
 
QRectF boundingRect () const
 
virtual SessionItemparameterizedItem ()
 
virtual void setParameterizedItem (SessionItem *item)
 
void setSceneAdaptor (const ISceneAdaptor *adaptor)
 
int type () const
 

Protected Slots

virtual void onChangedX ()
 
virtual void onChangedY ()
 
virtual void onPropertyChange (const QString &propertyName)
 
virtual void update_view ()
 

Protected Member Functions

bool blockOnProperty () const
 
qreal fromSceneX (qreal value) const
 convert scene coordinates to ColorMap plot coordinates More...
 
qreal fromSceneY (qreal value) const
 
QVariant itemChange (GraphicsItemChange change, const QVariant &value)
 Allows item movement along y, prevent movement along x. More...
 
void paint (QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
 
double par (const QString &property_name) const
 
void setBlockOnProperty (bool value)
 
qreal toSceneX (const QString &property_name) const
 
qreal toSceneX (qreal value) const
 
qreal toSceneY (const QString &property_name) const
 
qreal toSceneY (qreal value) const
 

Protected Attributes

const ISceneAdaptorm_adaptor
 
bool m_block_on_property_change
 
QRectF m_bounding_rect
 
SessionItemm_item
 

Private Member Functions

void onItemPropertyChange (const QString &propertyName)
 

Detailed Description

This is a view of HorizontalLineItem mask.

Definition at line 42 of file LineViews.h.

Constructor & Destructor Documentation

◆ HorizontalLineView()

HorizontalLineView::HorizontalLineView ( )

Definition at line 91 of file LineViews.cpp.

92 {
93  setFlag(QGraphicsItem::ItemIsSelectable);
94  setFlag(QGraphicsItem::ItemIsMovable);
95  setFlag(QGraphicsItem::ItemSendsGeometryChanges);
96  setCursor(Qt::SizeVerCursor);
97 }

Member Function Documentation

◆ addView()

void IShape2DView::addView ( IShape2DView childView,
int  row = 0 
)
virtualinherited

Reimplemented in PolygonView.

Definition at line 116 of file IShape2DView.cpp.

117 {
118  if (!childItems().contains(childView))
119  childView->setParentItem(this);
120 }

Referenced by MaskGraphicsScene::updateViews().

◆ blockOnProperty()

bool IShape2DView::blockOnProperty ( ) const
protectedinherited

Definition at line 127 of file IShape2DView.cpp.

128 {
130 }
bool m_block_on_property_change
Definition: IShape2DView.h:68

References IShape2DView::m_block_on_property_change.

◆ boundingRect()

QRectF IShape2DView::boundingRect ( ) const
inherited

Definition at line 36 of file IShape2DView.cpp.

37 {
38  return m_bounding_rect;
39 }
QRectF m_bounding_rect
Definition: IShape2DView.h:67

References IShape2DView::m_bounding_rect.

◆ fromSceneX()

qreal IShape2DView::fromSceneX ( qreal  value) const
protectedinherited

convert scene coordinates to ColorMap plot coordinates

Definition at line 106 of file IShape2DView.cpp.

107 {
108  return m_adaptor ? m_adaptor->fromSceneX(value) : value;
109 }
virtual qreal fromSceneX(qreal) const =0
convert scene x-coordinate to native mask coordinate
const ISceneAdaptor * m_adaptor
Definition: IShape2DView.h:66

References ISceneAdaptor::fromSceneX(), and IShape2DView::m_adaptor.

Referenced by EllipseView::mouseMoveEvent(), RectangleView::mouseMoveEvent(), EllipseView::onChangedX(), VerticalLineView::onChangedX(), RectangleView::onChangedX(), and PolygonPointView::updateParameterizedItem().

Here is the call graph for this function:

◆ fromSceneY()

qreal IShape2DView::fromSceneY ( qreal  value) const
protectedinherited

Definition at line 111 of file IShape2DView.cpp.

112 {
113  return m_adaptor ? m_adaptor->fromSceneY(value) : value;
114 }
virtual qreal fromSceneY(qreal) const =0
convert scene y-coordinate to native mask coordinate

References ISceneAdaptor::fromSceneY(), and IShape2DView::m_adaptor.

Referenced by EllipseView::mouseMoveEvent(), RectangleView::mouseMoveEvent(), EllipseView::onChangedY(), onChangedY(), RectangleView::onChangedY(), and PolygonPointView::updateParameterizedItem().

Here is the call graph for this function:

◆ itemChange()

QVariant HorizontalLineView::itemChange ( GraphicsItemChange  change,
const QVariant &  value 
)
protected

Allows item movement along y, prevent movement along x.

Definition at line 142 of file LineViews.cpp.

144 {
145  if (isSelected() && change == ItemPositionChange && scene()) {
146  QPointF newPos = value.toPointF();
147  newPos.setX(x());
148  return newPos;
149  }
150  return QGraphicsItem::itemChange(change, value);
151 }

◆ onChangedX

virtual void IShape2DView::onChangedX ( )
inlineprotectedvirtualslotinherited

Definition at line 48 of file IShape2DView.h.

48 {}

Referenced by IShape2DView::IShape2DView().

◆ onChangedY

void HorizontalLineView::onChangedY ( )
protectedvirtualslot

Definition at line 99 of file LineViews.cpp.

100 {
101  setBlockOnProperty(true);
103  setBlockOnProperty(false);
104 }
static const QString P_POSY
Definition: MaskItems.h:81
SessionItem * m_item
Definition: IShape2DView.h:65
qreal fromSceneY(qreal value) const
void setBlockOnProperty(bool value)
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References IShape2DView::fromSceneY(), IShape2DView::m_item, HorizontalLineItem::P_POSY, IShape2DView::setBlockOnProperty(), and SessionItem::setItemValue().

Here is the call graph for this function:

◆ onItemPropertyChange()

void IShape2DView::onItemPropertyChange ( const QString &  propertyName)
privateinherited

Definition at line 132 of file IShape2DView.cpp.

133 {
135  return;
136 
138 
139  bool schedule_update = false;
140  if (propertyName == MaskItem::P_MASK_VALUE) {
141  schedule_update = true;
142  } else if (propertyName == MaskItem::P_IS_VISIBLE) {
143  this->setVisible(parameterizedItem()->getItemValue(MaskItem::P_IS_VISIBLE).toBool());
144  schedule_update = true;
145  }
146 
147  onPropertyChange(propertyName);
148 
149  if (schedule_update)
150  update();
151 
153 }
virtual void onPropertyChange(const QString &)
Definition: IShape2DView.h:50
virtual SessionItem * parameterizedItem()
static const QString P_IS_VISIBLE
Definition: MaskItems.h:34
static const QString P_MASK_VALUE
Definition: MaskItems.h:33

References IShape2DView::m_block_on_property_change, IShape2DView::onPropertyChange(), MaskItem::P_IS_VISIBLE, MaskItem::P_MASK_VALUE, and IShape2DView::parameterizedItem().

Referenced by IShape2DView::setParameterizedItem().

Here is the call graph for this function:

◆ onPropertyChange

void HorizontalLineView::onPropertyChange ( const QString &  propertyName)
protectedvirtualslot

Definition at line 106 of file LineViews.cpp.

107 {
108  if (propertyName == HorizontalLineItem::P_POSY)
110 }
qreal toSceneY(const QString &property_name) const

References HorizontalLineItem::P_POSY, and IShape2DView::toSceneY().

Here is the call graph for this function:

◆ paint()

void HorizontalLineView::paint ( QPainter *  painter,
const QStyleOptionGraphicsItem *  ,
QWidget *   
)
protected

Definition at line 123 of file LineViews.cpp.

124 {
125  bool mask_value = m_item->getItemValue(MaskItem::P_MASK_VALUE).toBool();
126  painter->setBrush(MaskEditorHelper::getMaskBrush(mask_value));
127  painter->setPen(MaskEditorHelper::getMaskPen(mask_value));
128  painter->drawRect(
129  QRectF(0.0, -mask_visible_width / 2., m_bounding_rect.width(), mask_visible_width));
130 
131  if (isSelected()) {
132  QPen pen;
133  pen.setStyle(Qt::DashLine);
134  painter->setPen(pen);
135  painter->setBrush(Qt::NoBrush);
136  painter->drawRect(
137  QRectF(0.0, -mask_visible_width / 2., m_bounding_rect.width(), mask_visible_width));
138  }
139 }
static QBrush getMaskBrush(bool mask_value)
static QPen getMaskPen(bool mask_value)
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References SessionItem::getItemValue(), MaskEditorHelper::getMaskBrush(), MaskEditorHelper::getMaskPen(), IShape2DView::m_bounding_rect, IShape2DView::m_item, and MaskItem::P_MASK_VALUE.

Here is the call graph for this function:

◆ par()

double IShape2DView::par ( const QString &  property_name) const
protectedinherited

Definition at line 81 of file IShape2DView.cpp.

82 {
83  return m_item->getItemValue(property_name).toReal();
84 }

References SessionItem::getItemValue(), and IShape2DView::m_item.

Referenced by EllipseView::bottom(), RectangleView::bottom(), EllipseView::left(), RectangleView::left(), EllipseView::onPropertyChange(), EllipseView::right(), RectangleView::right(), EllipseView::top(), RectangleView::top(), and EllipseView::update_position().

Here is the call graph for this function:

◆ parameterizedItem()

SessionItem * IShape2DView::parameterizedItem ( )
virtualinherited

Definition at line 61 of file IShape2DView.cpp.

62 {
63  return m_item;
64 }

References IShape2DView::m_item.

Referenced by IShape2DView::onItemPropertyChange().

◆ setBlockOnProperty()

void IShape2DView::setBlockOnProperty ( bool  value)
protectedinherited

◆ setParameterizedItem()

void IShape2DView::setParameterizedItem ( SessionItem item)
virtualinherited

Definition at line 41 of file IShape2DView.cpp.

42 {
43  if (m_item == item) {
44  return;
45 
46  } else {
47  if (m_item)
48  m_item->mapper()->unsubscribe(this);
49 
50  m_item = item;
51  if (!m_item)
52  return;
53 
55  [this](const QString& name) { onItemPropertyChange(name); }, this);
56 
57  m_item->mapper()->setOnItemDestroy([this](SessionItem*) { m_item = 0; }, this);
58  }
59 }
void onItemPropertyChange(const QString &propertyName)
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
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString const & name(EShape k)
Definition: particles.cpp:21

References IShape2DView::m_item, SessionItem::mapper(), RealSpace::Particles::name(), IShape2DView::onItemPropertyChange(), ModelMapper::setOnItemDestroy(), ModelMapper::setOnPropertyChange(), and ModelMapper::unsubscribe().

Referenced by MaskViewFactory::createMaskView().

Here is the call graph for this function:

◆ setSceneAdaptor()

void IShape2DView::setSceneAdaptor ( const ISceneAdaptor adaptor)
inherited

Definition at line 66 of file IShape2DView.cpp.

67 {
68  ASSERT(adaptor);
69 
70  if (m_adaptor != adaptor) {
71  if (m_adaptor)
73 
74  m_adaptor = adaptor;
76  Qt::UniqueConnection);
77  update_view();
78  }
79 }
#define ASSERT(condition)
Definition: Assert.h:31
void update_request()
virtual void update_view()=0
update visual appearance of view (triggered by ISceneAdaptor)

References ASSERT, IShape2DView::m_adaptor, ISceneAdaptor::update_request(), and IShape2DView::update_view().

Referenced by MaskViewFactory::createMaskView().

Here is the call graph for this function:

◆ toSceneX() [1/2]

qreal IShape2DView::toSceneX ( const QString &  property_name) const
protectedinherited

Definition at line 86 of file IShape2DView.cpp.

87 {
88  return toSceneX(m_item->getItemValue(property_name).toReal());
89 }
qreal toSceneX(const QString &property_name) const

References SessionItem::getItemValue(), and IShape2DView::m_item.

Referenced by EllipseView::left(), RectangleView::left(), EllipseView::onPropertyChange(), VerticalLineView::onPropertyChange(), EllipseView::right(), RectangleView::right(), PolygonView::update_polygon(), EllipseView::update_position(), RectangleView::update_position(), and VerticalLineView::update_view().

Here is the call graph for this function:

◆ toSceneX() [2/2]

qreal IShape2DView::toSceneX ( qreal  value) const
protectedinherited

Definition at line 91 of file IShape2DView.cpp.

92 {
93  return m_adaptor ? m_adaptor->toSceneX(value) : value;
94 }
virtual qreal toSceneX(qreal) const =0
convert native mask x-coordinate to scene coordinate

References IShape2DView::m_adaptor, and ISceneAdaptor::toSceneX().

Here is the call graph for this function:

◆ toSceneY() [1/2]

qreal IShape2DView::toSceneY ( const QString &  property_name) const
protectedinherited

Definition at line 96 of file IShape2DView.cpp.

97 {
98  return toSceneY(m_item->getItemValue(property_name).toReal());
99 }

References SessionItem::getItemValue(), and IShape2DView::m_item.

Referenced by EllipseView::bottom(), RectangleView::bottom(), EllipseView::onPropertyChange(), onPropertyChange(), EllipseView::top(), RectangleView::top(), PolygonView::update_polygon(), EllipseView::update_position(), RectangleView::update_position(), and update_view().

Here is the call graph for this function:

◆ toSceneY() [2/2]

qreal IShape2DView::toSceneY ( qreal  value) const
protectedinherited

Definition at line 101 of file IShape2DView.cpp.

102 {
103  return m_adaptor ? m_adaptor->toSceneY(value) : value;
104 }
virtual qreal toSceneY(qreal) const =0
convert native mask y-coordinate to scene coordinate

References IShape2DView::m_adaptor, and ISceneAdaptor::toSceneY().

Here is the call graph for this function:

◆ type()

int HorizontalLineView::type ( ) const
inlinevirtual

Reimplemented from IShape2DView.

Definition at line 46 of file LineViews.h.

References MaskEditorHelper::HORIZONTALLINE.

◆ update_view

void HorizontalLineView::update_view ( )
protectedvirtualslot

Definition at line 112 of file LineViews.cpp.

113 {
114  QRectF plot_scene_rectangle = m_adaptor->viewportRectangle();
115 
116  setX(plot_scene_rectangle.left());
118 
119  m_bounding_rect = QRectF(0.0, -mask_width / 2., plot_scene_rectangle.width(), mask_width);
120  update();
121 }
virtual const QRectF & viewportRectangle() const
returns viewport rectangle in scene coordinates
Definition: ISceneAdaptor.h:39

References IShape2DView::m_adaptor, IShape2DView::m_bounding_rect, HorizontalLineItem::P_POSY, IShape2DView::toSceneY(), and ISceneAdaptor::viewportRectangle().

Here is the call graph for this function:

Member Data Documentation

◆ m_adaptor

◆ m_block_on_property_change

bool IShape2DView::m_block_on_property_change
protectedinherited

◆ m_bounding_rect

◆ m_item


The documentation for this class was generated from the following files: