From d604abec39dde950ceadbd61bebb9a01bf67f8ac Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 14:36:16 +0100 Subject: [PATCH 1/5] Custom tool panel, first step --- rtdata/languages/default | 2 + rtgui/options.cc | 7 +++ rtgui/options.h | 1 + rtgui/toolpanel.h | 3 + rtgui/toolpanelcoord.cc | 116 +++++++++++++++++++++++---------------- rtgui/toolpanelcoord.h | 9 ++- 6 files changed, 90 insertions(+), 48 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index d3e40cb19..5e0a5e0cb 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -900,6 +900,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c +MAIN_TAB_CUSTOM;Custom +MAIN_TAB_CUSTOM_TOOLTIP;Shortcut: none MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit diff --git a/rtgui/options.cc b/rtgui/options.cc index c1494a085..a388ccb3e 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,6 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); + userTools.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -1069,6 +1070,10 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { + if (keyFile.has_key("GUI", "UserTools")) { + userTools = keyFile.get_string_list("GUI", "UserTools"); + } + if (keyFile.has_key("GUI", "WindowWidth")) { windowWidth = keyFile.get_integer("GUI", "WindowWidth"); } @@ -1967,6 +1972,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); + Glib::ArrayHandle pusert = userTools; + keyFile.set_string_list("GUI", "UserTools", pusert); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index 47ced982d..a97c1f165 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -375,6 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; + std::vector userTools; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 39abd03fa..fbe87f5f0 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -131,6 +131,9 @@ public: this->batchMode = batchMode; } + virtual Glib::ustring getToolName () { + return toolName; + } }; class FoldableToolPanel : public ToolPanel diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index bf155b1d6..3ea638569 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -31,6 +31,7 @@ using namespace rtengine::procparams; ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) { + userPanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -100,66 +101,70 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO + userTools.resize(options.userTools.size()); - addPanel (colorPanel, whitebalance); - addPanel (exposurePanel, toneCurve); - addPanel (colorPanel, vibrance); - addPanel (colorPanel, chmixer); - addPanel (colorPanel, blackwhite); - addPanel (exposurePanel, shadowshighlights); - addPanel (detailsPanel, sharpening); - addPanel (detailsPanel, localContrast); - addPanel (detailsPanel, sharpenEdge); - addPanel (detailsPanel, sharpenMicro); - addPanel (colorPanel, hsvequalizer); - addPanel (colorPanel, filmSimulation); - addPanel (colorPanel, softlight); - addPanel (colorPanel, rgbcurves); - addPanel (colorPanel, colortoning); - addPanel (exposurePanel, epd); - addPanel (exposurePanel, fattal); - addPanel (advancedPanel, retinex); - addPanel (exposurePanel, pcvignette); - addPanel (exposurePanel, gradient); - addPanel (exposurePanel, lcurve); - addPanel (advancedPanel, colorappearance); - addPanel (detailsPanel, impulsedenoise); - addPanel (detailsPanel, dirpyrdenoise); - addPanel (detailsPanel, defringe); - addPanel (detailsPanel, dirpyrequalizer); - addPanel (detailsPanel, dehaze); - addPanel (advancedPanel, wavelet); - addPanel (transformPanel, crop); - addPanel (transformPanel, resize); + addUserPanel (colorPanel, whitebalance); + addUserPanel (exposurePanel, toneCurve); + addUserPanel (colorPanel, vibrance); + addUserPanel (colorPanel, chmixer); + addUserPanel (colorPanel, blackwhite); + addUserPanel (exposurePanel, shadowshighlights); + addUserPanel (detailsPanel, sharpening); + addUserPanel (detailsPanel, localContrast); + addUserPanel (detailsPanel, sharpenEdge); + addUserPanel (detailsPanel, sharpenMicro); + addUserPanel (colorPanel, hsvequalizer); + addUserPanel (colorPanel, filmSimulation); + addUserPanel (colorPanel, softlight); + addUserPanel (colorPanel, rgbcurves); + addUserPanel (colorPanel, colortoning); + addUserPanel (exposurePanel, epd); + addUserPanel (exposurePanel, fattal); + addUserPanel (advancedPanel, retinex); + addUserPanel (exposurePanel, pcvignette); + addUserPanel (exposurePanel, gradient); + addUserPanel (exposurePanel, lcurve); + addUserPanel (advancedPanel, colorappearance); + addUserPanel (detailsPanel, impulsedenoise); + addUserPanel (detailsPanel, dirpyrdenoise); + addUserPanel (detailsPanel, defringe); + addUserPanel (detailsPanel, dirpyrequalizer); + addUserPanel (detailsPanel, dehaze); + addUserPanel (advancedPanel, wavelet); + addUserPanel (transformPanel, crop); + addUserPanel (transformPanel, resize); addPanel (resize->getPackBox(), prsharpening, 2); - addPanel (transformPanel, lensgeom); + addUserPanel (transformPanel, lensgeom); addPanel (lensgeom->getPackBox(), rotate, 2); addPanel (lensgeom->getPackBox(), perspective, 2); addPanel (lensgeom->getPackBox(), lensProf, 2); addPanel (lensgeom->getPackBox(), distortion, 2); addPanel (lensgeom->getPackBox(), cacorrection, 2); addPanel (lensgeom->getPackBox(), vignetting, 2); - addPanel (colorPanel, icm); - addPanel (rawPanel, sensorbayer); + addUserPanel (colorPanel, icm); + addUserPanel (rawPanel, sensorbayer); addPanel (sensorbayer->getPackBox(), bayerprocess, 2); addPanel (sensorbayer->getPackBox(), bayerrawexposure, 2); addPanel (sensorbayer->getPackBox(), bayerpreprocess, 2); addPanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addPanel (rawPanel, sensorxtrans); + addUserPanel (rawPanel, sensorxtrans); addPanel (sensorxtrans->getPackBox(), xtransprocess, 2); addPanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addPanel (rawPanel, rawexposure); - addPanel (rawPanel, preprocess); - addPanel (rawPanel, darkframe); - addPanel (rawPanel, flatfield); + addUserPanel (rawPanel, rawexposure); + addUserPanel (rawPanel, preprocess); + addUserPanel (rawPanel, darkframe); + addUserPanel (rawPanel, flatfield); + for(auto it = userTools.begin(); it != userTools.end(); ++it) { + addPanel(userPanel, *it); + } toolPanels.push_back (coarse); toolPanels.push_back(metadata); toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - + userPanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); @@ -169,7 +174,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan updateVScrollbars (options.hideTPVScrollbar); // load panel endings - for (int i = 0; i < 6; i++) { + for (int i = 0; i < 7; i++) { vbPanelEnd[i] = Gtk::manage (new Gtk::VBox ()); imgPanelEnd[i] = Gtk::manage (new RTImage ("ornament1.png")); imgPanelEnd[i]->show (); @@ -177,30 +182,35 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } + userPanelSW->add (*userPanel); + userPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + userPanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - exposurePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + exposurePanel->pack_start (*vbPanelEnd[1], Gtk::PACK_SHRINK, 4); detailsPanelSW->add (*detailsPanel); detailsPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - detailsPanel->pack_start (*vbPanelEnd[1], Gtk::PACK_SHRINK, 4); + detailsPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); colorPanelSW->add (*colorPanel); colorPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - colorPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); + colorPanel->pack_start (*vbPanelEnd[3], Gtk::PACK_SHRINK, 4); advancedPanelSW->add (*advancedPanel); advancedPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - advancedPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + advancedPanel->pack_start (*vbPanelEnd[6], Gtk::PACK_SHRINK, 0); transformPanelSW->add (*transformPanel); transformPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - transformPanel->pack_start (*vbPanelEnd[3], Gtk::PACK_SHRINK, 4); + transformPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 4); rawPanelSW->add (*rawPanel); rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - rawPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 0); + rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + toiU = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_CUSTOM"), M ("MAIN_TAB_CUSTOM_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -209,6 +219,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); + toolPanelNotebook->append_page (*userPanelSW, *toiU); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -251,6 +262,18 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } +void ToolPanelCoordinator::addUserPanel (Gtk::Box* where, FoldableToolPanel* panel) +{ + auto name = panel->getToolName(); + auto it = std::find(options.userTools.begin(), options.userTools.end(), name); + if (it != options.userTools.end()) { + int index = std::distance(options.userTools.begin(), it); + userTools[index] = panel; + } else { + addPanel(where, panel); + } +} + ToolPanelCoordinator::~ToolPanelCoordinator () { idle_register.destroy(); @@ -893,6 +916,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; + userPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 437e4055a..76a3cdd1c 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -158,6 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; + std::vector userTools; + ToolVBox* userPanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -166,6 +168,7 @@ protected: ToolVBox* advancedPanel; ToolBar* toolBar; + TextOrIcon* toiU; TextOrIcon* toiE; TextOrIcon* toiD; TextOrIcon* toiC; @@ -174,9 +177,10 @@ protected: TextOrIcon* toiM; TextOrIcon* toiW; - Gtk::Image* imgPanelEnd[6]; - Gtk::VBox* vbPanelEnd[6]; + Gtk::Image* imgPanelEnd[7]; + Gtk::VBox* vbPanelEnd[7]; + Gtk::ScrolledWindow* userPanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -191,6 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); + void addUserPanel (Gtk::Box* where, FoldableToolPanel* panel); private: EditDataProvider *editDataProvider; From 0ae602bcf0a0663dd3c7e8b7c0c88041e31339b9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 16:00:57 +0100 Subject: [PATCH 2/5] custom tool panel. Changed naming to 'Favourites'. Added alt-h hotkey. Allow moving of subtools to Favourites --- rtdata/languages/default | 4 +- rtgui/options.cc | 10 +-- rtgui/options.h | 2 +- rtgui/toolpanelcoord.cc | 140 ++++++++++++++++++++------------------- rtgui/toolpanelcoord.h | 10 +-- 5 files changed, 85 insertions(+), 81 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 5e0a5e0cb..e38e7eb81 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -900,8 +900,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c -MAIN_TAB_CUSTOM;Custom -MAIN_TAB_CUSTOM_TOOLTIP;Shortcut: none +MAIN_TAB_FAVOURITES;Favourites +MAIN_TAB_FAVOURITES_TOOLTIP;Shortcut: Alt-u MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit diff --git a/rtgui/options.cc b/rtgui/options.cc index a388ccb3e..9681978ca 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,7 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); - userTools.clear(); + favourites.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -1070,8 +1070,8 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { - if (keyFile.has_key("GUI", "UserTools")) { - userTools = keyFile.get_string_list("GUI", "UserTools"); + if (keyFile.has_key("GUI", "Favourites")) { + favourites = keyFile.get_string_list("GUI", "Favourites"); } if (keyFile.has_key("GUI", "WindowWidth")) { @@ -1972,8 +1972,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); - Glib::ArrayHandle pusert = userTools; - keyFile.set_string_list("GUI", "UserTools", pusert); + Glib::ArrayHandle ahfavourites = favourites; + keyFile.set_string_list("GUI", "Favourites", ahfavourites); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index a97c1f165..ea29e047e 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -375,7 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; - std::vector userTools; + std::vector favourites; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 3ea638569..84244d7c8 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -31,7 +31,7 @@ using namespace rtengine::procparams; ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) { - userPanel = Gtk::manage (new ToolVBox ()); + favouritePanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -101,62 +101,62 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO - userTools.resize(options.userTools.size()); + favourites.resize(options.favourites.size()); - addUserPanel (colorPanel, whitebalance); - addUserPanel (exposurePanel, toneCurve); - addUserPanel (colorPanel, vibrance); - addUserPanel (colorPanel, chmixer); - addUserPanel (colorPanel, blackwhite); - addUserPanel (exposurePanel, shadowshighlights); - addUserPanel (detailsPanel, sharpening); - addUserPanel (detailsPanel, localContrast); - addUserPanel (detailsPanel, sharpenEdge); - addUserPanel (detailsPanel, sharpenMicro); - addUserPanel (colorPanel, hsvequalizer); - addUserPanel (colorPanel, filmSimulation); - addUserPanel (colorPanel, softlight); - addUserPanel (colorPanel, rgbcurves); - addUserPanel (colorPanel, colortoning); - addUserPanel (exposurePanel, epd); - addUserPanel (exposurePanel, fattal); - addUserPanel (advancedPanel, retinex); - addUserPanel (exposurePanel, pcvignette); - addUserPanel (exposurePanel, gradient); - addUserPanel (exposurePanel, lcurve); - addUserPanel (advancedPanel, colorappearance); - addUserPanel (detailsPanel, impulsedenoise); - addUserPanel (detailsPanel, dirpyrdenoise); - addUserPanel (detailsPanel, defringe); - addUserPanel (detailsPanel, dirpyrequalizer); - addUserPanel (detailsPanel, dehaze); - addUserPanel (advancedPanel, wavelet); - addUserPanel (transformPanel, crop); - addUserPanel (transformPanel, resize); - addPanel (resize->getPackBox(), prsharpening, 2); - addUserPanel (transformPanel, lensgeom); - addPanel (lensgeom->getPackBox(), rotate, 2); - addPanel (lensgeom->getPackBox(), perspective, 2); - addPanel (lensgeom->getPackBox(), lensProf, 2); - addPanel (lensgeom->getPackBox(), distortion, 2); - addPanel (lensgeom->getPackBox(), cacorrection, 2); - addPanel (lensgeom->getPackBox(), vignetting, 2); - addUserPanel (colorPanel, icm); - addUserPanel (rawPanel, sensorbayer); - addPanel (sensorbayer->getPackBox(), bayerprocess, 2); - addPanel (sensorbayer->getPackBox(), bayerrawexposure, 2); - addPanel (sensorbayer->getPackBox(), bayerpreprocess, 2); - addPanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addUserPanel (rawPanel, sensorxtrans); - addPanel (sensorxtrans->getPackBox(), xtransprocess, 2); - addPanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addUserPanel (rawPanel, rawexposure); - addUserPanel (rawPanel, preprocess); - addUserPanel (rawPanel, darkframe); - addUserPanel (rawPanel, flatfield); + addfavouritePanel (colorPanel, whitebalance); + addfavouritePanel (exposurePanel, toneCurve); + addfavouritePanel (colorPanel, vibrance); + addfavouritePanel (colorPanel, chmixer); + addfavouritePanel (colorPanel, blackwhite); + addfavouritePanel (exposurePanel, shadowshighlights); + addfavouritePanel (detailsPanel, sharpening); + addfavouritePanel (detailsPanel, localContrast); + addfavouritePanel (detailsPanel, sharpenEdge); + addfavouritePanel (detailsPanel, sharpenMicro); + addfavouritePanel (colorPanel, hsvequalizer); + addfavouritePanel (colorPanel, filmSimulation); + addfavouritePanel (colorPanel, softlight); + addfavouritePanel (colorPanel, rgbcurves); + addfavouritePanel (colorPanel, colortoning); + addfavouritePanel (exposurePanel, epd); + addfavouritePanel (exposurePanel, fattal); + addfavouritePanel (advancedPanel, retinex); + addfavouritePanel (exposurePanel, pcvignette); + addfavouritePanel (exposurePanel, gradient); + addfavouritePanel (exposurePanel, lcurve); + addfavouritePanel (advancedPanel, colorappearance); + addfavouritePanel (detailsPanel, impulsedenoise); + addfavouritePanel (detailsPanel, dirpyrdenoise); + addfavouritePanel (detailsPanel, defringe); + addfavouritePanel (detailsPanel, dirpyrequalizer); + addfavouritePanel (detailsPanel, dehaze); + addfavouritePanel (advancedPanel, wavelet); + addfavouritePanel (transformPanel, crop); + addfavouritePanel (transformPanel, resize); + addfavouritePanel (resize->getPackBox(), prsharpening, 2); + addfavouritePanel (transformPanel, lensgeom); + addfavouritePanel (lensgeom->getPackBox(), rotate, 2); + addfavouritePanel (lensgeom->getPackBox(), perspective, 2); + addfavouritePanel (lensgeom->getPackBox(), lensProf, 2); + addfavouritePanel (lensgeom->getPackBox(), distortion, 2); + addfavouritePanel (lensgeom->getPackBox(), cacorrection, 2); + addfavouritePanel (lensgeom->getPackBox(), vignetting, 2); + addfavouritePanel (colorPanel, icm); + addfavouritePanel (rawPanel, sensorbayer); + addfavouritePanel (sensorbayer->getPackBox(), bayerprocess, 2); + addfavouritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); + addfavouritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); + addfavouritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); + addfavouritePanel (rawPanel, sensorxtrans); + addfavouritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); + addfavouritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); + addfavouritePanel (rawPanel, rawexposure); + addfavouritePanel (rawPanel, preprocess); + addfavouritePanel (rawPanel, darkframe); + addfavouritePanel (rawPanel, flatfield); - for(auto it = userTools.begin(); it != userTools.end(); ++it) { - addPanel(userPanel, *it); + for(auto it = favourites.begin(); it != favourites.end(); ++it) { + addPanel(favouritePanel, *it); } toolPanels.push_back (coarse); toolPanels.push_back(metadata); @@ -164,7 +164,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - userPanelSW = Gtk::manage (new MyScrolledWindow ()); + favouritePanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); @@ -182,9 +182,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } - userPanelSW->add (*userPanel); - userPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - userPanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + favouritePanelSW->add (*favouritePanel); + favouritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favouritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -210,7 +210,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); - toiU = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_CUSTOM"), M ("MAIN_TAB_CUSTOM_TOOLTIP"))); + toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVOURITES"), M ("MAIN_TAB_FAVOURITES_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -219,7 +219,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); - toolPanelNotebook->append_page (*userPanelSW, *toiU); + toolPanelNotebook->append_page (*favouritePanelSW, *toiF); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -262,15 +262,15 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } -void ToolPanelCoordinator::addUserPanel (Gtk::Box* where, FoldableToolPanel* panel) +void ToolPanelCoordinator::addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) { auto name = panel->getToolName(); - auto it = std::find(options.userTools.begin(), options.userTools.end(), name); - if (it != options.userTools.end()) { - int index = std::distance(options.userTools.begin(), it); - userTools[index] = panel; + auto it = std::find(options.favourites.begin(), options.favourites.end(), name); + if (it != options.favourites.end()) { + int index = std::distance(options.favourites.begin(), it); + favourites[index] = panel; } else { - addPanel(where, panel); + addPanel(where, panel, level); } } @@ -879,6 +879,10 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { + case GDK_KEY_u: + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favouritePanelSW)); + return true; + case GDK_KEY_e: toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*exposurePanelSW)); return true; @@ -916,7 +920,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; - userPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + favouritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 76a3cdd1c..fa007b6ab 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -158,8 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; - std::vector userTools; - ToolVBox* userPanel; + std::vector favourites; + ToolVBox* favouritePanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -168,7 +168,7 @@ protected: ToolVBox* advancedPanel; ToolBar* toolBar; - TextOrIcon* toiU; + TextOrIcon* toiF; TextOrIcon* toiE; TextOrIcon* toiD; TextOrIcon* toiC; @@ -180,7 +180,7 @@ protected: Gtk::Image* imgPanelEnd[7]; Gtk::VBox* vbPanelEnd[7]; - Gtk::ScrolledWindow* userPanelSW; + Gtk::ScrolledWindow* favouritePanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -195,7 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); - void addUserPanel (Gtk::Box* where, FoldableToolPanel* panel); + void addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); private: EditDataProvider *editDataProvider; From 43b77679d4afcb4d57f15578c4771496e0e4d29b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 16:48:05 +0100 Subject: [PATCH 3/5] Favourites => Favorites, #5016 --- rtdata/languages/default | 4 +- rtgui/options.cc | 10 +-- rtgui/options.h | 2 +- rtgui/toolpanelcoord.cc | 138 ++++++++++++++++++++------------------- rtgui/toolpanelcoord.h | 8 +-- 5 files changed, 82 insertions(+), 80 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index e38e7eb81..869e96178 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -900,8 +900,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c -MAIN_TAB_FAVOURITES;Favourites -MAIN_TAB_FAVOURITES_TOOLTIP;Shortcut: Alt-u +MAIN_TAB_FAVORITES;Favorites +MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: Alt-u MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit diff --git a/rtgui/options.cc b/rtgui/options.cc index 9681978ca..d1b7070de 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,7 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); - favourites.clear(); + favorites.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -1070,8 +1070,8 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { - if (keyFile.has_key("GUI", "Favourites")) { - favourites = keyFile.get_string_list("GUI", "Favourites"); + if (keyFile.has_key("GUI", "Favorites")) { + favorites = keyFile.get_string_list("GUI", "Favorites"); } if (keyFile.has_key("GUI", "WindowWidth")) { @@ -1972,8 +1972,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); - Glib::ArrayHandle ahfavourites = favourites; - keyFile.set_string_list("GUI", "Favourites", ahfavourites); + Glib::ArrayHandle ahfavorites = favorites; + keyFile.set_string_list("GUI", "Favorites", ahfavorites); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index ea29e047e..5001306ff 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -375,7 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; - std::vector favourites; + std::vector favorites; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 84244d7c8..56c987986 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -31,7 +31,7 @@ using namespace rtengine::procparams; ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) { - favouritePanel = Gtk::manage (new ToolVBox ()); + favoritePanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -101,62 +101,64 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO - favourites.resize(options.favourites.size()); + favorites.resize(options.favorites.size(), nullptr); - addfavouritePanel (colorPanel, whitebalance); - addfavouritePanel (exposurePanel, toneCurve); - addfavouritePanel (colorPanel, vibrance); - addfavouritePanel (colorPanel, chmixer); - addfavouritePanel (colorPanel, blackwhite); - addfavouritePanel (exposurePanel, shadowshighlights); - addfavouritePanel (detailsPanel, sharpening); - addfavouritePanel (detailsPanel, localContrast); - addfavouritePanel (detailsPanel, sharpenEdge); - addfavouritePanel (detailsPanel, sharpenMicro); - addfavouritePanel (colorPanel, hsvequalizer); - addfavouritePanel (colorPanel, filmSimulation); - addfavouritePanel (colorPanel, softlight); - addfavouritePanel (colorPanel, rgbcurves); - addfavouritePanel (colorPanel, colortoning); - addfavouritePanel (exposurePanel, epd); - addfavouritePanel (exposurePanel, fattal); - addfavouritePanel (advancedPanel, retinex); - addfavouritePanel (exposurePanel, pcvignette); - addfavouritePanel (exposurePanel, gradient); - addfavouritePanel (exposurePanel, lcurve); - addfavouritePanel (advancedPanel, colorappearance); - addfavouritePanel (detailsPanel, impulsedenoise); - addfavouritePanel (detailsPanel, dirpyrdenoise); - addfavouritePanel (detailsPanel, defringe); - addfavouritePanel (detailsPanel, dirpyrequalizer); - addfavouritePanel (detailsPanel, dehaze); - addfavouritePanel (advancedPanel, wavelet); - addfavouritePanel (transformPanel, crop); - addfavouritePanel (transformPanel, resize); - addfavouritePanel (resize->getPackBox(), prsharpening, 2); - addfavouritePanel (transformPanel, lensgeom); - addfavouritePanel (lensgeom->getPackBox(), rotate, 2); - addfavouritePanel (lensgeom->getPackBox(), perspective, 2); - addfavouritePanel (lensgeom->getPackBox(), lensProf, 2); - addfavouritePanel (lensgeom->getPackBox(), distortion, 2); - addfavouritePanel (lensgeom->getPackBox(), cacorrection, 2); - addfavouritePanel (lensgeom->getPackBox(), vignetting, 2); - addfavouritePanel (colorPanel, icm); - addfavouritePanel (rawPanel, sensorbayer); - addfavouritePanel (sensorbayer->getPackBox(), bayerprocess, 2); - addfavouritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); - addfavouritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); - addfavouritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addfavouritePanel (rawPanel, sensorxtrans); - addfavouritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); - addfavouritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addfavouritePanel (rawPanel, rawexposure); - addfavouritePanel (rawPanel, preprocess); - addfavouritePanel (rawPanel, darkframe); - addfavouritePanel (rawPanel, flatfield); + addfavoritePanel (colorPanel, whitebalance); + addfavoritePanel (exposurePanel, toneCurve); + addfavoritePanel (colorPanel, vibrance); + addfavoritePanel (colorPanel, chmixer); + addfavoritePanel (colorPanel, blackwhite); + addfavoritePanel (exposurePanel, shadowshighlights); + addfavoritePanel (detailsPanel, sharpening); + addfavoritePanel (detailsPanel, localContrast); + addfavoritePanel (detailsPanel, sharpenEdge); + addfavoritePanel (detailsPanel, sharpenMicro); + addfavoritePanel (colorPanel, hsvequalizer); + addfavoritePanel (colorPanel, filmSimulation); + addfavoritePanel (colorPanel, softlight); + addfavoritePanel (colorPanel, rgbcurves); + addfavoritePanel (colorPanel, colortoning); + addfavoritePanel (exposurePanel, epd); + addfavoritePanel (exposurePanel, fattal); + addfavoritePanel (advancedPanel, retinex); + addfavoritePanel (exposurePanel, pcvignette); + addfavoritePanel (exposurePanel, gradient); + addfavoritePanel (exposurePanel, lcurve); + addfavoritePanel (advancedPanel, colorappearance); + addfavoritePanel (detailsPanel, impulsedenoise); + addfavoritePanel (detailsPanel, dirpyrdenoise); + addfavoritePanel (detailsPanel, defringe); + addfavoritePanel (detailsPanel, dirpyrequalizer); + addfavoritePanel (detailsPanel, dehaze); + addfavoritePanel (advancedPanel, wavelet); + addfavoritePanel (transformPanel, crop); + addfavoritePanel (transformPanel, resize); + addfavoritePanel (resize->getPackBox(), prsharpening, 2); + addfavoritePanel (transformPanel, lensgeom); + addfavoritePanel (lensgeom->getPackBox(), rotate, 2); + addfavoritePanel (lensgeom->getPackBox(), perspective, 2); + addfavoritePanel (lensgeom->getPackBox(), lensProf, 2); + addfavoritePanel (lensgeom->getPackBox(), distortion, 2); + addfavoritePanel (lensgeom->getPackBox(), cacorrection, 2); + addfavoritePanel (lensgeom->getPackBox(), vignetting, 2); + addfavoritePanel (colorPanel, icm); + addfavoritePanel (rawPanel, sensorbayer); + addfavoritePanel (sensorbayer->getPackBox(), bayerprocess, 2); + addfavoritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); + addfavoritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); + addfavoritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); + addfavoritePanel (rawPanel, sensorxtrans); + addfavoritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); + addfavoritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); + addfavoritePanel (rawPanel, rawexposure); + addfavoritePanel (rawPanel, preprocess); + addfavoritePanel (rawPanel, darkframe); + addfavoritePanel (rawPanel, flatfield); - for(auto it = favourites.begin(); it != favourites.end(); ++it) { - addPanel(favouritePanel, *it); + for(auto it = favorites.begin(); it != favorites.end(); ++it) { + if (*it) { + addPanel(favoritePanel, *it); + } } toolPanels.push_back (coarse); toolPanels.push_back(metadata); @@ -164,7 +166,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - favouritePanelSW = Gtk::manage (new MyScrolledWindow ()); + favoritePanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); @@ -182,9 +184,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } - favouritePanelSW->add (*favouritePanel); - favouritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - favouritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + favoritePanelSW->add (*favoritePanel); + favoritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favoritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -210,7 +212,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); - toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVOURITES"), M ("MAIN_TAB_FAVOURITES_TOOLTIP"))); + toiF = Gtk::manage (new TextOrIcon ("wb-sun.png", M ("MAIN_TAB_FAVORITES"), M ("MAIN_TAB_FAVORITES_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -219,7 +221,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); - toolPanelNotebook->append_page (*favouritePanelSW, *toiF); + toolPanelNotebook->append_page (*favoritePanelSW, *toiF); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -262,13 +264,13 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } -void ToolPanelCoordinator::addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) +void ToolPanelCoordinator::addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) { auto name = panel->getToolName(); - auto it = std::find(options.favourites.begin(), options.favourites.end(), name); - if (it != options.favourites.end()) { - int index = std::distance(options.favourites.begin(), it); - favourites[index] = panel; + auto it = std::find(options.favorites.begin(), options.favorites.end(), name); + if (it != options.favorites.end()) { + int index = std::distance(options.favorites.begin(), it); + favorites[index] = panel; } else { addPanel(where, panel, level); } @@ -880,7 +882,7 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { case GDK_KEY_u: - toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favouritePanelSW)); + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); return true; case GDK_KEY_e: @@ -920,7 +922,7 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; - favouritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index fa007b6ab..1ac74871a 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -158,8 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; - std::vector favourites; - ToolVBox* favouritePanel; + std::vector favorites; + ToolVBox* favoritePanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -180,7 +180,7 @@ protected: Gtk::Image* imgPanelEnd[7]; Gtk::VBox* vbPanelEnd[7]; - Gtk::ScrolledWindow* favouritePanelSW; + Gtk::ScrolledWindow* favoritePanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -195,7 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); - void addfavouritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); + void addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); private: EditDataProvider *editDataProvider; From 883d967a030cafa75c3c1bf5f1736928117ac55b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 23 Nov 2018 20:49:04 +0100 Subject: [PATCH 4/5] Exclude pr-sharpening from being moved separately to favorites panel --- rtgui/toolpanelcoord.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 56c987986..709acc75a 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -133,7 +133,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addfavoritePanel (advancedPanel, wavelet); addfavoritePanel (transformPanel, crop); addfavoritePanel (transformPanel, resize); - addfavoritePanel (resize->getPackBox(), prsharpening, 2); + addPanel (resize->getPackBox(), prsharpening, 2); addfavoritePanel (transformPanel, lensgeom); addfavoritePanel (lensgeom->getPackBox(), rotate, 2); addfavoritePanel (lensgeom->getPackBox(), perspective, 2); From e5679df6f36c0fad2a5354ce29c1b76d368dc27c Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 29 Nov 2018 14:43:45 +0100 Subject: [PATCH 5/5] Don't show empty favorite panel, #5016 --- rtgui/toolpanelcoord.cc | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 709acc75a..99dcdde8d 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -28,7 +28,7 @@ using namespace rtengine::procparams; -ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) +ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr), favoritePanelSW(nullptr) { favoritePanel = Gtk::manage (new ToolVBox ()); @@ -155,24 +155,26 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan addfavoritePanel (rawPanel, darkframe); addfavoritePanel (rawPanel, flatfield); + int favoriteCount = 0; for(auto it = favorites.begin(); it != favorites.end(); ++it) { if (*it) { addPanel(favoritePanel, *it); + ++favoriteCount; } } + toolPanels.push_back (coarse); toolPanels.push_back(metadata); toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - favoritePanelSW = Gtk::manage (new MyScrolledWindow ()); exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); transformPanelSW = Gtk::manage (new MyScrolledWindow ()); rawPanelSW = Gtk::manage (new MyScrolledWindow ()); - advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); + advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); updateVScrollbars (options.hideTPVScrollbar); // load panel endings @@ -184,9 +186,12 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } - favoritePanelSW->add (*favoritePanel); - favoritePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - favoritePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + if(favoriteCount > 0) { + favoritePanelSW = Gtk::manage(new MyScrolledWindow()); + favoritePanelSW->add(*favoritePanel); + favoritePanel->pack_start(*Gtk::manage(new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favoritePanel->pack_start(*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + } exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); @@ -221,7 +226,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); - toolPanelNotebook->append_page (*favoritePanelSW, *toiF); + if (favoritePanelSW) { + toolPanelNotebook->append_page (*favoritePanelSW, *toiF); + } toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -882,7 +889,9 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { case GDK_KEY_u: - toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); + if (favoritePanelSW) { + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); + } return true; case GDK_KEY_e: @@ -922,7 +931,9 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; - favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + if (favoritePanelSW) { + favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + } exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy);