diff --git a/sakura_core/config/system_constants.h b/sakura_core/config/system_constants.h index e9bedb5ac9..82540e35a4 100644 --- a/sakura_core/config/system_constants.h +++ b/sakura_core/config/system_constants.h @@ -550,12 +550,15 @@ Version 177: WriteQuit廃止に伴い未使用となった IniFolder のメンバを削除した為、DLLSHAREDATA のメモリレイアウトを変更 + Version 178: + 各履歴のお気に入り + -- 統合されたので元に戻す(1000~1023が使用済み) 2008.11.16 nasukoji -- Version 1000: -- バージョン1000以降を本家統合までの間、使わせてください。かなり頻繁に構成が変更されると思われるので。by kobake 2008.03.02 */ -constexpr unsigned N_SHAREDATA_VERSION = 177; +constexpr unsigned N_SHAREDATA_VERSION = 178; #define STR_SHAREDATA_VERSION NUM_TO_STR(N_SHAREDATA_VERSION) #define GSTR_SHAREDATA (L"SakuraShareData" _T(CON_SKR_MACHINE_SUFFIX_) _T(_CODE_SUFFIX_) _T(_DEBUG_SUFFIX_) _T(STR_SHAREDATA_VERSION)) diff --git a/sakura_core/dlg/CDlgFavorite.cpp b/sakura_core/dlg/CDlgFavorite.cpp index 29d494fb3b..c35e0a6e73 100644 --- a/sakura_core/dlg/CDlgFavorite.cpp +++ b/sakura_core/dlg/CDlgFavorite.cpp @@ -156,7 +156,7 @@ CDlgFavorite::CDlgFavorite() m_aFavoriteInfo[i].m_strCaption = LS( STR_DLGFAV_SEARCH ); m_aFavoriteInfo[i].m_pszCaption = m_aFavoriteInfo[i].m_strCaption.c_str(); m_aFavoriteInfo[i].m_nId = IDC_LIST_FAVORITE_SEARCH; - m_aFavoriteInfo[i].m_bHaveFavorite = false; + m_aFavoriteInfo[i].m_bHaveFavorite = true; m_aFavoriteInfo[i].m_bFilePath = false; m_aFavoriteInfo[i].m_bHaveView = false; m_aFavoriteInfo[i].m_bEditable = true; @@ -167,7 +167,7 @@ CDlgFavorite::CDlgFavorite() m_aFavoriteInfo[i].m_strCaption = LS( STR_DLGFAV_REPLACE ); m_aFavoriteInfo[i].m_pszCaption = m_aFavoriteInfo[i].m_strCaption.c_str(); m_aFavoriteInfo[i].m_nId = IDC_LIST_FAVORITE_REPLACE; - m_aFavoriteInfo[i].m_bHaveFavorite = false; + m_aFavoriteInfo[i].m_bHaveFavorite = true; m_aFavoriteInfo[i].m_bFilePath = false; m_aFavoriteInfo[i].m_bHaveView = false; m_aFavoriteInfo[i].m_bEditable = true; @@ -178,7 +178,7 @@ CDlgFavorite::CDlgFavorite() m_aFavoriteInfo[i].m_strCaption = LS( STR_DLGFAV_GREP_FILE ); m_aFavoriteInfo[i].m_pszCaption = m_aFavoriteInfo[i].m_strCaption.c_str(); m_aFavoriteInfo[i].m_nId = IDC_LIST_FAVORITE_GREP_FILE; - m_aFavoriteInfo[i].m_bHaveFavorite = false; + m_aFavoriteInfo[i].m_bHaveFavorite = true; m_aFavoriteInfo[i].m_bFilePath = false; m_aFavoriteInfo[i].m_bHaveView = false; m_aFavoriteInfo[i].m_bEditable = true; @@ -189,7 +189,7 @@ CDlgFavorite::CDlgFavorite() m_aFavoriteInfo[i].m_strCaption = LS( STR_DLGFAV_GREP_FOLDER ); m_aFavoriteInfo[i].m_pszCaption = m_aFavoriteInfo[i].m_strCaption.c_str(); m_aFavoriteInfo[i].m_nId = IDC_LIST_FAVORITE_GREP_FOLDER; - m_aFavoriteInfo[i].m_bHaveFavorite = false; + m_aFavoriteInfo[i].m_bHaveFavorite = true; m_aFavoriteInfo[i].m_bFilePath = true; m_aFavoriteInfo[i].m_bHaveView = false; m_aFavoriteInfo[i].m_bEditable = false; @@ -200,7 +200,7 @@ CDlgFavorite::CDlgFavorite() m_aFavoriteInfo[i].m_strCaption = LS( STR_DLGFAV_EXT_COMMAND ); m_aFavoriteInfo[i].m_pszCaption = m_aFavoriteInfo[i].m_strCaption.c_str(); m_aFavoriteInfo[i].m_nId = IDC_LIST_FAVORITE_CMD; - m_aFavoriteInfo[i].m_bHaveFavorite = false; + m_aFavoriteInfo[i].m_bHaveFavorite = true; m_aFavoriteInfo[i].m_bFilePath = false; m_aFavoriteInfo[i].m_bHaveView = false; m_aFavoriteInfo[i].m_bEditable = true; @@ -211,7 +211,7 @@ CDlgFavorite::CDlgFavorite() m_aFavoriteInfo[i].m_strCaption = LS( STR_DLGFAV_CURRENT_DIR ); m_aFavoriteInfo[i].m_pszCaption = m_aFavoriteInfo[i].m_strCaption.c_str(); m_aFavoriteInfo[i].m_nId = IDC_LIST_FAVORITE_CUR_DIR; - m_aFavoriteInfo[i].m_bHaveFavorite = false; + m_aFavoriteInfo[i].m_bHaveFavorite = true; m_aFavoriteInfo[i].m_bFilePath = true; m_aFavoriteInfo[i].m_bHaveView = false; m_aFavoriteInfo[i].m_bEditable = false; diff --git a/sakura_core/env/CSearchKeywordManager.h b/sakura_core/env/CSearchKeywordManager.h index 61c4a63a19..d1ce833036 100644 --- a/sakura_core/env/CSearchKeywordManager.h +++ b/sakura_core/env/CSearchKeywordManager.h @@ -39,6 +39,11 @@ struct SShare_SearchKeywords{ StaticVector< StaticString, MAX_GREPFOLDER, const WCHAR*> m_aGrepFolders; StaticVector< StaticString, MAX_EXCLUDEFILE, const WCHAR*> m_aExcludeFiles; StaticVector< StaticString, MAX_EXCLUDEFOLDER, const WCHAR*> m_aExcludeFolders; + + bool m_aSearchKeysFav[MAX_SEARCHKEY]; + bool m_aReplaceKeysFav[MAX_REPLACEKEY]; + bool m_aGrepFilesFav[MAX_GREPFILE]; + bool m_aGrepFoldersFav[MAX_GREPFOLDER]; }; struct DLLSHAREDATA; diff --git a/sakura_core/env/CShareData.cpp b/sakura_core/env/CShareData.cpp index 1f2b108747..c2ce721932 100644 --- a/sakura_core/env/CShareData.cpp +++ b/sakura_core/env/CShareData.cpp @@ -95,6 +95,13 @@ CMutex& CShareData::GetMutexShareWork(){ return g_cMutexShareWork; } +static void ClearFavorite(bool* aBoolArr, size_t size) +{ + for(size_t i = 0; i < size; i++){ + aBoolArr[i] = false; + } +} + //! CShareDataクラスの初期化処理 /*! CShareDataクラスを利用する前に必ず呼び出すこと。 @@ -694,11 +701,16 @@ bool CShareData::InitShareData() } { + SShare_SearchKeywords& sKeys = m_pShareData->m_sSearchKeywords; m_pShareData->m_sSearchKeywords.m_aSearchKeys.clear(); m_pShareData->m_sSearchKeywords.m_aReplaceKeys.clear(); m_pShareData->m_sSearchKeywords.m_aGrepFiles.clear(); m_pShareData->m_sSearchKeywords.m_aGrepFiles.push_back(L"*.*"); m_pShareData->m_sSearchKeywords.m_aGrepFolders.clear(); + ClearFavorite(sKeys.m_aSearchKeysFav, _countof(sKeys.m_aSearchKeysFav)); + ClearFavorite(sKeys.m_aReplaceKeysFav, _countof(sKeys.m_aReplaceKeysFav)); + ClearFavorite(sKeys.m_aGrepFilesFav, _countof(sKeys.m_aGrepFilesFav)); + ClearFavorite(sKeys.m_aGrepFoldersFav, _countof(sKeys.m_aGrepFoldersFav)); // 2004/06/21 novice タグジャンプ機能追加 m_pShareData->m_sTagJump.m_TagJumpNum = 0; @@ -714,8 +726,11 @@ bool CShareData::InitShareData() wcscpy( m_pShareData->m_sHistory.m_szIMPORTFOLDER, szIniFolder ); /* 設定インポート用フォルダ */ + SShare_History& sHis = m_pShareData->m_sHistory; m_pShareData->m_sHistory.m_aCommands.clear(); m_pShareData->m_sHistory.m_aCurDirs.clear(); + ClearFavorite(sHis.m_aCommandsFav, _countof(sHis.m_aCommandsFav)); + ClearFavorite(sHis.m_aCurDirsFav, _countof(sHis.m_aCurDirsFav)); m_pShareData->m_nExecFlgOpt = 1; /* 外部コマンド実行の「標準出力を得る」 */ // 2006.12.03 maru オプションの拡張のため diff --git a/sakura_core/env/CShareData_IO.cpp b/sakura_core/env/CShareData_IO.cpp index 8f82c94e77..6d6966faef 100644 --- a/sakura_core/env/CShareData_IO.cpp +++ b/sakura_core/env/CShareData_IO.cpp @@ -311,6 +311,10 @@ void CShareData_IO::ShareData_IO_Keys( CDataProfile& cProfile ) for( i = 0; i < nSize; ++i ){ auto_sprintf( szKeyName, LTEXT("SEARCHKEY[%02d]"), i ); cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aSearchKeys[i] ); + if( cProfile.IsReadingMode() || pShare->m_sSearchKeywords.m_aSearchKeysFav[i] ){ + auto_sprintf( szKeyName, LTEXT("SEARCHKEY[%02d].Fav"), i ); + cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aSearchKeysFav[i] ); + } } cProfile.IOProfileData( pszSecName, LTEXT("_REPLACEKEY_Counts"), pShare->m_sSearchKeywords.m_aReplaceKeys._GetSizeRef() ); @@ -319,6 +323,10 @@ void CShareData_IO::ShareData_IO_Keys( CDataProfile& cProfile ) for( i = 0; i < nSize; ++i ){ auto_sprintf( szKeyName, LTEXT("REPLACEKEY[%02d]"), i ); cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aReplaceKeys[i] ); + if( cProfile.IsReadingMode() || pShare->m_sSearchKeywords.m_aReplaceKeysFav[i] ){ + auto_sprintf( szKeyName, LTEXT("REPLACEKEY[%02d].Fav"), i ); + cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aReplaceKeysFav[i] ); + } } } @@ -343,6 +351,10 @@ void CShareData_IO::ShareData_IO_Grep( CDataProfile& cProfile ) for( i = 0; i < nSize; ++i ){ auto_sprintf( szKeyName, LTEXT("GREPFILE[%02d]"), i ); cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aGrepFiles[i] ); + if( cProfile.IsReadingMode() || pShare->m_sSearchKeywords.m_aGrepFilesFav[i] ){ + auto_sprintf( szKeyName, LTEXT("GREPFILE[%02d].Fav"), i ); + cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aGrepFilesFav[i] ); + } } cProfile.IOProfileData( pszSecName, LTEXT("_GREPFOLDER_Counts"), pShare->m_sSearchKeywords.m_aGrepFolders._GetSizeRef() ); @@ -351,6 +363,10 @@ void CShareData_IO::ShareData_IO_Grep( CDataProfile& cProfile ) for( i = 0; i < nSize; ++i ){ auto_sprintf( szKeyName, LTEXT("GREPFOLDER[%02d]"), i ); cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aGrepFolders[i] ); + if( cProfile.IsReadingMode() || pShare->m_sSearchKeywords.m_aGrepFoldersFav[i] ){ + auto_sprintf( szKeyName, LTEXT("GREPFOLDER[%02d].Fav"), i ); + cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sSearchKeywords.m_aGrepFoldersFav[i] ); + } } /* 除外ファイルパターン */ @@ -409,6 +425,10 @@ void CShareData_IO::ShareData_IO_Cmd( CDataProfile& cProfile ) for( i = 0; i < nSize; ++i ){ auto_sprintf( szKeyName, LTEXT("szCmdArr[%02d]"), i ); cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sHistory.m_aCommands[i] ); + if( cProfile.IsReadingMode() || pShare->m_sHistory.m_aCommandsFav[i] ){ + auto_sprintf( szKeyName, LTEXT("szCmdArr[%02d].Fav"), i ); + cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sHistory.m_aCommandsFav[i] ); + } } cProfile.IOProfileData( pszSecName, LTEXT("nCurDirArrNum"), pShare->m_sHistory.m_aCurDirs._GetSizeRef() ); @@ -417,6 +437,10 @@ void CShareData_IO::ShareData_IO_Cmd( CDataProfile& cProfile ) for( i = 0; i < nSize; ++i ){ auto_sprintf( szKeyName, LTEXT("szCurDirArr[%02d]"), i ); cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sHistory.m_aCurDirs[i] ); + if( cProfile.IsReadingMode() || pShare->m_sHistory.m_aCurDirsFav[i] ){ + auto_sprintf( szKeyName, LTEXT("szCurDirArr[%02d].Fav"), i ); + cProfile.IOProfileData( pszSecName, szKeyName, pShare->m_sHistory.m_aCurDirsFav[i] ); + } } } diff --git a/sakura_core/recent/CRecentCmd.cpp b/sakura_core/recent/CRecentCmd.cpp index 504bc45edc..f30621261f 100644 --- a/sakura_core/recent/CRecentCmd.cpp +++ b/sakura_core/recent/CRecentCmd.cpp @@ -40,7 +40,7 @@ CRecentCmd::CRecentCmd() GetShareData()->m_sHistory.m_aCommands.dataPtr(), GetShareData()->m_sHistory.m_aCommands.dataPtr()->GetBufferCount(), &GetShareData()->m_sHistory.m_aCommands._GetSizeRef(), - NULL, + GetShareData()->m_sHistory.m_aCommandsFav, MAX_CMDARR, NULL ); diff --git a/sakura_core/recent/CRecentCurDir.cpp b/sakura_core/recent/CRecentCurDir.cpp index 298b233c3b..dd585874dc 100644 --- a/sakura_core/recent/CRecentCurDir.cpp +++ b/sakura_core/recent/CRecentCurDir.cpp @@ -40,7 +40,7 @@ CRecentCurDir::CRecentCurDir() GetShareData()->m_sHistory.m_aCurDirs.dataPtr(), GetShareData()->m_sHistory.m_aCurDirs.dataPtr()->GetBufferCount(), &GetShareData()->m_sHistory.m_aCurDirs._GetSizeRef(), - NULL, + GetShareData()->m_sHistory.m_aCurDirsFav, MAX_CMDARR, NULL ); diff --git a/sakura_core/recent/CRecentGrepFile.cpp b/sakura_core/recent/CRecentGrepFile.cpp index b52447559a..8bc07b2d23 100644 --- a/sakura_core/recent/CRecentGrepFile.cpp +++ b/sakura_core/recent/CRecentGrepFile.cpp @@ -39,7 +39,7 @@ CRecentGrepFile::CRecentGrepFile() GetShareData()->m_sSearchKeywords.m_aGrepFiles.dataPtr(), GetShareData()->m_sSearchKeywords.m_aGrepFiles.dataPtr()->GetBufferCount(), &GetShareData()->m_sSearchKeywords.m_aGrepFiles._GetSizeRef(), - NULL, + GetShareData()->m_sSearchKeywords.m_aGrepFilesFav, MAX_GREPFILE, NULL ); diff --git a/sakura_core/recent/CRecentGrepFolder.cpp b/sakura_core/recent/CRecentGrepFolder.cpp index 3ca6fdc157..6a1cbf22de 100644 --- a/sakura_core/recent/CRecentGrepFolder.cpp +++ b/sakura_core/recent/CRecentGrepFolder.cpp @@ -39,7 +39,7 @@ CRecentGrepFolder::CRecentGrepFolder() GetShareData()->m_sSearchKeywords.m_aGrepFolders.dataPtr(), GetShareData()->m_sSearchKeywords.m_aGrepFolders.dataPtr()->GetBufferCount(), &GetShareData()->m_sSearchKeywords.m_aGrepFolders._GetSizeRef(), - NULL, + GetShareData()->m_sSearchKeywords.m_aGrepFoldersFav, MAX_GREPFOLDER, NULL ); diff --git a/sakura_core/recent/CRecentReplace.cpp b/sakura_core/recent/CRecentReplace.cpp index 8c682704f2..147f4a45bf 100644 --- a/sakura_core/recent/CRecentReplace.cpp +++ b/sakura_core/recent/CRecentReplace.cpp @@ -39,7 +39,7 @@ CRecentReplace::CRecentReplace() GetShareData()->m_sSearchKeywords.m_aReplaceKeys.dataPtr(), GetShareData()->m_sSearchKeywords.m_aReplaceKeys.dataPtr()->GetBufferCount(), &GetShareData()->m_sSearchKeywords.m_aReplaceKeys._GetSizeRef(), - NULL, + GetShareData()->m_sSearchKeywords.m_aReplaceKeysFav, MAX_REPLACEKEY, NULL ); diff --git a/sakura_core/recent/CRecentSearch.cpp b/sakura_core/recent/CRecentSearch.cpp index 4036ec03ec..e0ca3d33f2 100644 --- a/sakura_core/recent/CRecentSearch.cpp +++ b/sakura_core/recent/CRecentSearch.cpp @@ -40,7 +40,7 @@ CRecentSearch::CRecentSearch() GetShareData()->m_sSearchKeywords.m_aSearchKeys.dataPtr(), GetShareData()->m_sSearchKeywords.m_aSearchKeys.dataPtr()->GetBufferCount(), &GetShareData()->m_sSearchKeywords.m_aSearchKeys._GetSizeRef(), - NULL, + GetShareData()->m_sSearchKeywords.m_aSearchKeysFav, MAX_SEARCHKEY, NULL ); diff --git a/sakura_core/recent/SShare_History.h b/sakura_core/recent/SShare_History.h index a4ade260d8..b0255aabd5 100644 --- a/sakura_core/recent/SShare_History.h +++ b/sakura_core/recent/SShare_History.h @@ -47,7 +47,10 @@ struct SShare_History{ //MRU以外の情報 SFilePath m_szIMPORTFOLDER; // インポートディレクトリの履歴 StaticVector< StaticString, MAX_CMDARR > m_aCommands; // 外部コマンド実行履歴 + bool m_aCommandsFav[MAX_CMDARR]; //!< 外部コマンド実行お気に入り StaticVector< StaticString, MAX_CMDARR > m_aCurDirs; // カレントディレクトリ履歴 + bool m_aCurDirsFav[MAX_CMDARR]; //!< カレントディレクトリお気に入り + }; #endif /* SAKURA_SSHARE_HISTORY_9F7E6200_FEE2_4CAC_A5D3_32EEC4130CFC_H_ */