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

The ColorMap class presents 2D intensity data from IntensityDataItem as color map. More...

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

Public Types

enum class  PLOT_TYPE { Plot1D , Plot2D }
 

Public Slots

void resetView ()
 reset all axes min,max to initial value More...
 
void setLogz (bool logz)
 sets logarithmic scale More...
 

Signals

void marginsChanged (double left, double right)
 
void statusString (const QString &text)
 

Public Member Functions

 ColorMap (QWidget *parent=nullptr)
 
virtual QList< QAction * > actionList ()
 
bool axesRangeContains (double xpos, double ypos) const
 Returns true if axes rectangle contains given in axes coordinates. More...
 
QCPColorScale * colorScale ()
 
SessionItemcurrentItem ()
 
const SessionItemcurrentItem () const
 
const QCustomPlot * customPlot () const override
 
QCustomPlot * customPlot () override
 
PlotEventInfo eventInfo (double xpos, double ypos) const override
 Returns PlotEventInfo corresponding to given axes coordinates. More...
 
QSize minimumSizeHint () const override
 
double pixelToXaxisCoord (double pixel) const
 transform widget coordinates to axes coordinates More...
 
double pixelToYaxisCoord (double pixel) const
 
ScientificPlotEventplotEvent ()
 
PLOT_TYPE plotType () const
 Returns the type of current plot. More...
 
virtual void setItem (SessionItem *item)
 
void setMouseTrackingEnabled (bool enable)
 Tracks move events (used when showing profile histograms and printing status string) More...
 
QSize sizeHint () const override
 
QRectF viewportRectangleInWidgetCoordinates ()
 returns rectangle representing current axes zoom state in widget coordinates More...
 
double xAxisCoordToPixel (double axis_coordinate) const
 transform axes coordinates to CustomPlot widget coordinates More...
 
double yAxisCoordToPixel (double axis_coordinate) const
 

Protected Member Functions

virtual void hideEvent (QHideEvent *)
 
virtual void showEvent (QShowEvent *)
 
void subscribeToItem () override
 
void unsubscribeFromItem () override
 

Private Slots

void marginsChangedNotify ()
 Calculates left, right margins around color map to report to projection plot. More...
 
void onAxisPropertyChanged (const QString &axisName, const QString &propertyName)
 
void onDataRangeChanged (QCPRange newRange)
 Propagate zmin, zmax back to IntensityDataItem. More...
 
void onIntensityModified ()
 
void onPropertyChanged (const QString &property_name)
 updates color map depending on IntensityDataItem properties More...
 
void onTimeToReplot ()
 Replots ColorMap. More...
 
void onXaxisRangeChanged (QCPRange newRange)
 Propagate xmin, xmax back to IntensityDataItem. More...
 
void onYaxisRangeChanged (QCPRange newRange)
 Propagate ymin, ymax back to IntensityDataItem. More...
 
void replot ()
 Schedule replot for later execution by onTimeReplot() slot. More...
 

Private Member Functions

void initColorMap ()
 creates and initializes the color map More...
 
IntensityDataItemintensityItem ()
 
const IntensityDataItemintensityItem () const
 
void setAxesLabelsFromItem (IntensityDataItem *item)
 Sets X,Y axes labels from item. More...
 
void setAxesRangeConnected (bool isConnected)
 Connects/disconnects signals related to ColorMap's X,Y axes rectangle change. More...
 
void setAxesRangeFromItem (IntensityDataItem *item)
 Sets (xmin,xmax,nbins) and (ymin,ymax,nbins) of ColorMap from intensity item. More...
 
void setAxesZoomFromItem (IntensityDataItem *item)
 Sets zoom range of X,Y axes as in intensity item. More...
 
void setColorMapFromItem (IntensityDataItem *intensityItem)
 Sets initial state of ColorMap to match given intensity item. More...
 
void setColorScaleAppearanceFromItem (IntensityDataItem *item)
 Sets the appearance of color scale (visibility, gradient type) from intensity item. More...
 
void setColorScaleVisible (bool visibility_flag)
 
void setConnected (bool isConnected)
 
void setDataFromItem (IntensityDataItem *item)
 Sets the intensity values to ColorMap. More...
 
void setDataRangeConnected (bool isConnected)
 Connects/disconnects signals related to ColorMap's Z-axis (min,max) change. More...
 
void setDataRangeFromItem (IntensityDataItem *item)
 
void setFixedColorMapMargins ()
 to make fixed margins for whole colormap (change in axes labels wont affect axes rectangle) More...
 
void setUpdateTimerConnected (bool isConnected)
 

Private Attributes

bool m_block_update
 
QCPLayoutGrid * m_colorBarLayout
 
QCPColorMap * m_colorMap
 
QCPColorScale * m_colorScale
 
QCustomPlot * m_customPlot
 
ScientificPlotEventm_event
 
SessionItemControllerm_itemController
 
PLOT_TYPE m_plot_type
 
UpdateTimerm_updateTimer
 

Detailed Description

The ColorMap class presents 2D intensity data from IntensityDataItem as color map.

Provides a minimal functionality for data plotting and axes interaction. Should be a component for more complicated plotting widgets. This is a replacement for ColorMapPlot.

Definition at line 36 of file ColorMap.h.

Member Enumeration Documentation

◆ PLOT_TYPE

enum ScientificPlot::PLOT_TYPE
stronginherited
Enumerator
Plot1D 
Plot2D 

Definition at line 31 of file ScientificPlot.h.

31 { Plot1D, Plot2D };
The Plot1D class presents data of several 1D DataItems contained in a Data1DViewItem.
Definition: Plot1D.h:32

Constructor & Destructor Documentation

◆ ColorMap()

ColorMap::ColorMap ( QWidget *  parent = nullptr)
explicit

Definition at line 30 of file ColorMap.cpp.

