diff --git a/src/diskreader.cxx b/src/diskreader.cxx index b50d36c..68f4de4 100644 --- a/src/diskreader.cxx +++ b/src/diskreader.cxx @@ -102,6 +102,17 @@ int DiskReader::loadPreferences() LUPPP_NOTE("No default controllers active."); } + + cJSON* projDir=cJSON_GetObjectItem(preferencesJson,"saveDirectory"); + string dir=getenv("HOME"); + if(projDir) + { + stringstream s; + s<valuestring; + dir=s.str(); + } + gui->setProjectsDir(dir); + //Enable per track send and resturn jack ports? cJSON* jackPerTrackOutput=cJSON_GetObjectItem(preferencesJson,"enablePerTrackOutput"); if(jackPerTrackOutput) diff --git a/src/diskwriter.cxx b/src/diskwriter.cxx index 690dc7c..7b3e58b 100644 --- a/src/diskwriter.cxx +++ b/src/diskwriter.cxx @@ -126,7 +126,7 @@ void DiskWriter::initialize(std::string path, std::string name ) if ( sessionDirError ) { // handle by using different filename? - LUPPP_WARN("Error creating session directory"); + LUPPP_WARN("Error creating session directory. Does the path: %s exist?",path.c_str()); } stringstream audioDirStream; diff --git a/src/gui.cxx b/src/gui.cxx index 7b6a7c4..6f6d22a 100644 --- a/src/gui.cxx +++ b/src/gui.cxx @@ -145,7 +145,7 @@ static void gui_header_callback(Fl_Widget *w, void *data) std::string tmp; { // Create the file chooser, and show it - Fl_File_Chooser chooser(getenv("HOME"), + Fl_File_Chooser chooser(gui->getProjectsDir().c_str(), "*", Fl_File_Chooser::DIRECTORY, "Load Session"); @@ -195,7 +195,7 @@ static void gui_header_callback(Fl_Widget *w, void *data) const char* name = fl_input( "Save session as", gui->getDiskWriter()->getLastSaveName().c_str() ); if ( name ) { - gui->getDiskWriter()->initialize( getenv("HOME"), name ); + gui->getDiskWriter()->initialize( gui->getProjectsDir().c_str(), name ); LUPPP_NOTE("%s %s","Saving session as ", name ); EventStateSave e; writeToDspRingbuffer( &e ); @@ -252,6 +252,16 @@ void Gui::selectLoadController(Fl_Widget* w, void*) } +void Gui::setProjectsDir(string dir) +{ + lupppProjectsDir=dir; +} + +string Gui::getProjectsDir() +{ + return lupppProjectsDir; +} + void Gui::selectSaveSample( int track, int scene ) { EventStateSaveBuffer e; diff --git a/src/gui.hxx b/src/gui.hxx index 9a49fd1..a287da6 100644 --- a/src/gui.hxx +++ b/src/gui.hxx @@ -96,7 +96,11 @@ class Gui /// current special clip: int specialTrack; int specialScene; - + + /// The project directory is the default directoy which is shown upon load/save + void setProjectsDir(string dir); + string getProjectsDir(); + // save a particular sample to path std::string saveBufferPath; @@ -109,6 +113,8 @@ class Gui OptionsWindow* optionWindow; + std::string lupppProjectsDir; + AudioEditor* audioEditor; DiskReader* diskReader;