From 388eacea2e265b2d5b64ae22dab5006e315306b9 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 26 Feb 2006 05:00:45 +0000 Subject: [PATCH] handle ShellExecute error values (0-32) clear cache before checking if files exist --- stepmania/src/smpackage/MainMenuDlg.cpp | 20 ++++++++++---------- stepmania/src/smpackage/smpackage.cpp | 7 +++---- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/stepmania/src/smpackage/MainMenuDlg.cpp b/stepmania/src/smpackage/MainMenuDlg.cpp index 756c3c01db..33475a4fc7 100644 --- a/stepmania/src/smpackage/MainMenuDlg.cpp +++ b/stepmania/src/smpackage/MainMenuDlg.cpp @@ -192,7 +192,8 @@ static LocalizedString CLEARED( "MainMenuDlg", "'%s' cleared" ); void MainMenuDlg::OnBnClickedClearKeymaps() { // TODO: Add your control notification handler code here - + + FlushDirCache(); if( !DoesFileExist( SpecialFiles::KEYMAPS_PATH ) ) { Dialog::OK( ssprintf(IS_ALREADY_CLEARED.GetValue(),SpecialFiles::KEYMAPS_PATH.c_str()) ); @@ -217,20 +218,19 @@ static LocalizedString FAILED_TO_OPEN ( "MainMenuDlg", "Failed to open '%s': void MainMenuDlg::OnBnClickedOpenPreferences() { // TODO: Add your control notification handler code here - if( !DoesFileExist( SpecialFiles::PREFERENCES_INI_PATH ) ) - { - Dialog::OK( ssprintf(DOESNT_EXIST_IT_WILL_BE_CREATED.GetValue(),SpecialFiles::PREFERENCES_INI_PATH.c_str()) ); - } - else - { - if( NULL == ::ShellExecute( this->m_hWnd, "open", SpecialFiles::PREFERENCES_INI_PATH, "", "", SW_SHOWNORMAL ) ) - Dialog::OK( ssprintf(FAILED_TO_OPEN.GetValue(),SpecialFiles::PREFERENCES_INI_PATH.c_str(),GetLastErrorString().c_str()) ); - } + // TODO: Have RageFile* do the mapping to the OS file location. + RString sPreferencesOSFile = SpecialDirs::GetMyDocumentsDir() + PRODUCT_ID + "/" + SpecialFiles::PREFERENCES_INI_PATH; + HINSTANCE hinst = ::ShellExecute( this->m_hWnd, "open", sPreferencesOSFile, "", "", SW_SHOWNORMAL ); + if( (int)hinst == SE_ERR_FNF ) + Dialog::OK( ssprintf(DOESNT_EXIST_IT_WILL_BE_CREATED.GetValue(),sPreferencesOSFile.c_str()) ); + else if( (int)hinst <= 32 ) + Dialog::OK( ssprintf(FAILED_TO_OPEN.GetValue(),sPreferencesOSFile.c_str(),GetLastErrorString().c_str()) ); } void MainMenuDlg::OnBnClickedClearPreferences() { // TODO: Add your control notification handler code here + FlushDirCache(); if( !DoesFileExist(SpecialFiles::PREFERENCES_INI_PATH) ) { Dialog::OK( ssprintf(IS_ALREADY_CLEARED.GetValue(),SpecialFiles::PREFERENCES_INI_PATH.c_str()) ); diff --git a/stepmania/src/smpackage/smpackage.cpp b/stepmania/src/smpackage/smpackage.cpp index 6082b10b88..1a8e6e3e9b 100644 --- a/stepmania/src/smpackage/smpackage.cpp +++ b/stepmania/src/smpackage/smpackage.cpp @@ -118,14 +118,13 @@ BOOL CSmpackageApp::InitInstance() CString sArg = argv[i]; if( sArg == "--machine-profile-stats" ) { - RString sPersonalDir = SpecialDirs::GetMyDocumentsDir(); - RString sFile = sPersonalDir + PRODUCT_ID +"/Save/MachineProfile/Stats.xml"; - HINSTANCE hinst = ::ShellExecute( NULL, "open", sFile, "", "", SW_SHOWNORMAL ); + RString sOSFile = SpecialDirs::GetMyDocumentsDir() + PRODUCT_ID +"/Save/MachineProfile/Stats.xml"; + HINSTANCE hinst = ::ShellExecute( NULL, "open", sOSFile, "", "", SW_SHOWNORMAL ); // See MSDN for an explanation of this return value if( (int)hinst == SE_ERR_FNF ) Dialog::OK( STATS_XML_NOT_YET_CREATED ); else if( (int)hinst <= 32 ) - Dialog::OK( ssprintf(FAILED_TO_OPEN.GetValue(),sFile.c_str(),GetLastErrorString().c_str()) ); + Dialog::OK( ssprintf(FAILED_TO_OPEN.GetValue(),sOSFile.c_str(),GetLastErrorString().c_str()) ); exit(1); // better way to quit? } }