BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
InterferenceFunctionRadialParaCrystalView Class Reference
Inheritance diagram for InterferenceFunctionRadialParaCrystalView:
[legend]
Collaboration diagram for InterferenceFunctionRadialParaCrystalView:
[legend]

Public Slots

virtual void onChangedX ()
 
virtual void onChangedY ()
 

Signals

void aboutToBeDeleted ()
 

Public Member Functions

 InterferenceFunctionRadialParaCrystalView (QGraphicsItem *parent=nullptr)
 
virtual NodeEditorPortaddPort (const QString &name, NodeEditorPort::EPortDirection direction, NodeEditorPort::EPortType port_type)
 adds port to view More...
 
virtual void addView (IView *childView, int row=0)
 
virtual QRectF boundingRect () const
 
void connectInputPort (ConnectableView *other, int port_number)
 connects input port with given index with output port of other view More...
 
virtual QColor getColor () const
 
int getInputPortIndex (NodeEditorPort *port)
 
QList< NodeEditorPort * > getInputPorts ()
 
virtual SessionItemgetItem ()
 
virtual QString getLabel () const
 
virtual QString getName () const
 
QList< NodeEditorPort * > getOutputPorts ()
 
virtual QRectF getRectangle () const
 
virtual void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 
virtual void setColor (const QColor &color)
 
virtual void setLabel (const QString &name)
 
virtual void setName (const QString &name)
 
virtual void setParameterizedItem (SessionItem *item)
 
virtual void setRectangle (QRectF rect)
 
int type () const
 

Protected Member Functions

virtual int getNumberOfInputPorts ()
 
virtual int getNumberOfOutputPorts ()
 
virtual int getNumberOfPorts ()
 
virtual void onPropertyChange (const QString &propertyName)
 
virtual void onSiblingsChange ()
 
virtual void setPortCoordinates ()
 
virtual void update_appearance ()
 updates visual appearance of the item (color, icons, size etc) More...
 

Protected Attributes

QColor m_color
 
QList< NodeEditorPort * > m_input_ports
 
SessionItemm_item
 
QString m_label
 
double m_label_vspace
 
QString m_name
 
QList< NodeEditorPort * > m_output_ports
 
QRectF m_rect
 
int m_roundpar
 

Private Member Functions

QString hyphenate (const QString &name) const
 

Detailed Description

Definition at line 55 of file InterferenceFunctionViews.h.

Constructor & Destructor Documentation

◆ InterferenceFunctionRadialParaCrystalView()

InterferenceFunctionRadialParaCrystalView::InterferenceFunctionRadialParaCrystalView ( QGraphicsItem *  parent = nullptr)

Definition at line 69 of file InterferenceFunctionViews.cpp.

71  : ConnectableView(parent)
72 {
73  setName("InterferenceRadialParaCrystal");
74  setColor(QColor(255, 236, 139));
77  m_roundpar = 3;
78 }
ConnectableView(QGraphicsItem *parent=0, QRectF rect={0, 0, 50, 50})
virtual void setColor(const QColor &color)
virtual void setRectangle(QRectF rect)
virtual NodeEditorPort * addPort(const QString &name, NodeEditorPort::EPortDirection direction, NodeEditorPort::EPortType port_type)
adds port to view
virtual void setName(const QString &name)
static QRectF getInterferenceFunctionBoundingRect()

References ConnectableView::addPort(), DesignerHelper::getInterferenceFunctionBoundingRect(), NodeEditorPort::INTERFERENCE, ConnectableView::m_roundpar, NodeEditorPort::OUTPUT, ConnectableView::setColor(), ConnectableView::setName(), and ConnectableView::setRectangle().

Here is the call graph for this function:

Member Function Documentation

◆ aboutToBeDeleted

void IView::aboutToBeDeleted ( )
signalinherited

◆ addPort()

NodeEditorPort * ConnectableView::addPort ( const QString &  name,
NodeEditorPort::EPortDirection  direction,
NodeEditorPort::EPortType  port_type 
)
virtualinherited

adds port to view

