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

This is a View of polygon point for PolygonMaskItem. More...

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

Signals

void closePolygonRequest (bool)
 
void propertyChanged ()
 

Public Member Functions

 PolygonPointView ()
 
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
 
void updateParameterizedItem (const QPointF &pos)
 

Protected Slots

virtual void onChangedX ()
 
virtual void onChangedY ()
 
virtual void onPropertyChange (const QString &)
 
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
 
void hoverEnterEvent (QGraphicsSceneHoverEvent *event)
 
void hoverLeaveEvent (QGraphicsSceneHoverEvent *event)
 
void mouseMoveEvent (QGraphicsSceneMouseEvent *event)
 
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)
 

Private Attributes

bool m_on_hover
 

Detailed Description

This is a View of polygon point for PolygonMaskItem.

Definition at line 22 of file PolygonPointView.h.

Constructor & Destructor Documentation

◆ PolygonPointView()

PolygonPointView::PolygonPointView ( )

Definition at line 20 of file PolygonPointView.cpp.

20  : m_on_hover(false)
21 {
22  setFlag(QGraphicsItem::ItemIsMovable);
23  setFlag(QGraphicsItem::ItemSendsGeometryChanges);
24 }

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 PolygonPointView::boundingRect ( ) const

Definition at line 26 of file PolygonPointView.cpp.

27 {
28  return QRectF(-4, -4, 8, 8);
29 }

Referenced by paint().

◆ closePolygonRequest

void PolygonPointView::closePolygonRequest ( bool  )
signal

◆ 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 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(), HorizontalLineView::onChangedY(), RectangleView::onChangedY(), and updateParameterizedItem().

Here is the call graph for this function:

◆ hoverEnterEvent()

void PolygonPointView::hoverEnterEvent ( QGraphicsSceneHoverEvent *  event)
protected

Definition at line 64 of file PolygonPointView.cpp.

65 {
66  m_on_hover = true;
68  IShape2DView::hoverEnterEvent(event);
69 }
void closePolygonRequest(bool)

References closePolygonRequest(), and m_on_hover.

◆ hoverLeaveEvent()

void PolygonPointView::hoverLeaveEvent ( QGraphicsSceneHoverEvent *  event)
protected

Definition at line 71 of file PolygonPointView.cpp.

72 {
73  m_on_hover = false;
75  IShape2DView::hoverLeaveEvent(event);
76 }

References closePolygonRequest(), and m_on_hover.

◆ mouseMoveEvent()

void PolygonPointView::mouseMoveEvent ( QGraphicsSceneMouseEvent *  event)
protected

Definition at line 59 of file PolygonPointView.cpp.

60 {
61  updateParameterizedItem(event->scenePos());
62 }
void updateParameterizedItem(const QPointF &pos)

References updateParameterizedItem().

Here is the call graph for this function:

◆ onChangedX

virtual void IShape2DView::onChangedX ( )
inlineprotectedvirtualslotinherited

Definition at line 48 of file IShape2DView.h.

48 {}

Referenced by IShape2DView::IShape2DView().

◆ onChangedY

virtual void IShape2DView::onChangedY ( )
inlineprotectedvirtualslotinherited

Definition at line 49 of file IShape2DView.h.

49 {}

Referenced by IShape2DView::IShape2DView().

◆ 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 PolygonPointView::onPropertyChange ( const QString &  )
protectedvirtualslot

Definition at line 42 of file PolygonPointView.cpp.

43 {
44  emit propertyChanged();
45 }
void propertyChanged()

References propertyChanged().

◆ paint()

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

Definition at line 47 of file PolygonPointView.cpp.

48 {
49  painter->setRenderHints(QPainter::Antialiasing);
51  if (acceptHoverEvents() && m_on_hover) {
52  brush.setColor(Qt::red);
53  }
54  painter->setBrush(brush);
55  painter->setPen(MaskEditorHelper::getSelectionMarkerPen());
56  painter->drawEllipse(boundingRect());
57 }
static QPen getSelectionMarkerPen()
static QBrush getSelectionMarkerBrush()
QRectF boundingRect() const

References boundingRect(), MaskEditorHelper::getSelectionMarkerBrush(), MaskEditorHelper::getSelectionMarkerPen(), and m_on_hover.

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 }
SessionItem * m_item
Definition: IShape2DView.h:65
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

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().

◆ propertyChanged

void PolygonPointView::propertyChanged ( )
signal

◆ 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 }
qreal toSceneY(const QString &property_name) const

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

Referenced by EllipseView::bottom(), RectangleView::bottom(), EllipseView::onPropertyChange(), HorizontalLineView::onPropertyChange(), EllipseView::top(), RectangleView::top(), PolygonView::update_polygon(), EllipseView::update_position(), RectangleView::update_position(), and HorizontalLineView::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 PolygonPointView::type ( ) const
inlinevirtual

Reimplemented from IShape2DView.

Definition at line 26 of file PolygonPointView.h.

References MaskEditorHelper::POLYGONPOINT.

◆ update_view

void PolygonPointView::update_view ( )
protectedvirtualslot

Definition at line 37 of file PolygonPointView.cpp.

38 {
39  update();
40 }

◆ updateParameterizedItem()

void PolygonPointView::updateParameterizedItem ( const QPointF &  pos)

Definition at line 31 of file PolygonPointView.cpp.

32 {
35 }
qreal fromSceneY(qreal value) const
qreal fromSceneX(qreal value) const
convert scene coordinates to ColorMap plot coordinates
static const QString P_POSX
Definition: MaskItems.h:57
static const QString P_POSY
Definition: MaskItems.h:58
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References IShape2DView::fromSceneX(), IShape2DView::fromSceneY(), IShape2DView::m_item, PolygonPointItem::P_POSX, PolygonPointItem::P_POSY, and SessionItem::setItemValue().

Referenced by mouseMoveEvent(), and PolygonView::update_points().

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

◆ m_on_hover

bool PolygonPointView::m_on_hover
private

Definition at line 49 of file PolygonPointView.h.

Referenced by hoverEnterEvent(), hoverLeaveEvent(), and paint().


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