diff --git a/rtdata/languages/default b/rtdata/languages/default index 879937c9c..b1baa76d5 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -54,6 +54,7 @@ EXIFPANEL_RESETHINT;Reset the selected tags to their original values EXIFPANEL_SUBDIRECTORY;Subdirectory FILEBROWSER_ADDDELTEMPLATE;Add/Del templates... FILEBROWSER_APPLYPROFILE;Apply profile +FILEBROWSER_APPLYPROFILE_PARTIAL;Apply profile (partial) FILEBROWSER_ARRANGEMENTHINT;Change between vertical/horizontal alignment of thumbnails FILEBROWSER_AUTODARKFRAME;Auto dark frame FILEBROWSER_AUTOFLATFIELD;Auto flat field diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 58aef36fa..c8ff91e79 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -85,6 +85,7 @@ FileBrowser::FileBrowser () pmenu->attach (*Gtk::manage(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(partpasteprof = new Gtk::MenuItem (M("FILEBROWSER_PARTIALPASTEPROFILE"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(applyprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(applypartprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE_PARTIAL"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(clearprof = new Gtk::MenuItem (M("FILEBROWSER_CLEARPROFILE"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(cachemenu = new Gtk::MenuItem (M("FILEBROWSER_CACHE"))), 0, 1, p, p+1); p++; @@ -119,6 +120,7 @@ FileBrowser::FileBrowser () pasteprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), pasteprof)); partpasteprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), partpasteprof)); applyprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), applyprof)); + applypartprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), applypartprof)); clearprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), clearprof)); cachemenu->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), cachemenu)); } @@ -158,7 +160,19 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { mi->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::applyMenuItemActivated), profnames[i])); mi->show (); } - applyprof->set_submenu (*applmenu); + applyprof->set_submenu (*applmenu); + + // submenu applpartmenu + p = 0; + Gtk::Menu* applpartmenu = Gtk::manage (new Gtk::Menu ()); + //std::vector profnames = profileStore.getProfileNames (); // this is already created for submenu applmenu above + for (int i=0; iattach (*mi, 0, 1, p, p+1); p++; + mi->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::applyPartialMenuItemActivated), profnames[i])); + mi->show (); + } + applypartprof->set_submenu (*applpartmenu); // submenuDF Gtk::Menu* submenuDF = Gtk::manage (new Gtk::Menu ()); @@ -620,6 +634,27 @@ void FileBrowser::applyMenuItemActivated (Glib::ustring ppname) { } } +void FileBrowser::applyPartialMenuItemActivated (Glib::ustring ppname) { + + if (!tbl || selected.size()==0) + return; + + rtengine::procparams::ProcParams* pparams = profileStore.getProfile (ppname); + + if (pparams) { + if (partialPasteDlg.run ()) { + + for (int i=0; ithumbnail->getProcParams (); + partialPasteDlg.applyPaste (¶ms, pparams); + ((FileBrowserEntry*)selected[i])->thumbnail->setProcParams (params, FILEBROWSER); + } + queue_draw (); + } + partialPasteDlg.hide (); + } +} + void FileBrowser::applyFilter (const BrowserFilter& filter) { this->filter = filter; diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 389f2612f..da45ed682 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -79,6 +79,7 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { Gtk::MenuItem* pasteprof; Gtk::MenuItem* partpasteprof; Gtk::MenuItem* applyprof; + Gtk::MenuItem* applypartprof; Gtk::MenuItem* clearprof; Gtk::MenuItem* cachemenu; Gtk::MenuItem* clearFromCache; @@ -116,6 +117,7 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { void menuItemActivated (Gtk::MenuItem* m); void applyMenuItemActivated (Glib::ustring ppname); + void applyPartialMenuItemActivated (Glib::ustring ppname); void applyFilter (const BrowserFilter& filter); int getNumFiltered(){ return numFiltered;}