From c2bc8c3b61f5c8976f0c9be1212fa3db6c5bd748 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Mon, 17 Oct 2005 08:15:52 +0000 Subject: [PATCH] set default install dir to whatever install dir was used last prune old non-present installations by checking each for a Programs directory --- stepmania/src/smpackage/SMPackageInstallDlg.cpp | 8 ++++++++ stepmania/src/smpackage/SMPackageUtil.cpp | 15 +++++++++++++++ stepmania/src/smpackage/smpackageUtil.h | 1 + 3 files changed, 24 insertions(+) diff --git a/stepmania/src/smpackage/SMPackageInstallDlg.cpp b/stepmania/src/smpackage/SMPackageInstallDlg.cpp index 1d3db306ba..8a43d66e53 100644 --- a/stepmania/src/smpackage/SMPackageInstallDlg.cpp +++ b/stepmania/src/smpackage/SMPackageInstallDlg.cpp @@ -259,6 +259,14 @@ void CSMPackageInstallDlg::OnOK() CString sInstallDir; m_comboDir.GetWindowText( sInstallDir ); + int iSelectedInstallDirIndex = m_comboDir.GetCurSel(); + if( iSelectedInstallDirIndex == -1 ) + { + MessageBox( "No Installations", "Error", MB_OK|MB_ICONEXCLAMATION ); + return; + } + + SetDefaultInstallDir( iSelectedInstallDirIndex ); // Show comment (if any) CString sComment = m_zip.GetGlobalComment(); diff --git a/stepmania/src/smpackage/SMPackageUtil.cpp b/stepmania/src/smpackage/SMPackageUtil.cpp index 46dc160270..43fcfa90c0 100644 --- a/stepmania/src/smpackage/SMPackageUtil.cpp +++ b/stepmania/src/smpackage/SMPackageUtil.cpp @@ -42,6 +42,10 @@ void GetStepManiaInstallDirs( CStringArray& asInstallDirsOut ) if( sPath == "" ) // read failed continue; // skip + CString sProgramDir = sPath+"\\Program"; + if( !DoesFileExist(sProgramDir) ) + continue; // skip + asInstallDirsOut.push_back( sPath ); } @@ -70,6 +74,17 @@ void AddStepManiaInstallDir( CString sNewInstallDir ) WriteStepManiaInstallDirs( asInstallDirs ); } +void SetDefaultInstallDir( int iInstallDirIndex ) +{ + // move the specified index to the top of the list + CStringArray asInstallDirs; + GetStepManiaInstallDirs( asInstallDirs ); + ASSERT( iInstallDirIndex > 0 && iInstallDirIndex < asInstallDirs.size() ); + CString sDefaultInstallDir = asInstallDirs[iInstallDirIndex]; + asInstallDirs.erase( asInstallDirs.begin()+iInstallDirIndex ); + asInstallDirs.insert( asInstallDirs.begin(), sDefaultInstallDir ); + WriteStepManiaInstallDirs( asInstallDirs ); +} bool GetPref( CString name, bool &val ) { diff --git a/stepmania/src/smpackage/smpackageUtil.h b/stepmania/src/smpackage/smpackageUtil.h index a711698e04..fbd03de91f 100644 --- a/stepmania/src/smpackage/smpackageUtil.h +++ b/stepmania/src/smpackage/smpackageUtil.h @@ -6,6 +6,7 @@ void WriteStepManiaInstallDirs( const CStringArray& asInstallDirsToWrite ); void GetStepManiaInstallDirs( CStringArray& asInstallDirsOut ); void AddStepManiaInstallDir( CString sNewInstallDir ); +void SetDefaultInstallDir( int iInstallDirIndex ); bool GetPref( CString name, bool &val ); bool SetPref( CString name, bool val );