32  , m_customPlot(new QCustomPlot)
33  , m_colorMap(nullptr)
34  , m_colorScale(nullptr)
35  , m_updateTimer(new UpdateTimer(replot_update_interval, this))
36  , m_colorBarLayout(new QCPLayoutGrid)
37  , m_block_update(true)
38 {
39  initColorMap();
40 
41  QVBoxLayout* vlayout = new QVBoxLayout(this);
42  vlayout->setMargin(0);
43  vlayout->setSpacing(0);
44  vlayout->addWidget(m_customPlot);
45  setLayout(vlayout);
46 
48  // setFixedColorMapMargins();
49 }
QCPColorMap * m_colorMap
Definition: ColorMap.h:101
UpdateTimer * m_updateTimer
Definition: ColorMap.h:103
QCPLayoutGrid * m_colorBarLayout
Definition: ColorMap.h:104
bool m_block_update
Definition: ColorMap.h:106
void initColorMap()
creates and initializes the color map
Definition: ColorMap.cpp:234
QCPColorScale * m_colorScale
Definition: ColorMap.h:102
QCustomPlot * m_customPlot
Definition: ColorMap.h:100
ScientificPlot(QWidget *parent, PLOT_TYPE plot_type)
void setMouseTrackingEnabled(bool enable)
Tracks move events (used when showing profile histograms and printing status string)
The UpdateTimer class accumulates update requests during certain period of time, and at the end of th...
Definition: UpdateTimer.h:27

References initColorMap(), m_customPlot, and ScientificPlot::setMouseTrackingEnabled().

Here is the call graph for this function:

Member Function Documentation

◆ actionList()

QList< QAction * > SessionItemWidget::actionList ( )
virtualinherited

◆ axesRangeContains()

bool ScientificPlot::axesRangeContains ( double  xpos,
double  ypos 
) const
inherited

Returns true if axes rectangle contains given in axes coordinates.

Definition at line 50 of file ScientificPlot.cpp.

51 {
52  return customPlot()->xAxis->range().contains(xpos)
53  && customPlot()->yAxis->range().contains(ypos);
54 }
virtual QCustomPlot * customPlot()=0

References ScientificPlot::customPlot().

Referenced by eventInfo(), Plot1D::eventInfo(), and SpecularPlot::eventInfo().

Here is the call graph for this function:

◆ colorScale()

QCPColorScale* ColorMap::colorScale ( )
inline

Definition at line 47 of file ColorMap.h.

47 { return m_colorScale; }

References m_colorScale.

Referenced by FontScalingEvent::setTickLabelFont().

◆ currentItem() [1/2]

SessionItem * SessionItemWidget::currentItem ( )
inherited

Definition at line 41 of file SessionItemWidget.cpp.

42 {
43  return const_cast<SessionItem*>(static_cast<const SessionItemWidget*>(this)->currentItem());
44 }
The SessionItemWidget class is a base for all widgets representing the content of SessionItem.
SessionItem * currentItem()

Referenced by RectangularDetectorEditor::detectorItem(), SphericalDetectorEditor::detectorItem(), FitFlowWidget::fitSuiteItem(), DistributionEditor::groupItem(), DepthProbeInstrumentEditor::instrumentItem(), EnvironmentEditor::instrumentItem(), GISASBeamEditor::instrumentItem(), GISASDetectorEditor::instrumentItem(), GISASInstrumentEditor::instrumentItem(), OffSpecularBeamEditor::instrumentItem(), OffSpecularInstrumentEditor::instrumentItem(), PolarizationAnalysisEditor::instrumentItem(), SpecularBeamEditor::instrumentItem(), SpecularInstrumentEditor::instrumentItem(), RealDataMaskWidget::intensityDataItem(), IntensityDataCanvas::intensityDataItem(), IntensityDataProjectionsWidget::intensityDataItem(), IntensityDataWidget::intensityDataItem(), ProjectionsPlot::intensityItem(), intensityItem(), DetectorPresenter::itemPresentation(), InstrumentPresenter::itemPresentation(), JobResultsPresenter::itemPresentation(), FitComparisonWidget::jobItem(), FitComparisonWidget1D::jobItem(), FitParameterWidget::jobItem(), RunFitControlWidget::jobItem(), JobPropertiesWidget::jobItem(), ParameterTuningWidget::jobItem(), SpecularDataImportWidget::realDataItem(), ItemComboWidget::setPresentation(), JobResultsPresenter::setPresentation(), SpecularDataCanvas::specularDataItem(), SpecularDataImportWidget::specularDataItem(), SpecularDataWidget::specularDataItem(), SpecularPlot::specularItem(), ItemComboWidget::subscribeToItem(), DistributionEditor::subscribeToItem(), GISASDetectorEditor::subscribeToItem(), PolarizationAnalysisEditor::subscribeToItem(), IntensityDataPropertyWidget::subscribeToItem(), JobPropertiesWidget::subscribeToItem(), ProjectionsPropertyPanel::subscribeToItem(), ProjectionsPlot::unsubscribeFromChildren(), and Plot1D::viewItem().

◆ currentItem() [2/2]

const SessionItem * SessionItemWidget::currentItem ( ) const
inherited

Definition at line 46 of file SessionItemWidget.cpp.

47 {
48  return m_itemController->currentItem();
49 }
SessionItemController * m_itemController

References SessionItemController::currentItem(), and SessionItemWidget::m_itemController.

Here is the call graph for this function:

◆ customPlot() [1/2]

const QCustomPlot* ColorMap::customPlot ( ) const
inlineoverridevirtual

Implements ScientificPlot.

Definition at line 46 of file ColorMap.h.

46 { return m_customPlot; }

References m_customPlot.

◆ customPlot() [2/2]

QCustomPlot* ColorMap::customPlot ( )
inlineoverridevirtual

Implements ScientificPlot.

Definition at line 45 of file ColorMap.h.

45 { return m_customPlot; }

References m_customPlot.

Referenced by ColorMapCanvas::customPlot(), and MaskEditorCanvas::onSavePlotRequest().

◆ eventInfo()

PlotEventInfo ColorMap::eventInfo ( double  xpos,
double  ypos 
) const
overridevirtual

Returns PlotEventInfo corresponding to given axes coordinates.

Implements ScientificPlot.

Definition at line 65 of file ColorMap.cpp.

66 {
67  PlotEventInfo result(plotType());
68  if (!intensityItem())
69  return result;
70 
71  int nx(0), ny(0);
72  m_colorMap->data()->coordToCell(xpos, ypos, &nx, &ny);
73 
74  result.setX(xpos);
75  result.setY(ypos);
76  result.setNx(nx);
77  result.setNy(ny);
78 
79  result.setInAxesRange(axesRangeContains(xpos, ypos));
80  result.setValue(m_colorMap->data()->cell(result.nx(), result.ny()));
81  result.setLogValueAxis(intensityItem()->isLogz());
82 
83  return result;
84 }
IntensityDataItem * intensityItem()
Definition: ColorMap.cpp:445
Contains parameters of mouse position in 1D or 2D plot.
Definition: PlotEventInfo.h:26
PLOT_TYPE plotType() const
Returns the type of current plot.
bool axesRangeContains(double xpos, double ypos) const
Returns true if axes rectangle contains given in axes coordinates.