Definition at line 68 of file ConnectableView.cpp.

71 {
72  NodeEditorPort* port = new NodeEditorPort(this, name, direction, port_type);
73  if (direction == NodeEditorPort::INPUT) {
74  m_input_ports.append(port);
75  } else if (direction == NodeEditorPort::OUTPUT) {
76  m_output_ports.append(port);
77  } else {
78  throw GUIHelpers::Error("ConnectableView::addPort() -> Unknown port type");
79  }
81  return port;
82 }
virtual void setPortCoordinates()
QList< NodeEditorPort * > m_input_ports
QList< NodeEditorPort * > m_output_ports
QString const & name(EShape k)
Definition: particles.cpp:21

References NodeEditorPort::INPUT, ConnectableView::m_input_ports, ConnectableView::m_output_ports, RealSpace::Particles::name(), NodeEditorPort::OUTPUT, and ConnectableView::setPortCoordinates().

Referenced by InterferenceFunction1DLatticeView::InterferenceFunction1DLatticeView(), InterferenceFunction2DLatticeView::InterferenceFunction2DLatticeView(), InterferenceFunction2DParaCrystalView::InterferenceFunction2DParaCrystalView(), InterferenceFunctionFinite2DLatticeView::InterferenceFunctionFinite2DLatticeView(), InterferenceFunctionHardDiskView::InterferenceFunctionHardDiskView(), InterferenceFunctionRadialParaCrystalView(), LayerView::LayerView(), MesoCrystalView::MesoCrystalView(), ParticleCompositionView::ParticleCompositionView(), ParticleCoreShellView::ParticleCoreShellView(), ParticleDistributionView::ParticleDistributionView(), ParticleLayoutView::ParticleLayoutView(), ParticleView::ParticleView(), and TransformationView::TransformationView().

Here is the call graph for this function:

◆ addView()

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

◆ boundingRect()

virtual QRectF ConnectableView::boundingRect ( ) const
inlinevirtualinherited

Reimplemented in MultiLayerView.

Definition at line 34 of file ConnectableView.h.

34 { return getRectangle(); }
virtual QRectF getRectangle() const

References ConnectableView::getRectangle().

Referenced by ILayerView::getMultiLayerCandidate().

Here is the call graph for this function:

◆ connectInputPort()

void ConnectableView::connectInputPort ( ConnectableView other,
int  port_number 
)
inherited

connects input port with given index with output port of other view

Definition at line 90 of file ConnectableView.cpp.

91 {
92  ASSERT(other);
93 
94  if (port_number >= m_input_ports.size())
95  throw GUIHelpers::Error("ConnectableView::connectInputPort() -> Wrong input port number");
96 
97  if (other->getOutputPorts().size() != 1)
98  throw GUIHelpers::Error("ConnectableView::connectInputPort() -> Wrong output port number");
99 
100  if (port_number < 0)
101  return;
102 
103  NodeEditorPort* input = m_input_ports.at(port_number);
104  NodeEditorPort* output = other->getOutputPorts().at(0);
105 
106  if (!input->isConnected(output)) {
107  NodeEditorConnection* conn = new NodeEditorConnection(0, scene());
108  conn->setPort2(input);
109  conn->setPort1(output);
110  conn->updatePath();
111  }
112 }
#define ASSERT(condition)
Definition: Assert.h:31
QList< NodeEditorPort * > getOutputPorts()
void setPort2(NodeEditorPort *p)
void setPort1(NodeEditorPort *p)
bool isConnected(NodeEditorPort *)

References ASSERT, ConnectableView::getOutputPorts(), NodeEditorPort::isConnected(), ConnectableView::m_input_ports, NodeEditorConnection::setPort1(), NodeEditorConnection::setPort2(), and NodeEditorConnection::updatePath().

Referenced by LayerView::addView(), MesoCrystalView::addView(), ParticleCompositionView::addView(), ParticleCoreShellView::addView(), ParticleDistributionView::addView(), ParticleLayoutView::addView(), and ParticleView::addView().

Here is the call graph for this function:

