void TransformationStateDefined::initializeModelGridRemoval (CmdMediator &cmdMediator, const Transformation &transformation, const QString &selectedGraphCurve) { LOG4CPP_INFO_S ((*mainCat)) << "TransformationStateDefined::initializeModelGridRemoval"; // Generate filtered image FilterImage filterImage; QPixmap pixmapFiltered = filterImage.filter (cmdMediator.document().pixmap().toImage(), transformation, selectedGraphCurve, cmdMediator.document().modelColorFilter(), cmdMediator.document().modelGridRemoval()); // Initialize grid removal settings so user does not have to int countX, countY; double startX, startY, stepX, stepY; GridClassifier gridClassifier; gridClassifier.classify (context().isGnuplot(), pixmapFiltered, transformation, countX, startX, stepX, countY, startY, stepY); DocumentModelGridRemoval modelGridRemoval (startX, startY, stepX, stepY, countX, countY); cmdMediator.document().setModelGridRemoval (modelGridRemoval); }
void DlgSettingsColorFilter::load (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsColorFilter::load"; setCmdMediator (cmdMediator); // Flush old data if (m_modelColorFilterBefore != 0) { delete m_modelColorFilterBefore; } if (m_modelColorFilterAfter != 0) { delete m_modelColorFilterAfter; } // Save new data m_modelColorFilterBefore = new DocumentModelColorFilter (cmdMediator.document()); m_modelColorFilterAfter = new DocumentModelColorFilter (cmdMediator.document()); // Populate controls. First load curve name combobox. The curve-specific controls get loaded in slotCurveName m_cmbCurveName->clear (); m_cmbCurveName->addItem (AXIS_CURVE_NAME); QStringList curveNames = cmdMediator.curvesGraphsNames(); QStringList::const_iterator itr; for (itr = curveNames.begin (); itr != curveNames.end (); itr++) { QString curveName = *itr; m_cmbCurveName->addItem (curveName); } // This sets the curve name m_cmbCurveName->setCurrentText (mainWindow().selectedGraphCurve()); loadForCurveName(); enableOk (false); // Disable Ok button since there not yet any changes }
void TransformationStateDefined::begin(CmdMediator &cmdMediator, const Transformation &transformation, const QString &selectedGraphCurve) { LOG4CPP_INFO_S ((*mainCat)) << "TransformationStateDefined::begin"; if (!cmdMediator.document().modelGridDisplay().stable()) { // Initialize or update the grid display settings since they are not stable yet initializeModelGridDisplay (cmdMediator, transformation); } if (!cmdMediator.document().modelGridRemoval().stable()) { // Initialize or update the grid removal settings since they are not stable yet initializeModelGridRemoval (cmdMediator, transformation, selectedGraphCurve); } updateAxesChecker (cmdMediator, transformation); }
void Transformation::update (bool fileIsLoaded, const CmdMediator &cmdMediator, const MainWindowModel &modelMainWindow) { LOG4CPP_DEBUG_S ((*mainCat)) << "Transformation::update"; if (!fileIsLoaded) { m_transformIsDefined = false; } else { setModelCoords (cmdMediator.document().modelCoords(), modelMainWindow); CallbackUpdateTransform ftor (m_modelCoords, cmdMediator.document().documentAxesPointsRequired()); Functor2wRet<const QString &, const Point&, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor, &CallbackUpdateTransform::callback); cmdMediator.iterateThroughCurvePointsAxes (ftorWithCallback); if (ftor.transformIsDefined ()) { updateTransformFromMatrices (ftor.matrixScreen(), ftor.matrixGraph()); } else { m_transformIsDefined = false; } } }
void GraphicsScene::updatePointMembership (CmdMediator &cmdMediator, GeometryWindow *geometryWindow) { LOG4CPP_INFO_S ((*mainCat)) << "GraphicsScene::updatePointMembership"; CallbackSceneUpdateAfterCommand ftor (m_graphicsLinesForCurves, *this, cmdMediator.document (), geometryWindow); Functor2wRet<const QString &, const Point &, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor, &CallbackSceneUpdateAfterCommand::callback); // First pass: // 1) Mark all points as Not Wanted (this is done while creating the map) m_graphicsLinesForCurves.lineMembershipReset (); // Next pass: // 1) Existing points that are found in the map are marked as Wanted // 2) Add new points that were just created in the Document. The new points are marked as Wanted cmdMediator.iterateThroughCurvePointsAxes (ftorWithCallback); cmdMediator.iterateThroughCurvesPointsGraphs (ftorWithCallback); // Next pass: // 1) Remove points that were just removed from the Document m_graphicsLinesForCurves.lineMembershipPurge (cmdMediator.document().modelCurveStyles()); }
void DlgSettingsPointMatch::load (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsPointMatch::load"; setCmdMediator (cmdMediator); // Flush old data if (m_modelPointMatchBefore != 0) { delete m_modelPointMatchBefore; } if (m_modelPointMatchAfter != 0) { delete m_modelPointMatchAfter; } // Save new data m_modelPointMatchBefore = new DocumentModelPointMatch (cmdMediator.document()); m_modelPointMatchAfter = new DocumentModelPointMatch (cmdMediator.document()); // Sanity checks. Incoming defaults must be acceptable to the local limits ENGAUGE_ASSERT (POINT_SEPARATION_MIN <= m_modelPointMatchAfter->minPointSeparation()); ENGAUGE_ASSERT (POINT_SEPARATION_MAX > m_modelPointMatchAfter->minPointSeparation()); ENGAUGE_ASSERT (POINT_SIZE_MIN <= m_modelPointMatchAfter->maxPointSize()); ENGAUGE_ASSERT (POINT_SIZE_MAX > m_modelPointMatchAfter->maxPointSize()); // Populate controls m_spinMinPointSeparation->setValue(m_modelPointMatchAfter->minPointSeparation()); m_spinPointSize->setValue(m_modelPointMatchAfter->maxPointSize()); int indexAccepted = m_cmbAcceptedPointColor->findData(QVariant(m_modelPointMatchAfter->paletteColorAccepted())); ENGAUGE_ASSERT (indexAccepted >= 0); m_cmbAcceptedPointColor->setCurrentIndex(indexAccepted); int indexCandidate = m_cmbCandidatePointColor->findData(QVariant(m_modelPointMatchAfter->paletteColorCandidate())); ENGAUGE_ASSERT (indexCandidate >= 0); m_cmbCandidatePointColor->setCurrentIndex(indexCandidate); int indexRejected = m_cmbRejectedPointColor->findData(QVariant(m_modelPointMatchAfter->paletteColorRejected())); ENGAUGE_ASSERT (indexRejected >= 0); m_cmbRejectedPointColor->setCurrentIndex(indexRejected); initializeBox (); // Fix the preview size using an invisible boundary QGraphicsRectItem *boundary = m_scenePreview->addRect (QRect (0, 0, cmdMediator.document().pixmap().width (), cmdMediator.document().pixmap().height ())); boundary->setVisible (false); m_scenePreview->addPixmap (cmdMediator.document().pixmap()); updateControls(); enableOk (false); // Disable Ok button since there not yet any changes updatePreview(); }
void DlgSettingsGridRemoval::load (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsGridRemoval::load"; setCmdMediator (cmdMediator); // Flush old data if (m_modelGridRemovalBefore != 0) { delete m_modelGridRemovalBefore; } if (m_modelGridRemovalAfter != 0) { delete m_modelGridRemovalAfter; } // Save new data m_modelGridRemovalBefore = new DocumentModelGridRemoval (cmdMediator.document()); m_modelGridRemovalAfter = new DocumentModelGridRemoval (cmdMediator.document()); // Sanity checks. Incoming defaults must be acceptable to the local limits ENGAUGE_ASSERT (CLOSE_DISTANCE_MIN <= m_modelGridRemovalAfter->closeDistance()); ENGAUGE_ASSERT (CLOSE_DISTANCE_MAX >= m_modelGridRemovalAfter->closeDistance()); // Populate controls m_chkRemoveGridLines->setChecked (m_modelGridRemovalAfter->removeDefinedGridLines()); m_editCloseDistance->setText (QString::number (m_modelGridRemovalAfter->closeDistance())); int indexDisableX = m_cmbDisableX->findData (QVariant (m_modelGridRemovalAfter->gridCoordDisableX())); m_cmbDisableX->setCurrentIndex (indexDisableX); m_editCountX->setText(QString::number(m_modelGridRemovalAfter->countX())); m_editStartX->setText(QString::number(m_modelGridRemovalAfter->startX())); m_editStepX->setText(QString::number(m_modelGridRemovalAfter->stepX())); m_editStopX->setText(QString::number(m_modelGridRemovalAfter->stopX())); int indexDisableY = m_cmbDisableX->findData (QVariant (m_modelGridRemovalAfter->gridCoordDisableY())); m_cmbDisableY->setCurrentIndex (indexDisableY); m_editCountY->setText(QString::number(m_modelGridRemovalAfter->countY())); m_editStartY->setText(QString::number(m_modelGridRemovalAfter->startY())); m_editStepY->setText(QString::number(m_modelGridRemovalAfter->stepY())); m_editStopY->setText(QString::number(m_modelGridRemovalAfter->stopY())); m_scenePreview->clear(); m_scenePreview->addPixmap (cmdMediator.document().pixmap()); updateControls (); enableOk (false); // Disable Ok button since there not yet any changes updatePreview(); }
void TransformationStateDefined::updateAxesChecker (CmdMediator &cmdMediator, const Transformation &transformation) { CallbackAxesCheckerFromAxesPoints ftor; Functor2wRet<const QString &, const Point&, CallbackSearchReturn> ftorWithCallback = functor_ret (ftor, &CallbackAxesCheckerFromAxesPoints::callback); cmdMediator.iterateThroughCurvePointsAxes (ftorWithCallback); m_axesChecker->prepareForDisplay (ftor.points(), cmdMediator.document().modelCurveStyles().pointRadius(AXIS_CURVE_NAME), cmdMediator.document().modelAxesChecker(), cmdMediator.document().modelCoords(), transformation); m_axesChecker->setVisible (true); startTimer (cmdMediator.document().modelAxesChecker()); }
void DlgSettingsSegments::load (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsSegments::load"; // Loading starts here m_loading = true; setCmdMediator (cmdMediator); // Flush old data if (m_modelSegmentsBefore != 0) { delete m_modelSegmentsBefore; } if (m_modelSegmentsAfter != 0) { delete m_modelSegmentsAfter; } // Save new data m_modelSegmentsBefore = new DocumentModelSegments (cmdMediator.document()); m_modelSegmentsAfter = new DocumentModelSegments (cmdMediator.document()); // Sanity checks. Incoming defaults must be acceptable to the local limits ENGAUGE_ASSERT (MIN_LENGTH_MIN <= m_modelSegmentsAfter->minLength ()); ENGAUGE_ASSERT (MIN_LENGTH_MAX >= m_modelSegmentsAfter->minLength ()); ENGAUGE_ASSERT (POINT_SEPARATION_MIN <= m_modelSegmentsAfter->pointSeparation()); ENGAUGE_ASSERT (POINT_SEPARATION_MAX >= m_modelSegmentsAfter->pointSeparation()); // Populate controls m_spinPointSeparation->setValue (m_modelSegmentsAfter->pointSeparation()); m_spinMinLength->setValue (m_modelSegmentsAfter->minLength()); m_chkFillCorners->setChecked (m_modelSegmentsAfter->fillCorners ()); m_spinLineWidth->setValue (m_modelSegmentsAfter->lineWidth()); int indexLineColor = m_cmbLineColor->findData(QVariant (m_modelSegmentsAfter->lineColor())); ENGAUGE_ASSERT (indexLineColor >= 0); m_cmbLineColor->setCurrentIndex(indexLineColor); // Loading finishes here m_loading = false; updateControls(); enableOk (false); // Disable Ok button since there not yet any changes updatePreview(); }
void GraphicsScene::updateCurves (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "GraphicsScene::updateCurves"; // Desired curve names include both axes and graph curve names QStringList curveNames; curveNames << AXIS_CURVE_NAME; curveNames << cmdMediator.document().curvesGraphsNames(); m_graphicsLinesForCurves.addRemoveCurves (*this, curveNames); }
void TransformationStateDefined::setModelGridRemoval (CmdMediator &cmdMediator, const Transformation &transformation) { // Initialize grid removal settings so user does not have to int countX, countY; double startX, startY, stepX, stepY; GridClassifier gridClassifier; gridClassifier.classify (cmdMediator.document().pixmap(), transformation, countX, startX, stepX, countY, startY, stepY); DocumentModelGridRemoval modelGridRemoval (startX, startY, stepX, stepY, countX, countY); cmdMediator.document().setModelGridRemoval (modelGridRemoval); }
void DlgSettingsDigitizeCurve::load (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsDigitizeCurve::load"; setCmdMediator (cmdMediator); // Flush old data if (m_modelDigitizeCurveBefore != 0) { delete m_modelDigitizeCurveBefore; } if (m_modelDigitizeCurveAfter != 0) { delete m_modelDigitizeCurveAfter; } // Save new data m_modelDigitizeCurveBefore = new DocumentModelDigitizeCurve (cmdMediator.document()); m_modelDigitizeCurveAfter = new DocumentModelDigitizeCurve (cmdMediator.document()); // Sanity checks. Incoming defaults must be acceptable to the local limits ENGAUGE_ASSERT (INNER_RADIUS_MIN <= m_modelDigitizeCurveAfter->cursorInnerRadius ()); ENGAUGE_ASSERT (INNER_RADIUS_MAX >= m_modelDigitizeCurveAfter->cursorInnerRadius ()); ENGAUGE_ASSERT (LINE_WIDTH_MIN <= m_modelDigitizeCurveAfter->cursorLineWidth ()); ENGAUGE_ASSERT (LINE_WIDTH_MAX >= m_modelDigitizeCurveAfter->cursorLineWidth ()); // Populate controls m_btnStandard->setChecked (m_modelDigitizeCurveAfter->cursorStandardCross()); m_btnCustom->setChecked (!m_modelDigitizeCurveAfter->cursorStandardCross()); m_spinInnerRadius->setValue (m_modelDigitizeCurveAfter->cursorInnerRadius()); int index = m_cmbSize->findData (QVariant (m_modelDigitizeCurveAfter->cursorSize())); m_cmbSize->setCurrentIndex (index); m_spinLineWidth->setValue (m_modelDigitizeCurveAfter->cursorLineWidth()); updateControls(); enableOk (false); // Disable Ok button since there not yet any changes updatePreview(); }
void TransformationStateDefined::initializeModelGridDisplay (CmdMediator &cmdMediator, const Transformation &transformation) { cmdMediator.document().initializeGridDisplay (transformation); }
void DlgSettingsExportFormat::load (CmdMediator &cmdMediator) { LOG4CPP_INFO_S ((*mainCat)) << "DlgSettingsExportFormat::load"; setCmdMediator (cmdMediator); // Flush old data if (m_modelExportBefore != 0) { delete m_modelExportBefore; } if (m_modelExportAfter != 0) { delete m_modelExportAfter; } // Save new data m_modelExportBefore = new DocumentModelExportFormat (cmdMediator.document()); m_modelExportAfter = new DocumentModelExportFormat (cmdMediator.document()); // Populate controls. First load excluded curves m_listExcluded->clear(); QStringList curveNamesExcluded = m_modelExportAfter->curveNamesNotExported(); QStringList::const_iterator itr; for (itr = curveNamesExcluded.begin (); itr != curveNamesExcluded.end(); ++itr) { QString curveNameNotExported = *itr; m_listExcluded->addItem (curveNameNotExported); } // Include curves that are not excluded m_listIncluded->clear(); QStringList curveNamesAll = cmdMediator.document().curvesGraphsNames(); for (itr = curveNamesAll.begin (); itr != curveNamesAll.end(); itr++) { QString curveName = *itr; if (!curveNamesExcluded.contains (curveName)) { m_listIncluded->addItem (curveName); } } ExportPointsSelectionFunctions pointsSelectionFunctions = m_modelExportAfter->pointsSelectionFunctions(); m_btnFunctionsPointsAllCurves->setChecked (pointsSelectionFunctions == EXPORT_POINTS_SELECTION_FUNCTIONS_INTERPOLATE_ALL_CURVES); m_btnFunctionsPointsFirstCurve->setChecked (pointsSelectionFunctions == EXPORT_POINTS_SELECTION_FUNCTIONS_INTERPOLATE_FIRST_CURVE); m_btnFunctionsPointsEvenlySpaced->setChecked (pointsSelectionFunctions == EXPORT_POINTS_SELECTION_FUNCTIONS_INTERPOLATE_PERIODIC); m_btnFunctionsPointsRaw->setChecked (pointsSelectionFunctions == EXPORT_POINTS_SELECTION_FUNCTIONS_RAW); ExportLayoutFunctions layoutFunctions = m_modelExportAfter->layoutFunctions (); m_btnFunctionsLayoutAllCurves->setChecked (layoutFunctions == EXPORT_LAYOUT_ALL_PER_LINE); m_btnFunctionsLayoutOneCurve->setChecked (layoutFunctions == EXPORT_LAYOUT_ONE_PER_LINE); ExportPointsSelectionRelations pointsSelectionRelations = m_modelExportAfter->pointsSelectionRelations(); m_btnRelationsPointsEvenlySpaced->setChecked (pointsSelectionRelations == EXPORT_POINTS_SELECTION_RELATIONS_INTERPOLATE); m_btnRelationsPointsRaw->setChecked (pointsSelectionRelations == EXPORT_POINTS_SELECTION_RELATIONS_RAW); ExportDelimiter delimiter = m_modelExportAfter->delimiter (); m_btnDelimitersCommas->setChecked (delimiter == EXPORT_DELIMITER_COMMA); m_btnDelimitersSpaces->setChecked (delimiter == EXPORT_DELIMITER_SPACE); m_btnDelimitersTabs->setChecked (delimiter == EXPORT_DELIMITER_TAB); ExportHeader header = m_modelExportAfter->header (); m_btnHeaderNone->setChecked (header == EXPORT_HEADER_NONE); m_btnHeaderSimple->setChecked (header == EXPORT_HEADER_SIMPLE); m_btnHeaderGnuplot->setChecked (header == EXPORT_HEADER_GNUPLOT); m_editXLabel->setText (m_modelExportAfter->xLabel()); m_editFunctionsPointsEvenlySpacing->setText (QString::number (m_modelExportAfter->pointsIntervalFunctions())); m_editRelationsPointsEvenlySpacing->setText (QString::number (m_modelExportAfter->pointsIntervalRelations())); ExportPointsIntervalUnits pointsIntervalUnitsFunctions = m_modelExportAfter->pointsIntervalUnitsRelations(); ExportPointsIntervalUnits pointsIntervalUnitsRelations = m_modelExportAfter->pointsIntervalUnitsRelations(); int indexFunctions = m_cmbRelationsPointsEvenlySpacingUnits->findData (QVariant (pointsIntervalUnitsFunctions)); int indexRelations = m_cmbRelationsPointsEvenlySpacingUnits->findData (QVariant (pointsIntervalUnitsRelations)); m_cmbFunctionsPointsEvenlySpacingUnits->setCurrentIndex (indexFunctions); m_cmbRelationsPointsEvenlySpacingUnits->setCurrentIndex (indexRelations); initializeIntervalConstraints (); updateControls(); updateIntervalConstraints(); enableOk (false); // Disable Ok button since there not yet any changes updatePreview(); }