References ScientificPlot::axesRangeContains(), intensityItem(), m_colorMap, PlotEventInfo::nx(), PlotEventInfo::ny(), ScientificPlot::plotType(), PlotEventInfo::setInAxesRange(), PlotEventInfo::setLogValueAxis(), PlotEventInfo::setNx(), PlotEventInfo::setNy(), PlotEventInfo::setValue(), PlotEventInfo::setX(), and PlotEventInfo::setY().

Here is the call graph for this function:

◆ hideEvent()

void SessionItemWidget::hideEvent ( QHideEvent *  )
protectedvirtualinherited

Definition at line 56 of file SessionItemWidget.cpp.

57 {
59 }
void unsubscribe()
Fully unsubscribes the parent from listening item's signals.

References SessionItemWidget::m_itemController, and SessionItemController::unsubscribe().

Here is the call graph for this function:

◆ initColorMap()

void ColorMap::initColorMap ( )
private

creates and initializes the color map

Definition at line 234 of file ColorMap.cpp.

235 {
236  m_colorMap = new QCPColorMap(m_customPlot->xAxis, m_customPlot->yAxis);
237  m_colorScale = new QCPColorScale(m_customPlot);
238  m_colorMap->setColorScale(m_colorScale);
239 
240  m_colorBarLayout->addElement(0, 0, m_colorScale);
241  m_colorBarLayout->setMinimumSize(colorbar_width_logz, 10);
242  auto base_size = StyleUtils::SizeOfLetterM(this).width() * 0.5;
243  m_colorBarLayout->setMargins(QMargins(base_size, 0, base_size, 0));
244 
245  m_colorScale->axis()->axisRect()->setMargins(QMargins(0, 0, 0, 0));
246  m_colorScale->axis()->axisRect()->setAutoMargins(QCP::msNone);
247 
249  m_colorScale->axis()->setTickLabelFont(
250  QFont(QFont().family(), Constants::plot_tick_label_size()));
251  m_customPlot->xAxis->setTickLabelFont(
252  QFont(QFont().family(), Constants::plot_tick_label_size()));
253  m_customPlot->yAxis->setTickLabelFont(
254  QFont(QFont().family(), Constants::plot_tick_label_size()));
255 
256  connect(m_customPlot, &QCustomPlot::afterReplot, this, &ColorMap::marginsChangedNotify);
257 }
void marginsChangedNotify()
Calculates left, right margins around color map to report to projection plot.
Definition: ColorMap.cpp:430
int plot_tick_label_size()
int plot_colorbar_size()
QSize SizeOfLetterM(const QWidget *widget=nullptr)
Returns size of largest letter of default system font.
Definition: StyleUtils.cpp:110

References m_colorBarLayout, m_colorMap, m_colorScale, m_customPlot, marginsChangedNotify(), Constants::plot_colorbar_size(), Constants::plot_tick_label_size(), and StyleUtils::SizeOfLetterM().

Referenced by ColorMap().

Here is the call graph for this function:

◆ intensityItem() [1/2]

IntensityDataItem * ColorMap::intensityItem ( )
private

Definition at line 445 of file ColorMap.cpp.

446 {
447  return const_cast<IntensityDataItem*>(static_cast<const ColorMap*>(this)->intensityItem());
448 }
The ColorMap class presents 2D intensity data from IntensityDataItem as color map.
Definition: ColorMap.h:36

Referenced by eventInfo(), onAxisPropertyChanged(), onDataRangeChanged(), onIntensityModified(), onPropertyChanged(), onXaxisRangeChanged(), onYaxisRangeChanged(), resetView(), setColorMapFromItem(), setColorScaleAppearanceFromItem(), and subscribeToItem().

◆ intensityItem() [2/2]

const IntensityDataItem * ColorMap::intensityItem ( ) const
private

Definition at line 450 of file ColorMap.cpp.

451 {
452  return dynamic_cast<const IntensityDataItem*>(currentItem());
453 }

References SessionItemWidget::currentItem().

Here is the call graph for this function:

◆ marginsChanged

void ColorMap::marginsChanged ( double  left,
double  right 
)
signal

◆ marginsChangedNotify

void ColorMap::marginsChangedNotify ( )
privateslot

Calculates left, right margins around color map to report to projection plot.

Definition at line 430 of file ColorMap.cpp.

431 {
432  QMargins axesMargins = m_customPlot->axisRect()->margins();
433  // QMargins colorBarMargins = m_colorScale->margins();
434  // QMargins colorScaleMargins = m_colorScale->axis()->axisRect()->margins();
435 
436  double left = axesMargins.left();
437  // double right = axesMargins.right() + colorBarMargins.right() + m_colorScale->barWidth()
438  // + colorScaleMargins.right() + m_colorBarLayout->rect().width();
439 
440  double right = axesMargins.right() + m_colorBarLayout->rect().width();
441 
442  emit marginsChanged(left, right);
443 }
void marginsChanged(double left, double right)

References m_colorBarLayout, m_customPlot, and marginsChanged().

Referenced by initColorMap().

◆ minimumSizeHint()

QSize ColorMap::minimumSizeHint ( ) const
inlineoverride

Definition at line 43 of file ColorMap.h.

43 { return QSize(128, 128); }

◆ onAxisPropertyChanged

void ColorMap::onAxisPropertyChanged ( const QString &  axisName,
const QString &  propertyName 
)
privateslot

Definition at line 124 of file ColorMap.cpp.

