|  | @@ -55,6 +55,7 @@ void
 | 
	
		
			
				|  |  |  CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  |  ::Close( void )
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +  SaveRecentDirectories();
 | 
	
		
			
				|  |  |    dialogWindow->hide();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -120,7 +121,6 @@ void
 | 
	
		
			
				|  |  |  CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  |  ::SetPathToExecutable( const char * path )
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  m_PathToExecutable = path;
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    char expandedPath[1024];
 | 
	
		
			
				|  |  |    filename_expand( expandedPath, path );
 | 
	
	
		
			
				|  | @@ -333,6 +333,9 @@ CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  |    // Make sure we are working from the cache on disk
 | 
	
		
			
				|  |  |    this->LoadCacheFromDiskToGUI();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  UpdateListOfRecentDirectories();
 | 
	
		
			
				|  |  | +  SaveRecentDirectories();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // create a cmake object
 | 
	
		
			
				|  |  |    cmake make;
 | 
	
		
			
				|  |  |    // create the arguments for the cmake object
 | 
	
	
		
			
				|  | @@ -358,6 +361,7 @@ CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  |    // path is up-to-date now
 | 
	
		
			
				|  |  |    m_BuildPathChanged = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // put the cursor back
 | 
	
		
			
				|  |  |    fl_cursor(FL_CURSOR_DEFAULT,FL_BLACK,FL_WHITE);
 | 
	
		
			
				|  |  |    fl_message("Done !");
 | 
	
	
		
			
				|  | @@ -515,3 +519,204 @@ CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Load Recent Directories
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::LoadRecentDirectories( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  std::string home = getenv("HOME");
 | 
	
		
			
				|  |  | +  std::string filename = home + "/.cmakerc";
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  std::ifstream input;
 | 
	
		
			
				|  |  | +  input.open(filename.c_str());
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  if( input.fail() ) 
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    // probably the file doesn't exist
 | 
	
		
			
				|  |  | +    return;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  m_RecentBinaryDirectories.clear();
 | 
	
		
			
				|  |  | +  m_RecentSourceDirectories.clear();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  std::string key;
 | 
	
		
			
				|  |  | +  std::string onedirectory;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  while( !input.eof() )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    input >> key;
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    if( input.eof() ) break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if( key == "MostRecentSource" )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      input >> onedirectory;
 | 
	
		
			
				|  |  | +      m_WhereSource = onedirectory;
 | 
	
		
			
				|  |  | +      sourcePathTextInput->value( m_WhereSource.c_str() );
 | 
	
		
			
				|  |  | +    } else
 | 
	
		
			
				|  |  | +    if( key == "MostRecentBinary" )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      input >> onedirectory;
 | 
	
		
			
				|  |  | +      m_WhereBuild = onedirectory;
 | 
	
		
			
				|  |  | +      binaryPathTextInput->value( m_WhereBuild.c_str() );
 | 
	
		
			
				|  |  | +    } else
 | 
	
		
			
				|  |  | +    if( key == "Binary" )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      input >> onedirectory;
 | 
	
		
			
				|  |  | +      // insert is only done if the directory doesn't exist
 | 
	
		
			
				|  |  | +      m_RecentBinaryDirectories.insert( onedirectory );
 | 
	
		
			
				|  |  | +      recentBinaryDirectoriesBrowser->add(
 | 
	
		
			
				|  |  | +                      (onedirectory.c_str()),
 | 
	
		
			
				|  |  | +                      (void*)(onedirectory.c_str()) );
 | 
	
		
			
				|  |  | +    } else
 | 
	
		
			
				|  |  | +    if( key == "Source" )
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      input >> onedirectory;
 | 
	
		
			
				|  |  | +      // insert is only done if the directory doesn't exist
 | 
	
		
			
				|  |  | +      m_RecentSourceDirectories.insert( onedirectory );
 | 
	
		
			
				|  |  | +      recentSourceDirectoriesBrowser->add(
 | 
	
		
			
				|  |  | +                      (onedirectory.c_str()),
 | 
	
		
			
				|  |  | +                      (void*)(onedirectory.c_str()) );
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  input.close();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Save Recent Directories
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::SaveRecentDirectories( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  std::string home = getenv("HOME");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if( home.empty() )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    return;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  std::string filename = home + "/.cmakerc";
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  std::ofstream output;
 | 
	
		
			
				|  |  | +  output.open(filename.c_str());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  output << "MostRecentBinary " << m_WhereBuild  << std::endl;
 | 
	
		
			
				|  |  | +  output << "MostRecentSource " << m_WhereSource << std::endl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // Save Recent binary directories
 | 
	
		
			
				|  |  | +  std::set< std::string >::iterator bindir = 
 | 
	
		
			
				|  |  | +                m_RecentBinaryDirectories.begin();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  while( bindir != m_RecentBinaryDirectories.end() )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    output << "Binary " << *bindir << std::endl;
 | 
	
		
			
				|  |  | +    bindir++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // Save Recent source directories
 | 
	
		
			
				|  |  | +  std::set< std::string >::iterator srcdir = 
 | 
	
		
			
				|  |  | +                m_RecentSourceDirectories.begin();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  while( srcdir != m_RecentSourceDirectories.end() )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    output << "Source " << *srcdir << std::endl;
 | 
	
		
			
				|  |  | +    srcdir++;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Show Recent Binary Directories
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::ShowRecentBinaryDirectories( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  recentBinaryDirectoriesBrowser->Fl_Widget::show();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Show Recent Source Directories
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::ShowRecentSourceDirectories( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  recentSourceDirectoriesBrowser->Fl_Widget::show();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Select one Recent Binary Directory
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::SelectOneRecentBinaryDirectory( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  const int selected = recentBinaryDirectoriesBrowser->value();
 | 
	
		
			
				|  |  | +  if( selected == 0 )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    return;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  m_WhereBuild = static_cast<char *>(
 | 
	
		
			
				|  |  | +           recentBinaryDirectoriesBrowser->data( selected ));
 | 
	
		
			
				|  |  | +  binaryPathTextInput->value( m_WhereBuild.c_str() );
 | 
	
		
			
				|  |  | +  recentBinaryDirectoriesBrowser->Fl_Widget::hide();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Select one Recent Source Directory
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::SelectOneRecentSourceDirectory( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  const int selected = recentSourceDirectoriesBrowser->value();
 | 
	
		
			
				|  |  | +  if( selected == 0 )
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    return;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  m_WhereSource =  static_cast< char * >(
 | 
	
		
			
				|  |  | +          recentSourceDirectoriesBrowser->data( selected ));
 | 
	
		
			
				|  |  | +  sourcePathTextInput->value( m_WhereSource.c_str() );
 | 
	
		
			
				|  |  | +  recentSourceDirectoriesBrowser->Fl_Widget::hide();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Update List of Recent Directories
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void
 | 
	
		
			
				|  |  | +CMakeSetupGUIImplementation
 | 
	
		
			
				|  |  | +::UpdateListOfRecentDirectories( void )
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // Update Recent binary directories
 | 
	
		
			
				|  |  | +  // insert is only done if the directory doesn't exist
 | 
	
		
			
				|  |  | +  m_RecentBinaryDirectories.insert( m_WhereBuild );
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +  // Update Recent source directories
 | 
	
		
			
				|  |  | +  // insert is only done if the directory doesn't exist
 | 
	
		
			
				|  |  | +  m_RecentSourceDirectories.insert( m_WhereSource );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 |