1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
//##########################################################################
//# #
//# CLOUDCOMPARE #
//# #
//# This program is free software; you can redistribute it and/or modify #
//# it under the terms of the GNU General Public License as published by #
//# the Free Software Foundation; version 2 or later of the License. #
//# #
//# This program is distributed in the hope that it will be useful, #
//# but WITHOUT ANY WARRANTY; without even the implied warranty of #
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
//# GNU General Public License for more details. #
//# #
//# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
//# #
//##########################################################################
#ifndef CC_COLOR_SCALE_EDITOR_DLG_HEADER
#define CC_COLOR_SCALE_EDITOR_DLG_HEADER
#include <ui_colorScaleEditorDlg.h>
//local
#include "ccColorScaleEditorWidget.h"
//Qt
#include <QDialog>
class ccScalarField;
class ccColorScalesManager;
class ccMainAppInterface;
//! Dialog to edit/create color scales
class ccColorScaleEditorDialog : public QDialog, public Ui::ColorScaleEditorDlg
{
Q_OBJECT
public:
//! Default constructor
ccColorScaleEditorDialog( ccColorScalesManager* manager,
ccMainAppInterface* mainApp,
ccColorScale::Shared currentScale = ccColorScale::Shared(nullptr),
QWidget* parent = nullptr);
//! Destructor
~ccColorScaleEditorDialog() override = default;
//! Sets associated scalar field (optional)
void setAssociatedScalarField(ccScalarField* sf);
//! Sets active scale
void setActiveScale(ccColorScale::Shared currentScale);
//! Returns active scale
ccColorScale::Shared getActiveScale() { return m_colorScale; }
protected slots:
void colorScaleChanged(int);
void relativeModeChanged(int);
void onStepSelected(int);
void onStepModified(int);
void deletecSelectedStep();
void changeSelectedStepColor();
void changeSelectedStepValue(double);
void onCustomLabelsListChanged();
void toggleCustomLabelsList(bool);
void copyCurrentScale();
bool saveCurrentScale();
void deleteCurrentScale();
void renameCurrentScale();
void exportCurrentScale();
void importScale();
void createNewScale();
void onApply();
void onClose();
protected:
//! Updates main combox box with color scales manager
void updateMainComboBox();
//! Sets modification flag state
void setModified(bool state);
//! If the current scale has been modified, ask the user what to do
/** \return whether user allows the change or not
**/
bool canChangeCurrentScale();
//! Returns whether current edited scale is 'relative' (true) or 'absolute' (false)
/** Warning: may not be the same state as the current scale (m_colorScale)
If current modifications have not been saved yet!
**/
bool isRelativeMode() const;
//! Sets current mode for active scale between 'relative' (true) or 'absolute' (false)
/** Warning: may not be the same state as the current scale (m_colorScale)
If current modifications have not been saved yet!
**/
void setScaleModeToRelative(bool isRelative);
//! Checks the custom labels list
bool checkCustomLabelsList(bool showWarnings);
//! Exports the custom labels list
bool exportCustomLabelsList(ccColorScale::LabelSet& labels);
//! Color scale manager
ccColorScalesManager* m_manager;
//! Current active color scale
ccColorScale::Shared m_colorScale;
//! Color scale editor widget
ccColorScaleEditorWidget* m_scaleWidget;
//! Associated scalar field
ccScalarField* m_associatedSF;
//! Modification flag
bool m_modified;
//! Current min boundary for absolute scales
double m_minAbsoluteVal;
//! Current max boundary for absolute scales
double m_maxAbsoluteVal;
//! Associated application (interface)
ccMainAppInterface* m_mainApp;
};
#endif //CC_COLOR_SCALE_EDITOR_DLG_HEADER
|