◆ getColor()

virtual QColor ConnectableView::getColor ( ) const
inlinevirtualinherited

Definition at line 38 of file ConnectableView.h.

38 { return m_color; }

References ConnectableView::m_color.

◆ getInputPortIndex()

int ConnectableView::getInputPortIndex ( NodeEditorPort port)
inherited

Definition at line 114 of file ConnectableView.cpp.

115 {
116  return m_input_ports.indexOf(port);
117 }

References ConnectableView::m_input_ports.

Referenced by DesignerScene::onEstablishedConnection().

◆ getInputPorts()

QList<NodeEditorPort*> ConnectableView::getInputPorts ( )
inlineinherited

Definition at line 51 of file ConnectableView.h.

51 { return m_input_ports; }

References ConnectableView::m_input_ports.

Referenced by ILayerView::updateLabel().

◆ getItem()

◆ getLabel()

virtual QString ConnectableView::getLabel ( ) const
inlinevirtualinherited

Reimplemented in ILayerView.

Definition at line 41 of file ConnectableView.h.

41 { return m_label; }

References ConnectableView::m_label.

Referenced by ConnectableView::setPortCoordinates().

◆ getName()

virtual QString ConnectableView::getName ( ) const
inlinevirtualinherited

Definition at line 37 of file ConnectableView.h.

37 { return m_name; }

References ConnectableView::m_name.

◆ getNumberOfInputPorts()

int ConnectableView::getNumberOfInputPorts ( )
protectedvirtualinherited

Definition at line 168 of file ConnectableView.cpp.

169 {
170  return m_input_ports.size();
171 }

References ConnectableView::m_input_ports.

◆ getNumberOfOutputPorts()

int ConnectableView::getNumberOfOutputPorts ( )
protectedvirtualinherited

Definition at line 163 of file ConnectableView.cpp.

164 {
165  return m_output_ports.size();
166 }

References ConnectableView::m_output_ports.

Referenced by ConnectableView::setPortCoordinates().

◆ getNumberOfPorts()

int ConnectableView::getNumberOfPorts ( )
protectedvirtualinherited

Definition at line 158 of file ConnectableView.cpp.

159 {
160  return m_input_ports.size() + m_output_ports.size();
161 }

References ConnectableView::m_input_ports, and ConnectableView::m_output_ports.

Referenced by ConnectableView::setPortCoordinates().

◆ getOutputPorts()

QList<NodeEditorPort*> ConnectableView::getOutputPorts ( )
inlineinherited

Definition at line 52 of file ConnectableView.h.

52 { return m_output_ports; }

References ConnectableView::m_output_ports.

Referenced by ConnectableView::connectInputPort().

◆ getRectangle()

virtual QRectF ConnectableView::getRectangle ( ) const
inlinevirtualinherited

◆ hyphenate()

QString ConnectableView::hyphenate ( const QString &  name) const
privateinherited

Definition at line 179 of file ConnectableView.cpp.

180 {
181  QRegExp capital_letter("[A-Z]");
182  QRegExp number("[0-9]");
183  int next_capital = capital_letter.indexIn(name, 1);
184  int next_number = number.indexIn(name, 1);
185  if (next_capital > 0 && next_capital < name.size() - 2) {
186  int first_split_index =
187  (next_number > 0 && next_number < next_capital) ? next_number : next_capital;
188  QString result = name.left(first_split_index) + QString("\n")
189  + name.right(name.size() - first_split_index);
190  return result;
191  }
192  return name;
193 }

References RealSpace::Particles::name().

Referenced by ConnectableView::update_appearance().

Here is the call graph for this function:

◆ onChangedX

void IView::onChangedX ( )
virtualslotinherited

Definition at line 55 of file IView.cpp.

56 {
57  if (!m_item)
58  return;
60 }
static const QString P_XPOS
void setItemValue(const QString &tag, const QVariant &variant)
Directly set value of item under given tag.

References IView::m_item, SessionGraphicsItem::P_XPOS, and SessionItem::setItemValue().

Referenced by IView::IView().