125 {
126  if (m_block_update)
127  return;
128 
129  if (propertyName == BasicAxisItem::P_TITLE
130  || propertyName == BasicAxisItem::P_TITLE_IS_VISIBLE) {
132  replot();
133  }
134 
135  if (axisName == IntensityDataItem::P_XAXIS) {
136  if (propertyName == BasicAxisItem::P_MIN_DEG || propertyName == BasicAxisItem::P_MAX_DEG) {
137  setAxesRangeConnected(false);
139  setAxesRangeConnected(true);
140  replot();
141  }
142  } else if (axisName == IntensityDataItem::P_YAXIS) {
143  if (propertyName == BasicAxisItem::P_MIN_DEG || propertyName == BasicAxisItem::P_MAX_DEG) {
144  setAxesRangeConnected(false);
146  setAxesRangeConnected(true);
147  replot();
148  }
149  }
150 
151  else if (axisName == IntensityDataItem::P_ZAXIS) {
152  if (propertyName == BasicAxisItem::P_MIN_DEG || propertyName == BasicAxisItem::P_MAX_DEG) {
154  replot();
155  } else if (propertyName == AmplitudeAxisItem::P_IS_LOGSCALE) {
156  setLogz(intensityItem()->isLogz());
157  replot();
158 
159  } else if (propertyName == BasicAxisItem::P_IS_VISIBLE) {
161  ->getItem(IntensityDataItem::P_ZAXIS)
162  ->getItemValue(BasicAxisItem::P_IS_VISIBLE)
163  .toBool());
164  replot();
165  }
166  }
167 }
static const QString P_IS_LOGSCALE
Definition: AxesItems.h:55
static const QString P_MAX_DEG
Definition: AxesItems.h:28
static const QString P_TITLE
Definition: AxesItems.h:29
static const QString P_IS_VISIBLE
Definition: AxesItems.h:25
static const QString P_TITLE_IS_VISIBLE
Definition: AxesItems.h:30
static const QString P_MIN_DEG
Definition: AxesItems.h:27
void replot()
Schedule replot for later execution by onTimeReplot() slot.
Definition: ColorMap.cpp:197
void setAxesRangeConnected(bool isConnected)
Connects/disconnects signals related to ColorMap's X,Y axes rectangle change.
Definition: ColorMap.cpp:268
void setAxesLabelsFromItem(IntensityDataItem *item)
Sets X,Y axes labels from item.
Definition: ColorMap.cpp:358
void setDataRangeFromItem(IntensityDataItem *item)
Definition: ColorMap.cpp:408
void setLogz(bool logz)
sets logarithmic scale
Definition: ColorMap.cpp:87
void setColorScaleVisible(bool visibility_flag)
Definition: ColorMap.cpp:416
static const QString P_ZAXIS
static const QString P_YAXIS
static const QString P_XAXIS
QCPRange itemZoomY(const IntensityDataItem *item)
Returns y-axis vizible range (zoom).
QCPRange itemZoomX(const IntensityDataItem *item)
Returns x-axis vizible range (zoom).

References intensityItem(), ColorMapUtils::itemZoomX(), ColorMapUtils::itemZoomY(), m_block_update, m_customPlot, AmplitudeAxisItem::P_IS_LOGSCALE, BasicAxisItem::P_IS_VISIBLE, BasicAxisItem::P_MAX_DEG, BasicAxisItem::P_MIN_DEG, BasicAxisItem::P_TITLE, BasicAxisItem::P_TITLE_IS_VISIBLE, IntensityDataItem::P_XAXIS, IntensityDataItem::P_YAXIS, IntensityDataItem::P_ZAXIS, replot(), setAxesLabelsFromItem(), setAxesRangeConnected(), setColorScaleVisible(), setDataRangeFromItem(), and setLogz().

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ onDataRangeChanged

void ColorMap::onDataRangeChanged ( QCPRange  newRange)
privateslot

Propagate zmin, zmax back to IntensityDataItem.

Definition at line 170 of file ColorMap.cpp.

171 {
172  m_block_update = true;
173  intensityItem()->setLowerAndUpperZ(newRange.lower, newRange.upper);
174  m_block_update = false;
175 }
void setLowerAndUpperZ(double zmin, double zmax)

References intensityItem(), m_block_update, and IntensityDataItem::setLowerAndUpperZ().

Referenced by setDataRangeConnected().

Here is the call graph for this function:

◆ onIntensityModified

void ColorMap::onIntensityModified ( )
privateslot

Definition at line 99 of file ColorMap.cpp.

100 {
103  replot();
104 }
void setAxesRangeFromItem(IntensityDataItem *item)
Sets (xmin,xmax,nbins) and (ymin,ymax,nbins) of ColorMap from intensity item.
Definition: ColorMap.cpp:338
void setDataFromItem(IntensityDataItem *item)
Sets the intensity values to ColorMap.
Definition: ColorMap.cpp:377

References intensityItem(), replot(), setAxesRangeFromItem(), and setDataFromItem().

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ onPropertyChanged

void ColorMap::onPropertyChanged ( const QString &  property_name)
privateslot

updates color map depending on IntensityDataItem properties

Definition at line 107 of file ColorMap.cpp.

108 {
109  if (m_block_update)
110  return;
111 
112  if (property_name == IntensityDataItem::P_GRADIENT) {
114  replot();
115  } else if (property_name == IntensityDataItem::P_IS_INTERPOLATED) {
116  m_colorMap->setInterpolate(intensityItem()->isInterpolated());
117  replot();
118  } else if (property_name == DataItem::P_AXES_UNITS) {
120  replot();
121  }
122 }
static const QString P_AXES_UNITS
Definition: DataItem.h:34
static const QString P_GRADIENT
static const QString P_IS_INTERPOLATED
QCPColorGradient itemGradient(const IntensityDataItem *item)

References intensityItem(), ColorMapUtils::itemGradient(), m_block_update, m_colorMap, DataItem::P_AXES_UNITS, IntensityDataItem::P_GRADIENT, IntensityDataItem::P_IS_INTERPOLATED, replot(), and setAxesRangeFromItem().

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ onTimeToReplot

void ColorMap::onTimeToReplot ( )
privateslot

Replots ColorMap.

Definition at line 204 of file ColorMap.cpp.

205 {
206  m_customPlot->replot();
207 }

References m_customPlot.

Referenced by setUpdateTimerConnected().

◆ onXaxisRangeChanged

void ColorMap::onXaxisRangeChanged ( QCPRange  newRange)
privateslot

Propagate xmin, xmax back to IntensityDataItem.

Definition at line 178 of file ColorMap.cpp.

179 {
180  m_block_update = true;
181  intensityItem()->setLowerX(newRange.lower);
182  intensityItem()->setUpperX(newRange.upper);
183  m_block_update = false;
184 }
void setLowerX(double value)
void setUpperX(double value)

