New feature: apply profile (partial) - issue 778
This patch allows to apply selected profile via a partial paste dialog. This is useful, for example, when applying stored profile to rotated or cropped images. "Apply profile partial" will allow to bypass not selected params, e.g. rotation, crop, etc.
This commit is contained in:
@@ -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
|
||||
|
@@ -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));
|
||||
}
|
||||
@@ -160,6 +162,18 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) {
|
||||
}
|
||||
applyprof->set_submenu (*applmenu);
|
||||
|
||||
// submenu applpartmenu
|
||||
p = 0;
|
||||
Gtk::Menu* applpartmenu = Gtk::manage (new Gtk::Menu ());
|
||||
//std::vector<Glib::ustring> profnames = profileStore.getProfileNames (); // this is already created for submenu applmenu above
|
||||
for (int i=0; i<profnames.size(); i++) {
|
||||
Gtk::MenuItem* mi = Gtk::manage (new Gtk::MenuItem (profnames[i]));
|
||||
applpartmenu->attach (*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 ());
|
||||
submenuDF->attach (*Gtk::manage(selectDF = new Gtk::MenuItem (M("FILEBROWSER_SELECTDARKFRAME"))), 0, 1, p, p+1); p++;
|
||||
@@ -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; i<selected.size(); i++) {
|
||||
rtengine::procparams::ProcParams params = ((FileBrowserEntry*)selected[i])->thumbnail->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;
|
||||
|
@@ -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;}
|
||||
|
Reference in New Issue
Block a user