Here is the call graph for this function:

◆ onChangedY

void IView::onChangedY ( )
virtualslotinherited

Definition at line 62 of file IView.cpp.

63 {
64  if (!m_item)
65  return;
67 }
static const QString P_YPOS

References IView::m_item, SessionGraphicsItem::P_YPOS, and SessionItem::setItemValue().

Referenced by IView::IView().

Here is the call graph for this function:

◆ onPropertyChange()

void IView::onPropertyChange ( const QString &  propertyName)
protectedvirtualinherited

Reimplemented in ParticleView.

Definition at line 75 of file IView.cpp.

76 {
77  ASSERT(m_item);
78  if (propertyName == SessionGraphicsItem::P_XPOS) {
80  } else if (propertyName == SessionGraphicsItem::P_YPOS) {
82  }
83 }
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.

References ASSERT, SessionItem::getItemValue(), IView::m_item, SessionGraphicsItem::P_XPOS, and SessionGraphicsItem::P_YPOS.

Referenced by ILayerView::onPropertyChange(), ParticleView::onPropertyChange(), and IView::setParameterizedItem().

Here is the call graph for this function:

◆ onSiblingsChange()

void IView::onSiblingsChange ( )
protectedvirtualinherited

Definition at line 85 of file IView.cpp.

86 {
88 }
virtual void update_appearance()
updates visual appearance of the item (color, icons, size etc)
Definition: IView.cpp:70

References IView::update_appearance().

Referenced by IView::setParameterizedItem().

Here is the call graph for this function:

◆ paint()

void ConnectableView::paint ( QPainter *  painter,
const QStyleOptionGraphicsItem *  option,
QWidget *  widget 
)
virtualinherited

Reimplemented in MultiLayerView, ParticleView, and LayerView.

Definition at line 41 of file ConnectableView.cpp.

43 {
44  Q_UNUSED(widget);
45 
46  painter->setPen(Qt::gray);
47  if (option->state & (QStyle::State_Selected | QStyle::State_HasFocus)) {
48  painter->setPen(Qt::DashLine);
49  }
50 
52  painter->drawRoundedRect(getRectangle(), m_roundpar, m_roundpar);
53 
54  if (m_label.isEmpty())
55  return;
56 
57  painter->setPen(Qt::black);
58  double width = getRectangle().width() * 0.9;
59  double yoffset = StyleUtils::SizeOfLetterM().height() / 2; // space above the label
60  double height = m_label_vspace - yoffset;
61  QFont serifFont("Monospace", DesignerHelper::getLabelFontSize(), QFont::Normal);
62  painter->setFont(serifFont);
63  QRectF textRect(getRectangle().x() + (getRectangle().width() - width) / 2.,
64  getRectangle().y() + yoffset, width, height);
65  painter->drawText(textRect, Qt::AlignCenter, m_label);
66 }
static QGradient getDecorationGradient(const QColor &color, const QRectF &rect)
static int getLabelFontSize()
QSize SizeOfLetterM(const QWidget *widget=nullptr)
Returns size of largest letter of default system font.
Definition: StyleUtils.cpp:110

References DesignerHelper::getDecorationGradient(), DesignerHelper::getLabelFontSize(), ConnectableView::getRectangle(), ConnectableView::m_color, ConnectableView::m_label, ConnectableView::m_label_vspace, ConnectableView::m_roundpar, and StyleUtils::SizeOfLetterM().

Here is the call graph for this function:

◆ setColor()

◆ setLabel()

void ConnectableView::setLabel ( const QString &  name)
virtualinherited

Definition at line 84 of file ConnectableView.cpp.

85 {
86  m_label = name;
88 }

References ConnectableView::m_label, RealSpace::Particles::name(), and ConnectableView::setPortCoordinates().

Referenced by ConnectableView::update_appearance().

Here is the call graph for this function:

◆ setName()

◆ setParameterizedItem()

void IView::setParameterizedItem ( SessionItem item)
virtualinherited

