[labplot/frameworks] /: fixed merge conflicts
Stefan Gerlach
stefan.gerlach at uni-konstanz.de
Wed Sep 7 18:23:59 UTC 2016
Git commit 2da178f3536026f2de0d5eb3b484fa4342e0e593 by Stefan Gerlach.
Committed on 07/09/2016 at 18:23.
Pushed by sgerlach into branch 'frameworks'.
fixed merge conflicts
M +26 -2 doc/index.docbook
M +6 -0 src/CMakeLists.txt
M +10 -14 src/backend/core/AbstractAspect.cpp
M +0 -2 src/backend/core/Folder.cpp
M +5 -0 src/backend/core/Project.cpp
M +22 -6 src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
M +2 -1 src/commonfrontend/widgets/TreeViewComboBox.cpp
M +22 -15 src/commonfrontend/worksheet/WorksheetView.cpp
M +5 -3 src/commonfrontend/worksheet/WorksheetView.h
M +38 -20 src/kdefrontend/GuiObserver.cpp
M +7 -11 src/kdefrontend/LabPlot.cpp
M +62 -66 src/kdefrontend/MainWin.cpp
M +4 -2 src/kdefrontend/MainWin.h
M +1 -1 src/kdefrontend/TemplateHandler.cpp
M +533 -0 src/kdefrontend/dockwidgets/XYDataReductionCurveDock.cpp
http://commits.kde.org/labplot/2da178f3536026f2de0d5eb3b484fa4342e0e593
diff --cc src/backend/core/Folder.cpp
index 48c06f1,f1f84de..153692f
--- a/src/backend/core/Folder.cpp
+++ b/src/backend/core/Folder.cpp
@@@ -52,10 -49,8 +52,8 @@@
Folder::Folder(const QString &name) : AbstractAspect(name) {}
- Folder::~Folder(){}
-
QIcon Folder::icon() const {
- return KIcon("folder");
+ return QIcon::fromTheme("folder");
}
/**
diff --cc src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
index 25e46c8,9f198bf..ae735a7
--- a/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
+++ b/src/backend/worksheet/plots/cartesian/CartesianPlot.cpp
@@@ -347,22 -347,24 +348,23 @@@ void CartesianPlot::initDefault(Type ty
void CartesianPlot::initActions() {
//"add new" actions
- addCurveAction = new KAction(KIcon("labplot-xy-curve"), i18n("xy-curve"), this);
- addEquationCurveAction = new KAction(KIcon("labplot-xy-equation-curve"), i18n("xy-curve from a mathematical equation"), this);
+ addCurveAction = new QAction(QIcon::fromTheme("labplot-xy-curve"), i18n("xy-curve"), this);
+ addEquationCurveAction = new QAction(QIcon::fromTheme("labplot-xy-equation-curve"), i18n("xy-curve from a mathematical equation"), this);
// no icons yet
- addDataReductionCurveAction = new KAction(i18n("xy-curve from a data reduction"), this);
- addInterpolationCurveAction = new KAction(i18n("xy-curve from an interpolation"), this);
- addSmoothCurveAction = new KAction(i18n("xy-curve from a smooth"), this);
- addFitCurveAction = new KAction(KIcon("labplot-xy-fit-curve"), i18n("xy-curve from a fit to data"), this);
- addFourierFilterCurveAction = new KAction(i18n("xy-curve from a Fourier filter"), this);
- addFourierTransformCurveAction = new KAction(i18n("xy-curve from a Fourier transform"), this);
-// addInterpolationCurveAction = new KAction(KIcon("labplot-xy-interpolation-curve"), i18n("xy-curve from an interpolation"), this);
-// addSmoothCurveAction = new KAction(KIcon("labplot-xy-smooth-curve"), i18n("xy-curve from a smooth"), this);
-// addFourierFilterCurveAction = new KAction(KIcon("labplot-xy-fourier_filter-curve"), i18n("xy-curve from a Fourier filter"), this);
-// addFourierTransformCurveAction = new KAction(KIcon("labplot-xy-fourier_transform-curve"), i18n("xy-curve from a Fourier transform"), this);
-
- addLegendAction = new KAction(KIcon("text-field"), i18n("legend"), this);
- addHorizontalAxisAction = new KAction(KIcon("labplot-axis-horizontal"), i18n("horizontal axis"), this);
- addVerticalAxisAction = new KAction(KIcon("labplot-axis-vertical"), i18n("vertical axis"), this);
- addCustomPointAction = new KAction(KIcon("draw-cross"), i18n("custom point"), this);
++ addDataReductionCurveAction = new QAction(i18n("xy-curve from a data reduction"), this);
+ addInterpolationCurveAction = new QAction(i18n("xy-curve from an interpolation"), this);
+ addSmoothCurveAction = new QAction(i18n("xy-curve from a smooth"), this);
+ addFitCurveAction = new QAction(QIcon::fromTheme("labplot-xy-fit-curve"), i18n("xy-curve from a fit to data"), this);
+ addFourierFilterCurveAction = new QAction(i18n("xy-curve from a Fourier filter"), this);
+ addFourierTransformCurveAction = new QAction(i18n("xy-curve from a Fourier transform"), this);
+// addInterpolationCurveAction = new QAction(QIcon::fromTheme("labplot-xy-interpolation-curve"), i18n("xy-curve from an interpolation"), this);
+// addSmoothCurveAction = new QAction(QIcon::fromTheme("labplot-xy-smooth-curve"), i18n("xy-curve from a smooth"), this);
+// addFourierFilterCurveAction = new QAction(QIcon::fromTheme("labplot-xy-fourier_filter-curve"), i18n("xy-curve from a Fourier filter"), this);
+// addFourierTransformCurveAction = new QAction(QIcon::fromTheme("labplot-xy-fourier_transform-curve"), i18n("xy-curve from a Fourier transform"), this);
+ addLegendAction = new QAction(QIcon::fromTheme("text-field"), i18n("legend"), this);
+ addHorizontalAxisAction = new QAction(QIcon::fromTheme("labplot-axis-horizontal"), i18n("horizontal axis"), this);
+ addVerticalAxisAction = new QAction(QIcon::fromTheme("labplot-axis-vertical"), i18n("vertical axis"), this);
+ addCustomPointAction = new QAction(QIcon::fromTheme("draw-cross"), i18n("custom point"), this);
connect(addCurveAction, SIGNAL(triggered()), SLOT(addCurve()));
connect(addEquationCurveAction, SIGNAL(triggered()), SLOT(addEquationCurve()));
diff --cc src/commonfrontend/worksheet/WorksheetView.cpp
index 9dbcc8c,e3fad56..3602b09
--- a/src/commonfrontend/worksheet/WorksheetView.cpp
+++ b/src/commonfrontend/worksheet/WorksheetView.cpp
@@@ -272,62 -272,64 +272,64 @@@ void WorksheetView::initActions()
connect(cartesianPlotMouseModeActionGroup, SIGNAL(triggered(QAction*)), SLOT(cartesianPlotMouseModeChanged(QAction*)));
QActionGroup* cartesianPlotAddNewActionGroup = new QActionGroup(this);
- addCurveAction = new KAction(KIcon("labplot-xy-curve"), i18n("xy-curve"), cartesianPlotAddNewActionGroup);
- addEquationCurveAction = new KAction(KIcon("labplot-xy-equation-curve"), i18n("xy-curve from a mathematical equation"), cartesianPlotAddNewActionGroup);
+ addCurveAction = new QAction(QIcon::fromTheme("labplot-xy-curve"), i18n("xy-curve"), cartesianPlotAddNewActionGroup);
+ addEquationCurveAction = new QAction(QIcon::fromTheme("labplot-xy-equation-curve"), i18n("xy-curve from a mathematical equation"), cartesianPlotAddNewActionGroup);
// no icons yet
- addDataReductionCurveAction = new KAction(i18n("xy-curve from a data reduction"), cartesianPlotAddNewActionGroup);
- addInterpolationCurveAction = new KAction(i18n("xy-curve from an interpolation"), cartesianPlotAddNewActionGroup);
- addSmoothCurveAction = new KAction(i18n("xy-curve from a smooth"), cartesianPlotAddNewActionGroup);
- addFourierFilterCurveAction = new KAction(i18n("xy-curve from a Fourier filter"), cartesianPlotAddNewActionGroup);
- addFourierTransformCurveAction = new KAction(i18n("xy-curve from a Fourier transform"), cartesianPlotAddNewActionGroup);
-// addInterpolationCurveAction = new KAction(KIcon("labplot-xy-interpolation-curve"), i18n("xy-curve from an interpolation"), cartesianPlotAddNewActionGroup);
-// addSmoothCurveAction = new KAction(KIcon("labplot-xy-smooth-curve"), i18n("xy-curve from a smooth"), cartesianPlotAddNewActionGroup);
- addFitCurveAction = new KAction(KIcon("labplot-xy-fit-curve"), i18n("xy-curve from a fit to data"), cartesianPlotAddNewActionGroup);
-// addFourierFilterCurveAction = new KAction(KIcon("labplot-xy-fourier_filter-curve"), i18n("xy-curve from a Fourier filter"), cartesianPlotAddNewActionGroup);
-// addFourierTransformCurveAction = new KAction(KIcon("labplot-xy-fourier_transform-curve"), i18n("xy-curve from a Fourier transform"), cartesianPlotAddNewActionGroup);
- addLegendAction = new KAction(KIcon("text-field"), i18n("legend"), cartesianPlotAddNewActionGroup);
- addHorizontalAxisAction = new KAction(KIcon("labplot-axis-horizontal"), i18n("horizontal axis"), cartesianPlotAddNewActionGroup);
- addVerticalAxisAction = new KAction(KIcon("labplot-axis-vertical"), i18n("vertical axis"), cartesianPlotAddNewActionGroup);
- addCustomPointAction = new KAction(KIcon("draw-cross"), i18n("custom point"), cartesianPlotAddNewActionGroup);
++ addDataReductionCurveAction = new QAction(i18n("xy-curve from a data reduction"), cartesianPlotAddNewActionGroup);
+ addInterpolationCurveAction = new QAction(i18n("xy-curve from an interpolation"), cartesianPlotAddNewActionGroup);
+ addSmoothCurveAction = new QAction(i18n("xy-curve from a smooth"), cartesianPlotAddNewActionGroup);
+ addFitCurveAction = new QAction(QIcon::fromTheme("labplot-xy-fit-curve"), i18n("xy-curve from a fit to data"), cartesianPlotAddNewActionGroup);
+ addFourierFilterCurveAction = new QAction(i18n("xy-curve from a Fourier filter"), cartesianPlotAddNewActionGroup);
+ addFourierTransformCurveAction = new QAction(i18n("xy-curve from a Fourier transform"), cartesianPlotAddNewActionGroup);
+// addInterpolationCurveAction = new QAction(QIcon::fromTheme("labplot-xy-interpolation-curve"), i18n("xy-curve from an interpolation"), cartesianPlotAddNewActionGroup);
+// addSmoothCurveAction = new QAction(QIcon::fromTheme("labplot-xy-smooth-curve"), i18n("xy-curve from a smooth"), cartesianPlotAddNewActionGroup);
+// addFourierFilterCurveAction = new QAction(QIcon::fromTheme("labplot-xy-fourier_filter-curve"), i18n("xy-curve from a Fourier filter"), cartesianPlotAddNewActionGroup);
+// addFourierTransformCurveAction = new QAction(QIcon::fromTheme("labplot-xy-fourier_transform-curve"), i18n("xy-curve from a Fourier transform"), cartesianPlotAddNewActionGroup);
+ addLegendAction = new QAction(QIcon::fromTheme("text-field"), i18n("legend"), cartesianPlotAddNewActionGroup);
+ addHorizontalAxisAction = new QAction(QIcon::fromTheme("labplot-axis-horizontal"), i18n("horizontal axis"), cartesianPlotAddNewActionGroup);
+ addVerticalAxisAction = new QAction(QIcon::fromTheme("labplot-axis-vertical"), i18n("vertical axis"), cartesianPlotAddNewActionGroup);
+ addCustomPointAction = new QAction(QIcon::fromTheme("draw-cross"), i18n("custom point"), cartesianPlotAddNewActionGroup);
connect(cartesianPlotAddNewActionGroup, SIGNAL(triggered(QAction*)), SLOT(cartesianPlotAddNew(QAction*)));
// Analysis menu
// no icons yet
- addDataReductionAction = new KAction(i18n("Data reduction"), cartesianPlotAddNewActionGroup);
- addInterpolationAction = new KAction(i18n("Interpolation"), cartesianPlotAddNewActionGroup);
- addSmoothAction = new KAction(i18n("Smooth"), cartesianPlotAddNewActionGroup);
- addFitAction = new KAction(KIcon("labplot-xy-fit-curve"), i18n("Data fitting"), cartesianPlotAddNewActionGroup);
- addFourierFilterAction = new KAction(i18n("Fourier filter"), cartesianPlotAddNewActionGroup);
- addFourierTransformAction = new KAction(i18n("Fourier transform"), cartesianPlotAddNewActionGroup);
-// addInterpolationAction = new KAction(KIcon("labplot-xy-interpolation-curve"), i18n("Interpolation"), cartesianPlotAddNewActionGroup);
-// addSmoothAction = new KAction(KIcon("labplot-xy-smooth-curve"), i18n("Smooth"), cartesianPlotAddNewActionGroup);
-// addFourierFilterAction = new KAction(KIcon("labplot-xy-fourier_filter-curve"), i18n("Fourier filter"), cartesianPlotAddNewActionGroup);
-// addFourierTransformAction = new KAction(KIcon("labplot-xy-fourier_transform-curve"), i18n("Fourier transform"), cartesianPlotAddNewActionGroup);
++ addDataReductionAction = new QAction(i18n("Data reduction"), cartesianPlotAddNewActionGroup);
+ addInterpolationAction = new QAction(i18n("Interpolation"), cartesianPlotAddNewActionGroup);
+ addSmoothAction = new QAction(i18n("Smooth"), cartesianPlotAddNewActionGroup);
+ addFitAction = new QAction(QIcon::fromTheme("labplot-xy-fit-curve"), i18n("Data fitting"), cartesianPlotAddNewActionGroup);
+ addFourierFilterAction = new QAction(i18n("Fourier filter"), cartesianPlotAddNewActionGroup);
+ addFourierTransformAction = new QAction(i18n("Fourier transform"), cartesianPlotAddNewActionGroup);
+// addInterpolationAction = new QAction(QIcon::fromTheme("labplot-xy-interpolation-curve"), i18n("Interpolation"), cartesianPlotAddNewActionGroup);
+// addSmoothAction = new QAction(QIcon::fromTheme("labplot-xy-smooth-curve"), i18n("Smooth"), cartesianPlotAddNewActionGroup);
+// addFourierFilterAction = new QAction(QIcon::fromTheme("labplot-xy-fourier_filter-curve"), i18n("Fourier filter"), cartesianPlotAddNewActionGroup);
+// addFourierTransformAction = new QAction(QIcon::fromTheme("labplot-xy-fourier_transform-curve"), i18n("Fourier transform"), cartesianPlotAddNewActionGroup);
QActionGroup* cartesianPlotNavigationGroup = new QActionGroup(this);
- scaleAutoAction = new KAction(KIcon("labplot-auto-scale-all"), i18n("auto scale"), cartesianPlotNavigationGroup);
+ scaleAutoAction = new QAction(QIcon::fromTheme("labplot-auto-scale-all"), i18n("auto scale"), cartesianPlotNavigationGroup);
scaleAutoAction->setData(CartesianPlot::ScaleAuto);
- scaleAutoXAction = new KAction(KIcon("labplot-auto-scale-x"), i18n("auto scale X"), cartesianPlotNavigationGroup);
+ scaleAutoXAction = new QAction(QIcon::fromTheme("labplot-auto-scale-x"), i18n("auto scale X"), cartesianPlotNavigationGroup);
scaleAutoXAction->setData(CartesianPlot::ScaleAutoX);
- scaleAutoYAction = new KAction(KIcon("labplot-auto-scale-y"), i18n("auto scale Y"), cartesianPlotNavigationGroup);
+ scaleAutoYAction = new QAction(QIcon::fromTheme("labplot-auto-scale-y"), i18n("auto scale Y"), cartesianPlotNavigationGroup);
scaleAutoYAction->setData(CartesianPlot::ScaleAutoY);
- zoomInAction = new KAction(KIcon("zoom-in"), i18n("zoom in"), cartesianPlotNavigationGroup);
+ zoomInAction = new QAction(QIcon::fromTheme("zoom-in"), i18n("zoom in"), cartesianPlotNavigationGroup);
zoomInAction->setData(CartesianPlot::ZoomIn);
- zoomOutAction = new KAction(KIcon("zoom-out"), i18n("zoom out"), cartesianPlotNavigationGroup);
+ zoomOutAction = new QAction(QIcon::fromTheme("zoom-out"), i18n("zoom out"), cartesianPlotNavigationGroup);
zoomOutAction->setData(CartesianPlot::ZoomOut);
- zoomInXAction = new KAction(KIcon("labplot-zoom-in-x"), i18n("zoom in X"), cartesianPlotNavigationGroup);
+ zoomInXAction = new QAction(QIcon::fromTheme("labplot-zoom-in-x"), i18n("zoom in X"), cartesianPlotNavigationGroup);
zoomInXAction->setData(CartesianPlot::ZoomInX);
- zoomOutXAction = new KAction(KIcon("labplot-zoom-out-x"), i18n("zoom out X"), cartesianPlotNavigationGroup);
+ zoomOutXAction = new QAction(QIcon::fromTheme("labplot-zoom-out-x"), i18n("zoom out X"), cartesianPlotNavigationGroup);
zoomOutXAction->setData(CartesianPlot::ZoomOutX);
- zoomInYAction = new KAction(KIcon("labplot-zoom-in-y"), i18n("zoom in Y"), cartesianPlotNavigationGroup);
+ zoomInYAction = new QAction(QIcon::fromTheme("labplot-zoom-in-y"), i18n("zoom in Y"), cartesianPlotNavigationGroup);
zoomInYAction->setData(CartesianPlot::ZoomInY);
- zoomOutYAction = new KAction(KIcon("labplot-zoom-out-y"), i18n("zoom out Y"), cartesianPlotNavigationGroup);
+ zoomOutYAction = new QAction(QIcon::fromTheme("labplot-zoom-out-y"), i18n("zoom out Y"), cartesianPlotNavigationGroup);
zoomOutYAction->setData(CartesianPlot::ZoomOutY);
- shiftLeftXAction = new KAction(KIcon("labplot-shift-left-x"), i18n("shift left X"), cartesianPlotNavigationGroup);
+ shiftLeftXAction = new QAction(QIcon::fromTheme("labplot-shift-left-x"), i18n("shift left X"), cartesianPlotNavigationGroup);
shiftLeftXAction->setData(CartesianPlot::ShiftLeftX);
- shiftRightXAction = new KAction(KIcon("labplot-shift-right-x"), i18n("shift right X"), cartesianPlotNavigationGroup);
+ shiftRightXAction = new QAction(QIcon::fromTheme("labplot-shift-right-x"), i18n("shift right X"), cartesianPlotNavigationGroup);
shiftRightXAction->setData(CartesianPlot::ShiftRightX);
- shiftUpYAction = new KAction(KIcon("labplot-shift-up-y"), i18n("shift up Y"), cartesianPlotNavigationGroup);
+ shiftUpYAction = new QAction(QIcon::fromTheme("labplot-shift-up-y"), i18n("shift up Y"), cartesianPlotNavigationGroup);
shiftUpYAction->setData(CartesianPlot::ShiftUpY);
- shiftDownYAction = new KAction(KIcon("labplot-shift-down-y"), i18n("shift down Y"), cartesianPlotNavigationGroup);
+ shiftDownYAction = new QAction(QIcon::fromTheme("labplot-shift-down-y"), i18n("shift down Y"), cartesianPlotNavigationGroup);
shiftDownYAction->setData(CartesianPlot::ShiftDownY);
connect(cartesianPlotNavigationGroup, SIGNAL(triggered(QAction*)), SLOT(cartesianPlotNavigationChanged(QAction*)));
@@@ -445,11 -450,10 +448,10 @@@ void WorksheetView::initMenus()
m_cartesianPlotMenu->addSeparator();
m_cartesianPlotMenu->addMenu(m_cartesianPlotActionModeMenu);
- // Filter menu?
- //m_filterMenu = new QMenu(i18n("Filter"));
- //TODO: filter icon
- // m_filterMenu->setIcon(QIcon::fromTheme("zoom-draw"));
- // m_filterMenu->addAction(addFourierFilterAction);
+ // Data manipulation menu
+ m_dataManipulationMenu = new QMenu(i18n("Data Manipulation"));
- m_dataManipulationMenu->setIcon(KIcon("zoom-draw"));
++ m_dataManipulationMenu->setIcon(QIcon::fromTheme("zoom-draw"));
+ m_dataManipulationMenu->addAction(addDataReductionAction);
}
/*!
diff --cc src/kdefrontend/LabPlot.cpp
index 64618b5,958b945..fe0ddcb
--- a/src/kdefrontend/LabPlot.cpp
+++ b/src/kdefrontend/LabPlot.cpp
@@@ -39,38 -38,28 +39,34 @@@
#include "backend/core/AbstractColumn.h"
int main (int argc, char *argv[]) {
- KAboutData aboutData( "labplot2", "labplot2",
- ki18n("LabPlot2"), LVERSION,
- ki18n("LabPlot2 is a KDE-application for interactive graphing and analysis of scientific data."),
- KAboutData::License_GPL,
- ki18n("(c) 2007-2016") );
- aboutData.setHomepage("http://www.labplot.sourceforge.net");
- aboutData.addAuthor(ki18n("Stefan Gerlach"), ki18n("developer"), "stefan.gerlach at uni-konstanz.de", 0);
- aboutData.addAuthor(ki18n("Alexander Semke"), ki18n("developer"), "alexander.semke at web.de", 0);
- aboutData.addAuthor(ki18n("Andreas Kainz"), ki18n("icon designer"), "kainz.a at gmail.com", 0);
- aboutData.addCredit(ki18n("Yuri Chornoivan"), ki18n("Help on many questions about the KDE-infrastructure and translation related topics"), "yurchor at ukr.net", 0);
+ KAboutData aboutData( QStringLiteral("labplot2"), QString("labplot2"),
- LVERSION,
- i18n("LabPlot2 is a KDE-application for interactive graphing and analysis of scientific data."),
- KAboutLicense::GPL,
- i18n("(c) 2007-2016"),
- QString(),
- QStringLiteral("http://www.labplot.sourceforge.net"));
++ LVERSION, i18n("LabPlot2 is a KDE-application for interactive graphing and analysis of scientific data."),
++ KAboutLicense::GPL,i18n("(c) 2007-2016"), QString(), QStringLiteral("http://www.labplot.sourceforge.net"));
- KCmdLineArgs::init( argc, argv, &aboutData );
- KCmdLineOptions options;
- options.add("no-splash",ki18n("do not show the splash screen"));
- options.add("+[file]",ki18n("open a project file"));
- KCmdLineArgs::addCmdLineOptions( options );
+ aboutData.addAuthor(i18n("Stefan Gerlach"), i18n("developer"), "stefan.gerlach at uni-konstanz.de", 0);
+ aboutData.addAuthor(i18n("Alexander Semke"), i18n("developer"), "alexander.semke at web.de", 0);
+ aboutData.addAuthor(i18n("Andreas Kainz"), i18n("icon designer"), "kainz.a at gmail.com", 0);
+ aboutData.addCredit(i18n("Yuri Chornoivan"), i18n("Help on many questions about the KDE-infrastructure and translation related topics"), "yurchor at ukr.net", 0);
+ aboutData.addCredit(i18n("Garvit Khatri"), i18n("Porting LabPlot2 to KF5 and Integration with Cantor"), "garvitdelhi at gmail.com", 0);
+ KAboutData::setApplicationData(aboutData);
- KApplication app;
- KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+ QApplication app(argc, argv);
+ QCoreApplication::setApplicationVersion(QLatin1String(LVERSION));
+ QCommandLineParser parser;
+ parser.addHelpOption();
+ parser.addVersionOption();
+ QCommandLineOption nosplashOption("no-splash", i18n("disable splash screen"));
+ parser.addOption(nosplashOption);
+
+ parser.addPositionalArgument("+[file]", i18n( "open a project file"));
+
+ aboutData.setupCommandLine(&parser);
+ parser.process(app);
+ aboutData.processCommandLine(&parser);
+ const QStringList args = parser.positionalArguments();
QString filename;
- if (args->count() > 0)
- filename = args->arg(0);
+ if (args.count() > 0)
+ filename = args[0];
if(!filename.isEmpty() ) {
if ( !QFile::exists(filename)) {
diff --cc src/kdefrontend/MainWin.cpp
index 8c3c49a,f53f0c6..ddbaef3
--- a/src/kdefrontend/MainWin.cpp
+++ b/src/kdefrontend/MainWin.cpp
@@@ -95,45 -83,43 +95,45 @@@
*/
MainWin::MainWin(QWidget *parent, const QString& filename)
- : KXmlGuiWindow(parent),
- m_currentSubWindow(0),
- m_project(0),
- m_aspectTreeModel(0),
- m_projectExplorer(0),
- m_projectExplorerDock(0),
- m_propertiesDock(0),
- m_currentAspect(0),
- m_currentFolder(0),
- m_suppressCurrentSubWindowChangedEvent(false),
- m_closing(false),
- m_autoSaveActive(false),
- m_visibilityMenu(0),
- m_newMenu(0),
- m_editMenu(0),
- axisDock(0),
- notesDock(0),
- cartesianPlotDock(0),
- cartesianPlotLegendDock(0),
- columnDock(0),
- matrixDock(0),
- spreadsheetDock(0),
- projectDock(0),
- xyCurveDock(0),
- xyEquationCurveDock(0),
- xyInterpolationCurveDock(0),
- xySmoothCurveDock(0),
- xyFitCurveDock(0),
- xyFourierFilterCurveDock(0),
- xyFourierTransformCurveDock(0),
- worksheetDock(0),
- textLabelDock(0),
- customPointDock(0),
- datapickerImageDock(0),
- datapickerCurveDock(0),
+ : KXmlGuiWindow(parent),
+ m_currentSubWindow(0),
+ m_project(0),
+ m_aspectTreeModel(0),
+ m_projectExplorer(0),
+ m_projectExplorerDock(0),
+ m_propertiesDock(0),
+ m_currentAspect(0),
+ m_currentFolder(0),
+ m_suppressCurrentSubWindowChangedEvent(false),
+ m_closing(false),
+ m_autoSaveActive(false),
+ m_visibilityMenu(0),
+ m_newMenu(0),
+ m_editMenu(0),
+ axisDock(0),
+ notesDock(0),
+ cartesianPlotDock(0),
+ cartesianPlotLegendDock(0),
+ columnDock(0),
+ matrixDock(0),
+ spreadsheetDock(0),
+ projectDock(0),
+ xyCurveDock(0),
+ xyEquationCurveDock(0),
- xyDataReductionCurveDock(0),
+ xyInterpolationCurveDock(0),
+ xySmoothCurveDock(0),
+ xyFitCurveDock(0),
+ xyFourierFilterCurveDock(0),
+ xyFourierTransformCurveDock(0),
+ worksheetDock(0),
+ textLabelDock(0),
+ customPointDock(0),
+ datapickerImageDock(0),
+ datapickerCurveDock(0),
+#ifdef HAVE_CANTOR_LIBS
+ cantorWorksheetDock(0),
+#endif
- m_guiObserver(0) {
+ m_guiObserver(0) {
// QTimer::singleShot( 0, this, SLOT(initGUI(filename)) ); //TODO doesn't work anymore
initGUI(filename);
@@@ -169,19 -155,13 +169,19 @@@ void MainWin::initGUI(const QString& fi
m_mdiArea = new QMdiArea;
setCentralWidget(m_mdiArea);
connect(m_mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)),
- this, SLOT(handleCurrentSubWindowChanged(QMdiSubWindow*)));
+ this, SLOT(handleCurrentSubWindowChanged(QMdiSubWindow*)));
-
+#ifdef _WIN32
+ QIcon::setThemeName("hicolor");
+#endif
statusBar()->showMessage(i18nc("%1 is the LabPlot version", "Welcome to LabPlot %1", QLatin1String(LVERSION)));
initActions();
+#ifdef __APPLE__
+ setupGUI(Default, QLatin1String("/Applications/labplot2.app/Contents/share/labplot2ui.rc"));
+#else
+ setupGUI(Default, QLatin1String("labplot2ui.rc"));
+#endif
initMenus();
- setupGUI();
- setWindowIcon(KIcon("LabPlot2"));
+ setWindowIcon(QIcon::fromTheme("LabPlot2"));
setAttribute( Qt::WA_DeleteOnClose );
//make the status bar of a fixed size in order to avoid height changes when placing a ProgressBar there.
@@@ -955,8 -873,9 +955,8 @@@ bool MainWin::saveProject()
bool MainWin::saveProjectAs() {
KConfigGroup conf(KSharedConfig::openConfig(), "MainWin");
QString dir = conf.readEntry("LastOpenDir", "");
- QString fileName = KFileDialog::getSaveFileName(KUrl(dir),
- i18n("LabPlot Projects (*.lml *.lml.gz *.lml.bz2 *.lml.xz *.LML *.LML.GZ *.LML.BZ2 *.LML.XZ)"),
- this, i18n("Save project as"));
+ QString fileName = QFileDialog::getSaveFileName(this, i18n("Save project as"), dir,
- i18n("LabPlot Projects (*.lml *.lml.gz *.lml.bz2 *.lml.xz *.LML *.LML.GZ *.LML.BZ2 *.LML.XZ)"));
++ i18n("LabPlot Projects (*.lml *.lml.gz *.lml.bz2 *.lml.xz *.LML *.LML.GZ *.LML.BZ2 *.LML.XZ)"));
if (fileName.isEmpty())// "Cancel" was clicked
return false;
diff --cc src/kdefrontend/MainWin.h
index 604d99a,6ab2c00..660688a
--- a/src/kdefrontend/MainWin.h
+++ b/src/kdefrontend/MainWin.h
@@@ -239,14 -227,9 +241,14 @@@ private slots
void historyDialog();
void importFileDialog(const QString& fileName = QString());
void exportDialog();
- void editFitsFileDialog();
+ void editFitsFileDialog();
void settingsDialog();
void projectChanged();
+
+ //Cantor
+ #ifdef HAVE_CANTOR_LIBS
+ void newCantorWorksheet(QAction* action);
+ #endif
void newFolder();
void newWorkbook();
diff --cc src/kdefrontend/dockwidgets/XYDataReductionCurveDock.cpp
index 0000000,56cbd71..9cbeaa7
mode 000000,100644..100644
--- a/src/kdefrontend/dockwidgets/XYDataReductionCurveDock.cpp
+++ b/src/kdefrontend/dockwidgets/XYDataReductionCurveDock.cpp
@@@ -1,0 -1,533 +1,533 @@@
+ /***************************************************************************
+ File : XYDataReductionCurveDock.cpp
+ Project : LabPlot
+ --------------------------------------------------------------------
+ Copyright : (C) 2016 Stefan Gerlach (stefan.gerlach at uni.kn)
+ Description : widget for editing properties of data reduction curves
+
+ ***************************************************************************/
+
+ /***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
+ * Boston, MA 02110-1301 USA *
+ * *
+ ***************************************************************************/
+
+ #include "XYDataReductionCurveDock.h"
+ #include "backend/core/AspectTreeModel.h"
+ #include "backend/core/Project.h"
+ #include "backend/worksheet/plots/cartesian/XYDataReductionCurve.h"
+ #include "commonfrontend/widgets/TreeViewComboBox.h"
+
+ #include <QMenu>
+ #include <QWidgetAction>
+ #include <QStandardItemModel>
+ #ifndef NDEBUG
+ #include <QDebug>
+ #endif
+
+ #include <cmath> // isnan
+
+ /*!
+ \class XYDataReductionCurveDock
+ \brief Provides a widget for editing the properties of the XYDataReductionCurves
+ (2D-curves defined by an data reduction) currently selected in
+ the project explorer.
+
+ If more then one curves are set, the properties of the first column are shown.
+ The changes of the properties are applied to all curves.
+ The exclusions are the name, the comment and the datasets (columns) of
+ the curves - these properties can only be changed if there is only one single curve.
+
+ \ingroup kdefrontend
+ */
+
+ XYDataReductionCurveDock::XYDataReductionCurveDock(QWidget *parent):
+ XYCurveDock(parent), cbXDataColumn(0), cbYDataColumn(0), m_dataReductionCurve(0) {
+
+ //hide the line connection type
+ ui.cbLineType->setDisabled(true);
+
+ //remove the tab "Error bars"
+ ui.tabWidget->removeTab(5);
+ }
+
+ /*!
+ * // Tab "General"
+ */
+ void XYDataReductionCurveDock::setupGeneral() {
+ QWidget* generalTab = new QWidget(ui.tabGeneral);
+ uiGeneralTab.setupUi(generalTab);
+
+ QGridLayout* gridLayout = dynamic_cast<QGridLayout*>(generalTab->layout());
+ if (gridLayout) {
+ gridLayout->setContentsMargins(2,2,2,2);
+ gridLayout->setHorizontalSpacing(2);
+ gridLayout->setVerticalSpacing(2);
+ }
+
+ cbXDataColumn = new TreeViewComboBox(generalTab);
+ gridLayout->addWidget(cbXDataColumn, 4, 3, 1, 2);
+ cbYDataColumn = new TreeViewComboBox(generalTab);
+ gridLayout->addWidget(cbYDataColumn, 5, 3, 1, 2);
+
+ for (int i=0; i < NSL_GEOM_LINESIM_TYPE_COUNT; i++)
+ uiGeneralTab.cbType->addItem(i18n(nsl_geom_linesim_type_name[i]));
+ uiGeneralTab.cbType->setItemData(nsl_geom_linesim_type_visvalingam_whyatt, i18n("This method is much slower than any other"), Qt::ToolTipRole);
+
- uiGeneralTab.pbRecalculate->setIcon(KIcon("run-build"));
++ uiGeneralTab.pbRecalculate->setIcon(QIcon::fromTheme("run-build"));
+
+ QHBoxLayout* layout = new QHBoxLayout(ui.tabGeneral);
+ layout->setMargin(0);
+ layout->addWidget(generalTab);
+
+ //Slots
+ connect( uiGeneralTab.leName, SIGNAL(returnPressed()), this, SLOT(nameChanged()) );
+ connect( uiGeneralTab.leComment, SIGNAL(returnPressed()), this, SLOT(commentChanged()) );
+ connect( uiGeneralTab.chkVisible, SIGNAL(clicked(bool)), this, SLOT(visibilityChanged(bool)) );
+
+ connect( uiGeneralTab.cbType, SIGNAL(currentIndexChanged(int)), this, SLOT(typeChanged()) );
+ connect( uiGeneralTab.chkAuto, SIGNAL(clicked(bool)), this, SLOT(autoToleranceChanged()) );
+ connect( uiGeneralTab.sbTolerance, SIGNAL(valueChanged(double)), this, SLOT(toleranceChanged()) );
+ connect( uiGeneralTab.chkAuto2, SIGNAL(clicked(bool)), this, SLOT(autoTolerance2Changed()) );
+ connect( uiGeneralTab.sbTolerance2, SIGNAL(valueChanged(double)), this, SLOT(tolerance2Changed()) );
+
+ connect( uiGeneralTab.pbRecalculate, SIGNAL(clicked()), this, SLOT(recalculateClicked()) );
+ }
+
+ void XYDataReductionCurveDock::initGeneralTab() {
+ //if there are more then one curve in the list, disable the tab "general"
+ if (m_curvesList.size()==1) {
+ uiGeneralTab.lName->setEnabled(true);
+ uiGeneralTab.leName->setEnabled(true);
+ uiGeneralTab.lComment->setEnabled(true);
+ uiGeneralTab.leComment->setEnabled(true);
+
+ uiGeneralTab.leName->setText(m_curve->name());
+ uiGeneralTab.leComment->setText(m_curve->comment());
+ }else {
+ uiGeneralTab.lName->setEnabled(false);
+ uiGeneralTab.leName->setEnabled(false);
+ uiGeneralTab.lComment->setEnabled(false);
+ uiGeneralTab.leComment->setEnabled(false);
+
+ uiGeneralTab.leName->setText("");
+ uiGeneralTab.leComment->setText("");
+ }
+
+ //show the properties of the first curve
+ m_dataReductionCurve = dynamic_cast<XYDataReductionCurve*>(m_curve);
+ Q_ASSERT(m_dataReductionCurve);
+ XYCurveDock::setModelIndexFromColumn(cbXDataColumn, m_dataReductionCurve->xDataColumn());
+ XYCurveDock::setModelIndexFromColumn(cbYDataColumn, m_dataReductionCurve->yDataColumn());
+ // update list of selectable types
+ xDataColumnChanged(cbXDataColumn->currentModelIndex());
+
+ uiGeneralTab.cbType->setCurrentIndex(m_dataReductionData.type);
+ this->typeChanged();
+ uiGeneralTab.chkAuto->setChecked(m_dataReductionData.autoTolerance);
+ this->autoToleranceChanged();
+ uiGeneralTab.sbTolerance->setValue(m_dataReductionData.tolerance);
+ this->toleranceChanged();
+ uiGeneralTab.chkAuto2->setChecked(m_dataReductionData.autoTolerance2);
+ this->autoTolerance2Changed();
+ uiGeneralTab.sbTolerance2->setValue(m_dataReductionData.tolerance2);
+ this->tolerance2Changed();
+
+ this->showDataReductionResult();
+
+ //enable the "recalculate"-button if the source data was changed since the last dataReduction
+ uiGeneralTab.pbRecalculate->setEnabled(m_dataReductionCurve->isSourceDataChangedSinceLastDataReduction());
+
+ uiGeneralTab.chkVisible->setChecked( m_curve->isVisible() );
+
+ //Slots
+ connect(m_dataReductionCurve, SIGNAL(aspectDescriptionChanged(const AbstractAspect*)), this, SLOT(curveDescriptionChanged(const AbstractAspect*)));
+ connect(m_dataReductionCurve, SIGNAL(xDataColumnChanged(const AbstractColumn*)), this, SLOT(curveXDataColumnChanged(const AbstractColumn*)));
+ connect(m_dataReductionCurve, SIGNAL(yDataColumnChanged(const AbstractColumn*)), this, SLOT(curveYDataColumnChanged(const AbstractColumn*)));
+ connect(m_dataReductionCurve, SIGNAL(dataReductionDataChanged(XYDataReductionCurve::DataReductionData)), this, SLOT(curveDataReductionDataChanged(XYDataReductionCurve::DataReductionData)));
+ connect(m_dataReductionCurve, SIGNAL(sourceDataChangedSinceLastDataReduction()), this, SLOT(enableRecalculate()));
+ }
+
+ void XYDataReductionCurveDock::setModel() {
+ QList<const char*> list;
+ list<<"Folder"<<"Workbook"<<"Datapicker"<<"DatapickerCurve"<<"Spreadsheet"
+ <<"FileDataSource"<<"Column"<<"Worksheet"<<"CartesianPlot"<<"XYFitCurve";
+ cbXDataColumn->setTopLevelClasses(list);
+ cbYDataColumn->setTopLevelClasses(list);
+
+ list.clear();
+ list<<"Column";
+ cbXDataColumn->setSelectableClasses(list);
+ cbYDataColumn->setSelectableClasses(list);
+
+ connect( cbXDataColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, SLOT(xDataColumnChanged(QModelIndex)) );
+ connect( cbYDataColumn, SIGNAL(currentModelIndexChanged(QModelIndex)), this, SLOT(yDataColumnChanged(QModelIndex)) );
+
+ cbXDataColumn->setModel(m_aspectTreeModel);
+ cbYDataColumn->setModel(m_aspectTreeModel);
+
+ XYCurveDock::setModel();
+ }
+
+ /*!
+ sets the curves. The properties of the curves in the list \c list can be edited in this widget.
+ */
+ void XYDataReductionCurveDock::setCurves(QList<XYCurve*> list) {
+ m_initializing=true;
+ m_curvesList=list;
+ m_curve=list.first();
+ m_dataReductionCurve = dynamic_cast<XYDataReductionCurve*>(m_curve);
+ Q_ASSERT(m_dataReductionCurve);
+ m_aspectTreeModel = new AspectTreeModel(m_curve->project());
+ this->setModel();
+ m_dataReductionData = m_dataReductionCurve->dataReductionData();
+ initGeneralTab();
+ initTabs();
+ m_initializing=false;
+
+ //hide the "skip gaps" option after the curves were set
+ ui.lLineSkipGaps->hide();
+ ui.chkLineSkipGaps->hide();
+ }
+
+ //*************************************************************
+ //**** SLOTs for changes triggered in XYFitCurveDock *****
+ //*************************************************************
+ void XYDataReductionCurveDock::nameChanged() {
+ if (m_initializing)
+ return;
+
+ m_curve->setName(uiGeneralTab.leName->text());
+ }
+
+ void XYDataReductionCurveDock::commentChanged() {
+ if (m_initializing)
+ return;
+
+ m_curve->setComment(uiGeneralTab.leComment->text());
+ }
+
+ void XYDataReductionCurveDock::updateTolerance() {
+ const AbstractColumn *xDataColumn = dynamic_cast<XYDataReductionCurve*>(m_curve)->xDataColumn();
+ const AbstractColumn *yDataColumn = dynamic_cast<XYDataReductionCurve*>(m_curve)->yDataColumn();
+ if(xDataColumn == 0 || yDataColumn == 0)
+ return;
+
+ //copy all valid data points for calculating tolerance to temporary vectors
+ QVector<double> xdataVector;
+ QVector<double> ydataVector;
+ for (int row=0; row<xDataColumn->rowCount(); ++row) {
+ //only copy those data where _all_ values (for x and y, if given) are valid
+ if (!std::isnan(xDataColumn->valueAt(row)) && !std::isnan(yDataColumn->valueAt(row))
+ && !xDataColumn->isMasked(row) && !yDataColumn->isMasked(row)) {
+ xdataVector.append(xDataColumn->valueAt(row));
+ ydataVector.append(yDataColumn->valueAt(row));
+ }
+ }
+
+ if(xdataVector.size() > 1) {
+ uiGeneralTab.cbType->setEnabled(true);
+ } else {
+ uiGeneralTab.cbType->setEnabled(false);
+ return;
+ }
+
+ nsl_geom_linesim_type type = (nsl_geom_linesim_type)uiGeneralTab.cbType->currentIndex();
+ if (type == nsl_geom_linesim_type_raddist || type == nsl_geom_linesim_type_opheim)
+ m_dataReductionData.tolerance = nsl_geom_linesim_radial_tol(xdataVector.data(), ydataVector.data(), xdataVector.size());
+ else if (type == nsl_geom_linesim_type_visvalingam_whyatt)
+ m_dataReductionData.tolerance = nsl_geom_linesim_area_tol(xdataVector.data(), ydataVector.data(), xdataVector.size());
+ else
+ m_dataReductionData.tolerance = nsl_geom_linesim_perpendicular_tol(xdataVector.data(), ydataVector.data(), xdataVector.size());
+ uiGeneralTab.sbTolerance->setValue(m_dataReductionData.tolerance);
+ }
+
+ void XYDataReductionCurveDock::updateTolerance2() {
+ nsl_geom_linesim_type type = (nsl_geom_linesim_type)uiGeneralTab.cbType->currentIndex();
+
+ if (type == nsl_geom_linesim_type_perpdist)
+ uiGeneralTab.sbTolerance2->setValue(10);
+ else if (type == nsl_geom_linesim_type_opheim)
+ uiGeneralTab.sbTolerance2->setValue(5*uiGeneralTab.sbTolerance->value());
+ else if (type == nsl_geom_linesim_type_lang)
+ uiGeneralTab.sbTolerance2->setValue(10);
+ }
+
+ void XYDataReductionCurveDock::xDataColumnChanged(const QModelIndex& index) {
+ if (m_initializing)
+ return;
+
+ AbstractAspect* aspect = static_cast<AbstractAspect*>(index.internalPointer());
+ AbstractColumn* column = 0;
+ if (aspect) {
+ column = dynamic_cast<AbstractColumn*>(aspect);
+ Q_ASSERT(column);
+ }
+
+ foreach(XYCurve* curve, m_curvesList)
+ dynamic_cast<XYDataReductionCurve*>(curve)->setXDataColumn(column);
+
+ updateTolerance();
+ updateTolerance2();
+ }
+
+ void XYDataReductionCurveDock::yDataColumnChanged(const QModelIndex& index) {
+ if (m_initializing)
+ return;
+
+ AbstractAspect* aspect = static_cast<AbstractAspect*>(index.internalPointer());
+ AbstractColumn* column = 0;
+ if (aspect) {
+ column = dynamic_cast<AbstractColumn*>(aspect);
+ Q_ASSERT();
+ }
+
+ foreach(XYCurve* curve, m_curvesList)
+ dynamic_cast<XYDataReductionCurve*>(curve)->setYDataColumn(column);
+
+ updateTolerance();
+ updateTolerance2();
+ }
+
+ void XYDataReductionCurveDock::typeChanged() {
+ nsl_geom_linesim_type type = (nsl_geom_linesim_type)uiGeneralTab.cbType->currentIndex();
+ m_dataReductionData.type = type;
+
+ switch (type) {
+ case nsl_geom_linesim_type_douglas_peucker:
+ case nsl_geom_linesim_type_raddist:
+ case nsl_geom_linesim_type_interp:
+ case nsl_geom_linesim_type_reumann_witkam:
+ uiGeneralTab.lOption->setText(i18n("Tolerance (distance)"));
+ uiGeneralTab.sbTolerance->setDecimals(6);
+ uiGeneralTab.sbTolerance->setMinimum(0);
+ uiGeneralTab.sbTolerance->setSingleStep(0.01);
+ uiGeneralTab.lOption2->hide();
+ uiGeneralTab.chkAuto2->hide();
+ uiGeneralTab.sbTolerance2->hide();
+ if (uiGeneralTab.chkAuto->isChecked())
+ updateTolerance();
+ break;
+ case nsl_geom_linesim_type_nthpoint:
+ uiGeneralTab.lOption->setText(i18n("Step size"));
+ uiGeneralTab.sbTolerance->setValue(10);
+ uiGeneralTab.sbTolerance->setDecimals(0);
+ uiGeneralTab.sbTolerance->setMinimum(1);
+ uiGeneralTab.sbTolerance->setSingleStep(1);
+ uiGeneralTab.lOption2->hide();
+ uiGeneralTab.chkAuto2->hide();
+ uiGeneralTab.sbTolerance2->hide();
+ break;
+ case nsl_geom_linesim_type_perpdist: // repeat option
+ uiGeneralTab.lOption->setText(i18n("Tolerance (distance)"));
+ uiGeneralTab.sbTolerance->setDecimals(6);
+ uiGeneralTab.sbTolerance->setMinimum(0);
+ uiGeneralTab.sbTolerance->setSingleStep(0.01);
+ uiGeneralTab.sbTolerance2->show();
+ uiGeneralTab.lOption2->show();
+ uiGeneralTab.chkAuto2->show();
+ uiGeneralTab.lOption2->setText(i18n("Repeats"));
+ uiGeneralTab.sbTolerance2->setDecimals(0);
+ uiGeneralTab.sbTolerance2->setMinimum(1);
+ uiGeneralTab.sbTolerance2->setSingleStep(1);
+ if (uiGeneralTab.chkAuto->isChecked())
+ updateTolerance();
+ if (uiGeneralTab.chkAuto2->isChecked())
+ updateTolerance2();
+ break;
+ case nsl_geom_linesim_type_visvalingam_whyatt:
+ uiGeneralTab.lOption->setText(i18n("Tolerance (area)"));
+ uiGeneralTab.sbTolerance->setDecimals(6);
+ uiGeneralTab.sbTolerance->setMinimum(0);
+ uiGeneralTab.sbTolerance->setSingleStep(0.01);
+ uiGeneralTab.lOption2->hide();
+ uiGeneralTab.chkAuto2->hide();
+ uiGeneralTab.sbTolerance2->hide();
+ if (uiGeneralTab.chkAuto->isChecked())
+ updateTolerance();
+ break;
+ case nsl_geom_linesim_type_opheim: // min/max tol options
+ uiGeneralTab.lOption->setText(i18n(" Min. Tolerance"));
+ uiGeneralTab.sbTolerance->setDecimals(6);
+ uiGeneralTab.sbTolerance->setMinimum(0);
+ uiGeneralTab.sbTolerance->setSingleStep(0.01);
+ uiGeneralTab.lOption2->setText(i18n("Max. Tolerance"));
+ uiGeneralTab.lOption2->show();
+ uiGeneralTab.chkAuto2->show();
+ uiGeneralTab.sbTolerance2->show();
+ uiGeneralTab.sbTolerance2->setDecimals(6);
+ uiGeneralTab.sbTolerance2->setMinimum(0);
+ uiGeneralTab.sbTolerance2->setSingleStep(0.01);
+ if (uiGeneralTab.chkAuto->isChecked())
+ updateTolerance();
+ if (uiGeneralTab.chkAuto2->isChecked())
+ updateTolerance2();
+ break;
+ case nsl_geom_linesim_type_lang: // distance/region
+ uiGeneralTab.lOption->setText(i18n("Tolerance (distance)"));
+ uiGeneralTab.sbTolerance->setDecimals(6);
+ uiGeneralTab.sbTolerance->setMinimum(0);
+ uiGeneralTab.sbTolerance->setSingleStep(0.01);
+ uiGeneralTab.lOption2->setText(i18n("Search region"));
+ uiGeneralTab.lOption2->show();
+ uiGeneralTab.chkAuto2->show();
+ uiGeneralTab.sbTolerance2->show();
+ uiGeneralTab.sbTolerance2->setDecimals(0);
+ uiGeneralTab.sbTolerance2->setMinimum(1);
+ uiGeneralTab.sbTolerance2->setSingleStep(1);
+ if (uiGeneralTab.chkAuto->isChecked())
+ updateTolerance();
+ if (uiGeneralTab.chkAuto2->isChecked())
+ updateTolerance2();
+ break;
+ }
+
+ uiGeneralTab.pbRecalculate->setEnabled(true);
+ }
+
+ void XYDataReductionCurveDock::autoToleranceChanged() {
+ bool autoTolerance = (bool)uiGeneralTab.chkAuto->isChecked();
+ m_dataReductionData.autoTolerance = autoTolerance;
+
+ if (autoTolerance) {
+ uiGeneralTab.sbTolerance->setEnabled(false);
+ updateTolerance();
+ } else {
+ uiGeneralTab.sbTolerance->setEnabled(true);
+ }
+ }
+
+ void XYDataReductionCurveDock::toleranceChanged() {
+ m_dataReductionData.tolerance = uiGeneralTab.sbTolerance->value();
+
+ uiGeneralTab.pbRecalculate->setEnabled(true);
+ }
+
+ void XYDataReductionCurveDock::autoTolerance2Changed() {
+ bool autoTolerance2 = (bool)uiGeneralTab.chkAuto2->isChecked();
+ m_dataReductionData.autoTolerance2 = autoTolerance2;
+
+ if (autoTolerance2) {
+ uiGeneralTab.sbTolerance2->setEnabled(false);
+ updateTolerance2();
+ } else {
+ uiGeneralTab.sbTolerance2->setEnabled(true);
+ }
+ }
+
+ void XYDataReductionCurveDock::tolerance2Changed() {
+ m_dataReductionData.tolerance2 = uiGeneralTab.sbTolerance2->value();
+
+ uiGeneralTab.pbRecalculate->setEnabled(true);
+ }
+
+ void XYDataReductionCurveDock::recalculateClicked() {
+ QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+ foreach (XYCurve* curve, m_curvesList)
+ dynamic_cast<XYDataReductionCurve*>(curve)->setDataReductionData(m_dataReductionData);
+
+ uiGeneralTab.pbRecalculate->setEnabled(false);
+ QApplication::restoreOverrideCursor();
+ }
+
+ void XYDataReductionCurveDock::enableRecalculate() const {
+ if (m_initializing)
+ return;
+
+ //no dataReductioning possible without the x- and y-data
+ AbstractAspect* aspectX = static_cast<AbstractAspect*>(cbXDataColumn->currentModelIndex().internalPointer());
+ AbstractAspect* aspectY = static_cast<AbstractAspect*>(cbYDataColumn->currentModelIndex().internalPointer());
+ bool data = (aspectX!=0 && aspectY!=0);
+
+ uiGeneralTab.pbRecalculate->setEnabled(data);
+ }
+
+ /*!
+ * show the result and details of the dataReduction
+ */
+ void XYDataReductionCurveDock::showDataReductionResult() {
+ const XYDataReductionCurve::DataReductionResult& dataReductionResult = m_dataReductionCurve->dataReductionResult();
+ if (!dataReductionResult.available) {
+ uiGeneralTab.teResult->clear();
+ return;
+ }
+
+ //const XYDataReductionCurve::DataReductionData& dataReductionData = m_dataReductionCurve->dataReductionData();
+ QString str = i18n("status:") + ' ' + dataReductionResult.status + "<br>";
+
+ if (!dataReductionResult.valid) {
+ uiGeneralTab.teResult->setText(str);
+ return; //result is not valid, there was an error which is shown in the status-string, nothing to show more.
+ }
+
+ if (dataReductionResult.elapsedTime>1000)
+ str += i18n("calculation time: %1 s").arg(QString::number(dataReductionResult.elapsedTime/1000)) + "<br>";
+ else
+ str += i18n("calculation time: %1 ms").arg(QString::number(dataReductionResult.elapsedTime)) + "<br>";
+
+ str += "<br>";
+
+ str += i18n("number of points: %1").arg(QString::number(dataReductionResult.npoints)) + "<br>";
+ str += i18n("positional squared error: %1").arg(QString::number(dataReductionResult.posError)) + "<br>";
+ str += i18n("area error: %1").arg(QString::number(dataReductionResult.areaError)) + "<br>";
+
+ uiGeneralTab.teResult->setText(str);
+ }
+
+ //*************************************************************
+ //*********** SLOTs for changes triggered in XYCurve **********
+ //*************************************************************
+ //General-Tab
+ void XYDataReductionCurveDock::curveDescriptionChanged(const AbstractAspect* aspect) {
+ if (m_curve != aspect)
+ return;
+
+ m_initializing = true;
+ if (aspect->name() != uiGeneralTab.leName->text()) {
+ uiGeneralTab.leName->setText(aspect->name());
+ } else if (aspect->comment() != uiGeneralTab.leComment->text()) {
+ uiGeneralTab.leComment->setText(aspect->comment());
+ }
+ m_initializing = false;
+ }
+
+ void XYDataReductionCurveDock::curveXDataColumnChanged(const AbstractColumn* column) {
+ m_initializing = true;
+ XYCurveDock::setModelIndexFromColumn(cbXDataColumn, column);
+ m_initializing = false;
+ }
+
+ void XYDataReductionCurveDock::curveYDataColumnChanged(const AbstractColumn* column) {
+ m_initializing = true;
+ XYCurveDock::setModelIndexFromColumn(cbYDataColumn, column);
+ m_initializing = false;
+ }
+
+ void XYDataReductionCurveDock::curveDataReductionDataChanged(const XYDataReductionCurve::DataReductionData& data) {
+ m_initializing = true;
+ m_dataReductionData = data;
+ //uiGeneralTab.cbType->setCurrentIndex(m_dataReductionData.type);
+ //this->typeChanged();
+
+ this->showDataReductionResult();
+ m_initializing = false;
+ }
+
+ void XYDataReductionCurveDock::dataChanged() {
+ this->enableRecalculate();
+ }
More information about the kde-doc-english
mailing list