References intensityItem(), m_block_update, IntensityDataItem::setLowerX(), and IntensityDataItem::setUpperX().

Referenced by setAxesRangeConnected().

Here is the call graph for this function:

◆ onYaxisRangeChanged

void ColorMap::onYaxisRangeChanged ( QCPRange  newRange)
privateslot

Propagate ymin, ymax back to IntensityDataItem.

Definition at line 187 of file ColorMap.cpp.

188 {
189  m_block_update = true;
190  intensityItem()->setLowerY(newRange.lower);
191  intensityItem()->setUpperY(newRange.upper);
192  m_block_update = false;
193 }
void setLowerY(double value)
void setUpperY(double value)

References intensityItem(), m_block_update, IntensityDataItem::setLowerY(), and IntensityDataItem::setUpperY().

Referenced by setAxesRangeConnected().

Here is the call graph for this function:

◆ pixelToXaxisCoord()

double ScientificPlot::pixelToXaxisCoord ( double  pixel) const
inherited

transform widget coordinates to axes coordinates

Definition at line 35 of file ScientificPlot.cpp.

36 {
37  return customPlot()->xAxis->pixelToCoord(pixel);
38 }

References ScientificPlot::customPlot().

Referenced by ScientificPlotEvent::currentPlotDescriptor(), and ColorMapSceneAdaptor::fromSceneX().

Here is the call graph for this function:

◆ pixelToYaxisCoord()

double ScientificPlot::pixelToYaxisCoord ( double  pixel) const
inherited

Definition at line 40 of file ScientificPlot.cpp.

41 {
42  return customPlot()->yAxis->pixelToCoord(pixel);
43 }

References ScientificPlot::customPlot().

Referenced by ScientificPlotEvent::currentPlotDescriptor(), and ColorMapSceneAdaptor::fromSceneY().

Here is the call graph for this function:

◆ plotEvent()

ScientificPlotEvent* ScientificPlot::plotEvent ( )
inlineinherited

Definition at line 42 of file ScientificPlot.h.

42 { return m_event; }
ScientificPlotEvent * m_event

References ScientificPlot::m_event.

Referenced by ProjectionsEditorCanvas::setConnected().

◆ plotType()

PLOT_TYPE ScientificPlot::plotType ( ) const
inlineinherited

Returns the type of current plot.

Definition at line 59 of file ScientificPlot.h.

59 { return m_plot_type; }
PLOT_TYPE m_plot_type

References ScientificPlot::m_plot_type.

Referenced by eventInfo(), Plot1D::eventInfo(), SpecularPlot::eventInfo(), and FontScalingEvent::setTickLabelFont().

◆ replot

void ColorMap::replot ( )
privateslot

Schedule replot for later execution by onTimeReplot() slot.

Definition at line 197 of file ColorMap.cpp.

198 {
200 }
void scheduleUpdate()
Definition: UpdateTimer.cpp:42

References m_updateTimer, and UpdateTimer::scheduleUpdate().

Referenced by onAxisPropertyChanged(), onIntensityModified(), onPropertyChanged(), and setColorMapFromItem().

Here is the call graph for this function:

◆ resetView

void ColorMap::resetView ( )
slot

reset all axes min,max to initial value

Definition at line 94 of file ColorMap.cpp.

95 {
97 }
void resetView()
Set axes viewport to original data.

References intensityItem(), and IntensityDataItem::resetView().

Here is the call graph for this function:

◆ setAxesLabelsFromItem()

void ColorMap::setAxesLabelsFromItem ( IntensityDataItem item)
private

Sets X,Y axes labels from item.

Definition at line 358 of file ColorMap.cpp.

359 {
360  auto xaxis = item->xAxisItem();
361  if (xaxis->getItemValue(BasicAxisItem::P_TITLE_IS_VISIBLE).toBool())
362  m_customPlot->xAxis->setLabel(item->getXaxisTitle());
363  else
364  m_customPlot->xAxis->setLabel(QString());
365 
366  m_colorScale->setMargins(QMargins(0, 0, 0, 0));
367 
368  auto yaxis = item->yAxisItem();
369  if (yaxis->getItemValue(BasicAxisItem::P_TITLE_IS_VISIBLE).toBool())
370  m_customPlot->yAxis->setLabel(item->getYaxisTitle());
371  else
372  m_customPlot->yAxis->setLabel(QString());
373 }
QString getXaxisTitle() const
const BasicAxisItem * yAxisItem() const
QString getYaxisTitle() const
const BasicAxisItem * xAxisItem() const

References IntensityDataItem::getXaxisTitle(), IntensityDataItem::getYaxisTitle(), m_colorScale, m_customPlot, BasicAxisItem::P_TITLE_IS_VISIBLE, IntensityDataItem::xAxisItem(), and IntensityDataItem::yAxisItem().

Referenced by onAxisPropertyChanged(), and setColorMapFromItem().

Here is the call graph for this function:

◆ setAxesRangeConnected()

void ColorMap::setAxesRangeConnected ( bool  isConnected)
private

Connects/disconnects signals related to ColorMap's X,Y axes rectangle change.

Definition at line 268 of file ColorMap.cpp.

