BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ModelView::GraphPlotController Class Reference

Establish communication between QCPGraph and GraphItem. More...

Inheritance diagram for ModelView::GraphPlotController:
[legend]
Collaboration diagram for ModelView::GraphPlotController:
[legend]

Classes

struct  GraphItemControllerImpl
 

Public Member Functions

 GraphPlotController (QCustomPlot *plot)
 
 ~GraphPlotController () override
 
GraphItemcurrentItem () const
 
void setItem (SessionItem *item)
 
void setOnAboutToRemoveItem (Callbacks::item_tagrow_t f)
 
void setOnChildPropertyChange (Callbacks::item_str_t f)
 Sets callback to be notified on item's children property change. More...
 
void setOnDataChange (Callbacks::item_int_t f)
 Sets callback to be notified on item's data change. More...
 
void setOnItemDestroy (Callbacks::item_t f)
 
void setOnItemInserted (Callbacks::item_tagrow_t f)
 Sets callback to be notified on child insertion. More...
 
void setOnItemRemoved (Callbacks::item_tagrow_t f)
 Sets callback to be notified on child removal. More...
 
void setOnPropertyChange (Callbacks::item_str_t f)
 Sets callback to be notified on item's property change. More...
 

Protected Member Functions

SessionItemitem () const
 For necessary manipulations on unsubscription. More...
 
void subscribe () override
 
void unsubscribe () override
 For necessary manipulations on new item. More...
 

Private Member Functions

void unsubscribe_from_current ()
 

Private Attributes

SessionItemm_item {nullptr}
 
std::unique_ptr< GraphItemControllerImplp_impl
 

Detailed Description

Establish communication between QCPGraph and GraphItem.

Provides update on QCPGraph (data points, line style, color, etc) when GraphItem is changed. QCPGraph is added to QCustomPlot plottables, when controller is created, and removed from plottables when controller is destroyed.

Definition at line 33 of file graphplotcontroller.h.

Constructor & Destructor Documentation

◆ GraphPlotController()

GraphPlotController::GraphPlotController ( QCustomPlot *  plot)
explicit

Definition at line 82 of file graphplotcontroller.cpp.

83  : p_impl(std::make_unique<GraphItemControllerImpl>(this, custom_plot))
84 {
85 }
std::unique_ptr< GraphItemControllerImpl > p_impl

◆ ~GraphPlotController()

GraphPlotController::~GraphPlotController ( )
overridedefault

Member Function Documentation

◆ currentItem()

GraphItem * ModelView::ItemListener< GraphItem >::currentItem ( ) const
inlineinherited

Definition at line 28 of file itemlistener.h.

28 { return static_cast<T*>(item()); }
SessionItem * item() const
For necessary manipulations on unsubscription.

◆ item()

◆ setItem()

void ModelView::ItemListenerBase::setItem ( ModelView::SessionItem item)
inherited

Definition at line 30 of file itemlistenerbase.cpp.

31 {
32  if (m_item == item)
33  return;
34 
36 
37  m_item = item;
38 
39  if (!m_item)
40  return;
41 
42  auto on_item_destroy = [this](auto) {
43  m_item = nullptr;
44  unsubscribe();
45  };
46  m_item->mapper()->setOnItemDestroy(on_item_destroy, this);
47 
48  subscribe();
49 }
virtual void unsubscribe()
For necessary manipulations on new item.
void setOnItemDestroy(Callbacks::item_t f, Callbacks::slot_t owner) override
Definition: itemmapper.cpp:179
ItemMapper * mapper()
Returns item mapper. Allows subscribing to various events happening to the item.

Referenced by ModelView::ItemListenerBase::ItemListenerBase(), and TEST_F().

◆ setOnAboutToRemoveItem()

void ModelView::ItemListenerBase::setOnAboutToRemoveItem ( Callbacks::item_tagrow_t  f)
inherited

Definition at line 102 of file itemlistenerbase.cpp.