Definition at line 31 of file IView.cpp.

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 }
virtual void onPropertyChange(const QString &propertyName)
Definition: IView.cpp:75
virtual void onSiblingsChange()
Definition: IView.cpp:85
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
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString toolTip() const

References ASSERT, SessionItem::getItemValue(), IView::m_item, SessionItem::mapper(), RealSpace::Particles::name(), IView::onPropertyChange(), IView::onSiblingsChange(), SessionGraphicsItem::P_XPOS, SessionGraphicsItem::P_YPOS, ModelMapper::setOnItemDestroy(), ModelMapper::setOnPropertyChange(), ModelMapper::setOnSiblingsChange(), SessionItem::toolTip(), and IView::update_appearance().

Referenced by DesignerScene::addViewForItem().

Here is the call graph for this function:

◆ setPortCoordinates()

void ConnectableView::setPortCoordinates ( )
protectedvirtualinherited

Definition at line 120 of file ConnectableView.cpp.

121 {
122  if (!getNumberOfPorts())
123  return;
124 
125  // without main label ports can be placed over all rectangle vertical space
126  double hspace = getRectangle().height();
127  if (!getLabel().isEmpty())
128  hspace -= m_label_vspace;
129 
130  double nintervals =
131  getNumberOfPorts() + 2; // one spare interval for margin between input/output ports
132 
133  double dy = hspace / double(nintervals);
134  double ypos = getRectangle().height() - hspace + dy;
135 
136  if (getNumberOfPorts() == 1) {
137  // if total number of ports is 1, place it in the middle
138  ypos = getRectangle().height() - hspace + hspace / 2;
139  }
140  int nOutPorts = getNumberOfOutputPorts();
141  int nport(0);
142  for (QGraphicsItem* item : childItems()) {
143  NodeEditorPort* port = dynamic_cast<NodeEditorPort*>(item);
144  if (!port)
145  continue;
146  if (port->isOutput()) {
147  port->setPos(getRectangle().width(), ypos);
148  } else {
149  if (nport == nOutPorts && nOutPorts != 0)
150  ypos += dy; // additional margin between output and input ports
151  port->setPos(0.0, ypos);
152  }
153  ypos += dy;
154  nport++;
155  }
156 }
virtual QString getLabel() const
virtual int getNumberOfPorts()
virtual int getNumberOfOutputPorts()

References ConnectableView::getLabel(), ConnectableView::getNumberOfOutputPorts(), ConnectableView::getNumberOfPorts(), ConnectableView::getRectangle(), NodeEditorPort::isOutput(), and ConnectableView::m_label_vspace.

Referenced by ConnectableView::addPort(), ConnectableView::setLabel(), and ILayerView::updateHeight().

Here is the call graph for this function:

◆ setRectangle()

◆ type()

int InterferenceFunctionRadialParaCrystalView::type ( ) const
inline

◆ update_appearance()

void ConnectableView::update_appearance ( )
protectedvirtualinherited

updates visual appearance of the item (color, icons, size etc)

Reimplemented from IView.

Reimplemented in ParticleView, and ILayerView.

Definition at line 173 of file ConnectableView.cpp.

174 {
177 }
QString hyphenate(const QString &name) const
virtual void setLabel(const QString &name)
QString displayName() const
Get display name of item, append index if ambigue.

References SessionItem::displayName(), ConnectableView::hyphenate(), IView::m_item, ConnectableView::setLabel(), and IView::update_appearance().

Referenced by ILayerView::update_appearance(), and ParticleView::update_appearance().

Here is the call graph for this function:

Member Data Documentation

◆ m_color

QColor ConnectableView::m_color
protectedinherited

◆ m_input_ports

◆ m_item

◆ m_label

QString ConnectableView::m_label
protectedinherited

◆ m_label_vspace

◆ m_name

QString ConnectableView::m_name
protectedinherited

Definition at line 66 of file ConnectableView.h.

Referenced by ConnectableView::getName(), and ConnectableView::setName().

◆ m_output_ports

QList<NodeEditorPort*> ConnectableView::m_output_ports
protectedinherited

◆ m_rect

◆ m_roundpar


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