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;