diff --git a/jkqtpbaseplotter.cpp b/jkqtpbaseplotter.cpp index 420e6f35d8..9e9211e72b 100644 --- a/jkqtpbaseplotter.cpp +++ b/jkqtpbaseplotter.cpp @@ -35,7 +35,8 @@ #include #include #include "jkqtpbaseplotter.h" -#include +#include "jkqtpplotsmodel.h" +#include #include #include #include @@ -144,7 +145,7 @@ QSizeF JKQtBasePlotter::getTextSizeSize(const QString &fontName, double fontSize * JKQtPlotterBase **************************************************************************************************************************/ JKQtBasePlotter::JKQtBasePlotter(bool datastore_internal, QObject* parent, JKQTPdatastore* datast): - QObject(parent) + QObject(parent), m_plotsModel(nullptr), xAxis(nullptr), yAxis(nullptr) { dataColumnsListWidget=NULL; @@ -177,6 +178,8 @@ JKQtBasePlotter::JKQtBasePlotter(bool datastore_internal, QObject* parent, JKQTP xAxis=new JKQTPhorizontalAxis(this); yAxis=new JKQTPverticalAxis(this); + m_plotsModel=new JKQTPPlotsModel(this); + connect(this, SIGNAL(plotUpdated()), m_plotsModel, SLOT(plotUpdated())); emitSignals=false; @@ -4090,10 +4093,10 @@ void JKQtBasePlotter::setAllGraphsVisible() if (emitPlotSignals) emit plotUpdated(); } -void JKQtBasePlotter::setGraphVisible(int i) +void JKQtBasePlotter::setGraphVisible(int i, bool visible) { JKQTPgraph* g=graphs.value(i, NULL); - if (g) g->set_visible(true); + if (g) g->set_visible(visible); if (emitPlotSignals) emit plotUpdated(); } diff --git a/jkqtpbaseplotter.h b/jkqtpbaseplotter.h index 3de42e95e2..ca26c83625 100644 --- a/jkqtpbaseplotter.h +++ b/jkqtpbaseplotter.h @@ -68,7 +68,7 @@ #define JKQTPBASEPLOTTER_H - +class JKQTPPlotsModel; // forward /** \brief base class for 2D plotter classes @@ -207,6 +207,9 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { /** \brief object used for the y-axis */ JKQTPverticalAxis* yAxis; + /** \brief model representing all Plots in this plotter and showing their visible/invisible state */ + JKQTPPlotsModel* m_plotsModel; + /** \brief filename for the ini file in which to save the user settings * \see jkqtplotter_base_userprops */ @@ -237,7 +240,7 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { double paintMagnification; /** \brief the decimal separator used when exporting data to text files */ - JKQTPPROPERTY(QString, CSVdecimalSeparator); + JKQTPPROPERTY(QString, CSVdecimalSeparator) /** \brief this string is used to introduce comments in text output when exporting data */ JKQTPPROPERTY(QString, CSVcommentInitializer) @@ -256,7 +259,7 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { /** \brief free space between widget top border and plot top border, this property may be set by the user and is possibly altered * by the key positioning algorithm. The altered value is written to iplotBorderTop */ - JKQTPPROPERTY(int, plotBorderTop); + JKQTPPROPERTY(int, plotBorderTop) /** \brief free space between widget top border and plot top border, as used to plot the graph (mnay be altered from user input ) */ int iplotBorderTop; int iplotKeyBorderTop; @@ -264,19 +267,19 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { int iTitleHeight; /** \brief free space between widget left border and plot left border, this property may be set by the user and is possibly altered * by the key positioning algorithm. The altered value is written to iplotBorderLeft */ - JKQTPPROPERTY(int, plotBorderLeft); + JKQTPPROPERTY(int, plotBorderLeft) /** \brief free space between widget top border and plot top border, as used to plot the graph (mnay be altered from user input ) */ int iplotBorderLeft; int iplotKeyBorderLeft; /** \brief free space between widget bottom border and plot bottom border, this property may be set by the user and is possibly altered * by the key positioning algorithm. The altered value is written to iplotBorderBottom */ - JKQTPPROPERTY(int, plotBorderBottom); + JKQTPPROPERTY(int, plotBorderBottom) /** \brief free space between widget top border and plot top border, as used to plot the graph (mnay be altered from user input ) */ int iplotBorderBottom; int iplotKeyBorderBottom; /** \brief free space between widget right border and plot right border, this property may be set by the user and is possibly altered * by the key positioning algorithm. The altered value is written to iplotBorderRight */ - JKQTPPROPERTY(int, plotBorderRight); + JKQTPPROPERTY(int, plotBorderRight) /** \brief free space between widget top border and plot top border, as used to plot the graph (mnay be altered from user input ) */ int iplotBorderRight; int iplotKeyBorderRight; @@ -293,14 +296,14 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { int iplotBorderRight_nographs; /** \brief indicates whether the widget should maintain an aspect ratio of plotwidth and plotheight */ - JKQTPPROPERTY(bool, maintainAspectRatio); + JKQTPPROPERTY(bool, maintainAspectRatio) /** \brief the aspect ratio of plotwidth and plotheight to maintain, if \c maintainAspectRatio==true */ - JKQTPPROPERTY(double, aspectRatio); + JKQTPPROPERTY(double, aspectRatio) /** \brief indicates whether the axes should maintain an aspect ratio */ - JKQTPPROPERTY(bool, maintainAxisAspectRatio); + JKQTPPROPERTY(bool, maintainAxisAspectRatio) /** \brief the aspect ratio of axis widths to maintain, if \c maintainAxisAspectRatio==true */ - JKQTPPROPERTY(double, axisAspectRatio); + JKQTPPROPERTY(double, axisAspectRatio) /** \brief plot width in pixels inside the widget (calculated by calcPlotScaling() from plotBorderLeft, plotBorderRight and widgetWidth) */ int plotWidth; @@ -310,16 +313,16 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { /** \brief color of the plotted graph */ - JKQTPPROPERTY(QColor, graphColor); + JKQTPPROPERTY(QColor, graphColor) /** \brief colors used in modes where more than one graph is beeing plottet */ QColor manyGraphsColor[50]; QColor def_manyGraphsColor[50]; /** \brief number of actually defined items in manyGraphsColor */ int manyGraphsColorCount; /** \brief pen styles used in modes where more than one graph is beeing plottet */ - JKQTPPROPERTY(Qt::PenStyle, manyGraphsStyle[5]); + JKQTPPROPERTY(Qt::PenStyle, manyGraphsStyle[5]) /** \brief width of the plotted graph (in pixel) */ - JKQTPPROPERTY(double, graphWidth); + JKQTPPROPERTY(double, graphWidth) @@ -329,64 +332,64 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { /** \brief color of the coordinate system */ - JKQTPPROPERTY(QColor, systemColor); + JKQTPPROPERTY(QColor, systemColor) /** \brief width of the coordinate (in pixel) */ - JKQTPPROPERTY(double, systemWidth); + JKQTPPROPERTY(double, systemWidth) /** \brief color of the background*/ - JKQTPPROPERTY(QColor, backgroundColor); + JKQTPPROPERTY(QColor, backgroundColor) /** \brief color of the background when exporting*/ - JKQTPPROPERTY(QColor, exportBackgroundColor); + JKQTPPROPERTY(QColor, exportBackgroundColor) /** \brief color of the plot's background*/ - JKQTPPROPERTY(QColor, plotBackgroundColor); + JKQTPPROPERTY(QColor, plotBackgroundColor) /** \brief indicates whether to plot a frame around the key */ - JKQTPPROPERTY(bool, showKeyFrame); + JKQTPPROPERTY(bool, showKeyFrame) /** \brief color of the key frame line */ - JKQTPPROPERTY(QColor, keyFrameColor); + JKQTPPROPERTY(QColor, keyFrameColor) /** \brief width of the key frame line */ - JKQTPPROPERTY(double, keyFrameWidth); + JKQTPPROPERTY(double, keyFrameWidth) /** \brief color of the key background */ - JKQTPPROPERTY(QColor, keyBackgroundColor); + JKQTPPROPERTY(QColor, keyBackgroundColor) /** \brief indicates whether to plot a key */ - JKQTPPROPERTY(bool, showKey); + JKQTPPROPERTY(bool, showKey) /** \brief font face for key labels */ - JKQTPPROPERTY(QString, keyFont); + JKQTPPROPERTY(QString, keyFont) /** \brief font size for key labels [in points] */ - JKQTPPROPERTY(double, keyFontSize); + JKQTPPROPERTY(double, keyFontSize) /** \brief width of a key item in pixels [in units of width of 'X' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, key_item_width); + JKQTPPROPERTY(double, key_item_width) /** \brief height of a key item in pixels [in units of height keyFont, keyFontSize] */ - JKQTPPROPERTY(double, key_item_height); + JKQTPPROPERTY(double, key_item_height) /** \brief length of the line samples in the key in pixels [in units of width of 'X' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, key_line_length); + JKQTPPROPERTY(double, key_line_length) /** \brief x-distance between key frame and key content [in units of width of 'X' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, keyXMargin); + JKQTPPROPERTY(double, keyXMargin) /** \brief y-distance between key frame and key content [in units of width of 'x' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, keyYMargin); + JKQTPPROPERTY(double, keyYMargin) /** \brief x-offset of the key from the border of the plot [in units of width of 'X' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, keyXOffset); + JKQTPPROPERTY(double, keyXOffset) /** \brief y-offset of the key from the border of the plot [in units of width of 'x' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, keyYOffset); + JKQTPPROPERTY(double, keyYOffset) /** \brief distance between key line example and key text [in units of width of 'X' set in keyFont, keyFontSize] */ - JKQTPPROPERTY(double, keyXSeparation); + JKQTPPROPERTY(double, keyXSeparation) /** \brief distance between two key entries [in units of height of keyFont, keyFontSize] */ - JKQTPPROPERTY(double, keyYSeparation); + JKQTPPROPERTY(double, keyYSeparation) /** \brief key position */ - JKQTPPROPERTY(JKQTPkeyPosition, keyPosition); + JKQTPPROPERTY(JKQTPkeyPosition, keyPosition) /** \brief the key layout */ - JKQTPPROPERTY(JKQTPkeyLayout, keyLayout); + JKQTPPROPERTY(JKQTPkeyLayout, keyLayout) /** \brief determine width of the key automatically */ - JKQTPPROPERTY(bool, keyAutosize); + JKQTPPROPERTY(bool, keyAutosize) /** \brief the plot label text */ QString plotLabel; /** \brief the plot label font name */ - JKQTPPROPERTY(QString, plotLabelFontname); + JKQTPPROPERTY(QString, plotLabelFontname) /** \brief the plot label font size */ - JKQTPPROPERTY(double, plotLabelFontSize); + JKQTPPROPERTY(double, plotLabelFontSize) /** \brief calculate the scaling and offset values from axis min/max values */ void calcPlotScaling(JKQTPEnhancedPainter& painter); @@ -398,20 +401,20 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { bool emitSignals; /** \brief specifies whether to use antialiasing for plotting the coordinate system */ - JKQTPPROPERTY(bool, useAntiAliasingForSystem); + JKQTPPROPERTY(bool, useAntiAliasingForSystem) /** \brief specifies whether to use antialiasing for plotting the graphs * * \note You can set this property \c false to increase plotting speed of complex plots (with many graphs inside). You can reach a * roughly three-fold speed improvement! */ - JKQTPPROPERTY(bool, useAntiAliasingForGraphs); + JKQTPPROPERTY(bool, useAntiAliasingForGraphs) /** \brief specifies whether to use antialiasing when drawing any text * \note You can set this property \c false to increase plotting speed of complex plots (with many graphs inside). You can reach a * roughly three-fold speed improvement! */ - JKQTPPROPERTY(bool, useAntiAliasingForText); + JKQTPPROPERTY(bool, useAntiAliasingForText) /** \brief multiplier which is used for font sizes when the plot is exported/printed */ double fontSizePrintMultiplier; @@ -442,7 +445,7 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { /** \brief hidden default constructor */ - JKQtBasePlotter() {}; + JKQtBasePlotter() {} @@ -752,7 +755,10 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { virtual ~JKQtBasePlotter(); /** \brief returns a pointer to the datastore used by this object */ - inline JKQTPdatastore* getDatastore() { return datastore; }; + inline JKQTPdatastore* getDatastore() { return datastore; } + + /** \brief returns model representing all Plots in this plotter and showing their visible/invisible state */ + inline JKQTPPlotsModel* getPlotsModel() { return m_plotsModel; } /** \brief tells the plotter object to use the given external datastore. * @@ -806,10 +812,10 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { void resize(int width, int height); /** \brief gets the width of the plot widget */ - inline int getWidth() {return widgetWidth; }; + inline int getWidth() {return widgetWidth; } /** \brief gets the width of the plot widget */ - inline int getHeight() {return widgetHeight; }; + inline int getHeight() {return widgetHeight; } /** \brief sets the width of the plot widget */ void setHeight(int heigh); @@ -827,16 +833,16 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { void setXY(double xminn, double xmaxx, double yminn, double ymaxx); /** \brief returns the current x-axis min */ - inline double getXMin() const {return xAxis->getMin(); }; + inline double getXMin() const {return xAxis->getMin(); } /** \brief returns the current x-axis max */ - inline double getXMax() const {return xAxis->getMax(); }; + inline double getXMax() const {return xAxis->getMax(); } /** \brief returns the current y-axis min */ - inline double getYMin() const {return yAxis->getMin(); }; + inline double getYMin() const {return yAxis->getMin(); } /** \brief returns the current y-axis max */ - inline double getYMax() const {return yAxis->getMax(); }; + inline double getYMax() const {return yAxis->getMax(); } @@ -1121,7 +1127,7 @@ class LIB_EXPORT JKQtBasePlotter: public QObject { void setAllGraphsInvisible(); void setAllGraphsVisible(); - void setGraphVisible(int i); + void setGraphVisible(int i, bool visible=true); /** \brief add a new graph, returns it's position in the graphs list, if the graph is already in the plot, this returns the index in the list */ size_t addGraph(JKQTPgraph* gr); diff --git a/jkqtplotter.pri b/jkqtplotter.pri index f597103751..6c88246283 100644 --- a/jkqtplotter.pri +++ b/jkqtplotter.pri @@ -16,7 +16,8 @@ HEADERS += $$PWD/jkqtpbaseplotter.h \ $$PWD/jkqtpoverlayelements.h \ $$PWD/jkqtpgeoelements.h \ $$PWD/jkqtpmathparser.h \ - $$PWD/jkqtp_imexport.h + $$PWD/jkqtp_imexport.h \ + $$PWD/jkqtpplotsmodel.h SOURCES += $$PWD/jkqtpbaseplotter.cpp \ @@ -32,7 +33,8 @@ SOURCES += $$PWD/jkqtpbaseplotter.cpp \ $$PWD/jkqtpparsedfunctionelements.cpp \ $$PWD/jkqtpoverlayelements.cpp \ $$PWD/jkqtpgeoelements.cpp \ - $$PWD/jkqtpmathparser.cpp + $$PWD/jkqtpmathparser.cpp \ + $$PWD/jkqtpplotsmodel.cpp RESOURCES += $$PWD/jkqtpbaseplotter.qrc diff --git a/jkqtpplotsmodel.cpp b/jkqtpplotsmodel.cpp new file mode 100644 index 0000000000..a6f477dfae --- /dev/null +++ b/jkqtpplotsmodel.cpp @@ -0,0 +1,89 @@ +/* + Copyright (c) 2008-2018 Jan W. Krieger (, ), German Cancer Research Center + + + + This software is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License (LGPL) as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License (LGPL) for more details. + + You should have received a copy of the GNU Lesser General Public License (LGPL) + along with this program. If not, see . +*/ + + + +/** \file jkqtpplotsmodel.cpp + * \ingroup jkqtpbaseplotter + */ + +#include "jkqtpplotsmodel.h" +#include "jkqtpbaseplotter.h" +#include "jkqtptools.h" +#include + + + +JKQTPPlotsModel::JKQTPPlotsModel(JKQtBasePlotter *parent): + QAbstractTableModel(parent), m_plotter(parent) +{ + +} + +int JKQTPPlotsModel::rowCount(const QModelIndex &/*parent*/) const +{ + return static_cast(m_plotter->getGraphCount()); +} + +int JKQTPPlotsModel::columnCount(const QModelIndex &/*parent*/) const +{ + return 1; +} + +QVariant JKQTPPlotsModel::data(const QModelIndex &index, int role) const +{ + if (role == Qt::DisplayRole) { + if (index.row()getGraphCount()) return m_plotter->getGraph(index.row())->get_title(); + } else if (role == Qt::CheckStateRole) { + if (index.row()getGraphCount()) return m_plotter->getGraph(index.row())->get_visible()?Qt::Checked:Qt::Unchecked; + } else if (role == Qt::DecorationRole) { + if (index.row()getGraphCount()) { + QImage img(16,16,QImage::Format_ARGB32); + { + JKQTPEnhancedPainter painter(&img); + QRectF rect(0,0,16,16); + m_plotter->getGraph(index.row())->drawKeyMarker(painter, rect); + } + return img; + } + } + return QVariant(); +} + +bool JKQTPPlotsModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + if (role == Qt::CheckStateRole) { + if (index.row()getGraphCount()) { + m_plotter->setGraphVisible(index.row(), value.toBool()); + return true; + } + } + return false; +} + +Qt::ItemFlags JKQTPPlotsModel::flags(const QModelIndex &index) const +{ + return Qt::ItemIsUserCheckable | QAbstractTableModel::flags(index); +} + +void JKQTPPlotsModel::plotUpdated() +{ + beginResetModel(); + endResetModel(); +} diff --git a/jkqtpplotsmodel.h b/jkqtpplotsmodel.h new file mode 100644 index 0000000000..0f26bb94c2 --- /dev/null +++ b/jkqtpplotsmodel.h @@ -0,0 +1,60 @@ +/* + Copyright (c) 2008-2018 Jan W. Krieger (, ), German Cancer Research Center (DKFZ) & IWR, University of Heidelberg + + + + This software is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License (LGPL) as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License (LGPL) for more details. + + You should have received a copy of the GNU Lesser General Public License (LGPL) + along with this program. If not, see . +*/ + + + +/** + * \defgroup jkqtpplotsmodel data model with all plots ina JKQtBasePlotter (+ allows to switch them visible/invisible) + * \ingroup jkqtpbaseplotter + * + * + */ + +/** \file jkqtpplotsmodel.h + * \ingroup jkqtpbaseplotter + */ + +#ifndef JKQTPPLOTSMODEL_H +#define JKQTPPLOTSMODEL_H + +#include "jkqtpbaseplotter.h" +#include "jkqtp_imexport.h" + +#include + +class JKQtBasePlotter; // forward +/** \brief data model with all plots ina JKQtBasePlotter (+ allows to switch them visible/invisible) */ +class JKQTPPlotsModel : public QAbstractTableModel +{ + Q_OBJECT +public: + JKQTPPlotsModel(JKQtBasePlotter *parent); + int rowCount(const QModelIndex &parent = QModelIndex()) const override ; + int columnCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole) override; + Qt::ItemFlags flags(const QModelIndex & index) const override ; +public slots: + void plotUpdated(); +private: + JKQtBasePlotter* m_plotter; +}; + + +#endif // JKQTPPLOTSMODEL_H diff --git a/jkqtptools.h b/jkqtptools.h index 6e84ebc4b1..9eadeb6158 100644 --- a/jkqtptools.h +++ b/jkqtptools.h @@ -151,24 +151,24 @@ inline virtual void set_##varname (const typedef_set_##varname & __value) \ { \ this->varname = __value; \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ {\ return this->varname; \ - }; + } #define JKQTPGET_SET_VMACRO(type,varname) \ typedef type typedef_set_##varname ;\ /** \brief sets the property varname to the specified \a __value. \details Description of the parameter varname is:
\copybrief varname.
\see varname for more information */ \ inline virtual void set_##varname (const typedef_set_##varname & __value) \ { \ this->varname = __value; \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ {\ return this->varname; \ - }; + } #define JKQTPGetSetMacro(type,varname) JKQTPGET_SET_MACRO(type,varname) /** @@ -184,11 +184,11 @@ { \ this->varname = __value; \ this-> paramsChanged=true; \ - }; \ + } \ inline virtual type get_##varname () const /** \brief returns the property varname. \see varname for more information */ \ {\ return this->varname; \ - }; + } #define JKQTPGetSetMacroP(type,varname) JKQTPGET_SET_MACRO_P(type,varname) /** @@ -205,12 +205,12 @@ this-> paramsChanged=true; \ inst; \ } \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ { \ return this->varname; \ - }; + } #define JKQTPGetSetMacroIP(type,varname,inst) JKQTPGET_SET_MACRO_IP(type,varname,inst) /** @@ -226,12 +226,12 @@ this->varname = __value; \ inst; \ } \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ {\ return this->varname; \ - }; + } #define JKQTPGetSetMacroI(type,varname,inst) JKQTPGET_SET_MACRO_I(type,varname,inst) /** @@ -249,17 +249,17 @@ if (this->varname2 != __value2) { \ this->varname2 = __value2; \ } \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ {\ return this->varname; \ - }; \ + } \ /** \brief returns the property varname2. \see varname2 for more information */\ inline virtual type2 get_##varname2 () const \ {\ return this->varname2; \ - }; + } #define JKQTPGetSetMacroTwo(name,type,varname,type2,varname2) JKQTPGET_SET_MACRO_TWO(name,type,varname,type2,varname2) /** @@ -282,17 +282,17 @@ if (set) { \ inst; \ } \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ {\ return this->varname; \ - }; \ + } \ /** \brief returns the property varname2. \see varname2 for more information */ \ inline virtual type2 get_##varname2 () const \ {\ return this->varname2; \ - }; + } #define JKQTPGetSetMacroTwoI(name,type,varname,type2,varname2,inst) JKQTPGET_SET_MACRO_TWO_I(name,type,varname,type2,varname2,inst) @@ -308,12 +308,12 @@ {\ this->varname = __value; \ inst; \ - }; \ + } \ /** \brief returns the property varname. \see varname for more information */ \ inline virtual type get_##varname () const \ {\ return this->varname; \ - }; + } #define JKQTPGetSetMacroINC(type,varname,inst) JKQTPGET_SET_MACRO_INC(type,varname,inst) /** \brief create get_varname() and set_varname(type __value) methods/functions @@ -324,7 +324,7 @@ #define JKQTPGET_MACRO(type,varname) \ /** \brief returns the property varname. \details Description of the parameter varname is:
\copybrief varname.
. \see varname for more information */ \ inline virtual type get_##varname() const \ - { return this->varname; }; + { return this->varname; } #define JKQTPGetMacro(type,varname) JKQTPGET_MACRO(type,varname) @@ -340,7 +340,7 @@ inline virtual void set_##varname (const typedef_set_##varname & __value) \ { \ this->varname = __value; \ - }; + } #define JKQTPSetMacro(type,varname) JKQTPSET_MACRO(type,varname) /** @@ -359,7 +359,7 @@ this->varname = __value; \ this->paramsChanged=true; \ } \ - }; + } #define JKQTPSetMacroP(type,varname) JKQTPSET_MACRO_P(type,varname) /** @@ -375,7 +375,7 @@ this->varname = __value; \ inst; \ } \ - }; + } #define JKQTPSetMacroI(type,varname,inst) JKQTPSET_MACRO_I(type,varname,inst) /** @@ -391,7 +391,7 @@ if (this->varname != __value) { \ this->varname = __value; \ } \ - }; + } #define JKQTPSetMacroIBefore(type,varname,inst) JKQTPSET_MACRO_I_BEFORE(type,varname,inst) /** * \brief like SetMacroP(), but adds the instruction \a inst to the set method. This may be used @@ -407,7 +407,7 @@ this->paramsChanged=true; \ inst; \ } \ - }; + } #define JKQTPSetMacroIP(type,varname,inst) JKQTPSET_MACRO_IP(type,varname,inst) /*@}*/ diff --git a/test/jkqtplot_test/testmain.cpp b/test/jkqtplot_test/testmain.cpp index 2082dcdafe..453a3363ff 100644 --- a/test/jkqtplot_test/testmain.cpp +++ b/test/jkqtplot_test/testmain.cpp @@ -51,9 +51,16 @@ TestMain::TestMain(QWidget *parent) : plotBot->get_plotter()->set_userSettigsFilename(QApplication::applicationDirPath()+"/usersettings.ini", "plot/"); plotBot2->get_plotter()->set_userSettigsFilename(QApplication::applicationDirPath()+"/usersettings.ini", "plot/"); + QListView* listPlots=new QListView(win); + listPlots->setModel(plot->get_plotter()->getPlotsModel()); + listPlots->setMaximumWidth(256); QVBoxLayout* layout=new QVBoxLayout(win); - layout->addWidget(plot); - layout->addWidget(plotBot); + QGridLayout* layout_grid=new QGridLayout(win); + layout_grid->addWidget(plot,0,0,1,1); + layout_grid->addWidget(plotBot,1,0,1,1); + layout_grid->addWidget(listPlots,0,1,1,1); + layout_grid->setColumnStretch(0,1); + layout->addLayout(layout_grid); layout->addWidget(plotBot2); win->setLayout(layout); win->resize(1000, 800); diff --git a/test/jkqtplot_test/testmain.h b/test/jkqtplot_test/testmain.h index 4e858f9cb7..a5f4b5fe15 100644 --- a/test/jkqtplot_test/testmain.h +++ b/test/jkqtplot_test/testmain.h @@ -16,6 +16,7 @@ #include "../../jkqtpoverlayelements.h" #include "../../jkqtpparsedfunctionelements.h" #include "../../jkqtpbaseelements.h" +#include "../../jkqtpplotsmodel.h" #include "../../jkqtptools.h" #define N1 200