/**************************************************************************** Copyright (C) 2010-2012 the Office National des Forêts (ONF), France All rights reserved. Contact : alexandre.piboule@onf.fr Developers : Alexandre PIBOULE (ONF) This file is part of PluginONF library. PluginONF is free library: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. PluginONF 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 Lesser General Public License along with PluginONF. If not, see . *****************************************************************************/ #include "onf_stepmodifypositions2d.h" //Inclusion of actions #include "actions/onf_actionmodifypositions2d.h" #include ONF_StepModifyPositions2D::ONF_StepModifyPositions2D() : SuperClass() { m_doc = nullptr; setManual(true); } QString ONF_StepModifyPositions2D::description() const { return tr("Modifier des positions 2D"); } QString ONF_StepModifyPositions2D::detailledDescription() const { return tr(""); } QString ONF_StepModifyPositions2D::inputDescription() const { return SuperClass::inputDescription() + tr("

"); } QString ONF_StepModifyPositions2D::outputDescription() const { return SuperClass::outputDescription() + tr("

"); } QString ONF_StepModifyPositions2D::detailsDescription() const { return tr(""); } CT_VirtualAbstractStep* ONF_StepModifyPositions2D::createNewInstance() const { return new ONF_StepModifyPositions2D(); } //////////////////// PROTECTED METHODS ////////////////// void ONF_StepModifyPositions2D::declareInputModels(CT_StepInModelStructureManager& manager) { manager.addResult(_inRes, tr("Positions 2D")); manager.setZeroOrMoreRootGroup(_inRes, _inZeroOrMoreRootGroup); manager.addGroup(_inZeroOrMoreRootGroup, _inGrp); manager.addItem(_inGrp, _inPos, tr("Position 2D")); } void ONF_StepModifyPositions2D::declareOutputModels(CT_StepOutModelStructureManager& manager) { manager.addResult(_outRes, tr("Positions 2D")); manager.setRootGroup(_outRes, _outGroup, tr("Groupe")); manager.addItem(_outGroup, _outPos, tr("Position 2D")); } void ONF_StepModifyPositions2D::fillPostInputConfigurationDialog(CT_StepConfigurableDialog* postInputConfigDialog) { Q_UNUSED(postInputConfigDialog) } void ONF_StepModifyPositions2D::compute() { m_doc = nullptr; m_status = 0; for(CT_ResultGroup* result : _outRes.iterateOutputs()) { for(const CT_Point2D* item_InPos : _inPos.iterateInputs(_inRes)) { _positions.append(static_cast(item_InPos->copy(_outPos.firstModel(), result))); } } // request the manual mode requestManualMode(); for(CT_ResultGroup* result : _outRes.iterateOutputs()) { for (int i = 0 ; i < _positions.size() ; i++) { CT_StandardItemGroup* grp_grp = new CT_StandardItemGroup(); result->addRootGroup(_outGroup, grp_grp); grp_grp->addSingularItem(_outPos, _positions.at(i)); } } m_status = 1; requestManualMode(); } void ONF_StepModifyPositions2D::initManualMode() { // create a new 3D document if(m_doc == nullptr) m_doc = guiContext()->documentManager()->new3DDocument(); // change camera type to orthographic if(m_doc != nullptr && !m_doc->views().isEmpty()) dynamic_cast(m_doc->views().at(0))->camera()->setType(CameraInterface::ORTHOGRAPHIC); m_doc->removeAllItemDrawable(); m_doc->setCurrentAction(new ONF_ActionModifyPositions2D(_positions)); QMessageBox::information(nullptr, tr("Mode manuel"), tr("Bienvenue dans le mode manuel de cette étape"), QMessageBox::Ok); } void ONF_StepModifyPositions2D::useManualMode(bool quit) { if(m_status == 0) { if(quit) { } } else if(m_status == 1) { if(!quit) { m_doc = nullptr; quitManualMode(); } } }