269 {
270  if (isConnected) {
271  connect(m_customPlot->xAxis,
272  static_cast<void (QCPAxis::*)(const QCPRange&)>(&QCPAxis::rangeChanged), this,
273  &ColorMap::onXaxisRangeChanged, Qt::UniqueConnection);
274 
275  connect(m_customPlot->yAxis,
276  static_cast<void (QCPAxis::*)(const QCPRange&)>(&QCPAxis::rangeChanged), this,
277  &ColorMap::onYaxisRangeChanged, Qt::UniqueConnection);
278 
279  } else {
280  disconnect(m_customPlot->xAxis,
281  static_cast<void (QCPAxis::*)(const QCPRange&)>(&QCPAxis::rangeChanged), this,
283 
284  disconnect(m_customPlot->yAxis,
285  static_cast<void (QCPAxis::*)(const QCPRange&)>(&QCPAxis::rangeChanged), this,
287  }
288 }
void onYaxisRangeChanged(QCPRange newRange)
Propagate ymin, ymax back to IntensityDataItem.
Definition: ColorMap.cpp:187
void onXaxisRangeChanged(QCPRange newRange)
Propagate xmin, xmax back to IntensityDataItem.
Definition: ColorMap.cpp:178

References m_customPlot, onXaxisRangeChanged(), and onYaxisRangeChanged().

Referenced by onAxisPropertyChanged(), setAxesZoomFromItem(), and setConnected().

Here is the call graph for this function:

◆ setAxesRangeFromItem()

void ColorMap::setAxesRangeFromItem ( IntensityDataItem item)
private

Sets (xmin,xmax,nbins) and (ymin,ymax,nbins) of ColorMap from intensity item.

Definition at line 338 of file ColorMap.cpp.

339 {
340  m_customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
341  m_customPlot->axisRect()->setupFullAxesBox(true);
342  m_colorMap->data()->setSize(item->getNbinsX(), item->getNbinsY());
343  m_colorMap->data()->setRange(ColorMapUtils::itemXrange(item), ColorMapUtils::itemYrange(item));
344 }
QCPRange itemXrange(const IntensityDataItem *item)
Returns x-axis range.
QCPRange itemYrange(const IntensityDataItem *item)
Returns y-axis range.

References IntensityDataItem::getNbinsX(), IntensityDataItem::getNbinsY(), ColorMapUtils::itemXrange(), ColorMapUtils::itemYrange(), m_colorMap, and m_customPlot.

Referenced by onIntensityModified(), onPropertyChanged(), and setColorMapFromItem().

Here is the call graph for this function:

◆ setAxesZoomFromItem()

void ColorMap::setAxesZoomFromItem ( IntensityDataItem item)
private

Sets zoom range of X,Y axes as in intensity item.

Definition at line 348 of file ColorMap.cpp.

349 {
350  setAxesRangeConnected(false);
351  m_customPlot->xAxis->setRange(item->getLowerX(), item->getUpperX());
352  m_customPlot->yAxis->setRange(item->getLowerY(), item->getUpperY());
353  setAxesRangeConnected(true);
354 }
double getLowerY() const
returns lower and upper zoom ranges of y-axis
double getUpperY() const
double getUpperX() const
double getLowerX() const
returns lower and upper zoom ranges of x-axis

References IntensityDataItem::getLowerX(), IntensityDataItem::getLowerY(), IntensityDataItem::getUpperX(), IntensityDataItem::getUpperY(), m_customPlot, and setAxesRangeConnected().

Referenced by setColorMapFromItem().

Here is the call graph for this function:

◆ setColorMapFromItem()

void ColorMap::setColorMapFromItem ( IntensityDataItem intensityItem)
private

Sets initial state of ColorMap to match given intensity item.

Definition at line 318 of file ColorMap.cpp.

319 {
321 
322  m_block_update = true;
323 
330 
331  replot();
332 
333  m_block_update = false;
334 }
#define ASSERT(condition)
Definition: Assert.h:31
void setColorScaleAppearanceFromItem(IntensityDataItem *item)
Sets the appearance of color scale (visibility, gradient type) from intensity item.
Definition: ColorMap.cpp:394
void setAxesZoomFromItem(IntensityDataItem *item)
Sets zoom range of X,Y axes as in intensity item.
Definition: ColorMap.cpp:348

References ASSERT, intensityItem(), m_block_update, replot(), setAxesLabelsFromItem(), setAxesRangeFromItem(), setAxesZoomFromItem(), setColorScaleAppearanceFromItem(), setDataFromItem(), and setDataRangeFromItem().

Referenced by subscribeToItem().

Here is the call graph for this function:

◆ setColorScaleAppearanceFromItem()

void ColorMap::setColorScaleAppearanceFromItem ( IntensityDataItem item)
private

Sets the appearance of color scale (visibility, gradient type) from intensity item.

Definition at line 394 of file ColorMap.cpp.

395 {
398  .toBool());
400  m_colorMap->setInterpolate(intensityItem()->isInterpolated());
401  // make sure the axis rect and color scale synchronize their bottom and top margins (so they
402  // line up):
403  QCPMarginGroup* marginGroup = new QCPMarginGroup(m_customPlot);
404  m_customPlot->axisRect()->setMarginGroup(QCP::msBottom | QCP::msTop, marginGroup);
405  m_colorScale->setMarginGroup(QCP::msBottom | QCP::msTop, marginGroup);
406 }
QVariant getItemValue(const QString &tag) const
Directly access value of item under given tag.
SessionItem * getItem(const QString &tag="", int row=0) const
Returns item in given row of given tag.

References SessionItem::getItem(), SessionItem::getItemValue(), intensityItem(), ColorMapUtils::itemGradient(), m_colorMap, m_colorScale, m_customPlot, BasicAxisItem::P_IS_VISIBLE, IntensityDataItem::P_ZAXIS, and setColorScaleVisible().

Referenced by setColorMapFromItem().

Here is the call graph for this function:

◆ setColorScaleVisible()

void ColorMap::setColorScaleVisible ( bool  visibility_flag)
private

Definition at line 416 of file ColorMap.cpp.

417 {
418  m_colorBarLayout->setVisible(visibility_flag);
419  if (visibility_flag) {
420  // add it to the right of the main axis rect
421  m_customPlot->plotLayout()->addElement(0, 1, m_colorBarLayout);
422  } else {
423  m_customPlot->plotLayout()->take(m_colorBarLayout);
424  m_customPlot->plotLayout()->simplify();
425  }
426 }

References m_colorBarLayout, and m_customPlot.

Referenced by onAxisPropertyChanged(), and setColorScaleAppearanceFromItem().

◆ setConnected()

void ColorMap::setConnected ( bool  isConnected)
private

Definition at line 259 of file ColorMap.cpp.

260 {
261  setAxesRangeConnected(isConnected);
262  setDataRangeConnected(isConnected);
263  setUpdateTimerConnected(isConnected);
264 }
void setUpdateTimerConnected(bool isConnected)
Definition: ColorMap.cpp:301
void setDataRangeConnected(bool isConnected)
Connects/disconnects signals related to ColorMap's Z-axis (min,max) change.
Definition: ColorMap.cpp:292

References setAxesRangeConnected(), setDataRangeConnected(), and setUpdateTimerConnected().

Referenced by subscribeToItem(), and unsubscribeFromItem().

Here is the call graph for this function:

◆ setDataFromItem()

void ColorMap::setDataFromItem ( IntensityDataItem item)
private

Sets the intensity values to ColorMap.

Definition at line 377 of file ColorMap.cpp.

378 {
379  auto data = item->getOutputData();
380  if (!data) {
381  m_colorMap->data()->clear();
382  return;
383  }
384 
385  int nx(item->getNbinsX()); // outside of the loop because of slow retrieval
386  int ny(item->getNbinsY());
387  for (int ix = 0; ix < nx; ++ix)
388  for (int iy = 0; iy < ny; ++iy)
389  m_colorMap->data()->setCell(ix, iy, (*data)[iy + ny * ix]);
390 }
OutputData< double > * getOutputData()
Definition: DataItem.h:36

References IntensityDataItem::getNbinsX(), IntensityDataItem::getNbinsY(), DataItem::getOutputData(), and m_colorMap.

Referenced by onIntensityModified(), and setColorMapFromItem().

Here is the call graph for this function:

◆ setDataRangeConnected()

void ColorMap::setDataRangeConnected ( bool  isConnected)
private

Connects/disconnects signals related to ColorMap's Z-axis (min,max) change.

Definition at line 292 of file ColorMap.cpp.

293 {
294  if (isConnected)
295  connect(m_colorMap, &QCPColorMap::dataRangeChanged, this, &ColorMap::onDataRangeChanged,
296  Qt::UniqueConnection);
297  else
298  disconnect(m_colorMap, &QCPColorMap::dataRangeChanged, this, &ColorMap::onDataRangeChanged);
299 }
void onDataRangeChanged(QCPRange newRange)
Propagate zmin, zmax back to IntensityDataItem.
Definition: ColorMap.cpp:170

References m_colorMap, and onDataRangeChanged().

Referenced by setConnected(), and setDataRangeFromItem().

Here is the call graph for this function:

◆ setDataRangeFromItem()

void ColorMap::setDataRangeFromItem ( IntensityDataItem item)
private

Definition at line 408 of file ColorMap.cpp.

409 {
410  setDataRangeConnected(false);
411  m_colorMap->setDataRange(ColorMapUtils::itemDataZoom(item));
412  setLogz(item->isLogz());
413  setDataRangeConnected(true);
414 }
QCPRange itemDataZoom(const IntensityDataItem *item)
Returns z-axis visible range (zoom).

References IntensityDataItem::isLogz(), ColorMapUtils::itemDataZoom(), m_colorMap, setDataRangeConnected(), and setLogz().

Referenced by onAxisPropertyChanged(), and setColorMapFromItem().

Here is the call graph for this function:

◆ setFixedColorMapMargins()

void ColorMap::setFixedColorMapMargins ( )
private

to make fixed margins for whole colormap (change in axes labels wont affect axes rectangle)

Definition at line 311 of file ColorMap.cpp.

312 {
314 }
void setDefaultMargins(QCustomPlot *customPlot)
Sets default margins for axes rectangle plot.

References m_customPlot, and ColorMapUtils::setDefaultMargins().

Here is the call graph for this function:

◆ setItem()

void SessionItemWidget::setItem ( SessionItem item)
virtualinherited

Reimplemented in SpecularPlotCanvas, SpecularDataImportWidget, SpecularDataWidget, IntensityDataWidget, SpecularDataCanvas, ProjectionsWidget, IntensityDataCanvas, ColorMapCanvas, and Plot1DCanvas.

Definition at line 28 of file SessionItemWidget.cpp.

29 {
31 
32  if (isVisible())
34 }
void setItem(SessionItem *item)
void subscribe()
Subscribe parent to item's signals.

References SessionItemWidget::m_itemController, SessionItemController::setItem(), and SessionItemController::subscribe().

Referenced by IntensityDataWidget::onFFTAction(), JobSelectorWidget::onSelectionChanged(), ProjectionsEditor::resetContext(), ProjectionsEditor::setContext(), MaskGraphicsProxy::setIntensityItem(), FitSessionWidget::setItem(), Plot1DCanvas::setItem(), InstrumentEditorWidget::setItem(), ColorMapCanvas::setItem(), IntensityDataCanvas::setItem(), ProjectionsWidget::setItem(), SpecularDataCanvas::setItem(), DistributionDialog::setItem(), IntensityDataWidget::setItem(), SpecularDataWidget::setItem(), SpecularDataImportWidget::setItem(), SpecularPlotCanvas::setItem(), ItemComboWidget::setPresentation(), GISASInstrumentEditor::subscribeToItem(), OffSpecularInstrumentEditor::subscribeToItem(), SpecularInstrumentEditor::subscribeToItem(), FitComparisonWidget::subscribeToItem(), FitComparisonWidget1D::subscribeToItem(), and GISASDetectorEditor::updateDetectorPresenter().

Here is the call graph for this function:

◆ setLogz

void ColorMap::setLogz ( bool  logz)
slot

sets logarithmic scale

Definition at line 87 of file ColorMap.cpp.

88 {
89  m_colorBarLayout->setMinimumSize(logz ? colorbar_width_logz : colorbar_width, 10);
91 }
void setLogz(QCPColorScale *scale, bool isLogz)

References m_colorBarLayout, m_colorScale, and ColorMapUtils::setLogz().

Referenced by onAxisPropertyChanged(), and setDataRangeFromItem().

Here is the call graph for this function:

◆ setMouseTrackingEnabled()

void ScientificPlot::setMouseTrackingEnabled ( bool  enable)
inherited

Tracks move events (used when showing profile histograms and printing status string)

Definition at line 45 of file ScientificPlot.cpp.

46 {
48 }
void setMouseTrackingEnabled(bool enable)
Sets tracking of the mouse for parent DescriptedPlot.

References ScientificPlot::m_event, and ScientificPlotEvent::setMouseTrackingEnabled().

Referenced by ColorMap(), Plot1D::Plot1D(), SpecularPlot::SpecularPlot(), and PlotStatusLabel::setPlotLabelEnabled().

Here is the call graph for this function:

◆ setUpdateTimerConnected()

void ColorMap::setUpdateTimerConnected ( bool  isConnected)
private

Definition at line 301 of file ColorMap.cpp.

302 {
303  if (isConnected)
305  Qt::UniqueConnection);
306  else
308 }
void onTimeToReplot()
Replots ColorMap.
Definition: ColorMap.cpp:204
void timeToUpdate()

