Git commit 8c599c296292edd5d91d50cb5651fcbe30a44ceb by Alexander Semke. Committed on 27/03/2016 at 07:59. Pushed by asemke into branch 'integrate-cantor'.
Merge branch 'frameworks' into integrate-cantor M +1 -1 CMakeLists.txt M +235 -19 doc/index.docbook M +21 -1 src/CMakeLists.txt M +11 -11 src/backend/core/AbstractAspect.cpp M +12 -6 src/backend/core/AspectTreeModel.cpp M +9 -0 src/backend/core/Folder.cpp M +15 -1 src/backend/core/Project.cpp M +4 -3 src/backend/core/column/Column.cpp M +1 -1 src/backend/core/column/Column.h M +8 -1 src/backend/gsl/functions.h M +4 -0 src/backend/spreadsheet/Spreadsheet.h M +1 -1 src/backend/worksheet/TextLabel.cpp M +4 -0 src/backend/worksheet/Worksheet.h M +1 -1 src/backend/worksheet/plots/cartesian/Axis.h M +8 -1 src/backend/worksheet/plots/cartesian/CartesianPlot.h M +1 -1 src/backend/worksheet/plots/cartesian/CartesianPlotLegend.h M +5 -9 src/backend/worksheet/plots/cartesian/XYCurve.h M +236 -234 src/commonfrontend/spreadsheet/SpreadsheetView.cpp M +329 -288 src/commonfrontend/worksheet/WorksheetView.cpp M +79 -27 src/kdefrontend/GuiObserver.cpp M +3 -0 src/kdefrontend/GuiTools.cpp M +22 -22 src/kdefrontend/LabPlot.cpp M +251 -284 src/kdefrontend/MainWin.cpp M +23 -5 src/kdefrontend/MainWin.h M +20 -25 src/kdefrontend/SettingsDialog.cpp M +1 -1 src/kdefrontend/TemplateHandler.cpp M +47 -45 src/kdefrontend/datasources/ImportFileWidget.cpp M +98 -70 src/kdefrontend/dockwidgets/CartesianPlotDock.cpp M +29 -11 src/kdefrontend/dockwidgets/CartesianPlotLegendDock.cpp M +16 -5 src/kdefrontend/dockwidgets/WorksheetDock.cpp M +26 -12 src/kdefrontend/dockwidgets/XYCurveDock.cpp M +11 -6 src/kdefrontend/dockwidgets/XYEquationCurveDock.cpp M +34 -23 src/kdefrontend/dockwidgets/XYFitCurveDock.cpp M +7 -0 src/kdefrontend/labplot2ui.rc M +19 -14 src/kdefrontend/spreadsheet/ExportSpreadsheetDialog.cpp M +4 -2 src/kdefrontend/spreadsheet/FunctionValuesDialog.cpp M +1 -1 src/kdefrontend/widgets/FitOptionsWidget.cpp M +1 -1 src/kdefrontend/widgets/FitParametersWidget.cpp M +1 -1 src/kdefrontend/widgets/LabelWidget.cpp http://commits.kde.org/labplot/8c599c296292edd5d91d50cb5651fcbe30a44ceb diff --cc doc/index.docbook index 418297b,0fcecbe..3690583 --- a/doc/index.docbook +++ b/doc/index.docbook @@@ -97,10 -90,7 +97,11 @@@ Features <listitem><para>Definition of mathematical formulas is supported by syntax-highlighting and completion and by the list of thematicaly grouped mathematical and physical constants and functions</para></listitem> <listitem><para>Analysis of plotted data is supported by many zooming and navigation features</para></listitem> <listitem><para>Linear and non-linear fits to data, several fit-models are predefined and custom models with arbitrary number of parameters can be provided</para></listitem> +<listitem><para>Supports many CAS backends like Maxima, Python, KAlgebra, Sage</para></listitem> +<listitem><para>Nice Worksheet view for evaluating expressions</para></listitem> +<listitem><para>Easy plugin based structure to add different Backends</para></listitem> +<listitem><para>Plugin based assistant dialogs for common tasks (like integrating a function or entering a matrix)</para></listitem> + <listitem><para>Datapicker for manual or (semi-)automatic data extraction from imported images containing plots and curves.</para></listitem> </itemizedlist> </para> @@@ -708,11 -677,11 +840,16 @@@ The menu is only available when a sprea </para> </sect1> +<sect1 id="CASworksheet-menu"> +<title>The CAS Worksheet Menu</title> +<para> +This menu contains all the items that can also be found in the context menu (right mouse) of a CAS worksheet. +The menu is only available when a worksheet object is selected on the <guilabel>Project Explorer</guilabel> panel. + <sect1 id="datapicker-menu"> + <title>The Datapicker Menu</title> + <para> + This menu contains all the items that can also be found in the context menu (right mouse) of a datapicker. + The menu is only available when a datapicker object is selected on the <guilabel>Project Explorer</guilabel> panel. </para> </sect1> diff --cc src/CMakeLists.txt index e243acb,acf03a2..b403705 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@@ -167,22 -182,11 +183,25 @@@ set(COMMONFRONTEND_SOURCE ${COMMONFRONTEND_DIR}/ProjectExplorer.cpp ${COMMONFRONTEND_DIR}/core/PartMdiView.cpp ${COMMONFRONTEND_DIR}/widgets/TreeViewComboBox.cpp + ${COMMONFRONTEND_DIR}/widgets/qxtspanslider.cpp + ${COMMONFRONTEND_DIR}/datapicker/DatapickerView.cpp + ${COMMONFRONTEND_DIR}/datapicker/DatapickerImageView.cpp ) +IF (${CANTOR_LIBS_FOUND}) + set(CANTOR_SOURCES + ${KDEFRONTEND_DIR}/ui/dockwidgets/cantorworksheetdock.ui + ${KDEFRONTEND_DIR}/dockwidgets/CantorWorksheetDock.cpp + ${BACKEND_DIR}/cantorWorksheet/VariableParser.cpp + ${BACKEND_DIR}/cantorWorksheet/CantorWorksheet.cpp + ${COMMONFRONTEND_DIR}/cantorWorksheet/CantorWorksheetView.cpp + ) +ELSE (${CANTOR_LIBS_FOUND}) + set(CANTOR_SOURCES "") +ENDIF (${CANTOR_LIBS_FOUND}) + +MESSAGE (STATUS "Here it is ${CANTOR_SOURCES}") + set(TOOLS_SOURCES ${TOOLS_DIR}/TeXRenderer.cpp ${TOOLS_DIR}/EquationHighlighter.cpp diff --cc src/commonfrontend/worksheet/WorksheetView.cpp index e9db77f,5751fa1..41f920e --- a/src/commonfrontend/worksheet/WorksheetView.cpp +++ b/src/commonfrontend/worksheet/WorksheetView.cpp @@@ -368,8 -386,10 +386,8 @@@ void WorksheetView::initMenus() m_cartesianPlotAddNewMenu->addSeparator(); m_cartesianPlotAddNewMenu->addAction(addHorizontalAxisAction); m_cartesianPlotAddNewMenu->addAction(addVerticalAxisAction); - m_cartesianPlotAddNewMenu->addSeparator(); - m_cartesianPlotAddNewMenu->addAction(addCustomPointAction); - m_cartesianPlotZoomMenu = new QMenu(i18n("Zoom/Navigate")); + m_cartesianPlotZoomMenu = new QMenu(i18n("Zoom/Navigate"), this); m_cartesianPlotZoomMenu->setIcon(QIcon::fromTheme("zoom-draw")); m_cartesianPlotZoomMenu->addAction(scaleAutoAction); m_cartesianPlotZoomMenu->addAction(scaleAutoXAction); diff --cc src/kdefrontend/GuiObserver.cpp index 6d1ec04,4ea5a4c..a40003e --- a/src/kdefrontend/GuiObserver.cpp +++ b/src/kdefrontend/GuiObserver.cpp @@@ -36,9 -36,12 +36,13 @@@ #include "backend/worksheet/plots/cartesian/CartesianPlotLegend.h" #include "backend/worksheet/plots/cartesian/XYCurve.h" #include "backend/worksheet/plots/cartesian/Axis.h" + #include "backend/worksheet/plots/cartesian/CustomPoint.h" #include "backend/worksheet/TextLabel.h" +#include "backend/cantorWorksheet/CantorWorksheet.h" #include "backend/core/Project.h" + #include "backend/datapicker/Datapicker.h" + #include "backend/datapicker/DatapickerImage.h" + #include "backend/datapicker/DatapickerCurve.h" #include "commonfrontend/ProjectExplorer.h" #include "kdefrontend/MainWin.h" #include "kdefrontend/dockwidgets/AxisDock.h" @@@ -51,9 -54,11 +55,12 @@@ #include "kdefrontend/dockwidgets/XYCurveDock.h" #include "kdefrontend/dockwidgets/XYEquationCurveDock.h" #include "kdefrontend/dockwidgets/XYFitCurveDock.h" + #include "kdefrontend/dockwidgets/CustomPointDock.h" #include "kdefrontend/dockwidgets/WorksheetDock.h" +#include "kdefrontend/dockwidgets/CantorWorksheetDock.h" #include "kdefrontend/widgets/LabelWidget.h" + #include "kdefrontend/widgets/DatapickerImageWidget.h" + #include "kdefrontend/widgets/DatapickerCurveWidget.h" #include <kstatusbar.h> @@@ -93,244 -113,253 +100,289 @@@ void GuiObserver::selectedAspectsChange mainWindow->m_propertiesDock->setWindowTitle(i18n("Properties")); return; - } - prevClassName = className; - } - - if (mainWindow->stackedWidget->currentWidget()) - mainWindow->stackedWidget->currentWidget()->show(); - - if (className=="Spreadsheet"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Spreadsheet properties")); - - if (!mainWindow->spreadsheetDock){ - mainWindow->spreadsheetDock = new SpreadsheetDock(mainWindow->stackedWidget); - connect(mainWindow->spreadsheetDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->spreadsheetDock); - } - - QList<Spreadsheet*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<Spreadsheet *>(aspect); - } - mainWindow->spreadsheetDock->setSpreadsheets(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->spreadsheetDock); - }else if (className=="Column"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Column properties")); - - if (!mainWindow->columnDock){ - mainWindow->columnDock = new ColumnDock(mainWindow->stackedWidget); - connect(mainWindow->columnDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->columnDock); - } - - QList<Column*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<Column *>(aspect); } - mainWindow->columnDock->setColumns(list); - mainWindow->stackedWidget->setCurrentWidget(mainWindow->columnDock); - }else if (className=="Matrix"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Matrix properties")); + AbstractAspect* aspect=0; + QString prevClassName, className; - if (!mainWindow->matrixDock){ - mainWindow->matrixDock = new MatrixDock(mainWindow->stackedWidget); - connect(mainWindow->matrixDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->matrixDock); - } - - QList<Matrix*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<Matrix*>(aspect); - } - mainWindow->matrixDock->setMatrices(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->matrixDock); - }else if (className=="Worksheet"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Worksheet properties")); - - if (!mainWindow->worksheetDock){ - mainWindow->worksheetDock = new WorksheetDock(mainWindow->stackedWidget); - connect(mainWindow->worksheetDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->worksheetDock); - } - - QList<Worksheet*> list; + //check, whether objects of different types where selected + //don't show any dock widgets in this case. foreach(aspect, selectedAspects){ - list<<qobject_cast<Worksheet *>(aspect); + className= aspect->metaObject()->className(); + if ( className != prevClassName && !prevClassName.isEmpty() ){ + if (mainWindow->stackedWidget->currentWidget()) + mainWindow->stackedWidget->currentWidget()->hide(); + + mainWindow->m_propertiesDock->setWindowTitle(i18n("Properties")); + return; + } + prevClassName = className; } - mainWindow->worksheetDock->setWorksheets(list); - mainWindow->stackedWidget->setCurrentWidget(mainWindow->worksheetDock); - }else if (className=="CartesianPlot"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Cartesian plot properties")); - - if (!mainWindow->cartesianPlotDock){ - mainWindow->cartesianPlotDock = new CartesianPlotDock(mainWindow->stackedWidget); - connect(mainWindow->cartesianPlotDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->cartesianPlotDock); - } - - QList<CartesianPlot*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<CartesianPlot *>(aspect); - } - mainWindow->cartesianPlotDock->setPlots(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->cartesianPlotDock); - }else if (className=="CartesianPlotLegend"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Cartesian plot legend properties")); - - if (!mainWindow->cartesianPlotLegendDock){ - mainWindow->cartesianPlotLegendDock = new CartesianPlotLegendDock(mainWindow->stackedWidget); - connect(mainWindow->cartesianPlotLegendDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->cartesianPlotLegendDock); - } - - QList<CartesianPlotLegend*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<CartesianPlotLegend*>(aspect); - } - mainWindow->cartesianPlotLegendDock->setLegends(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->cartesianPlotLegendDock); - }else if (className=="Axis"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Axis properties")); - - if (!mainWindow->axisDock){ - mainWindow->axisDock = new AxisDock(mainWindow->stackedWidget); - connect(mainWindow->axisDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->axisDock); - } - - QList<Axis*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<Axis *>(aspect); - } - mainWindow->axisDock->setAxes(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->axisDock); - }else if (className=="XYCurve"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("xy-curve properties")); - - if (!mainWindow->xyCurveDock){ - mainWindow->xyCurveDock = new XYCurveDock(mainWindow->stackedWidget); - mainWindow->xyCurveDock->setupGeneral(); - connect(mainWindow->xyCurveDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->xyCurveDock); - } - - QList<XYCurve*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<XYCurve *>(aspect); - } - mainWindow->xyCurveDock->setCurves(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->xyCurveDock); - }else if (className=="XYEquationCurve"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("xy-equation-curve properties")); - - if (!mainWindow->xyEquationCurveDock){ - mainWindow->xyEquationCurveDock = new XYEquationCurveDock(mainWindow->stackedWidget); - mainWindow->xyEquationCurveDock->setupGeneral(); - connect(mainWindow->xyEquationCurveDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->xyEquationCurveDock); - } - - QList<XYCurve*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<XYCurve *>(aspect); - } - mainWindow->xyEquationCurveDock->setCurves(list); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->xyEquationCurveDock); + if (mainWindow->stackedWidget->currentWidget()) + mainWindow->stackedWidget->currentWidget()->show(); + + if (className=="Spreadsheet"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Spreadsheet properties")); + + if (!mainWindow->spreadsheetDock){ + mainWindow->spreadsheetDock = new SpreadsheetDock(mainWindow->stackedWidget); + connect(mainWindow->spreadsheetDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->spreadsheetDock); + } + + QList<Spreadsheet*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<Spreadsheet *>(aspect); + } + mainWindow->spreadsheetDock->setSpreadsheets(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->spreadsheetDock); + }else if (className=="Column"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Column properties")); + + if (!mainWindow->columnDock){ + mainWindow->columnDock = new ColumnDock(mainWindow->stackedWidget); + connect(mainWindow->columnDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->columnDock); + } + + QList<Column*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<Column *>(aspect); + } + mainWindow->columnDock->setColumns(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->columnDock); + }else if (className=="Matrix"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Matrix properties")); + + if (!mainWindow->matrixDock){ + mainWindow->matrixDock = new MatrixDock(mainWindow->stackedWidget); + connect(mainWindow->matrixDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->matrixDock); + } + + QList<Matrix*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<Matrix*>(aspect); + } + mainWindow->matrixDock->setMatrices(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->matrixDock); + }else if (className=="Worksheet"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Worksheet properties")); + + if (!mainWindow->worksheetDock){ + mainWindow->worksheetDock = new WorksheetDock(mainWindow->stackedWidget); + connect(mainWindow->worksheetDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->worksheetDock); + } + + QList<Worksheet*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<Worksheet *>(aspect); + } + mainWindow->worksheetDock->setWorksheets(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->worksheetDock); + }else if (className=="CartesianPlot"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Cartesian plot properties")); + + if (!mainWindow->cartesianPlotDock){ + mainWindow->cartesianPlotDock = new CartesianPlotDock(mainWindow->stackedWidget); + connect(mainWindow->cartesianPlotDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->cartesianPlotDock); + } + + QList<CartesianPlot*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<CartesianPlot *>(aspect); + } + mainWindow->cartesianPlotDock->setPlots(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->cartesianPlotDock); + }else if (className=="CartesianPlotLegend"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Cartesian plot legend properties")); + + if (!mainWindow->cartesianPlotLegendDock){ + mainWindow->cartesianPlotLegendDock = new CartesianPlotLegendDock(mainWindow->stackedWidget); + connect(mainWindow->cartesianPlotLegendDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->cartesianPlotLegendDock); + } + + QList<CartesianPlotLegend*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<CartesianPlotLegend*>(aspect); + } + mainWindow->cartesianPlotLegendDock->setLegends(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->cartesianPlotLegendDock); + }else if (className=="Axis"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Axis properties")); + + if (!mainWindow->axisDock){ + mainWindow->axisDock = new AxisDock(mainWindow->stackedWidget); + connect(mainWindow->axisDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->axisDock); + } + + QList<Axis*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<Axis *>(aspect); + } + mainWindow->axisDock->setAxes(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->axisDock); + }else if (className=="XYCurve"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("xy-curve properties")); + + if (!mainWindow->xyCurveDock){ + mainWindow->xyCurveDock = new XYCurveDock(mainWindow->stackedWidget); + mainWindow->xyCurveDock->setupGeneral(); + connect(mainWindow->xyCurveDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->xyCurveDock); + } + + QList<XYCurve*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<XYCurve *>(aspect); + } + mainWindow->xyCurveDock->setCurves(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->xyCurveDock); + }else if (className=="XYEquationCurve"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("xy-equation-curve properties")); + + if (!mainWindow->xyEquationCurveDock){ + mainWindow->xyEquationCurveDock = new XYEquationCurveDock(mainWindow->stackedWidget); + mainWindow->xyEquationCurveDock->setupGeneral(); + connect(mainWindow->xyEquationCurveDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->xyEquationCurveDock); + } + + QList<XYCurve*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<XYCurve *>(aspect); + } + mainWindow->xyEquationCurveDock->setCurves(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->xyEquationCurveDock); - }else if (className=="XYFitCurve"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("xy-fit-curve properties")); - - if (!mainWindow->xyFitCurveDock){ - mainWindow->xyFitCurveDock = new XYFitCurveDock(mainWindow->stackedWidget); - mainWindow->xyFitCurveDock->setupGeneral(); - connect(mainWindow->xyFitCurveDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); - mainWindow->stackedWidget->addWidget(mainWindow->xyFitCurveDock); - } + }else if (className=="XYFitCurve"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("xy-fit-curve properties")); + + if (!mainWindow->xyFitCurveDock){ + mainWindow->xyFitCurveDock = new XYFitCurveDock(mainWindow->stackedWidget); + mainWindow->xyFitCurveDock->setupGeneral(); + connect(mainWindow->xyFitCurveDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->xyFitCurveDock); + } - QList<XYCurve*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<XYCurve*>(aspect); - } - mainWindow->xyFitCurveDock->setCurves(list); + QList<XYCurve*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<XYCurve*>(aspect); + } + mainWindow->xyFitCurveDock->setCurves(list); - mainWindow->stackedWidget->setCurrentWidget(mainWindow->xyFitCurveDock); - }else if (className=="TextLabel"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Text label properties")); + mainWindow->stackedWidget->setCurrentWidget(mainWindow->xyFitCurveDock); + }else if (className=="TextLabel"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Text label properties")); - if (!mainWindow->textLabelDock){ - mainWindow->textLabelDock = new LabelWidget(mainWindow->stackedWidget); - mainWindow->stackedWidget->addWidget(mainWindow->textLabelDock); - } + if (!mainWindow->textLabelDock){ + mainWindow->textLabelDock = new LabelWidget(mainWindow->stackedWidget); + mainWindow->stackedWidget->addWidget(mainWindow->textLabelDock); + } - QList<TextLabel*> list; - foreach(aspect, selectedAspects){ - list<<qobject_cast<TextLabel*>(aspect); - } - mainWindow->textLabelDock->setLabels(list); + QList<TextLabel*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<TextLabel*>(aspect); + } + mainWindow->textLabelDock->setLabels(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->textLabelDock); + }else if (className=="CustomPoint"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Custom point properties")); - mainWindow->stackedWidget->setCurrentWidget(mainWindow->textLabelDock); + if (!mainWindow->customPointDock){ + mainWindow->customPointDock = new CustomPointDock(mainWindow->stackedWidget); + mainWindow->stackedWidget->addWidget(mainWindow->customPointDock); + } + + QList<CustomPoint*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<CustomPoint*>(aspect); + } + mainWindow->customPointDock->setPoints(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->customPointDock); + }else if (className=="DatapickerCurve"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("DatapickerCurve properties")); + + if (!mainWindow->datapickerCurveDock){ + mainWindow->datapickerCurveDock = new DatapickerCurveWidget(mainWindow->stackedWidget); + mainWindow->stackedWidget->addWidget(mainWindow->datapickerCurveDock); + } + + QList<DatapickerCurve*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<DatapickerCurve*>(aspect); + } + mainWindow->datapickerCurveDock->setCurves(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->datapickerCurveDock); + }else if (className=="Datapicker"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Datapicker properties")); + + if (!mainWindow->datapickerImageDock){ + mainWindow->datapickerImageDock = new DatapickerImageWidget(mainWindow->stackedWidget); + mainWindow->stackedWidget->addWidget(mainWindow->datapickerImageDock); + } + + QList<DatapickerImage*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<Datapicker*>(aspect)->image(); + } + mainWindow->datapickerImageDock->setImages(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->datapickerImageDock); - }else if (className=="Project"){ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Project properties")); - - if (!mainWindow->projectDock){ - mainWindow->projectDock = new ProjectDock(mainWindow->stackedWidget); - mainWindow->stackedWidget->addWidget(mainWindow->projectDock); + }else if (className=="Project"){ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Project properties")); + + if (!mainWindow->projectDock){ + mainWindow->projectDock = new ProjectDock(mainWindow->stackedWidget); + mainWindow->stackedWidget->addWidget(mainWindow->projectDock); + } + + mainWindow->projectDock->setProject(mainWindow->m_project); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->projectDock); + }else if (className=="CantorWorksheet"){ + #ifdef HAVE_CANTOR_LIBS + if (!mainWindow->cantorWorksheetDock){ + mainWindow->cantorWorksheetDock = new CantorWorksheetDock(mainWindow->stackedWidget); + connect(mainWindow->cantorWorksheetDock, SIGNAL(info(QString)), mainWindow->statusBar(), SLOT(showMessage(QString))); + mainWindow->stackedWidget->addWidget(mainWindow->cantorWorksheetDock); + } + + QList<CantorWorksheet*> list; + foreach(aspect, selectedAspects){ + list<<qobject_cast<CantorWorksheet *>(aspect); + } + if (list.size()==1){ + mainWindow->m_propertiesDock->setWindowTitle(list.first()->backendName() + " Properties"); + } else { + mainWindow->m_propertiesDock->setWindowTitle("CAS Properties"); + } + mainWindow->cantorWorksheetDock->setCantorWorksheets(list); + + mainWindow->stackedWidget->setCurrentWidget(mainWindow->cantorWorksheetDock); + #endif + }else{ + mainWindow->m_propertiesDock->setWindowTitle(i18n("Properties")); + if (mainWindow->stackedWidget->currentWidget()) + mainWindow->stackedWidget->currentWidget()->hide(); } - mainWindow->projectDock->setProject(mainWindow->m_project); - - mainWindow->stackedWidget->setCurrentWidget(mainWindow->projectDock); - }else{ - mainWindow->m_propertiesDock->setWindowTitle(i18n("Properties")); - if (mainWindow->stackedWidget->currentWidget()) - mainWindow->stackedWidget->currentWidget()->hide(); - } - } /*! diff --cc src/kdefrontend/LabPlot.cpp index 7cd9147,89dfa69..4115942 --- a/src/kdefrontend/LabPlot.cpp +++ b/src/kdefrontend/LabPlot.cpp @@@ -53,14 -51,14 +51,15 @@@ int main (int argc, char *argv[]) aboutData.addAuthor(i18n("Alexander Semke"), i18n("developer"), "[email protected]", 0); aboutData.addAuthor(i18n("Andreas Kainz"), i18n("icon designer"), "[email protected]", 0); aboutData.addCredit(i18n("Yuri Chornoivan"), i18n("Help on many questions about the KDE-infrastructure and translation related topics"), "[email protected]", 0); + aboutData.addCredit(i18n("Garvit Khatri"), i18n("Porting LabPlot2 to KF5 and Integration with Cantor"), "[email protected]", 0); KAboutData::setApplicationData(aboutData); - QApplication app(argc, argv); - + QCoreApplication::setApplicationVersion(QLatin1String(LVERSION)); QCommandLineParser parser; - QCommandLineOption nosplashOption("no-splash", i18n( "start in fullscreen mode")); + parser.addHelpOption(); + parser.addVersionOption(); + QCommandLineOption nosplashOption("no-splash", i18n("disable splash screen")); parser.addOption(nosplashOption); parser.addPositionalArgument("+[file]", i18n( "open a project file")); diff --cc src/kdefrontend/MainWin.cpp index 0ebf079,fc9d283..a5e95cf --- a/src/kdefrontend/MainWin.cpp +++ b/src/kdefrontend/MainWin.cpp @@@ -37,16 -37,15 +37,17 @@@ #include "backend/matrix/Matrix.h" #include "backend/worksheet/Worksheet.h" #include "backend/datasources/FileDataSource.h" +#include "backend/cantorWorksheet/CantorWorksheet.h" + #include "backend/datapicker/Datapicker.h" #include "commonfrontend/ProjectExplorer.h" #include "commonfrontend/matrix/MatrixView.h" #include "commonfrontend/spreadsheet/SpreadsheetView.h" #include "commonfrontend/worksheet/WorksheetView.h" +#include "commonfrontend/cantorWorksheet/CantorWorksheetView.h" + #include "commonfrontend/datapicker/DatapickerView.h" + #include "commonfrontend/datapicker/DatapickerImageView.h" - #include "kdefrontend/worksheet/ExportWorksheetDialog.h" - #include "kdefrontend/spreadsheet/ExportSpreadsheetDialog.h" #include "kdefrontend/datasources/ImportFileDialog.h" #include "kdefrontend/dockwidgets/ProjectDock.h" #include "kdefrontend/HistoryDialog.h" @@@ -58,14 -57,11 +59,12 @@@ #include <QDockWidget> #include <QStackedWidget> #include <QUndoStack> - #include <QPrinter> - #include <QPrintDialog> - #include <QPrintPreviewDialog> #include <QCloseEvent> #include <QFileDialog> + #include <QMimeData> #include <QElapsedTimer> #include <QDebug> +#include <QHash> #include <KActionCollection> #include <KFileDialog> @@@ -77,46 -73,44 +76,51 @@@ #include <KLocalizedString> #include <KFilterDev> +#ifdef HAVE_CANTOR_LIBS +#include <cantor/backend.h> +#endif - /*! - \class MainWin - \brief Main application window. + - \ingroup kdefrontend - */ + /*! + \class MainWin + \brief Main application window. + + \ingroup kdefrontend + */ 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), - axisDock(0), - cartesianPlotDock(0), - cartesianPlotLegendDock(0), - columnDock(0), - matrixDock(0), - spreadsheetDock(0), - projectDock(0), - xyCurveDock(0), - xyEquationCurveDock(0), - xyFitCurveDock(0), - worksheetDock(0), + 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), + axisDock(0), + cartesianPlotDock(0), + cartesianPlotLegendDock(0), + columnDock(0), + matrixDock(0), + spreadsheetDock(0), + projectDock(0), + xyCurveDock(0), + xyEquationCurveDock(0), + xyFitCurveDock(0), + worksheetDock(0), + #ifdef HAVE_CANTOR_LIBS + cantorWorksheetDock(0), + #endif - textLabelDock(0){ + textLabelDock(0), + customPointDock(0), + datapickerImageDock(0), + datapickerCurveDock(0), + m_guiObserver(0) { // QTimer::singleShot( 0, this, SLOT(initGUI(filename)) ); //TODO doesn't work anymore initGUI(filename); @@@ -357,41 -365,9 +375,42 @@@ void MainWin::initMenus() m_newMenu->addAction(m_newSpreadsheetAction); m_newMenu->addAction(m_newMatrixAction); m_newMenu->addAction(m_newWorksheetAction); + m_newMenu->addAction(m_newDatapickerAction); m_newMenu->addSeparator(); m_newMenu->addAction(m_newFileDataSourceAction); + m_newMenu->addSeparator(); + + #ifdef HAVE_CANTOR_LIBS + //"Adding Cantor backends to menue and context menu" + QStringList m_availableBackend = Cantor::Backend::listAvailableBackends(); + if(m_availableBackend.count() > 0) { + m_newCantorWorksheetMenu = new QMenu(i18n("CAS Worksheet")); + m_newCantorWorksheetMenu->setIcon(QIcon::fromTheme("archive-insert")); + unplugActionList(QLatin1String("backends_list")); + QList<QAction*> newBackendActions; + foreach (Cantor::Backend* backend, Cantor::Backend::availableBackends()) { + if (!backend->isEnabled()) continue; + QAction* action = new QAction(QIcon::fromTheme(backend->icon()), backend->name(),this); + action->setData(backend->name()); + newBackendActions << action; + m_newCantorWorksheetMenu->addAction(action); + } + + connect(m_newCantorWorksheetMenu, SIGNAL(triggered(QAction*)), this, SLOT(newCantorWorksheet(QAction*))); + foreach(QAction* a, newBackendActions) { + qDebug() << a->data().toString(); + } + plugActionList(QLatin1String("backends_list"), newBackendActions); + m_newMenu->addMenu(m_newCantorWorksheetMenu); + } else { + int choice = KMessageBox::warningContinueCancel(this, i18n("No backend for Cantor is installed."), i18n("Warning")); + switch(choice) { + case KMessageBox::Cancel: + close(); + break; + } + } + #endif // m_newMenu->addAction(m_newSqlDataSourceAction); //menu subwindow visibility policy @@@ -462,7 -440,7 +483,8 @@@ void MainWin::updateGUIOnProjectChanges factory->container("worksheet_toolbar", this)->hide(); factory->container("cartesian_plot_toolbar", this)->hide(); factory->container("spreadsheet_toolbar", this)->hide(); + factory->container("casWorksheet", this)->setEnabled(!b); + factory->container("datapicker_toolbar", this)->hide(); } factory->container("new", this)->setEnabled(!b); @@@ -500,7 -479,7 +523,8 @@@ void MainWin::updateGUI() factory->container("worksheet_toolbar", this)->hide(); factory->container("cartesian_plot_toolbar", this)->hide(); factory->container("spreadsheet_toolbar", this)->hide(); + factory->container("casWorksheet", this)->setEnabled(false); + factory->container("datapicker_toolbar", this)->hide(); return; } @@@ -595,27 -574,31 +619,46 @@@ QMenu* menu=qobject_cast<QMenu*>(factory->container("matrix", this)); menu->clear(); view->createContextMenu(menu); - }else{ + } else { factory->container("matrix", this)->setEnabled(false); } + #ifdef HAVE_CANTOR_LIBS + CantorWorksheet* cantorworksheet = this->activeCantorWorksheet(); + if(cantorworksheet) { + // enable Cantor Worksheet related menues + factory->container("casWorksheet", this)->setEnabled(true); + CantorWorksheetView* view=qobject_cast<CantorWorksheetView*>(cantorworksheet->view()); + QMenu* menu=qobject_cast<QMenu*>(factory->container("casWorksheet", this)); + menu->clear(); + view->createContextMenu(menu); + QToolBar* toolbar=qobject_cast<QToolBar*>(factory->container("cantorworksheet_toolbar", this)); - toolbar->setVisible(true); - toolbar->clear(); - view->fillToolBar(toolbar); + } else { + //no cantor worksheet selected -> deactivate cantor worksheet related menus + factory->container("casWorksheet", this)->setEnabled(false); + } + #endif + + const Datapicker* datapicker = this->activeDatapicker(); + if (datapicker) { + factory->container("datapicker", this)->setEnabled(true); + //populate datapicker-menu + DatapickerView* view=qobject_cast<DatapickerView*>(datapicker->view()); + QMenu* menu=qobject_cast<QMenu*>(factory->container("datapicker", this)); + menu->clear(); + view->createContextMenu(menu); + + //populate spreadsheet-toolbar + QToolBar* toolbar=qobject_cast<QToolBar*>(factory->container("datapicker_toolbar", this)); + if (group.groupList().indexOf("Toolbar datapicker_toolbar")==-1) + toolbar->setToolButtonStyle(Qt::ToolButtonFollowStyle); + + toolbar->setVisible(true); + toolbar->clear(); + view->fillToolBar(toolbar); + } else { + factory->container("datapicker", this)->setEnabled(false); + factory->container("datapicker_toolbar", this)->setVisible(false); + } } /*! @@@ -1275,10 -1182,10 +1267,10 @@@ void MainWin::handleAspectAboutToBeRemo } /*! - called when the current aspect in the tree of the project explorer was changed. - Selects the new aspect. + called when the current aspect in the tree of the project explorer was changed. + Selects the new aspect. */ - void MainWin::handleCurrentAspectChanged(AbstractAspect *aspect){ + void MainWin::handleCurrentAspectChanged(AbstractAspect *aspect) { if (!aspect) aspect = m_project; // should never happen, just in case @@@ -1501,11 -1432,11 +1517,11 @@@ void MainWin::handleSettingsChanges() /************************************** dialogs ***************************************/ /***************************************************************************************/ /*! - shows the dialog with the Undo-history. + shows the dialog with the Undo-history. */ - void MainWin::historyDialog(){ + void MainWin::historyDialog() { if (!m_project->undoStack()) - return; + return; HistoryDialog* dialog = new HistoryDialog(this, m_project->undoStack(), m_undoViewEmptyLabel); int index = m_project->undoStack()->index(); @@@ -1523,10 -1454,10 +1539,10 @@@ } /*! - Opens the dialog to import data to the selected workbook, spreadsheet or matrix + Opens the dialog to import data to the selected workbook, spreadsheet or matrix */ - void MainWin::importFileDialog(){ - m_importFileDialog = new ImportFileDialog(this); + void MainWin::importFileDialog(const QString& fileName) { + m_importFileDialog = new ImportFileDialog(this, false, fileName); if ( m_currentAspect->inherits("Spreadsheet") || m_currentAspect->inherits("Matrix") || m_currentAspect->inherits("Workbook") ) { m_importFileDialog->setCurrentIndex( m_projectExplorer->currentIndex()); @@@ -1545,71 -1476,22 +1561,22 @@@ } /*! - opens the dialog for the export of the currently active worksheet, spreadsheet or matrix. + opens the dialog for the export of the currently active worksheet, spreadsheet or matrix. */ - void MainWin::exportDialog(){ - Worksheet* w=this->activeWorksheet(); - if (w!=0){ //worksheet - ExportWorksheetDialog* dlg = new ExportWorksheetDialog(this); - dlg->setFileName(w->name()); - if (dlg->exec()==QDialog::Accepted){ - QString path = dlg->path(); - WorksheetView::ExportFormat format = dlg->exportFormat(); - WorksheetView::ExportArea area = dlg->exportArea(); - bool background = dlg->exportBackground(); - int resolution = dlg->exportResolution(); - - WorksheetView* view = qobject_cast<WorksheetView*>(w->view()); - WAIT_CURSOR; - view->exportToFile(path, format, area, background, resolution); - RESET_CURSOR; - } - - return; - } - - - Spreadsheet* s = this->activeSpreadsheet(); - if (s) { - ExportSpreadsheetDialog* dlg = new ExportSpreadsheetDialog(this); - dlg->setFileName(s->name()); - if (dlg->exec()==QDialog::Accepted){ - QString path = dlg->path(); - const bool exportHeader = dlg->exportHeader(); - QString separator = dlg->separator(); - - SpreadsheetView* view = qobject_cast<SpreadsheetView*>(s->view()); - WAIT_CURSOR; - view->exportToFile(path, exportHeader, separator); - RESET_CURSOR; - } - + void MainWin::exportDialog() { + QMdiSubWindow* win = m_mdiArea->currentSubWindow(); + if (!win) return; - } - - Matrix* m = this->activeMatrix(); - if (m) { - ExportSpreadsheetDialog* dlg = new ExportSpreadsheetDialog(this); - dlg->setFileName(m->name()); - dlg->setMatrixMode(true); - if (dlg->exec()==QDialog::Accepted){ - QString path = dlg->path(); - QString separator = dlg->separator(); - - MatrixView* view = qobject_cast<MatrixView*>(m->view()); - WAIT_CURSOR; - view->exportToFile(path, separator); - RESET_CURSOR; - } - return; - } + AbstractPart* part = dynamic_cast<PartMdiView*>(win)->part(); + part->exportView(); + statusBar()->showMessage(i18n("%1 exported", part->name())); } /*! - adds a new file data source to the current project. + adds a new file data source to the current project. */ - void MainWin::newFileDataSourceActionTriggered(){ + void MainWin::newFileDataSourceActionTriggered() { ImportFileDialog* dlg = new ImportFileDialog(this, true); if ( dlg->exec() == QDialog::Accepted ) { FileDataSource* dataSource = new FileDataSource(0, i18n("File data source%1", 1)); @@@ -1620,9 -1502,9 +1587,9 @@@ } /*! - adds a new SQL data source to the current project. + adds a new SQL data source to the current project. */ - void MainWin::newSqlDataSourceActionTriggered(){ + void MainWin::newSqlDataSourceActionTriggered() { //TODO } diff --cc src/kdefrontend/MainWin.h index 7d2aaad,2cbcab5..e0a0e30 --- a/src/kdefrontend/MainWin.h +++ b/src/kdefrontend/MainWin.h @@@ -55,16 -58,15 +58,20 @@@ class XYFitCurveDock class WorksheetDock; class LabelWidget; class ImportFileDialog; + class DatapickerImageWidget; + class DatapickerCurveWidget; +#ifdef HAVE_CANTOR_LIBS +class CantorWorksheet; +class CantorWorksheetDock; +#endif + class QDockWidget; class QStackedWidget; + class QDragEnterEvent; + class QDropEvent; - class MainWin : public KXmlGuiWindow{ + class MainWin : public KXmlGuiWindow { Q_OBJECT public: @@@ -142,14 -145,7 +150,14 @@@ private QAction* m_visibilityAllAction; QAction* m_toggleProjectExplorerDockAction; QAction* m_togglePropertiesDockAction; + + //cantor + #ifdef HAVE_CANTOR_LIBS + QMenu* m_newCantorWorksheetMenu; + CantorWorksheetDock* cantorWorksheetDock; + CantorWorksheet* activeCantorWorksheet() const; + #endif - + //Menus QMenu* m_visibilityMenu; QMenu* m_newMenu; diff --cc src/kdefrontend/SettingsDialog.cpp index d245a76,846dd3b..ab944ba --- a/src/kdefrontend/SettingsDialog.cpp +++ b/src/kdefrontend/SettingsDialog.cpp @@@ -98,7 -91,8 +91,9 @@@ void SettingsDialog::onOkButton() } } - void SettingsDialog::onApplyButton(){ + /*void SettingsDialog::onApplyButton(){ + qDebug()<<"SettingsDialog::onApplyButton()"; ++>>>>>>> frameworks if (m_changed){ applySettings(); setWindowTitle(i18n("Preferences")); diff --cc src/kdefrontend/dockwidgets/CartesianPlotDock.cpp index a81b141,8eefb4d..1bba819 --- a/src/kdefrontend/dockwidgets/CartesianPlotDock.cpp +++ b/src/kdefrontend/dockwidgets/CartesianPlotDock.cpp @@@ -161,58 -164,62 +164,62 @@@ CartesianPlotDock::CartesianPlotDock(QW connect(templateHandler, SIGNAL(saveConfigRequested(KConfig&)), this, SLOT(saveConfigAsTemplate(KConfig&))); connect(templateHandler, SIGNAL(info(QString)), this, SIGNAL(info(QString))); - init(); + init(); - //TODO: activate the tab again once the functionality is implemented - ui.tabWidget->removeTab(2); + //TODO: activate the tab again once the functionality is implemented + ui.tabWidget->removeTab(2); } + CartesianPlotDock::~CartesianPlotDock() { + delete m_completion; + } + void CartesianPlotDock::init(){ - this->retranslateUi(); - - //create icons for the different styles for scale breaking - QPainter pa; - pa.setPen( QPen(Qt::SolidPattern, 0) ); - QPixmap pm(20, 20); - ui.cbXBreakStyle->setIconSize( QSize(20,20) ); - ui.cbYBreakStyle->setIconSize( QSize(20,20) ); - - //simple - pm.fill(Qt::transparent); - pa.begin( &pm ); - pa.setRenderHint(QPainter::Antialiasing); - pa.setBrush(Qt::SolidPattern); - pa.drawLine(3,10,8,10); - pa.drawLine(12,10,17,10); - pa.end(); - ui.cbXBreakStyle->setItemIcon(0, pm); - ui.cbYBreakStyle->setItemIcon(0, pm); - - //vertical - pm.fill(Qt::transparent); - pa.begin( &pm ); - pa.setRenderHint(QPainter::Antialiasing); - pa.setBrush(Qt::SolidPattern); - pa.drawLine(3,10,8,10); - pa.drawLine(12,10,17,10); - pa.drawLine(8,14,8,6); - pa.drawLine(12,14,12,6); - pa.end(); - ui.cbXBreakStyle->setItemIcon(1, pm); - ui.cbYBreakStyle->setItemIcon(1, pm); - - //sloped - pm.fill(Qt::transparent); - pa.begin( &pm ); - pa.setRenderHint(QPainter::Antialiasing); - pa.setBrush(Qt::SolidPattern); - pa.drawLine(3,10,8,10); - pa.drawLine(12,10,17,10); - pa.drawLine(6,14,10,6); - pa.drawLine(10,14,14,6); - pa.end(); - ui.cbXBreakStyle->setItemIcon(2, pm); - ui.cbYBreakStyle->setItemIcon(2, pm); + this->retranslateUi(); + + //create icons for the different styles for scale breaking + QPainter pa; + pa.setPen( QPen(Qt::SolidPattern, 0) ); + QPixmap pm(20, 20); + ui.cbXBreakStyle->setIconSize( QSize(20,20) ); + ui.cbYBreakStyle->setIconSize( QSize(20,20) ); + + //simple + pm.fill(Qt::transparent); + pa.begin( &pm ); + pa.setRenderHint(QPainter::Antialiasing); + pa.setBrush(Qt::SolidPattern); + pa.drawLine(3,10,8,10); + pa.drawLine(12,10,17,10); + pa.end(); + ui.cbXBreakStyle->setItemIcon(0, pm); + ui.cbYBreakStyle->setItemIcon(0, pm); + + //vertical + pm.fill(Qt::transparent); + pa.begin( &pm ); + pa.setRenderHint(QPainter::Antialiasing); + pa.setBrush(Qt::SolidPattern); + pa.drawLine(3,10,8,10); + pa.drawLine(12,10,17,10); + pa.drawLine(8,14,8,6); + pa.drawLine(12,14,12,6); + pa.end(); + ui.cbXBreakStyle->setItemIcon(1, pm); + ui.cbYBreakStyle->setItemIcon(1, pm); + + //sloped + pm.fill(Qt::transparent); + pa.begin( &pm ); + pa.setRenderHint(QPainter::Antialiasing); + pa.setBrush(Qt::SolidPattern); + pa.drawLine(3,10,8,10); + pa.drawLine(12,10,17,10); + pa.drawLine(6,14,10,6); + pa.drawLine(10,14,14,6); + pa.end(); + ui.cbXBreakStyle->setItemIcon(2, pm); + ui.cbYBreakStyle->setItemIcon(2, pm); } void CartesianPlotDock::setPlots(QList<CartesianPlot*> list){ @@@ -234,65 -241,67 +241,67 @@@ ui.lComment->setEnabled(true); ui.leComment->setEnabled(true); - ui.leName->setText(m_plot->name()); - ui.leComment->setText(m_plot->comment()); - }else{ - ui.lName->setEnabled(false); - ui.leName->setEnabled(false); - ui.lComment->setEnabled(false); - ui.leComment->setEnabled(false); + ui.leName->setText(m_plot->name()); + ui.leComment->setText(m_plot->comment()); + }else{ + ui.lName->setEnabled(false); + ui.leName->setEnabled(false); + ui.lComment->setEnabled(false); + ui.leComment->setEnabled(false); - ui.leName->setText(""); - ui.leComment->setText(""); - } + ui.leName->setText(""); + ui.leComment->setText(""); + } //show the properties of the first plot - this->load(); - - //update active widgets - backgroundTypeChanged(ui.cbBackgroundType->currentIndex()); - - //Deactivate the geometry related widgets, if the worksheet layout is active. - //Currently, a plot can only be a child of the worksheet itself, so we only need to ask the parent aspect (=worksheet). - //TODO redesign this, if the hierarchy will be changend in future (a plot is a child of a new object group/container or so) - Worksheet* w = dynamic_cast<Worksheet*>(m_plot->parentAspect()); - if (w){ - bool b = (w->layout()==Worksheet::NoLayout); - ui.sbTop->setEnabled(b); - ui.sbLeft->setEnabled(b); - ui.sbWidth->setEnabled(b); - ui.sbHeight->setEnabled(b); - connect(w, SIGNAL(layoutChanged(Worksheet::Layout)), this, SLOT(layoutChanged(Worksheet::Layout))); - } - - //SIGNALs/SLOTs - connect( m_plot, SIGNAL(aspectDescriptionChanged(const AbstractAspect*)), this, SLOT(plotDescriptionChanged(const AbstractAspect*)) ); - connect( m_plot, SIGNAL(rectChanged(QRectF&)), this, SLOT(plotRectChanged(QRectF&)) ); - connect( m_plot, SIGNAL(xMinChanged(float)), this, SLOT(plotXMinChanged(float)) ); - connect( m_plot, SIGNAL(xMaxChanged(float)), this, SLOT(plotXMaxChanged(float)) ); - connect( m_plot, SIGNAL(xScaleChanged(int)), this, SLOT(plotXScaleChanged(int)) ); - connect( m_plot, SIGNAL(yMinChanged(float)), this, SLOT(plotYMinChanged(float)) ); - connect( m_plot, SIGNAL(yMaxChanged(float)), this, SLOT(plotYMaxChanged(float)) ); - connect( m_plot, SIGNAL(yScaleChanged(int)), this, SLOT(plotYScaleChanged(int)) ); - connect( m_plot, SIGNAL(xScaleBreakingsChanged(CartesianPlot::ScaleBreakings)), this, SLOT(plotXScaleBreakingChanged(CartesianPlot::ScaleBreakings)) ); - connect( m_plot, SIGNAL(yScaleBreakingsChanged(CartesianPlot::ScaleBreakings)), this, SLOT(plotYScaleBreakingChanged(CartesianPlot::ScaleBreakings)) ); - connect( m_plot, SIGNAL(visibleChanged(bool)), this, SLOT(plotVisibleChanged(bool)) ); - - // Plot Area - connect( m_plot->plotArea(), SIGNAL(backgroundTypeChanged(PlotArea::BackgroundType)), this, SLOT(plotBackgroundTypeChanged(PlotArea::BackgroundType)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundColorStyleChanged(PlotArea::BackgroundColorStyle)), this, SLOT(plotBackgroundColorStyleChanged(PlotArea::BackgroundColorStyle)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundImageStyleChanged(PlotArea::BackgroundImageStyle)), this, SLOT(plotBackgroundImageStyleChanged(PlotArea::BackgroundImageStyle)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundBrushStyleChanged(Qt::BrushStyle)), this, SLOT(plotBackgroundBrushStyleChanged(Qt::BrushStyle)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundFirstColorChanged(QColor&)), this, SLOT(plotBackgroundFirstColorChanged(QColor&)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundSecondColorChanged(QColor&)), this, SLOT(plotBackgroundSecondColorChanged(QColor&)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundFileNameChanged(QString&)), this, SLOT(plotBackgroundFileNameChanged(QString&)) ); - connect( m_plot->plotArea(), SIGNAL(backgroundOpacityChanged(float)), this, SLOT(plotBackgroundOpacityChanged(float)) ); - connect( m_plot->plotArea(), SIGNAL(borderPenChanged(QPen&)), this, SLOT(plotBorderPenChanged(QPen&)) ); - connect( m_plot->plotArea(), SIGNAL(borderOpacityChanged(float)), this, SLOT(plotBorderOpacityChanged(float)) ); - connect( m_plot, SIGNAL(horizontalPaddingChanged(float)), this, SLOT(plotHorizontalPaddingChanged(float)) ); - connect( m_plot, SIGNAL(verticalPaddingChanged(float)), this, SLOT(plotVerticalPaddingChanged(float)) ); - - m_initializing = false; + this->load(); + + //update active widgets + backgroundTypeChanged(ui.cbBackgroundType->currentIndex()); + + //Deactivate the geometry related widgets, if the worksheet layout is active. + //Currently, a plot can only be a child of the worksheet itself, so we only need to ask the parent aspect (=worksheet). + //TODO redesign this, if the hierarchy will be changend in future (a plot is a child of a new object group/container or so) + Worksheet* w = dynamic_cast<Worksheet*>(m_plot->parentAspect()); + if (w){ + bool b = (w->layout()==Worksheet::NoLayout); + ui.sbTop->setEnabled(b); + ui.sbLeft->setEnabled(b); + ui.sbWidth->setEnabled(b); + ui.sbHeight->setEnabled(b); + connect(w, SIGNAL(layoutChanged(Worksheet::Layout)), this, SLOT(layoutChanged(Worksheet::Layout))); + } + + //SIGNALs/SLOTs + connect( m_plot, SIGNAL(aspectDescriptionChanged(const AbstractAspect*)), this, SLOT(plotDescriptionChanged(const AbstractAspect*)) ); + connect( m_plot, SIGNAL(rectChanged(QRectF&)), this, SLOT(plotRectChanged(QRectF&)) ); + connect( m_plot, SIGNAL(xMinChanged(float)), this, SLOT(plotXMinChanged(float)) ); + connect( m_plot, SIGNAL(xMaxChanged(float)), this, SLOT(plotXMaxChanged(float)) ); + connect( m_plot, SIGNAL(xScaleChanged(int)), this, SLOT(plotXScaleChanged(int)) ); + connect( m_plot, SIGNAL(xAutoScaleChanged(bool)), this, SLOT(plotXAutoScaleChanged(bool)) ); + connect( m_plot, SIGNAL(yMinChanged(float)), this, SLOT(plotYMinChanged(float)) ); + connect( m_plot, SIGNAL(yMaxChanged(float)), this, SLOT(plotYMaxChanged(float)) ); + connect( m_plot, SIGNAL(yScaleChanged(int)), this, SLOT(plotYScaleChanged(int)) ); + connect( m_plot, SIGNAL(yAutoScaleChanged(bool)), this, SLOT(plotYAutoScaleChanged(bool)) ); + connect( m_plot, SIGNAL(xScaleBreakingsChanged(CartesianPlot::ScaleBreakings)), this, SLOT(plotXScaleBreakingChanged(CartesianPlot::ScaleBreakings)) ); + connect( m_plot, SIGNAL(yScaleBreakingsChanged(CartesianPlot::ScaleBreakings)), this, SLOT(plotYScaleBreakingChanged(CartesianPlot::ScaleBreakings)) ); + connect( m_plot, SIGNAL(visibleChanged(bool)), this, SLOT(plotVisibleChanged(bool)) ); + + // Plot Area + connect( m_plot->plotArea(), SIGNAL(backgroundTypeChanged(PlotArea::BackgroundType)), this, SLOT(plotBackgroundTypeChanged(PlotArea::BackgroundType)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundColorStyleChanged(PlotArea::BackgroundColorStyle)), this, SLOT(plotBackgroundColorStyleChanged(PlotArea::BackgroundColorStyle)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundImageStyleChanged(PlotArea::BackgroundImageStyle)), this, SLOT(plotBackgroundImageStyleChanged(PlotArea::BackgroundImageStyle)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundBrushStyleChanged(Qt::BrushStyle)), this, SLOT(plotBackgroundBrushStyleChanged(Qt::BrushStyle)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundFirstColorChanged(QColor&)), this, SLOT(plotBackgroundFirstColorChanged(QColor&)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundSecondColorChanged(QColor&)), this, SLOT(plotBackgroundSecondColorChanged(QColor&)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundFileNameChanged(QString&)), this, SLOT(plotBackgroundFileNameChanged(QString&)) ); + connect( m_plot->plotArea(), SIGNAL(backgroundOpacityChanged(float)), this, SLOT(plotBackgroundOpacityChanged(float)) ); + connect( m_plot->plotArea(), SIGNAL(borderPenChanged(QPen&)), this, SLOT(plotBorderPenChanged(QPen&)) ); + connect( m_plot->plotArea(), SIGNAL(borderOpacityChanged(float)), this, SLOT(plotBorderOpacityChanged(float)) ); + connect( m_plot, SIGNAL(horizontalPaddingChanged(float)), this, SLOT(plotHorizontalPaddingChanged(float)) ); + connect( m_plot, SIGNAL(verticalPaddingChanged(float)), this, SLOT(plotVerticalPaddingChanged(float)) ); + + m_initializing = false; } void CartesianPlotDock::activateTitleTab(){ @@@ -359,20 -368,18 +368,18 @@@ void CartesianPlotDock::nameChanged() } void CartesianPlotDock::commentChanged(){ - if (m_initializing) - return; + if (m_initializing) + return; - m_plot->setComment(ui.leComment->text()); + m_plot->setComment(ui.leComment->text()); } - void CartesianPlotDock::visibilityChanged(int state){ - if (m_initializing) - return; + void CartesianPlotDock::visibilityChanged(bool state){ + if (m_initializing) + return; - bool b = (state==Qt::Checked); - foreach(CartesianPlot* plot, m_plotList){ - plot->setVisible(b); - } + foreach(CartesianPlot* plot, m_plotList) + plot->setVisible(state); } void CartesianPlotDock::geometryChanged(){ @@@ -741,23 -748,30 +748,30 @@@ void CartesianPlotDock::backgroundSecon opens a file dialog and lets the user select the image file. */ void CartesianPlotDock::selectFile() { - KConfigGroup conf(KSharedConfig::openConfig(), "CartesianPlotDock"); - QString dir = conf.readEntry("LastImageDir", ""); - QString path = QFileDialog::getOpenFileName(this, i18n("Select the image file"), dir); - if (path.isEmpty()) - return; //cancel was clicked in the file-dialog - - int pos = path.lastIndexOf(QDir::separator()); - if (pos!=-1) { - QString newDir = path.left(pos); - if (newDir!=dir) - conf.writeEntry("LastImageDir", newDir); + KConfigGroup conf(KSharedConfig::openConfig(), "CartesianPlotDock"); + QString dir = conf.readEntry("LastImageDir", ""); + + QString formats; + foreach(const QByteArray format, QImageReader::supportedImageFormats()) { + QString f = "*." + QString(format.constData()); + formats.isEmpty() ? formats+=f : formats+=' '+f; } + QString path = QFileDialog::getOpenFileName(this, i18n("Select the image file"), dir, i18n("Images (%1)", formats)); + if (path.isEmpty()) + return; //cancel was clicked in the file-dialog + + int pos = path.lastIndexOf(QDir::separator()); + if (pos!=-1) { + QString newDir = path.left(pos); + if (newDir!=dir) + conf.writeEntry("LastImageDir", newDir); + } + - ui.kleBackgroundFileName->setText( path ); + ui.kleBackgroundFileName->setText( path ); - foreach(CartesianPlot* plot, m_plotList) - plot->plotArea()->setBackgroundFileName(path); + foreach(CartesianPlot* plot, m_plotList) + plot->plotArea()->setBackgroundFileName(path); } void CartesianPlotDock::fileNameChanged(){ @@@ -872,18 -886,24 +886,24 @@@ void CartesianPlotDock::plotDescription } void CartesianPlotDock::plotRectChanged(QRectF& rect){ - m_initializing = true; - ui.sbLeft->setValue(Worksheet::convertFromSceneUnits(rect.x(), Worksheet::Centimeter)); - ui.sbTop->setValue(Worksheet::convertFromSceneUnits(rect.y(), Worksheet::Centimeter)); - ui.sbWidth->setValue(Worksheet::convertFromSceneUnits(rect.width(), Worksheet::Centimeter)); - ui.sbHeight->setValue(Worksheet::convertFromSceneUnits(rect.height(), Worksheet::Centimeter)); - m_initializing = false; + m_initializing = true; + ui.sbLeft->setValue(Worksheet::convertFromSceneUnits(rect.x(), Worksheet::Centimeter)); + ui.sbTop->setValue(Worksheet::convertFromSceneUnits(rect.y(), Worksheet::Centimeter)); + ui.sbWidth->setValue(Worksheet::convertFromSceneUnits(rect.width(), Worksheet::Centimeter)); + ui.sbHeight->setValue(Worksheet::convertFromSceneUnits(rect.height(), Worksheet::Centimeter)); + m_initializing = false; } + void CartesianPlotDock::plotXAutoScaleChanged(bool value) { + m_initializing = true; + ui.chkAutoScaleX->setChecked(value); + m_initializing = false; + } + void CartesianPlotDock::plotXMinChanged(float value){ - m_initializing = true; - ui.kleXMin->setText( QString::number(value) ); - m_initializing = false; + m_initializing = true; + ui.kleXMin->setText( QString::number(value) ); + m_initializing = false; } void CartesianPlotDock::plotXMaxChanged(float value){ @@@ -893,15 -913,22 +913,22 @@@ } void CartesianPlotDock::plotXScaleChanged(int scale){ - m_initializing = true; - ui.cbXScaling->setCurrentIndex( scale ); - m_initializing = false; + m_initializing = true; + ui.cbXScaling->setCurrentIndex( scale ); + m_initializing = false; } + + void CartesianPlotDock::plotYAutoScaleChanged(bool value) { + m_initializing = true; + ui.chkAutoScaleY->setChecked(value); + m_initializing = false; + } + void CartesianPlotDock::plotYMinChanged(float value){ - m_initializing = true; - ui.kleYMin->setText( QString::number(value) ); - m_initializing = false; + m_initializing = true; + ui.kleYMin->setText( QString::number(value) ); + m_initializing = false; } void CartesianPlotDock::plotYMaxChanged(float value){ @@@ -1178,32 -1205,33 +1205,33 @@@ void CartesianPlotDock::saveConfigAsTem // group.writeEntry("yMax", ui.kleYMax->text()); // group.writeEntry("yScale", ui.cbYScaling->currentIndex()); - //Title - KConfigGroup group = config.group("PlotTitle"); - labelWidget->saveConfig(group); - - //Scale breakings - //TODO - - //Background - group = config.group("PlotArea"); - group.writeEntry("BackgroundType", ui.cbBackgroundType->currentIndex()); - group.writeEntry("BackgroundColorStyle", ui.cbBackgroundColorStyle->currentIndex()); - group.writeEntry("BackgroundImageStyle", ui.cbBackgroundImageStyle->currentIndex()); - group.writeEntry("BackgroundBrushStyle", ui.cbBackgroundBrushStyle->currentIndex()); - group.writeEntry("BackgroundFileName", ui.kleBackgroundFileName->text()); - group.writeEntry("BackgroundFirstColor", ui.kcbBackgroundFirstColor->color()); - group.writeEntry("BackgroundSecondColor", ui.kcbBackgroundSecondColor->color()); - group.writeEntry("BackgroundOpacity", ui.sbBackgroundOpacity->value()/100.0); - group.writeEntry("HorizontalPadding", Worksheet::convertToSceneUnits(ui.sbPaddingHorizontal->value(), Worksheet::Centimeter)); - group.writeEntry("VerticalPadding", Worksheet::convertToSceneUnits(ui.sbPaddingVertical->value(), Worksheet::Centimeter)); - - //Border - group.writeEntry("BorderStyle", ui.cbBorderStyle->currentIndex()); - group.writeEntry("BorderColor", ui.kcbBorderColor->color()); - group.writeEntry("BorderWidth", Worksheet::convertToSceneUnits(ui.sbBorderWidth->value(), Worksheet::Point)); - group.writeEntry("BorderCornerRadius", Worksheet::convertToSceneUnits(ui.sbBorderCornerRadius->value(), Worksheet::Centimeter)); - group.writeEntry("BorderOpacity", ui.sbBorderOpacity->value()/100.0); - - config.sync(); + //Title + KConfigGroup group = config.group("PlotTitle"); + labelWidget->saveConfig(group); + + //Scale breakings + //TODO + + //Background + group = config.group("PlotArea"); + group.writeEntry("BackgroundType", ui.cbBackgroundType->currentIndex()); + group.writeEntry("BackgroundColorStyle", ui.cbBackgroundColorStyle->currentIndex()); + group.writeEntry("BackgroundImageStyle", ui.cbBackgroundImageStyle->currentIndex()); + group.writeEntry("BackgroundBrushStyle", ui.cbBackgroundBrushStyle->currentIndex()); + group.writeEntry("BackgroundFileName", ui.kleBackgroundFileName->text()); + group.writeEntry("BackgroundFirstColor", ui.kcbBackgroundFirstColor->color()); + group.writeEntry("BackgroundSecondColor", ui.kcbBackgroundSecondColor->color()); + group.writeEntry("BackgroundOpacity", ui.sbBackgroundOpacity->value()/100.0); + group.writeEntry("HorizontalPadding", Worksheet::convertToSceneUnits(ui.sbPaddingHorizontal->value(), Worksheet::Centimeter)); + group.writeEntry("VerticalPadding", Worksheet::convertToSceneUnits(ui.sbPaddingVertical->value(), Worksheet::Centimeter)); + + //Border + group.writeEntry("BorderStyle", ui.cbBorderStyle->currentIndex()); + group.writeEntry("BorderColor", ui.kcbBorderColor->color()); + group.writeEntry("BorderWidth", Worksheet::convertToSceneUnits(ui.sbBorderWidth->value(), Worksheet::Point)); + group.writeEntry("BorderCornerRadius", Worksheet::convertToSceneUnits(ui.sbBorderCornerRadius->value(), Worksheet::Centimeter)); + group.writeEntry("BorderOpacity", ui.sbBorderOpacity->value()/100.0); + + config.sync(); } + diff --cc src/kdefrontend/dockwidgets/CartesianPlotLegendDock.cpp index 17f4769,7ee9f79..930d85b --- a/src/kdefrontend/dockwidgets/CartesianPlotLegendDock.cpp +++ b/src/kdefrontend/dockwidgets/CartesianPlotLegendDock.cpp @@@ -62,10 -66,9 +66,9 @@@ CartesianPlotLegendDock::CartesianPlotL //"Background"-tab ui.kleBackgroundFileName->setClearButtonShown(true); - ui.bOpen->setIcon( QIcon::fromTheme("document-open") ); + ui.bOpen->setIcon( QIcon::fromTheme("document-open") ); - KUrlCompletion *comp = new KUrlCompletion(); - ui.kleBackgroundFileName->setCompletionObject(comp); + ui.kleBackgroundFileName->setCompletionObject(m_completion); //adjust layouts in the tabs for (int i=0; i<ui.tabWidget->count(); ++i){ diff --cc src/kdefrontend/dockwidgets/WorksheetDock.cpp index ad9a2c0,a6a0f23..dafde31 --- a/src/kdefrontend/dockwidgets/WorksheetDock.cpp +++ b/src/kdefrontend/dockwidgets/WorksheetDock.cpp @@@ -87,10 -88,9 +88,9 @@@ WorksheetDock::WorksheetDock(QWidget *p //Background-tab ui.cbBackgroundColorStyle->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon); ui.kleBackgroundFileName->setClearButtonShown(true); - ui.bOpen->setIcon( QIcon::fromTheme("document-open") ); + ui.bOpen->setIcon( QIcon::fromTheme("document-open") ); - KUrlCompletion *comp = new KUrlCompletion(); - ui.kleBackgroundFileName->setCompletionObject(comp); + ui.kleBackgroundFileName->setCompletionObject(m_completion); //adjust layouts in the tabs for (int i=0; i<ui.tabWidget->count(); ++i){ diff --cc src/kdefrontend/dockwidgets/XYCurveDock.cpp index d82f772,3a838bf..dfbb2e2 --- a/src/kdefrontend/dockwidgets/XYCurveDock.cpp +++ b/src/kdefrontend/dockwidgets/XYCurveDock.cpp @@@ -481,7 -488,7 +488,7 @@@ void XYCurveDock::init() void XYCurveDock::setModel() { QList<const char*> list; - list<<"Folder"<<"Workbook"<<"Spreadsheet"<<"FileDataSource"<<"Column"<<"Worksheet"<<"CartesianPlot"<<"XYFitCurve"<<"CantorWorksheet"; - list<<"Folder"<<"Workbook"<<"Datapicker"<<"DatapickerCurve"<<"Spreadsheet"<<"FileDataSource"<<"Column"<<"Worksheet"<<"CartesianPlot"<<"XYFitCurve"; ++ list<<"Folder"<<"Workbook"<<"Datapicker"<<"DatapickerCurve"<<"Spreadsheet"<<"FileDataSource"<<"Column"<<"Worksheet"<<"CartesianPlot"<<"XYFitCurve"<<"CantorWorksheet"; if (cbXColumn) { cbXColumn->setTopLevelClasses(list); cbYColumn->setTopLevelClasses(list); diff --cc src/kdefrontend/dockwidgets/XYFitCurveDock.cpp index 2ba9ab3,99527a1..07a7d49 --- a/src/kdefrontend/dockwidgets/XYFitCurveDock.cpp +++ b/src/kdefrontend/dockwidgets/XYFitCurveDock.cpp @@@ -161,7 -168,7 +168,7 @@@ void XYFitCurveDock::initGeneralTab() void XYFitCurveDock::setModel() { QList<const char*> list; - list<<"Folder"<<"Workbook"<<"Spreadsheet"<<"FileDataSource"<<"Column"<<"CantorWorksheet"; - list<<"Folder"<<"Workbook"<<"Spreadsheet"<<"FileDataSource"<<"Column"<<"Datapicker"; ++ list<<"Folder"<<"Workbook"<<"Spreadsheet"<<"FileDataSource"<<"Column"<<"CantorWorksheet"<<"Datapicker"; cbXDataColumn->setTopLevelClasses(list); cbYDataColumn->setTopLevelClasses(list); cbWeightsColumn->setTopLevelClasses(list); diff --cc src/kdefrontend/labplot2ui.rc index 2374a32,fc21b73..ec0fcca --- a/src/kdefrontend/labplot2ui.rc +++ b/src/kdefrontend/labplot2ui.rc @@@ -65,7 -64,7 +71,8 @@@ <Menu name="spreadsheet"><text>&Spreadsheet</text></Menu> <Menu name="matrix"><text>&Matrix</text></Menu> <Menu name="worksheet"><text>&Worksheet</text></Menu> +<Menu name="casWorksheet"><text>&CAS Worksheet</text></Menu> + <Menu name="datapicker"><text>&Datapicker</text></Menu> <!-- <Menu name="analysis"><text>&Analysis</text></Menu> --> <!-- <Menu name="drawing"><text>&Drawing</text></Menu> --> <!-- <Menu name="script"><text>&Script</text></Menu> --> diff --cc src/kdefrontend/spreadsheet/ExportSpreadsheetDialog.cpp index e9290bc,f2ac4b5..0a5a64b --- a/src/kdefrontend/spreadsheet/ExportSpreadsheetDialog.cpp +++ b/src/kdefrontend/spreadsheet/ExportSpreadsheetDialog.cpp @@@ -82,8 -79,9 +79,9 @@@ ExportSpreadsheetDialog::ExportSpreadsh connect(this,SIGNAL(user1Clicked()), this, SLOT(toggleOptions())); setCaption(i18n("Export spreadsheet")); - setWindowIcon(QIcon::fromTheme("document-export-database")); + setWindowIcon(QIcon::fromTheme("document-export-database")); + //restore saved settings KConfigGroup conf(KSharedConfig::openConfig(), "ExportSpreadsheetDialog"); ui.cbFormat->setCurrentIndex(conf.readEntry("Format", 0)); ui.chkExportHeader->setChecked(conf.readEntry("Header", true)); diff --cc src/kdefrontend/spreadsheet/FunctionValuesDialog.cpp index c1b89c4,ce8114b..8700516 --- a/src/kdefrontend/spreadsheet/FunctionValuesDialog.cpp +++ b/src/kdefrontend/spreadsheet/FunctionValuesDialog.cpp @@@ -58,10 -58,9 +58,11 @@@ FunctionValuesDialog::FunctionValuesDia setMainWidget(mainWidget); ui.tbConstants->setIcon( QIcon::fromTheme("labplot-format-text-symbol") ); + + ui.tbConstants->setIcon( QIcon::fromTheme("format-text-symbol") ); ui.tbFunctions->setIcon( QIcon::fromTheme("preferences-desktop-font") ); + ui.teEquation->setMaximumHeight(QLineEdit().sizeHint().height()*2); ui.teEquation->setFocus(); m_topLevelClasses<<"Folder"<<"Workbook"<<"Spreadsheet"<<"FileDataSource"<<"Column"; diff --cc src/kdefrontend/widgets/FitOptionsWidget.cpp index 1a3e660,73ed0af..1ffad11 --- a/src/kdefrontend/widgets/FitOptionsWidget.cpp +++ b/src/kdefrontend/widgets/FitOptionsWidget.cpp @@@ -33,10 -33,10 +33,10 @@@ \ingroup kdefrontend */ - FitOptionsWidget::FitOptionsWidget(QWidget *parent, XYFitCurve::FitData* fitData): QWidget(parent), m_fitData(fitData) { + FitOptionsWidget::FitOptionsWidget(QWidget *parent, XYFitCurve::FitData* fitData): QWidget(parent), m_fitData(fitData), m_changed(false) { ui.setupUi(this); - ui.pbApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); - ui.pbCancel->setIcon(QIcon::fromTheme("dialog-cancel")); + ui.pbApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); + ui.pbCancel->setIcon(QIcon::fromTheme("dialog-cancel")); //TODO: show "robust" option when robust fitting is possible // ui.cbRobust->addItem(i18n("on")); diff --cc src/kdefrontend/widgets/FitParametersWidget.cpp index dbbf68d,0b2dc4f..fc556a4 --- a/src/kdefrontend/widgets/FitParametersWidget.cpp +++ b/src/kdefrontend/widgets/FitParametersWidget.cpp @@@ -37,10 -37,10 +37,10 @@@ \ingroup kdefrontend */ - FitParametersWidget::FitParametersWidget(QWidget* parent, XYFitCurve::FitData* data) : QWidget(parent), m_fitData(data) { + FitParametersWidget::FitParametersWidget(QWidget* parent, XYFitCurve::FitData* data) : QWidget(parent), m_fitData(data), m_changed(false) { ui.setupUi(this); - ui.pbApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); - ui.pbCancel->setIcon(QIcon::fromTheme("dialog-cancel")); + ui.pbApply->setIcon(QIcon::fromTheme("dialog-ok-apply")); + ui.pbCancel->setIcon(QIcon::fromTheme("dialog-cancel")); ui.tableWidget->setColumnCount(2); diff --cc src/kdefrontend/widgets/LabelWidget.cpp index 7aeea41,4ac385c..803235e --- a/src/kdefrontend/widgets/LabelWidget.cpp +++ b/src/kdefrontend/widgets/LabelWidget.cpp @@@ -48,16 -48,16 +48,16 @@@ */ // see legacy/LabelWidget.cpp - LabelWidget::LabelWidget(QWidget *parent): QWidget(parent), m_dateTimeMenu(new QMenu(this)) { + LabelWidget::LabelWidget(QWidget *parent): QWidget(parent), m_initializing(false), m_dateTimeMenu(new QMenu(this)) { ui.setupUi(this); - m_dateTimeMenu->setSeparatorsCollapsible(false); //we don't want the first separator to be removed + m_dateTimeMenu->setSeparatorsCollapsible(false); //we don't want the first separator to be removed - QGridLayout* layout =static_cast<QGridLayout*>(this->layout()); - layout->setContentsMargins(2,2,2,2); - layout->setHorizontalSpacing(2); - layout->setVerticalSpacing(2); - ui.kcbFontColor->setColor(Qt::black); // default color + QGridLayout* layout =static_cast<QGridLayout*>(this->layout()); + layout->setContentsMargins(2,2,2,2); + layout->setHorizontalSpacing(2); + layout->setVerticalSpacing(2); + ui.kcbFontColor->setColor(Qt::black); // default color //Icons ui.tbFontBold->setIcon( QIcon::fromTheme("format-text-bold") ); _______________________________________________ kde-doc-english mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-doc-english