103 {
104  item()->mapper()->setOnAboutToRemoveItem(f, this);
105 }
void setOnAboutToRemoveItem(Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
Sets callback to be notified when row is about to be removed.
Definition: itemmapper.cpp:209

Referenced by ModelView::GraphViewportPlotController::subscribe().

◆ setOnChildPropertyChange()

void ModelView::ItemListenerBase::setOnChildPropertyChange ( Callbacks::item_str_t  f)
inherited

Sets callback to be notified on item's children property change.

Callback will be called with (compound_item, property_name). For MultiLayer containing the layer with "thickness" property, the signal will be triggered on thickness change using (layeritem*, "thickness") as callback parameters.

Definition at line 77 of file itemlistenerbase.cpp.

78 {
79  item()->mapper()->setOnChildPropertyChange(f, this);
80 }
void setOnChildPropertyChange(Callbacks::item_str_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's children property change.
Definition: itemmapper.cpp:194

◆ setOnDataChange()

void ModelView::ItemListenerBase::setOnDataChange ( Callbacks::item_int_t  f)
inherited

Sets callback to be notified on item's data change.

Callback will be called with (SessionItem*, data_role).

Definition at line 59 of file itemlistenerbase.cpp.

60 {
61  item()->mapper()->setOnDataChange(f, this);
62 }
void setOnDataChange(Callbacks::item_int_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's data change.
Definition: itemmapper.cpp:184

Referenced by ModelView::Data2DPlotController::subscribe().

◆ setOnItemDestroy()

void ModelView::ItemListenerBase::setOnItemDestroy ( Callbacks::item_t  f)
inherited

Definition at line 51 of file itemlistenerbase.cpp.

52 {
53  item()->mapper()->setOnItemDestroy(f, this);
54 }

◆ setOnItemInserted()

void ModelView::ItemListenerBase::setOnItemInserted ( Callbacks::item_tagrow_t  f)
inherited

Sets callback to be notified on child insertion.

Callback will be called with (compound_item, tag, row). For MultiLayer containing the T_LAYERS tag, the signal will be triggered on layer insertion with (multilayer*, {T_LAYER, row}) as callback parameters.

Definition at line 87 of file itemlistenerbase.cpp.

88 {
89  item()->mapper()->setOnItemInserted(f, this);
90 }
void setOnItemInserted(Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
Sets callback to be notified on child insertion.
Definition: itemmapper.cpp:199

Referenced by ModelView::ColorMapViewportPlotController::subscribe(), and ModelView::GraphViewportPlotController::subscribe().

◆ setOnItemRemoved()

void ModelView::ItemListenerBase::setOnItemRemoved ( Callbacks::item_tagrow_t  f)
inherited

Sets callback to be notified on child removal.

Callback will be called with (compound_item, tag, row). For MultiLayer containing the T_LAYERS tag, the signal will be triggered on layer removal with (multilayer*, {T_LAYER, oldrow}) as callback parameters.

Definition at line 97 of file itemlistenerbase.cpp.

98 {
99  item()->mapper()->setOnItemRemoved(f, this);
100 }
void setOnItemRemoved(Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
Sets callback to be notified on child removal.
Definition: itemmapper.cpp:204

◆ setOnPropertyChange()

void ModelView::ItemListenerBase::setOnPropertyChange ( Callbacks::item_str_t  f)
inherited

Sets callback to be notified on item's property change.

Callback will be called with (compound_item, property_name).

Definition at line 67 of file itemlistenerbase.cpp.

68 {
69  item()->mapper()->setOnPropertyChange(f, this);
70 }
void setOnPropertyChange(Callbacks::item_str_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's property change.
Definition: itemmapper.cpp:189

Referenced by ModelView::AxisTitleController::subscribe(), ModelView::ColorMapPlotController::subscribe(), ModelView::ColorScalePlotController::subscribe(), ModelView::Data1DPlotController::subscribe(), subscribe(), ModelView::PenController::subscribe(), and ModelView::ViewportAxisPlotController::subscribe().

◆ subscribe()

void GraphPlotController::subscribe ( )
overrideprotectedvirtual

Reimplemented from ModelView::ItemListenerBase.

Definition at line 87 of file graphplotcontroller.cpp.

88 {
89  auto on_property_change = [this](SessionItem*, const std::string& property_name) {
90  if (property_name == GraphItem::P_LINK)
91  p_impl->update_data_controller();
92 
93  if (property_name == GraphItem::P_DISPLAYED)
94  p_impl->update_visible();
95  };
96  setOnPropertyChange(on_property_change);
97 
98  p_impl->init_graph();
99 }
static const std::string P_DISPLAYED
Definition: graphitem.h:34
static const std::string P_LINK
Definition: graphitem.h:31
void setOnPropertyChange(Callbacks::item_str_t f)
Sets callback to be notified on item's property change.
The main object representing an editable/displayable/serializable entity.
Definition: sessionitem.h:38

References ModelView::GraphItem::P_DISPLAYED, p_impl, ModelView::GraphItem::P_LINK, and ModelView::ItemListenerBase::setOnPropertyChange().

Here is the call graph for this function:

◆ unsubscribe()

void GraphPlotController::unsubscribe ( )
overrideprotectedvirtual

For necessary manipulations on new item.

Reimplemented from ModelView::ItemListenerBase.

Definition at line 101 of file graphplotcontroller.cpp.

102 {
103  p_impl->reset_graph();
104 }

References p_impl.

◆ unsubscribe_from_current()

void ModelView::ItemListenerBase::unsubscribe_from_current ( )
privateinherited

Definition at line 117 of file itemlistenerbase.cpp.

118 {
119  if (!m_item)
120  return;
121 
122  unsubscribe();
123 
124  m_item->mapper()->unsubscribe(this);
125 }
void unsubscribe(Callbacks::slot_t client) override
Removes given client from all subscriptions.
Definition: itemmapper.cpp:214

Member Data Documentation

◆ m_item

SessionItem* ModelView::ItemListenerBase::m_item {nullptr}
privateinherited

Definition at line 56 of file itemlistenerbase.h.

◆ p_impl

std::unique_ptr<GraphItemControllerImpl> ModelView::GraphPlotController::p_impl
private

Definition at line 44 of file graphplotcontroller.h.

Referenced by subscribe(), and unsubscribe().


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