References m_updateTimer, onTimeToReplot(), and UpdateTimer::timeToUpdate().

Referenced by setConnected().

Here is the call graph for this function:

◆ showEvent()

void SessionItemWidget::showEvent ( QShowEvent *  )
protectedvirtualinherited

Definition at line 51 of file SessionItemWidget.cpp.

52 {
54 }

References SessionItemWidget::m_itemController, and SessionItemController::subscribe().

Here is the call graph for this function:

◆ sizeHint()

QSize ColorMap::sizeHint ( ) const
inlineoverride

Definition at line 42 of file ColorMap.h.

42 { return QSize(500, 400); }

◆ statusString

void ScientificPlot::statusString ( const QString &  text)
signalinherited

◆ subscribeToItem()

void ColorMap::subscribeToItem ( )
overrideprotectedvirtual

Reimplemented from SessionItemWidget.

Definition at line 209 of file ColorMap.cpp.

210 {
212 
214  [this](const QString& name) { onPropertyChanged(name); }, this);
215 
217  [this](SessionItem* item, const QString name) {
218  if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis")
220  },
221  this);
222 
223  intensityItem()->mapper()->setOnValueChange([this]() { onIntensityModified(); }, this);
224 
225  setConnected(true);
226 }
void setConnected(bool isConnected)
Definition: ColorMap.cpp:259
void setColorMapFromItem(IntensityDataItem *intensityItem)
Sets initial state of ColorMap to match given intensity item.
Definition: ColorMap.cpp:318
void onPropertyChanged(const QString &property_name)
updates color map depending on IntensityDataItem properties
Definition: ColorMap.cpp:107
void onAxisPropertyChanged(const QString &axisName, const QString &propertyName)
Definition: ColorMap.cpp:124
void onIntensityModified()
Definition: ColorMap.cpp:99
void setOnValueChange(std::function< void(void)> f, const void *caller=0)
Definition: ModelMapper.cpp:30
void setOnChildPropertyChange(std::function< void(SessionItem *, QString)> f, const void *caller=0)
Calls back on child property change, report childItem and property name.
Definition: ModelMapper.cpp:49
void setOnPropertyChange(std::function< void(QString)> f, const void *caller=0)
Definition: ModelMapper.cpp:35
QString itemName() const
Get item name, return display name if no name is set.
ModelMapper * mapper()
Returns the current model mapper of this item. Creates new one if necessary.
QString modelType() const
Get model type.
QString const & name(EShape k)
Definition: particles.cpp:21

