svnno****@sourc*****
svnno****@sourc*****
2015年 11月 9日 (月) 15:50:58 JST
Revision: 6097 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6097 Author: yutakapon Date: 2015-11-09 15:50:58 +0900 (Mon, 09 Nov 2015) Log Message: ----------- チケット #35205 設定フォルダ:改善項目 項番3「VirtualStoreの扱い」に対応した。 Ticket Links: ------------ http://sourceforge.jp/projects/ttssh2/tracker/detail/35205 Modified Paths: -------------- trunk/teraterm/common/tt_res.h trunk/teraterm/teraterm/ttermpro.rc trunk/teraterm/teraterm/vtwin.cpp -------------- next part -------------- Modified: trunk/teraterm/common/tt_res.h =================================================================== --- trunk/teraterm/common/tt_res.h 2015-11-07 18:18:02 UTC (rev 6096) +++ trunk/teraterm/common/tt_res.h 2015-11-09 06:50:58 UTC (rev 6097) @@ -199,6 +199,18 @@ #define IDC_BGIMG_BRIGHTNESS 2551 #define IDC_EDIT2 2552 #define IDC_EDIT_BGIMG_BRIGHTNESS 2552 +#define IDC_INI_SETUPDIR_EDIT_VSTORE 2552 +#define IDC_INI_SETUPDIR_STATIC_VSTORE 2553 +#define IDC_INI_SETUPDIR_GROUP 2554 +#define IDC_KEYCNF_SETUPDIR_STATIC_VSTORE 2555 +#define IDC_KEYCNF_SETUPDIR_EDIT_VSTORE 2556 +#define IDC_KEYCNF_SETUPDIR_GROUP 2557 +#define IDC_CYGTERM_SETUPDIR_GROUP 2558 +#define IDC_CYGTERM_SETUPDIR_STATIC_VSTORE 2559 +#define IDC_CYGTERM_SETUPDIR_EDIT_VSTORE 2560 +#define IDC_SSH_SETUPDIR_GROUP 2561 +#define IDC_SSH_SETUPDIR_STATIC_VSTORE 2562 +#define IDC_SSH_SETUPDIR_EDIT_VSTORE 2563 #define ID_ACC_SENDBREAK 50001 #define ID_ACC_COPY 50002 #define ID_ACC_NEWCONNECTION 50003 @@ -296,7 +308,7 @@ #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 124 #define _APS_NEXT_COMMAND_VALUE 52031 -#define _APS_NEXT_CONTROL_VALUE 2553 +#define _APS_NEXT_CONTROL_VALUE 2564 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif Modified: trunk/teraterm/teraterm/ttermpro.rc =================================================================== --- trunk/teraterm/teraterm/ttermpro.rc 2015-11-07 18:18:02 UTC (rev 6096) +++ trunk/teraterm/teraterm/ttermpro.rc 2015-11-09 06:50:58 UTC (rev 6097) @@ -279,27 +279,39 @@ EDITTEXT IDC_EDIT,5,5,150,112,ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_VSCROLL | WS_HSCROLL END -IDD_SETUP_DIR_DIALOG DIALOGEX 0, 0, 419, 125 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_SETUP_DIR_DIALOG DIALOGEX 0, 0, 429, 211 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Setup directory" FONT 8, "Tahoma", 0, 0, 0x0 BEGIN - LTEXT "Tera Term Configuration File",IDC_INI_SETUPDIR_STATIC,7,15,57,17 + GROUPBOX "",IDC_INI_SETUPDIR_GROUP,7,7,415,46 + LTEXT "Tera Term Configuration File",IDC_INI_SETUPDIR_STATIC,9,15,57,17 EDITTEXT IDC_INI_SETUPDIR_EDIT,73,16,253,14,ES_AUTOHSCROLL | ES_READONLY PUSHBUTTON "...",IDC_INI_SETUPDIR_BUTTON,338,16,26,14 - PUSHBUTTON "File",IDC_INI_SETUPDIR_BUTTON_FILE,372,16,26,14 - LTEXT "Keyboard Configuration File",IDC_KEYCNF_SETUPDIR_STATIC,7,42,61,17 - EDITTEXT IDC_KEYCNF_SETUPDIR_EDIT,73,41,253,14,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "...",IDC_KEYCNF_SETUPDIR_BUTTON,338,41,26,14 - PUSHBUTTON "File",IDC_KEYCNF_SETUPDIR_BUTTON_FILE,372,41,26,14 - LTEXT "CygTerm Configuration File",IDC_CYGTERM_SETUPDIR_STATIC,7,68,60,17 - EDITTEXT IDC_CYGTERM_SETUPDIR_EDIT,73,67,253,14,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "...",IDC_CYGTERM_SETUPDIR_BUTTON,338,67,26,14 - PUSHBUTTON "File",IDC_CYGTERM_SETUPDIR_BUTTON_FILE,372,67,26,14 - LTEXT "Known_hosts File",IDC_SSH_SETUPDIR_STATIC,9,94,54,15 - EDITTEXT IDC_SSH_SETUPDIR_EDIT,73,93,253,14,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "...",IDC_SSH_SETUPDIR_BUTTON,338,93,26,14 - PUSHBUTTON "File",IDC_SSH_SETUPDIR_BUTTON_FILE,372,93,26,14 + PUSHBUTTON "Open File",IDC_INI_SETUPDIR_BUTTON_FILE,372,16,40,14 + LTEXT "Keyboard Configuration File",IDC_KEYCNF_SETUPDIR_STATIC,9,63,61,17 + EDITTEXT IDC_KEYCNF_SETUPDIR_EDIT,73,62,253,14,ES_AUTOHSCROLL | ES_READONLY + PUSHBUTTON "...",IDC_KEYCNF_SETUPDIR_BUTTON,338,62,26,14 + PUSHBUTTON "Open File",IDC_KEYCNF_SETUPDIR_BUTTON_FILE,372,62,40,14 + LTEXT "CygTerm Configuration File",IDC_CYGTERM_SETUPDIR_STATIC,9,110,60,17 + EDITTEXT IDC_CYGTERM_SETUPDIR_EDIT,73,109,253,14,ES_AUTOHSCROLL | ES_READONLY + PUSHBUTTON "...",IDC_CYGTERM_SETUPDIR_BUTTON,338,109,26,14 + PUSHBUTTON "Open File",IDC_CYGTERM_SETUPDIR_BUTTON_FILE,372,109,39,14 + LTEXT "Known_hosts File",IDC_SSH_SETUPDIR_STATIC,11,160,54,15 + EDITTEXT IDC_SSH_SETUPDIR_EDIT,71,159,253,14,ES_AUTOHSCROLL | ES_READONLY + PUSHBUTTON "...",IDC_SSH_SETUPDIR_BUTTON,336,159,26,14 + PUSHBUTTON "Open File",IDC_SSH_SETUPDIR_BUTTON_FILE,370,159,38,14 + EDITTEXT IDC_INI_SETUPDIR_EDIT_VSTORE,123,35,251,14,ES_AUTOHSCROLL | ES_READONLY + LTEXT "Virtual Store",IDC_INI_SETUPDIR_STATIC_VSTORE,75,37,40,8 + LTEXT "Virtual Store",IDC_KEYCNF_SETUPDIR_STATIC_VSTORE,75,83,40,8 + EDITTEXT IDC_KEYCNF_SETUPDIR_EDIT_VSTORE,124,81,251,14,ES_AUTOHSCROLL | ES_READONLY + GROUPBOX "",IDC_KEYCNF_SETUPDIR_GROUP,7,53,415,46 + GROUPBOX "",IDC_CYGTERM_SETUPDIR_GROUP,7,101,415,46 + LTEXT "Virtual Store",IDC_CYGTERM_SETUPDIR_STATIC_VSTORE,75,129,40,8 + EDITTEXT IDC_CYGTERM_SETUPDIR_EDIT_VSTORE,124,127,251,14,ES_AUTOHSCROLL | ES_READONLY + GROUPBOX "",IDC_SSH_SETUPDIR_GROUP,7,151,415,46 + LTEXT "Virtual Store",IDC_SSH_SETUPDIR_STATIC_VSTORE,73,180,40,8 + EDITTEXT IDC_SSH_SETUPDIR_EDIT_VSTORE,123,177,251,14,ES_AUTOHSCROLL | ES_READONLY END @@ -309,7 +321,7 @@ // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO +GUIDELINES DESIGNINFO BEGIN IDD_DAD_DIALOG, DIALOG BEGIN @@ -397,9 +409,9 @@ IDD_SETUP_DIR_DIALOG, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 412 + RIGHTMARGIN, 422 TOPMARGIN, 7 - BOTTOMMARGIN, 118 + BOTTOMMARGIN, 204 END END #endif // APSTUDIO_INVOKED @@ -489,7 +501,7 @@ // Menu // -IDR_MENU MENU +IDR_MENU MENU BEGIN POPUP "&File" BEGIN @@ -603,7 +615,7 @@ END END -IDR_TEKMENU MENU +IDR_TEKMENU MENU BEGIN POPUP "&File" BEGIN @@ -634,7 +646,7 @@ END END -IDR_PASTEMENU MENU +IDR_PASTEMENU MENU BEGIN MENUITEM "&Paste", ID_EDIT_PASTE2 MENUITEM "Paste<C&R>", ID_EDIT_PASTECR @@ -646,7 +658,7 @@ // Accelerator // -IDR_ACC ACCELERATORS +IDR_ACC ACCELERATORS BEGIN "T", ID_ACC_AREYOUTHERE, VIRTKEY, ALT, NOINVERT "C", ID_ACC_COPY, VIRTKEY, ALT, NOINVERT Modified: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2015-11-07 18:18:02 UTC (rev 6096) +++ trunk/teraterm/teraterm/vtwin.cpp 2015-11-09 06:50:58 UTC (rev 6097) @@ -4697,12 +4697,31 @@ // -// Virtual Store\x82\xF0\x8AJ\x82\xAD\x81B +// \x83t\x83H\x83\x8B\x83_\x82\xE0\x82\xB5\x82\xAD\x82̓t\x83@\x83C\x83\x8B\x82\xF0\x8AJ\x82\xAD\x81B // +static void openFileDirectory(char *path, char *filename, BOOL open_directory_only, char *open_editor) +{ + if (open_directory_only) { + openDirectoryWithExplorer(path); + } + else { + openFileWithApplication(path, filename, open_editor); + } +} + + +// +// Virtual Store\x83p\x83X\x82ɕϊ\xB7\x82\xB7\x82\xE9\x81B +// +// path: IN +// filename: IN +// vstore_path: OUT +// vstore_pathlen: IN +// // return TRUE: success // FALSE: failure // -static BOOL openVirtualStore(char *path, char *filename, BOOL open_directory_only, char *open_editor) +static BOOL convertVirtualStore(char *path, char *filename, char *vstore_path, int vstore_pathlen) { #if _MSC_VER == 1400 // VSC2005(VC8.0) typedef struct _TOKEN_ELEVATION { @@ -4735,7 +4754,7 @@ DWORD dwType; BYTE bValue; - OutputDebugPrintf("[%s][%s] open_directory_only %d\n", path, filename, open_directory_only); + OutputDebugPrintf("[%s][%s]\n", path, filename); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); @@ -4811,7 +4830,7 @@ // \x83h\x83\x89\x83C\x83u\x83\x8C\x83^\x81[\x82͈ꕶ\x8E\x9A\x82Ƃ͌\xC0\x82\xE7\x82Ȃ\xA2\x93_\x82ɒ\x8D\x88ӁB s = strstr(path, ":\\"); if (s != NULL) { - strncat_s(shPath, sizeof(shPath), s+1, _TRUNCATE); + strncat_s(shPath, sizeof(shPath), s + 1, _TRUNCATE); } // \x8DŌ\xE3\x82ɁAVirtual Store\x82Ƀt\x83@\x83C\x83\x8B\x82\xAA\x82\xA0\x82邩\x82ǂ\xA4\x82\xA9\x82ׂ\xE9\x81B @@ -4820,43 +4839,33 @@ goto error; } - if (open_directory_only) { - openDirectoryWithExplorer(shPath); - } - else { - openFileWithApplication(shPath, filename, open_editor); - } + strncpy_s(vstore_path, vstore_pathlen, shPath, _TRUNCATE); ret = TRUE; return (ret); error: - if (open_directory_only) { - openDirectoryWithExplorer(path); - } - else { - openFileWithApplication(path, filename, open_editor); - } - return (ret); } + static LRESULT CALLBACK OnSetupDirectoryDlgProc(HWND hDlgWnd, UINT msg, WPARAM wp, LPARAM lp) { static char teratermexepath[MAX_PATH]; - static char inipath[MAX_PATH], inifilename[MAX_PATH]; - static char keycnfpath[MAX_PATH], keycnffilename[MAX_PATH]; - static char cygtermpath[MAX_PATH], cygtermfilename[MAX_PATH]; - static char eterm1path[MAX_PATH], eterm1filename[MAX_PATH]; + static char inipath[MAX_PATH], inifilename[MAX_PATH], inipath_vstore[1024]; + static char keycnfpath[MAX_PATH], keycnffilename[MAX_PATH], keycnfpath_vstore[1024]; + static char cygtermpath[MAX_PATH], cygtermfilename[MAX_PATH], cygtermpath_vstore[1024]; + static char eterm1path[MAX_PATH], eterm1filename[MAX_PATH], eterm1path_vstore[1024]; char temp[MAX_PATH]; typedef int (CALLBACK *PSSH_read_known_hosts_file)(char *, int); PSSH_read_known_hosts_file func = NULL; HMODULE h = NULL; - static char hostsfilepath[MAX_PATH], hostsfilename[MAX_PATH]; + static char hostsfilepath[MAX_PATH], hostsfilename[MAX_PATH], hostsfilepath_vstore[1024]; char *path_p, *filename_p; - BOOL open_dir; + BOOL open_dir, ret; int button_pressed; + HWND hWnd; switch (msg) { case WM_INITDIALOG: @@ -4886,23 +4895,78 @@ } // \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B(teraterm.ini)\x82̃p\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B + /// (1) ExtractFileName(ts.SetupFName, inifilename, sizeof(inifilename)); ExtractDirName(ts.SetupFName, inipath); //SetDlgItemText(hDlgWnd, IDC_INI_SETUPDIR_STATIC, inifilename); SetDlgItemText(hDlgWnd, IDC_INI_SETUPDIR_EDIT, ts.SetupFName); + /// (2) Virutal Store\x82ւ̕ϊ\xB7 + memset(inipath_vstore, 0, sizeof(inipath_vstore)); + ret = convertVirtualStore(inipath, inifilename, inipath_vstore, sizeof(inipath_vstore)); + if (ret) { + hWnd = GetDlgItem(hDlgWnd, IDC_INI_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, TRUE); + hWnd = GetDlgItem(hDlgWnd, IDC_INI_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, TRUE); + SetDlgItemText(hDlgWnd, IDC_INI_SETUPDIR_EDIT_VSTORE, inipath_vstore); + } + else { + hWnd = GetDlgItem(hDlgWnd, IDC_INI_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, FALSE); + hWnd = GetDlgItem(hDlgWnd, IDC_INI_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, FALSE); + SetDlgItemText(hDlgWnd, IDC_INI_SETUPDIR_EDIT_VSTORE, ""); + } // \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B(KEYBOARD.CNF)\x82̃p\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B + /// (1) ExtractFileName(ts.KeyCnfFN, keycnffilename, sizeof(keycnfpath)); ExtractDirName(ts.KeyCnfFN, keycnfpath); //SetDlgItemText(hDlgWnd, IDC_KEYCNF_SETUPDIR_STATIC, keycnffilename); SetDlgItemText(hDlgWnd, IDC_KEYCNF_SETUPDIR_EDIT, ts.KeyCnfFN); + /// (2) Virutal Store\x82ւ̕ϊ\xB7 + memset(keycnfpath_vstore, 0, sizeof(keycnfpath_vstore)); + ret = convertVirtualStore(keycnfpath, keycnffilename, keycnfpath_vstore, sizeof(keycnfpath_vstore)); + if (ret) { + hWnd = GetDlgItem(hDlgWnd, IDC_KEYCNF_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, TRUE); + hWnd = GetDlgItem(hDlgWnd, IDC_KEYCNF_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, TRUE); + SetDlgItemText(hDlgWnd, IDC_KEYCNF_SETUPDIR_EDIT_VSTORE, keycnfpath_vstore); + } + else { + hWnd = GetDlgItem(hDlgWnd, IDC_KEYCNF_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, FALSE); + hWnd = GetDlgItem(hDlgWnd, IDC_KEYCNF_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, FALSE); + SetDlgItemText(hDlgWnd, IDC_KEYCNF_SETUPDIR_EDIT_VSTORE, ""); + } + // cygterm.cfg \x82\xCD ttermpro.exe \x94z\x89\xBA\x82Ɉʒu\x82\xB7\x82\xE9\x81B + /// (1) strncpy_s(cygtermfilename, sizeof(cygtermfilename), "cygterm.cfg", _TRUNCATE); strncpy_s(cygtermpath, sizeof(cygtermpath), teratermexepath, _TRUNCATE); //SetDlgItemText(hDlgWnd, IDC_CYGTERM_SETUPDIR_STATIC, cygtermfilename); _snprintf_s(temp, sizeof(temp), "%s\\%s", cygtermpath, cygtermfilename); SetDlgItemText(hDlgWnd, IDC_CYGTERM_SETUPDIR_EDIT, temp); + /// (2) Virutal Store\x82ւ̕ϊ\xB7 + memset(cygtermpath_vstore, 0, sizeof(cygtermpath_vstore)); + ret = convertVirtualStore(cygtermpath, cygtermfilename, cygtermpath_vstore, sizeof(cygtermpath_vstore)); + if (ret) { + hWnd = GetDlgItem(hDlgWnd, IDC_CYGTERM_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, TRUE); + hWnd = GetDlgItem(hDlgWnd, IDC_CYGTERM_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, TRUE); + SetDlgItemText(hDlgWnd, IDC_CYGTERM_SETUPDIR_EDIT_VSTORE, cygtermpath_vstore); + } + else { + hWnd = GetDlgItem(hDlgWnd, IDC_CYGTERM_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, FALSE); + hWnd = GetDlgItem(hDlgWnd, IDC_CYGTERM_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, FALSE); + SetDlgItemText(hDlgWnd, IDC_CYGTERM_SETUPDIR_EDIT_VSTORE, ""); + } // ssh_known_hosts if (func == NULL) { @@ -4924,6 +4988,25 @@ } SetDlgItemText(hDlgWnd, IDC_SSH_SETUPDIR_EDIT, temp); + + /// (2) Virutal Store\x82ւ̕ϊ\xB7 + memset(hostsfilepath_vstore, 0, sizeof(hostsfilepath_vstore)); + ret = convertVirtualStore(hostsfilepath, hostsfilename, hostsfilepath_vstore, sizeof(hostsfilepath_vstore)); + if (ret) { + hWnd = GetDlgItem(hDlgWnd, IDC_SSH_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, TRUE); + hWnd = GetDlgItem(hDlgWnd, IDC_SSH_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, TRUE); + SetDlgItemText(hDlgWnd, IDC_SSH_SETUPDIR_EDIT_VSTORE, hostsfilepath_vstore); + } + else { + hWnd = GetDlgItem(hDlgWnd, IDC_SSH_SETUPDIR_STATIC_VSTORE); + EnableWindow(hWnd, FALSE); + hWnd = GetDlgItem(hDlgWnd, IDC_SSH_SETUPDIR_EDIT_VSTORE); + EnableWindow(hWnd, FALSE); + SetDlgItemText(hDlgWnd, IDC_SSH_SETUPDIR_EDIT_VSTORE, ""); + } + } } } @@ -4937,12 +5020,16 @@ case IDC_INI_SETUPDIR_BUTTON | (BN_CLICKED << 16) : open_dir = TRUE; path_p = inipath; + if (inipath_vstore[0]) + path_p = inipath_vstore; filename_p = inifilename; button_pressed = 1; break; case IDC_INI_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) : open_dir = FALSE; path_p = inipath; + if (inipath_vstore[0]) + path_p = inipath_vstore; filename_p = inifilename; button_pressed = 1; break; @@ -4950,12 +5037,16 @@ case IDC_KEYCNF_SETUPDIR_BUTTON | (BN_CLICKED << 16) : open_dir = TRUE; path_p = keycnfpath; + if (keycnfpath_vstore[0]) + path_p = keycnfpath_vstore; filename_p = keycnffilename; button_pressed = 1; break; case IDC_KEYCNF_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) : open_dir = FALSE; path_p = keycnfpath; + if (keycnfpath_vstore[0]) + path_p = keycnfpath_vstore; filename_p = keycnffilename; button_pressed = 1; break; @@ -4963,12 +5054,16 @@ case IDC_CYGTERM_SETUPDIR_BUTTON | (BN_CLICKED << 16) : open_dir = TRUE; path_p = cygtermpath; + if (cygtermpath_vstore[0]) + path_p = cygtermpath_vstore; filename_p = cygtermfilename; button_pressed = 1; break; case IDC_CYGTERM_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) : open_dir = FALSE; path_p = cygtermpath; + if (cygtermpath_vstore[0]) + path_p = cygtermpath_vstore; filename_p = cygtermfilename; button_pressed = 1; break; @@ -4976,12 +5071,16 @@ case IDC_SSH_SETUPDIR_BUTTON | (BN_CLICKED << 16) : open_dir = TRUE; path_p = hostsfilepath; + if (hostsfilepath_vstore[0]) + path_p = hostsfilepath_vstore; filename_p = hostsfilename; button_pressed = 1; break; case IDC_SSH_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) : open_dir = FALSE; path_p = hostsfilepath; + if (hostsfilepath_vstore[0]) + path_p = hostsfilepath_vstore; filename_p = hostsfilename; button_pressed = 1; break; @@ -5002,7 +5101,7 @@ else app = ts.ViewlogEditor; - openVirtualStore(path_p, filename_p, open_dir, app); + openFileDirectory(path_p, filename_p, open_dir, app); return TRUE; }