Collapse all tools on first start (fixes #4776)
I had to remove the `isVisible` check in `MyExpander::set_expanded()` because it would trigger in Wavelet and Retinex for unknown reasons. One inner expander in CIECAM isn't covered by the tool states, and the way they are distributed to Wavelet and Retinex won't allow for further tool states in those tools. We should consider to move the tool states for sub-tools (like Wavelet, Retinex, and CIECAM) to seperate keys in the `options` file.
This commit is contained in:
@@ -826,12 +826,6 @@ void MyExpander::set_expanded( bool expanded )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isVisible = expBox->is_visible();
|
|
||||||
|
|
||||||
if (isVisible == expanded) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!useEnabled) {
|
if (!useEnabled) {
|
||||||
if (expanded ) {
|
if (expanded ) {
|
||||||
statusImage->set(openedImage->get_surface());
|
statusImage->set(openedImage->get_surface());
|
||||||
|
@@ -659,10 +659,16 @@ void Retinex::writeOptions (std::vector<int> &tpOpen)
|
|||||||
tpOpen.push_back (expsettings->get_expanded ());
|
tpOpen.push_back (expsettings->get_expanded ());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Retinex::updateToolState (std::vector<int> &tpOpen)
|
void Retinex::updateToolState(const std::vector<int>& tpOpen)
|
||||||
{
|
{
|
||||||
|
if (tpOpen.empty()) {
|
||||||
|
expsettings->set_expanded(false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (tpOpen.size() >= 10) {
|
if (tpOpen.size() >= 10) {
|
||||||
expsettings->set_expanded (tpOpen.at (9));
|
expsettings->set_expanded(tpOpen[9]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -104,32 +104,32 @@ protected:
|
|||||||
sigc::connection medianmapConn;
|
sigc::connection medianmapConn;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Retinex ();
|
Retinex();
|
||||||
~Retinex () override;
|
~Retinex() override;
|
||||||
|
|
||||||
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
||||||
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
|
void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
|
||||||
void setBatchMode (bool batchMode) override;
|
void setBatchMode(bool batchMode) override;
|
||||||
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
||||||
void trimValues (rtengine::procparams::ProcParams* pp) override;
|
void trimValues(rtengine::procparams::ProcParams* pp) override;
|
||||||
void adjusterChanged (Adjuster* a, double newval) override;
|
void adjusterChanged(Adjuster* a, double newval) override;
|
||||||
void autoOpenCurve () override;
|
void autoOpenCurve() override;
|
||||||
void medianmapChanged ();
|
void medianmapChanged();
|
||||||
void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override;
|
void minmaxChanged(double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override;
|
||||||
void updateLabel ();
|
void updateLabel();
|
||||||
void updateTrans ();
|
void updateTrans();
|
||||||
void neutral_pressed ();
|
void neutral_pressed();
|
||||||
|
|
||||||
void enabledChanged () override;
|
void enabledChanged() override;
|
||||||
void curveChanged (CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
void retinexMethodChanged();
|
void retinexMethodChanged();
|
||||||
void mapMethodChanged();
|
void mapMethodChanged();
|
||||||
void viewMethodChanged();
|
void viewMethodChanged();
|
||||||
void retinexColorSpaceChanged();
|
void retinexColorSpaceChanged();
|
||||||
void gammaretinexChanged();
|
void gammaretinexChanged();
|
||||||
void ColorSpaceUpdateUI();
|
void ColorSpaceUpdateUI();
|
||||||
void writeOptions (std::vector<int> &tpOpen);
|
void writeOptions(std::vector<int> &tpOpen);
|
||||||
void updateToolState (std::vector<int> &tpOpen);
|
void updateToolState(const std::vector<int>& tpOpen);
|
||||||
void setAdjusterBehavior (bool strAdd, bool neighAdd, bool limdAdd, bool offsAdd, bool vartAdd, bool gamAdd, bool slopeAdd);
|
void setAdjusterBehavior (bool strAdd, bool neighAdd, bool limdAdd, bool offsAdd, bool vartAdd, bool gamAdd, bool slopeAdd);
|
||||||
void updateCurveBackgroundHistogram(
|
void updateCurveBackgroundHistogram(
|
||||||
const LUTu& histToneCurve,
|
const LUTu& histToneCurve,
|
||||||
@@ -144,9 +144,8 @@ public:
|
|||||||
const LUTu& histLRETI
|
const LUTu& histLRETI
|
||||||
);
|
);
|
||||||
|
|
||||||
void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
|
void colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void foldAllButMe (GdkEventButton* event, MyExpander *expander);
|
void foldAllButMe(GdkEventButton* event, MyExpander *expander);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@@ -632,40 +632,52 @@ void ToolPanelCoordinator::closeImage ()
|
|||||||
|
|
||||||
void ToolPanelCoordinator::closeAllTools()
|
void ToolPanelCoordinator::closeAllTools()
|
||||||
{
|
{
|
||||||
|
for (size_t i = 0; i < options.tpOpen.size(); ++i) {
|
||||||
for (size_t i = 0; i < options.tpOpen.size(); i++)
|
|
||||||
if (i < expList.size()) {
|
if (i < expList.size()) {
|
||||||
expList.at (i)->set_expanded (false);
|
expList[i]->set_expanded(false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolPanelCoordinator::openAllTools()
|
void ToolPanelCoordinator::openAllTools()
|
||||||
{
|
{
|
||||||
|
for (size_t i = 0; i < options.tpOpen.size(); ++i) {
|
||||||
for (size_t i = 0; i < options.tpOpen.size(); i++)
|
|
||||||
if (i < expList.size()) {
|
if (i < expList.size()) {
|
||||||
expList.at (i)->set_expanded (true);
|
expList[i]->set_expanded(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolPanelCoordinator::updateToolState()
|
void ToolPanelCoordinator::updateToolState()
|
||||||
{
|
{
|
||||||
|
if (options.tpOpen.empty()) {
|
||||||
for (size_t i = 0; i < options.tpOpen.size(); i++)
|
for (auto expander : expList) {
|
||||||
if (i < expList.size()) {
|
expander->set_expanded(false);
|
||||||
expList.at (i)->set_expanded (options.tpOpen.at (i));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wavelet->updateToolState({});
|
||||||
|
retinex->updateToolState({});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t i = 0; i < options.tpOpen.size(); ++i) {
|
||||||
|
if (i < expList.size()) {
|
||||||
|
expList[i]->set_expanded(options.tpOpen[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (options.tpOpen.size() > expList.size()) {
|
if (options.tpOpen.size() > expList.size()) {
|
||||||
size_t sizeWavelet = options.tpOpen.size() - expList.size();
|
const size_t sizeWavelet = options.tpOpen.size() - expList.size();
|
||||||
|
|
||||||
std::vector<int> temp;
|
std::vector<int> temp;
|
||||||
|
|
||||||
for (size_t i = 0; i < sizeWavelet; i++) {
|
for (size_t i = 0; i < sizeWavelet; ++i) {
|
||||||
temp.push_back (options.tpOpen.at (i + expList.size()));
|
temp.push_back(options.tpOpen[i + expList.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
wavelet->updateToolState (temp);
|
wavelet->updateToolState(temp);
|
||||||
retinex->updateToolState (temp);
|
retinex->updateToolState(temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3030,18 +3030,32 @@ void Wavelet::writeOptions(std::vector<int> &tpOpen)
|
|||||||
tpOpen.push_back (expfinal->get_expanded ());
|
tpOpen.push_back (expfinal->get_expanded ());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Wavelet::updateToolState(std::vector<int> &tpOpen)
|
void Wavelet::updateToolState(const std::vector<int>& tpOpen)
|
||||||
{
|
{
|
||||||
if(tpOpen.size() >= 9) {
|
if (tpOpen.empty()) {
|
||||||
expsettings->set_expanded(tpOpen.at(0));
|
expsettings->set_expanded(false);
|
||||||
expcontrast->set_expanded(tpOpen.at(1));
|
expcontrast->set_expanded(false);
|
||||||
expchroma->set_expanded(tpOpen.at(2));
|
expchroma->set_expanded(false);
|
||||||
exptoning->set_expanded(tpOpen.at(3));
|
exptoning->set_expanded(false);
|
||||||
expnoise->set_expanded(tpOpen.at(4));
|
expnoise->set_expanded(false);
|
||||||
expedge->set_expanded(tpOpen.at(5));
|
expedge->set_expanded(false);
|
||||||
expgamut->set_expanded(tpOpen.at(6));
|
expgamut->set_expanded(false);
|
||||||
expresid->set_expanded(tpOpen.at(7));
|
expresid->set_expanded(false);
|
||||||
expfinal->set_expanded(tpOpen.at(8));
|
expfinal->set_expanded(false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tpOpen.size() >= 9) {
|
||||||
|
expsettings->set_expanded(tpOpen[0]);
|
||||||
|
expcontrast->set_expanded(tpOpen[1]);
|
||||||
|
expchroma->set_expanded(tpOpen[2]);
|
||||||
|
exptoning->set_expanded(tpOpen[3]);
|
||||||
|
expnoise->set_expanded(tpOpen[4]);
|
||||||
|
expedge->set_expanded(tpOpen[5]);
|
||||||
|
expgamut->set_expanded(tpOpen[6]);
|
||||||
|
expresid->set_expanded(tpOpen[7]);
|
||||||
|
expfinal->set_expanded(tpOpen[8]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
105
rtgui/wavelet.h
105
rtgui/wavelet.h
@@ -20,12 +20,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <gtkmm.h>
|
#include <gtkmm.h>
|
||||||
|
|
||||||
#include "adjuster.h"
|
#include "adjuster.h"
|
||||||
#include "toolpanel.h"
|
|
||||||
#include "curvelistener.h"
|
|
||||||
#include "thresholdadjuster.h"
|
|
||||||
#include "colorprovider.h"
|
#include "colorprovider.h"
|
||||||
|
#include "curvelistener.h"
|
||||||
#include "guiutils.h"
|
#include "guiutils.h"
|
||||||
|
#include "thresholdadjuster.h"
|
||||||
|
#include "toolpanel.h"
|
||||||
|
|
||||||
class CurveEditor;
|
class CurveEditor;
|
||||||
class CurveEditorGroup;
|
class CurveEditorGroup;
|
||||||
@@ -43,21 +44,21 @@ class Wavelet final :
|
|||||||
public FoldableToolPanel
|
public FoldableToolPanel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Wavelet ();
|
Wavelet();
|
||||||
~Wavelet () override;
|
~Wavelet() override;
|
||||||
|
|
||||||
bool wavComputed_ ();
|
bool wavComputed_();
|
||||||
void adjusterChanged(Adjuster* a, double newval) override;
|
void adjusterChanged(Adjuster* a, double newval) override;
|
||||||
void autoOpenCurve () override;
|
void autoOpenCurve() override;
|
||||||
void curveChanged (CurveEditor* ce) override;
|
void curveChanged(CurveEditor* ce) override;
|
||||||
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
|
||||||
void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add);
|
void setAdjusterBehavior(bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add);
|
||||||
void setBatchMode (bool batchMode) override;
|
void setBatchMode(bool batchMode) override;
|
||||||
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
|
||||||
void setEditProvider (EditDataProvider *provider) override;
|
void setEditProvider(EditDataProvider *provider) override;
|
||||||
void updateToolState (std::vector<int> &tpOpen);
|
void updateToolState(const std::vector<int>& tpOpen);
|
||||||
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
|
void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
|
||||||
void writeOptions (std::vector<int> &tpOpen);
|
void writeOptions(std::vector<int> &tpOpen);
|
||||||
|
|
||||||
void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
|
void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
|
||||||
void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
|
void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
|
||||||
@@ -66,38 +67,38 @@ public:
|
|||||||
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
|
void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void foldAllButMe (GdkEventButton* event, MyExpander *expander);
|
void foldAllButMe(GdkEventButton* event, MyExpander *expander);
|
||||||
|
|
||||||
void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
|
void colorForValue(double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
|
||||||
void BAmethodChanged ();
|
void BAmethodChanged();
|
||||||
void NPmethodChanged ();
|
void NPmethodChanged();
|
||||||
void BackmethodChanged ();
|
void BackmethodChanged();
|
||||||
void CHSLmethodChanged ();
|
void CHSLmethodChanged();
|
||||||
void CHmethodChanged ();
|
void CHmethodChanged();
|
||||||
void CLmethodChanged ();
|
void CLmethodChanged();
|
||||||
void DirmethodChanged ();
|
void DirmethodChanged();
|
||||||
void EDmethodChanged ();
|
void EDmethodChanged();
|
||||||
void HSmethodChanged ();
|
void HSmethodChanged();
|
||||||
void LmethodChanged ();
|
void LmethodChanged();
|
||||||
void MedgreinfChanged ();
|
void MedgreinfChanged();
|
||||||
void TMmethodChanged ();
|
void TMmethodChanged();
|
||||||
void TilesmethodChanged ();
|
void TilesmethodChanged();
|
||||||
void avoidToggled ();
|
void avoidToggled();
|
||||||
void cbenabToggled ();
|
void cbenabToggled();
|
||||||
void contrastMinusPressed ();
|
void contrastMinusPressed();
|
||||||
void contrastPlusPressed ();
|
void contrastPlusPressed();
|
||||||
void daubcoeffmethodChanged ();
|
void daubcoeffmethodChanged();
|
||||||
void enabledChanged () override;
|
void enabledChanged() override;
|
||||||
void linkedgToggled ();
|
void linkedgToggled();
|
||||||
void lipstToggled ();
|
void lipstToggled();
|
||||||
void medianToggled ();
|
void medianToggled();
|
||||||
void medianlevToggled ();
|
void medianlevToggled();
|
||||||
void neutralPressed ();
|
void neutralPressed();
|
||||||
void neutral_pressed ();
|
void neutral_pressed();
|
||||||
void neutralchPressed ();
|
void neutralchPressed();
|
||||||
void tmrToggled ();
|
void tmrToggled();
|
||||||
void updatewavLabel ();
|
void updatewavLabel ();
|
||||||
void wavChanged (double nlevel) override;
|
void wavChanged(double nlevel) override;
|
||||||
|
|
||||||
void HSmethodUpdateUI();
|
void HSmethodUpdateUI();
|
||||||
void CHmethodUpdateUI();
|
void CHmethodUpdateUI();
|
||||||
@@ -113,13 +114,13 @@ private:
|
|||||||
// void MedgreinfUpdateUI();
|
// void MedgreinfUpdateUI();
|
||||||
// void DirmethodUpdateUI();
|
// void DirmethodUpdateUI();
|
||||||
// void LmethodUpdateUI();
|
// void LmethodUpdateUI();
|
||||||
void adjusterUpdateUI (Adjuster* a);
|
void adjusterUpdateUI(Adjuster* a);
|
||||||
void enabledUpdateUI ();
|
void enabledUpdateUI();
|
||||||
void medianlevUpdateUI ();
|
void medianlevUpdateUI();
|
||||||
void cbenabUpdateUI ();
|
void cbenabUpdateUI();
|
||||||
void lipstUpdateUI ();
|
void lipstUpdateUI();
|
||||||
|
|
||||||
void enableToggled(MyExpander *expander);
|
void enableToggled(MyExpander* expander);
|
||||||
|
|
||||||
CurveEditorGroup* const curveEditorG;
|
CurveEditorGroup* const curveEditorG;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user