void XmlView::DoDir() { if(!files.IsCursor()) return; const FileList::File& f = files.Get(files.GetCursor()); if(!f.isdir) return; if(f.name == "..") { String n = DirectoryUp(dir); LoadDir(dir); files.FindSetCursor(n); } else LoadDir(AppendFileName(dir, f.name)); }
BOOL CDlgGrep::OnBnClicked( int wID ) { switch( wID ){ case IDC_BUTTON_HELP: /* 「Grep」のヘルプ */ //Stonee, 2001/03/12 第四引数を、機能番号からヘルプトピック番号を調べるようにした MyWinHelp( GetHwnd(), HELP_CONTEXT, ::FuncID_To_HelpContextID(F_GREP_DIALOG) ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; case IDC_CHK_FROMTHISTEXT: /* この編集中のテキストから検索する */ // 2010.05.30 関数化 SetDataFromThisText( 0 != ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_FROMTHISTEXT ) ); return TRUE; case IDC_BUTTON_CURRENTFOLDER: /* 現在編集中のファイルのフォルダ */ /* ファイルを開いているか */ if( m_szCurrentFilePath[0] != _T('\0') ){ TCHAR szWorkFolder[MAX_PATH]; TCHAR szWorkFile[MAX_PATH]; SplitPath_FolderAndFile( m_szCurrentFilePath, szWorkFolder, szWorkFile ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); } else{ /* 現在のプロセスのカレントディレクトリを取得します */ TCHAR szWorkFolder[MAX_PATH]; ::GetCurrentDirectory( _countof( szWorkFolder ) - 1, szWorkFolder ); SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szWorkFolder ); } return TRUE; case IDC_BUTTON_FOLDER_UP: { HWND hwnd = GetItemHwnd( IDC_COMBO_FOLDER ); TCHAR szFolder[_MAX_PATH]; ::GetWindowText( hwnd, szFolder, _countof(szFolder) ); std::vector<std::tstring> vPaths; CGrepAgent::CreateFolders( szFolder, vPaths ); if( 0 < vPaths.size() ){ // 最後のパスが操作対象 auto_strncpy( szFolder, vPaths.rbegin()->c_str(), _MAX_PATH ); szFolder[_MAX_PATH-1] = _T('\0'); if( DirectoryUp( szFolder ) ){ *(vPaths.rbegin()) = szFolder; szFolder[0] = _T('\0'); for( int i = 0 ; i < (int)vPaths.size(); i++ ){ TCHAR szFolderItem[_MAX_PATH]; auto_strncpy( szFolderItem, vPaths[i].c_str(), _MAX_PATH ); szFolderItem[_MAX_PATH-1] = _T('\0'); if( auto_strchr( szFolderItem, _T(';') ) ){ szFolderItem[0] = _T('"'); auto_strncpy( szFolderItem + 1, vPaths[i].c_str(), _MAX_PATH - 1 ); szFolderItem[_MAX_PATH-1] = _T('\0'); auto_strcat( szFolderItem, _T("\"") ); szFolderItem[_MAX_PATH-1] = _T('\0'); } if( i ){ auto_strcat( szFolder, _T(";") ); szFolder[_MAX_PATH-1] = _T('\0'); } auto_strcat_s( szFolder, _MAX_PATH, szFolderItem ); } ::SetWindowText( hwnd, szFolder ); } } } return TRUE; // case IDC_CHK_LOHICASE: /* 英大文字と英小文字を区別する */ // MYTRACE( _T("IDC_CHK_LOHICASE\n") ); // return TRUE; case IDC_CHK_REGULAREXP: /* 正規表現 */ // MYTRACE( _T("IDC_CHK_REGULAREXP ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) = %d\n"), ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) ); if( ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_REGULAREXP ) ){ // From Here Jun. 26, 2001 genta // 正規表現ライブラリの差し替えに伴う処理の見直し if( !CheckRegexpVersion( GetHwnd(), IDC_STATIC_JRE32VER, true ) ){ ::CheckDlgButton( GetHwnd(), IDC_CHK_REGULAREXP, 0 ); }else{ // To Here Jun. 26, 2001 genta /* 英大文字と英小文字を区別する */ // 正規表現のときも選択できるように。 // ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, 1 ); // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_LOHICASE ), FALSE ); //2001/06/23 N.Nakatani /* 単語単位で検索 */ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ), FALSE ); } }else{ /* 英大文字と英小文字を区別する */ // 正規表現のときも選択できるように。 // ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_LOHICASE ), TRUE ); // ::CheckDlgButton( GetHwnd(), IDC_CHK_LOHICASE, 0 ); //2001/06/23 N.Nakatani //単語単位のgrepが実装されたらコメントを外すと思います //2002/03/07実装してみた。 /* 単語単位で検索 */ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHK_WORD ), TRUE ); } return TRUE; case IDC_BUTTON_FOLDER: /* フォルダ参照ボタン */ { TCHAR szFolder[MAX_PATH]; /* 検索フォルダ */ ::DlgItem_GetText( GetHwnd(), IDC_COMBO_FOLDER, szFolder, _MAX_PATH - 1 ); if( szFolder[0] == _T('\0') ){ ::GetCurrentDirectory( _countof( szFolder ), szFolder ); } if( SelectDir( GetHwnd(), LS(STR_DLGGREP1), szFolder, szFolder ) ){ SetGrepFolder( GetItemHwnd(IDC_COMBO_FOLDER), szFolder ); } } return TRUE; case IDC_CHECK_CP: { if( IsDlgButtonChecked( GetHwnd(), IDC_CHECK_CP ) ){ ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_CP ), FALSE ); HWND combo = ::GetDlgItem( GetHwnd(), IDC_COMBO_CHARSET ); CCodePage::AddComboCodePages(GetHwnd(), combo, -1); } } return TRUE; case IDC_CHK_DEFAULTFOLDER: /* フォルダの初期値をカレントフォルダにする */ { m_pShareData->m_Common.m_sSearch.m_bGrepDefaultFolder = ::IsDlgButtonChecked( GetHwnd(), IDC_CHK_DEFAULTFOLDER ); } return TRUE; case IDC_RADIO_OUTPUTSTYLE3: { ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), FALSE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),FALSE ); } break; case IDC_RADIO_OUTPUTSTYLE1: case IDC_RADIO_OUTPUTSTYLE2: { ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_BASE_PATH ), TRUE ); ::EnableWindow( ::GetDlgItem( GetHwnd(), IDC_CHECK_SEP_FOLDER ),TRUE ); } break; case IDOK: /* ダイアログデータの取得 */ if( GetData() ){ // ::EndDialog( hwndDlg, TRUE ); CloseDialog( TRUE ); } return TRUE; case IDCANCEL: // ::EndDialog( hwndDlg, FALSE ); CloseDialog( FALSE ); return TRUE; } /* 基底クラスメンバ */ return CDialog::OnBnClicked( wID ); }