/**************************************************************************** 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_actionadjustplotpositionoptions02.h" #include "ui_onf_actionadjustplotpositionoptions02.h" #include "actions/onf_actionadjustplotposition02.h" #include ONF_ActionAdjustPlotPositionOptions02::ONF_ActionAdjustPlotPositionOptions02(const ONF_ActionAdjustPlotPosition02 *action) : CT_GAbstractActionForGraphicsViewOptions(action), ui(new Ui::ONF_ActionAdjustPlotPositionOptions02()) { ui->setupUi(this); ui->widget_mode2d->setVisible(true); ui->widget_mode3d->setVisible(false); ui->pb_up->setToolTip(tr("Déplacer la placette vers le Nord")); ui->pb_down->setToolTip(tr("Déplacer la placette vers le Sud")); ui->pb_left->setToolTip(tr("Déplacer la placette vers l'Ouest")); ui->pb_right->setToolTip(tr("Déplacer la placette vers l'Est")); ui->dsb_increment->setToolTip(tr("Distance de déplacement unitaire (m)")); ui->pb_translate->setToolTip(tr("Déplacer la placette de façon à ce que l'arbre sélectionné corresponde à l'apex sélectionné")); ui->dsb_dx->setToolTip(tr("Décalage selon l'axe X (positif = vers l'Est")); ui->dsb_dy->setToolTip(tr("Décalage selon l'axe Y (positif = vers le Nord")); ui->pb_reset->setToolTip(tr("Réinitialiser la position de la placette")); ui->sb_highlightedNumber->setToolTip(tr("Nombre d'arbre à mettre en évidence (n plus gros)")); ui->dsb_dbhMin->setToolTip(tr("N'afficher que les arbres dont le diamètres est supérieur à :")); ui->pb_treeColor->setToolTip(tr("Couleur des arbres")); ui->pb_highlightedTreeColor->setToolTip(tr("Couleur des n arbres les plus gros, mis en évidence")); ui->pb_selectedTreeColor->setToolTip(tr("Couleur de l'arbre sélectionné")); ui->cb_treeMode->setToolTip(tr("Déplacer les arbres individuellement (sans bouger la placette)")); ui->cb_apex->setToolTip(tr("Afficher les apex")); ui->dsb_apexSize->setToolTip(tr("Taille de représentation des apex")); ui->pb_apexColor->setToolTip(tr("Couleur des apex")); ui->pb_selectedApexColor->setToolTip(tr("Couleur de l'apex sélectionné")); ui->cb_plot->setToolTip(tr("Afficher les limites de la placette")); ui->pb_2d3d->setToolTip(tr("Changement de mode 2D/3D")); ui->hs_min->setToolTip(tr("Hauteur/Intensité minimale des points à afficher")); ui->hs_max->setToolTip(tr("Hauteur/Intensité maximale des points à afficher")); ui->cb_hidePoints->setToolTip(tr("Afficher les points hors de la gamme de hauteur (sinon couleurs extrêmes du gradient)")); ui->cb_intensity->setToolTip(tr("Coloriser en fonction de l'intensité")); ui->cb_Z->setToolTip(tr("Coloriser en fonction de la hauteur")); ui->cb_last->setToolTip(tr("N'afficher que les points last (derniers retours)")); ui->cb_circles->setToolTip(tr("Afficher une série de cercles à la place des cylindres")); ui->cb_fixedH->setToolTip(tr("Forcer une hauteur fixe pour les cylindres")); ui->dsb_height->setToolTip(tr("Hauteur forcée des cylindres")); ui->dsb_radiusFactor->setToolTip(tr("Multiplicateur à appliquer aux diamètres des arbres pour l'affichage")); ui->hs_hmax->setToolTip(tr("Hauteur maximale des points à afficher")); ui->pb_autoFit->setToolTip(tr("Ajustement automatique (2 paramètres : distance maximale de déplacement et rayon de recherche des apex")); ui->cb_spcolors->setToolTip(tr("Colorisation par espèces")); ui->cb_invertGradient->setToolTip(tr("Inversion du gradient")); ui->hs_fade->setToolTip(tr("Transparence du MSN")); ui->dsb_autoFitMaxError->setToolTip(tr("Distance maximale de déplacement de la placette")); ui->dsb_autoFitRadius->setToolTip(tr("Rayon de recherche des apex")); } ONF_ActionAdjustPlotPositionOptions02::~ONF_ActionAdjustPlotPositionOptions02() { delete ui; } void ONF_ActionAdjustPlotPositionOptions02::setTranslation(double dx, double dy) { ui->dsb_dx->setValue(dx); ui->dsb_dy->setValue(dy); } void ONF_ActionAdjustPlotPositionOptions02::setPlotID(QString id) { ui->le_id->setText(id); } bool ONF_ActionAdjustPlotPositionOptions02::isFixedHeight() const { return ui->cb_fixedH->isChecked(); } double ONF_ActionAdjustPlotPositionOptions02::fixedHeight() const { return ui->dsb_height->value(); } double ONF_ActionAdjustPlotPositionOptions02::translationIncrement() const { return ui->dsb_increment->value(); } bool ONF_ActionAdjustPlotPositionOptions02::hidePointsOutsideLimits() const { return ui->cb_hidePoints->isChecked(); } bool ONF_ActionAdjustPlotPositionOptions02::isTreeModeSelected() const { return ui->cb_treeMode->isChecked(); } double ONF_ActionAdjustPlotPositionOptions02::hMaxValue() const { return ui->hs_hmax->value(); } int ONF_ActionAdjustPlotPositionOptions02::hsMinValue() const { return ui->hs_min->value(); } int ONF_ActionAdjustPlotPositionOptions02::hsMaxValue() const { return ui->hs_max->value(); } bool ONF_ActionAdjustPlotPositionOptions02::lastOnly() const { return ui->cb_last->isChecked(); } double ONF_ActionAdjustPlotPositionOptions02::dbhMin() const { return ui->dsb_dbhMin->value(); } bool ONF_ActionAdjustPlotPositionOptions02::colorBySpecies() const { return ui->cb_spcolors->isChecked(); } double ONF_ActionAdjustPlotPositionOptions02::translationStep() const { return ui->dsb_increment->value(); } int ONF_ActionAdjustPlotPositionOptions02::getShadeValue() const { return ui->hs_fade->value(); } bool ONF_ActionAdjustPlotPositionOptions02::isInverted() const { return ui->cb_invertGradient->isChecked(); } double ONF_ActionAdjustPlotPositionOptions02::autoFitMaxError() const { return ui->dsb_autoFitMaxError->value(); } double ONF_ActionAdjustPlotPositionOptions02::autoFitRadius() const { return ui->dsb_autoFitRadius->value(); } QColor ONF_ActionAdjustPlotPositionOptions02::colorTree() const { return _colorTree; } QColor ONF_ActionAdjustPlotPositionOptions02::colorHighlightedTree() const { return _colorHighlightedTree; } QColor ONF_ActionAdjustPlotPositionOptions02::colorSelectedTree() const { return _colorSelectedTree; } QColor ONF_ActionAdjustPlotPositionOptions02::colorApex() const { return _colorApex; } QColor ONF_ActionAdjustPlotPositionOptions02::colorSelectedApex() const { return _colorSelectedApex; } void ONF_ActionAdjustPlotPositionOptions02::setColors(QColor colorTree, QColor colorHighlightedTree, QColor colorSelectedTree, QColor colorApex, QColor colorSelectedApex) { _colorTree = colorTree; _colorHighlightedTree = colorHighlightedTree; _colorSelectedTree = colorSelectedTree; _colorApex = colorApex; _colorSelectedApex = colorSelectedApex; ui->pb_treeColor->setStyleSheet("QPushButton { background-color: " + _colorTree.name() + "; }"); ui->pb_highlightedTreeColor->setStyleSheet("QPushButton { background-color: " + _colorHighlightedTree.name() + "; }"); ui->pb_selectedTreeColor->setStyleSheet("QPushButton { background-color: " + _colorSelectedTree.name() + "; }"); ui->pb_apexColor->setStyleSheet("QPushButton { background-color: " + _colorApex.name() + "; }"); ui->pb_selectedApexColor->setStyleSheet("QPushButton { background-color: " + _colorSelectedApex.name() + "; }"); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_up_clicked() { emit parametersChanged(0, ui->dsb_increment->value(), ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_down_clicked() { emit parametersChanged(0, -1.0*ui->dsb_increment->value(), ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_left_clicked() { emit parametersChanged(-1.0*ui->dsb_increment->value(), 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_right_clicked() { emit parametersChanged(ui->dsb_increment->value(), 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_circles_toggled(bool checked) { Q_UNUSED(checked); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_fixedH_toggled(bool checked) { Q_UNUSED(checked); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_dsb_height_valueChanged(double arg1) { Q_UNUSED(arg1); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_intensity_toggled(bool checked) { Q_UNUSED(checked); emit colorizationChanged(ui->cb_intensity->isChecked(), ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_hs_min_valueChanged(int value) { Q_UNUSED(value); emit colorizationChanged(ui->cb_intensity->isChecked(), ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_hs_max_valueChanged(int value) { Q_UNUSED(value); emit colorizationChanged(ui->cb_intensity->isChecked(), ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_translate_clicked() { emit askForTranslation(false); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_reset_clicked() { emit askForTranslation(true); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_grey_clicked() { emit setGradient(ui->cb_intensity->isChecked(), "grey", ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_hot_clicked() { emit setGradient(ui->cb_intensity->isChecked(), "hot", ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_rainbow_clicked() { emit setGradient(ui->cb_intensity->isChecked(), "rainbow", ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_hsv_clicked() { emit setGradient(ui->cb_intensity->isChecked(), "hsv", ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_rycb_clicked() { emit setGradient(ui->cb_intensity->isChecked(), "rycb", ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_sb_highlightedNumber_valueChanged(int arg1) { Q_UNUSED(arg1); changeHighlightedNumber(ui->sb_highlightedNumber->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_hidePoints_toggled(bool checked) { Q_UNUSED(checked); emit colorizationChanged(ui->cb_intensity->isChecked(), ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_treeMode_toggled(bool checked) { Q_UNUSED(checked); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_hs_hmax_valueChanged(int value) { Q_UNUSED(value); emit colorizationChanged(ui->cb_intensity->isChecked(), ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_last_toggled(bool checked) { Q_UNUSED(checked); emit colorizationChanged(ui->cb_intensity->isChecked(), ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_2d3d_toggled(bool checked) { if (checked) { ui->widget_mode3d->setVisible(true); ui->widget_mode2d->setVisible(false); } else { ui->widget_mode3d->setVisible(false); ui->widget_mode2d->setVisible(true); } emit selectionModeChanged(true); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_dsb_radiusFactor_valueChanged(double arg1) { Q_UNUSED(arg1); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_apex_toggled(bool checked) { Q_UNUSED(checked); emit selectionModeChanged(false); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_dsb_apexSize_valueChanged(double arg1) { Q_UNUSED(arg1); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_plot_toggled(bool checked) { Q_UNUSED(checked); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_sb_quality_valueChanged(int arg1) { Q_UNUSED(arg1); emit qualityChanged(ui->sb_quality->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_le_comments_textChanged(const QString &arg1) { Q_UNUSED(arg1); emit commentChanged(ui->le_comments->text()); } void ONF_ActionAdjustPlotPositionOptions02::on_dsb_dbhMin_valueChanged(double arg1) { Q_UNUSED(arg1); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_treeColor_clicked() { QColor tmp = QColorDialog::getColor(_colorTree); if (!tmp.isValid()) {return;} _colorTree = tmp; ui->pb_treeColor->setStyleSheet("QPushButton { background-color: " + _colorTree.name() + "; }"); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_highlightedTreeColor_clicked() { QColor tmp = QColorDialog::getColor(_colorHighlightedTree); if (!tmp.isValid()) {return;} _colorHighlightedTree = tmp; ui->pb_highlightedTreeColor->setStyleSheet("QPushButton { background-color: " + _colorHighlightedTree.name() + "; }"); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_apexColor_clicked() { QColor tmp = QColorDialog::getColor(_colorApex); if (!tmp.isValid()) {return;} _colorApex = tmp; ui->pb_apexColor->setStyleSheet("QPushButton { background-color: " + _colorApex.name() + "; }"); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_selectedTreeColor_clicked() { QColor tmp = QColorDialog::getColor(_colorSelectedTree); if (!tmp.isValid()) {return;} _colorSelectedTree = tmp; ui->pb_selectedTreeColor->setStyleSheet("QPushButton { background-color: " + _colorSelectedTree.name() + "; }"); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_selectedApexColor_clicked() { QColor tmp = QColorDialog::getColor(_colorSelectedApex); if (!tmp.isValid()) {return;} _colorSelectedApex = tmp; ui->pb_selectedApexColor->setStyleSheet("QPushButton { background-color: " + _colorSelectedApex.name() + "; }"); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_spcolors_toggled(bool checked) { Q_UNUSED(checked); emit parametersChanged(0, 0, ui->cb_circles->isChecked(), ui->cb_fixedH->isChecked(), ui->dsb_height->value(), ui->cb_treeMode->isChecked(), ui->pb_2d3d->isChecked(), ui->dsb_radiusFactor->value(), ui->cb_apex->isChecked(), ui->dsb_apexSize->value(), ui->cb_plot->isChecked()); } void ONF_ActionAdjustPlotPositionOptions02::on_pb_autoFit_clicked() { emit computeAutoFit(); } void ONF_ActionAdjustPlotPositionOptions02::on_cb_invertGradient_toggled(bool checked) { Q_UNUSED(checked); emit setGradient(ui->cb_intensity->isChecked(), "", ui->hs_min->value(), ui->hs_max->value()); } void ONF_ActionAdjustPlotPositionOptions02::on_hs_fade_valueChanged(int value) { Q_UNUSED(value); emit setGradient(ui->cb_intensity->isChecked(), "", ui->hs_min->value(), ui->hs_max->value()); }