diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 1ee3c6e57..c23595d70 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -88,8 +88,8 @@ RawImageSource::~RawImageSource () { freeArray(blue, H); if(rawData) freeArray(rawData, H); - - delete [] cache; + if( cache ) + delete [] cache; if (hrmap[0]!=NULL) { int dh = H/HR_SCALE; freeArray(hrmap[0], dh); @@ -3292,12 +3292,11 @@ void RawImageSource::dcb_demosaic(int iterations, int dcb_enhance) free(image3[i]); free(chroma[i]); } -#else +#endif free(image); free(image2); free(image3); free(chroma); -#endif if(plistener) plistener->setProgress (1.0); } diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 5bc0f331f..70377281f 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -23,6 +23,7 @@ #include #include #include +#include extern Options options; @@ -60,7 +61,7 @@ FileBrowser::FileBrowser () pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*(selectDF = new Gtk::MenuItem ("Select Dark Frame...")), 0, 1, p, p+1); p++; pmenu->attach (*(autoDF = new Gtk::MenuItem ("Auto Dark Frame")), 0, 1, p, p+1); p++; - pmenu->attach (*(thisIsDF = new Gtk::MenuItem ("This is a Dark Frame")), 0, 1, p, p+1); p++; + pmenu->attach (*(thisIsDF = new Gtk::MenuItem ("Move to Dark Frames folder")), 0, 1, p, p+1); p++; pmenu->attach (*(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++; pmenu->attach (*(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; @@ -92,6 +93,7 @@ FileBrowser::FileBrowser () selall->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), selall)); selectDF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), selectDF)); autoDF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), autoDF)); + thisIsDF->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated),thisIsDF )); copyprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), copyprof)); 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)); @@ -322,6 +324,18 @@ void FileBrowser::menuItemActivated (Gtk::MenuItem* m) { } } } + }else if( m==thisIsDF){ + if( options.rtSettings.darkFramesPath.size() >0 && Gio::File::create_for_path(options.rtSettings.darkFramesPath)->query_exists() ){ + for (int i=0; i file = Gio::File::create_for_path ( mselected[i]->filename ); + if( !file )continue; + Glib::ustring destName = options.rtSettings.darkFramesPath+ "/" + file->get_basename(); + Glib::RefPtr dest = Gio::File::create_for_path ( destName ); + file->move( dest ); + } + // Reinit cache + rtengine::dfm.init( options.rtSettings.darkFramesPath ); + } }else if (m==copyprof) copyProfile (); else if (m==pasteprof)