References intensityItem(), SessionItem::itemName(), SessionItem::mapper(), SessionItem::modelType(), RealSpace::Particles::name(), onAxisPropertyChanged(), onIntensityModified(), onPropertyChanged(), setColorMapFromItem(), setConnected(), ModelMapper::setOnChildPropertyChange(), ModelMapper::setOnPropertyChange(), and ModelMapper::setOnValueChange().

Here is the call graph for this function:

◆ unsubscribeFromItem()

void ColorMap::unsubscribeFromItem ( )
overrideprotectedvirtual

Reimplemented from SessionItemWidget.

Definition at line 228 of file ColorMap.cpp.

229 {
230  setConnected(false);
231 }

References setConnected().

Here is the call graph for this function:

◆ viewportRectangleInWidgetCoordinates()

QRectF ColorMap::viewportRectangleInWidgetCoordinates ( )

returns rectangle representing current axes zoom state in widget coordinates

Definition at line 51 of file ColorMap.cpp.

52 {
53  QCPRange xrange = m_customPlot->xAxis->range();
54  QCPRange yrange = m_customPlot->yAxis->range();
55  double left = xrange.lower;
56  double right = xrange.upper;
57  double top = yrange.upper;
58  double bottom = yrange.lower;
59 
60  return QRectF(xAxisCoordToPixel(left), yAxisCoordToPixel(top),
61  xAxisCoordToPixel(right) - xAxisCoordToPixel(left),
62  yAxisCoordToPixel(bottom) - yAxisCoordToPixel(top));
63 }
double yAxisCoordToPixel(double axis_coordinate) const
double xAxisCoordToPixel(double axis_coordinate) const
transform axes coordinates to CustomPlot widget coordinates

References m_customPlot, ScientificPlot::xAxisCoordToPixel(), and ScientificPlot::yAxisCoordToPixel().

Referenced by ColorMapSceneAdaptor::eventFilter().

Here is the call graph for this function:

◆ xAxisCoordToPixel()

double ScientificPlot::xAxisCoordToPixel ( double  axis_coordinate) const
inherited

transform axes coordinates to CustomPlot widget coordinates

Definition at line 25 of file ScientificPlot.cpp.

26 {
27  return customPlot()->xAxis->coordToPixel(axis_coordinate);
28 }

References ScientificPlot::customPlot().

Referenced by ColorMapSceneAdaptor::toSceneX(), and viewportRectangleInWidgetCoordinates().

Here is the call graph for this function:

◆ yAxisCoordToPixel()

double ScientificPlot::yAxisCoordToPixel ( double  axis_coordinate) const
inherited

Definition at line 30 of file ScientificPlot.cpp.

31 {
32  return customPlot()->yAxis->coordToPixel(axis_coordinate);
33 }

References ScientificPlot::customPlot().

Referenced by ColorMapSceneAdaptor::toSceneY(), and viewportRectangleInWidgetCoordinates().

Here is the call graph for this function:

Member Data Documentation

◆ m_block_update

bool ColorMap::m_block_update
private

◆ m_colorBarLayout

QCPLayoutGrid* ColorMap::m_colorBarLayout
private

Definition at line 104 of file ColorMap.h.

Referenced by initColorMap(), marginsChangedNotify(), setColorScaleVisible(), and setLogz().

◆ m_colorMap

◆ m_colorScale

QCPColorScale* ColorMap::m_colorScale
private

◆ m_customPlot

◆ m_event

ScientificPlotEvent* ScientificPlot::m_event
privateinherited

◆ m_itemController

◆ m_plot_type

PLOT_TYPE ScientificPlot::m_plot_type
privateinherited

Definition at line 65 of file ScientificPlot.h.

Referenced by ScientificPlot::plotType().

◆ m_updateTimer

UpdateTimer* ColorMap::m_updateTimer
private

Definition at line 103 of file ColorMap.h.

Referenced by replot(), and setUpdateTimerConnected().


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