[Ttssh2-commit] [5947] チケット #35205 設定フォルダ:改善項目

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2015年 8月 17日 (月) 21:01:21 JST


Revision: 5947
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5947
Author:   yutakapon
Date:     2015-08-17 21:01:21 +0900 (Mon, 17 Aug 2015)
Log Message:
-----------
チケット #35205 設定フォルダ:改善項目

ファイルとフォルダのいずれかを開けるように、ファイル用のボタンを追加した。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/35205

Modified Paths:
--------------
    trunk/installer/release/lang/English.lng
    trunk/installer/release/lang/French.lng
    trunk/installer/release/lang/German.lng
    trunk/installer/release/lang/Japanese.lng
    trunk/installer/release/lang/Korean.lng
    trunk/installer/release/lang/Russian.lng
    trunk/installer/release/lang/Simplified Chinese.lng
    trunk/installer/release/lang/Traditional Chinese.lng
    trunk/teraterm/common/tt_res.h
    trunk/teraterm/teraterm/ttermpro.rc
    trunk/teraterm/teraterm/vtwin.cpp

-------------- next part --------------
Modified: trunk/installer/release/lang/English.lng
===================================================================
--- trunk/installer/release/lang/English.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/English.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -269,6 +269,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=Cannot use winsock

Modified: trunk/installer/release/lang/French.lng
===================================================================
--- trunk/installer/release/lang/French.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/French.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -270,6 +270,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=Impossible d'utiliser winsock

Modified: trunk/installer/release/lang/German.lng
===================================================================
--- trunk/installer/release/lang/German.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/German.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -270,6 +270,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=Kann Winsock nicht verwenden

Modified: trunk/installer/release/lang/Japanese.lng
===================================================================
--- trunk/installer/release/lang/Japanese.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/Japanese.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -269,6 +269,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=\x83L\x81[\x83{\x81[\x83h\x90ݒ\xE8\x83t\x83@\x83C\x83\x8B
 DLG_SETUPDIR_CYGTERMFILE=CygTerm\x90ݒ\xE8\x83t\x83@\x83C\x83\x8B
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts\x83t\x83@\x83C\x83\x8B
+DLG_SETUPDIR_NOFILE_ERROR=\x83t\x83@\x83C\x83\x8B\x82\xAA\x91\xB6\x8D݂\xB5\x82܂\xB9\x82\xF1(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=\x83t\x83@\x83C\x83\x8B\x82\xAA\x8AJ\x82\xAF\x82܂\xB9\x82\xF1(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=Winsock \x82\xAA\x8Eg\x82\xA6\x82܂\xB9\x82\xF1

Modified: trunk/installer/release/lang/Korean.lng
===================================================================
--- trunk/installer/release/lang/Korean.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/Korean.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -270,6 +270,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=\xC0\xA9\xBC\xD3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4ϴ\xD9

Modified: trunk/installer/release/lang/Russian.lng
===================================================================
--- trunk/installer/release/lang/Russian.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/Russian.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -270,6 +270,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=\xCD\xE5 \xF3\xE4\xE0\xE5\xF2\xF1\xFF \xE8\xF1\xEF\xEE\xEB\xFC\xE7\xEE\xE2\xE0\xF2\xFC winsock

Modified: trunk/installer/release/lang/Simplified Chinese.lng
===================================================================
--- trunk/installer/release/lang/Simplified Chinese.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/Simplified Chinese.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -270,6 +270,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=\xCE޷\xA8ʹ\xD3\xC3 Winsock

Modified: trunk/installer/release/lang/Traditional Chinese.lng
===================================================================
--- trunk/installer/release/lang/Traditional Chinese.lng	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/installer/release/lang/Traditional Chinese.lng	2015-08-17 12:01:21 UTC (rev 5947)
@@ -270,6 +270,8 @@
 DLG_SETUPDIR_KEYBOARDFILE=Keyboard Configuration File
 DLG_SETUPDIR_CYGTERMFILE=CygTerm Configuration File
 DLG_SETUPDIR_KNOWNHOSTSFILE=Known_hosts File
+DLG_SETUPDIR_NOFILE_ERROR=File does not exist.(%d)
+DLG_SETUPDIR_OPENFILE_ERROR=Cannot open file.(%d)
 
 ; commonlib.c
 MSG_WINSOCK_ERROR=\xB5L\xAAk\xA8ϥ\xCE Winsock

Modified: trunk/teraterm/common/tt_res.h
===================================================================
--- trunk/teraterm/common/tt_res.h	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/teraterm/common/tt_res.h	2015-08-17 12:01:21 UTC (rev 5947)
@@ -191,6 +191,11 @@
 #define IDC_KEYCNF_SETUPDIR_STATIC      2542
 #define IDC_CYGTERM_SETUPDIR_STATIC     2543
 #define IDC_SSH_SETUPDIR_STATIC         2547
+#define IDC_INI_SETUPDIR_BUTTON_FILE    2548
+#define IDC_KEYCNF_SETUPDIR_BUTTON_FILE 2549
+#define IDC_CYGTERM_SETUPDIR_BUTTON_FILE 2550
+#define IDC_CYGTERM_SETUPDIR_BUTTON_FILE2 2551
+#define IDC_SSH_SETUPDIR_BUTTON_FILE    2551
 #define ID_ACC_SENDBREAK                50001
 #define ID_ACC_COPY                     50002
 #define ID_ACC_NEWCONNECTION            50003
@@ -288,7 +293,7 @@
 #define _APS_NO_MFC                     1
 #define _APS_NEXT_RESOURCE_VALUE        124
 #define _APS_NEXT_COMMAND_VALUE         52031
-#define _APS_NEXT_CONTROL_VALUE         2548
+#define _APS_NEXT_CONTROL_VALUE         2550
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Modified: trunk/teraterm/teraterm/ttermpro.rc
===================================================================
--- trunk/teraterm/teraterm/ttermpro.rc	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/teraterm/teraterm/ttermpro.rc	2015-08-17 12:01:21 UTC (rev 5947)
@@ -32,15 +32,19 @@
     LTEXT           "Tera Term Configuration File",IDC_INI_SETUPDIR_STATIC,7,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
 END
 
 

Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2015-08-17 05:23:19 UTC (rev 5946)
+++ trunk/teraterm/teraterm/vtwin.cpp	2015-08-17 12:01:21 UTC (rev 5947)
@@ -4560,6 +4560,59 @@
 
 
 //
+// \x8Ew\x92肵\x82\xBD\x83A\x83v\x83\x8A\x83P\x81[\x83V\x83\x87\x83\x93\x82Ńt\x83@\x83C\x83\x8B\x82\xF0\x8AJ\x82\xAD\x81B
+//
+// return TRUE: success
+//        FALSE: failure
+//
+static BOOL openFileWithApplication(char *pathname, char *filename, char *editor)
+{
+	char command[1024]; 
+	char fullpath[1024];
+	STARTUPINFO si;
+	PROCESS_INFORMATION pi;
+	BOOL ret = FALSE;
+	char buf[80];
+	char uimsg[MAX_UIMSG];
+
+	SetLastError(NO_ERROR);
+
+	_snprintf_s(fullpath, sizeof(fullpath), "%s\\%s", pathname, filename);
+	if (_access(fullpath, 0) != 0) { // \x83t\x83@\x83C\x83\x8B\x82\xAA\x91\xB6\x8D݂\xB5\x82Ȃ\xA2
+		DWORD no = GetLastError();
+		get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
+		get_lang_msg("DLG_SETUPDIR_NOFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
+			"File does not exist.(%d)", ts.UILanguageFile);
+		_snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, no);
+		::MessageBox(NULL, buf, uimsg, MB_OK | MB_ICONWARNING);
+		goto error;
+	}
+
+	_snprintf_s(command, sizeof(command), _TRUNCATE, "%s \"%s\"", editor, fullpath);
+
+	memset(&si, 0, sizeof(si));
+	GetStartupInfo(&si);
+	memset(&pi, 0, sizeof(pi));
+
+	if (CreateProcess(NULL, command, NULL, NULL, FALSE, 0,
+		NULL, NULL, &si, &pi) == 0) { // \x8BN\x93\xAE\x8E\xB8\x94s
+		DWORD no = GetLastError();
+		get_lang_msg("MSG_ERROR", uimsg, sizeof(uimsg), "ERROR", ts.UILanguageFile);
+		get_lang_msg("DLG_SETUPDIR_OPENFILE_ERROR", ts.UIMsg, sizeof(ts.UIMsg),
+			"Cannot open file.(%d)", ts.UILanguageFile);
+		_snprintf_s(buf, sizeof(buf), _TRUNCATE, ts.UIMsg, no);
+		::MessageBox(NULL, buf, uimsg, MB_OK | MB_ICONWARNING);
+		goto error;
+	}
+
+	ret = TRUE;
+
+error:;
+	return (ret);
+}
+
+
+//
 // \x83G\x83N\x83X\x83v\x83\x8D\x81[\x83\x89\x82Ńp\x83X\x82\xF0\x8AJ\x82\xAD\x81B
 //
 // return TRUE: success
@@ -4612,9 +4665,9 @@
 // return TRUE: success
 //        FALSE: failure
 //
-static BOOL openVirtualStore(char *path, char *filename)
+static BOOL openVirtualStore(char *path, char *filename, BOOL open_directory_only, char *open_editor)
 {
-#if _MSC_VER == 1400
+#if _MSC_VER == 1400  // VSC2005(VC8.0)
 	typedef struct _TOKEN_ELEVATION {
 		DWORD TokenIsElevated;
 	} TOKEN_ELEVATION, *PTOKEN_ELEVATION;
@@ -4645,6 +4698,8 @@
 	DWORD dwType;
 	BYTE bValue;
 
+	OutputDebugPrintf("[%s][%s] open_directory_only %d\n", path, filename, open_directory_only);
+
 	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
 	GetVersionEx(&osvi);
 	// Windows Vista\x88ȑO\x82͖\xB3\x8E\x8B\x82\xB7\x82\xE9\x81B
@@ -4728,13 +4783,23 @@
 		goto error;
 	}
 
-	openDirectoryWithExplorer(shPath);
+	if (open_directory_only) {
+		openDirectoryWithExplorer(shPath);
+	}
+	else {
+		openFileWithApplication(shPath, filename, open_editor);
+	}
 
 	ret = TRUE;
 	return (ret);
 
 error:
-	openDirectoryWithExplorer(path);
+	if (open_directory_only) {
+		openDirectoryWithExplorer(path);
+	}
+	else {
+		openFileWithApplication(path, filename, open_editor);
+	}
 
 	return (ret);
 }
@@ -4752,6 +4817,9 @@
 	PSSH_read_known_hosts_file func = NULL;
 	HMODULE h = NULL;
 	static char hostsfilepath[MAX_PATH], hostsfilename[MAX_PATH];
+	char *path_p, *filename_p;
+	BOOL open_dir;
+	int button_pressed;
 
 	switch (msg) {
 	case WM_INITDIALOG:
@@ -4827,22 +4895,59 @@
 		return TRUE;
 
 	case WM_COMMAND:
+		button_pressed = 0;
 		switch (LOWORD(wp)) {
 		case IDC_INI_SETUPDIR_BUTTON | (BN_CLICKED << 16) :
-			openVirtualStore(inipath, inifilename);
-			return TRUE;
+			open_dir = TRUE;
+			path_p = inipath;
+			filename_p = inifilename;
+			button_pressed = 1;
+			break;
+		case IDC_INI_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) :
+			open_dir = FALSE;
+			path_p = inipath;
+			filename_p = inifilename;
+			button_pressed = 1;
+			break;
 
 		case IDC_KEYCNF_SETUPDIR_BUTTON | (BN_CLICKED << 16) :
-			openVirtualStore(keycnfpath, keycnfpath);
-			return TRUE;
+			open_dir = TRUE;
+			path_p = keycnfpath;
+			filename_p = keycnffilename;
+			button_pressed = 1;
+			break;
+		case IDC_KEYCNF_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) :
+			open_dir = FALSE;
+			path_p = keycnfpath;
+			filename_p = keycnffilename;
+			button_pressed = 1;
+			break;
 
 		case IDC_CYGTERM_SETUPDIR_BUTTON | (BN_CLICKED << 16) :
-			openVirtualStore(cygtermpath, cygtermfilename);
-			return TRUE;
+			open_dir = TRUE;
+			path_p = cygtermpath;
+			filename_p = cygtermfilename;
+			button_pressed = 1;
+			break;
+		case IDC_CYGTERM_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) :
+			open_dir = FALSE;
+			path_p = cygtermpath;
+			filename_p = cygtermfilename;
+			button_pressed = 1;
+			break;
 
 		case IDC_SSH_SETUPDIR_BUTTON | (BN_CLICKED << 16) :
-			openVirtualStore(hostsfilepath, hostsfilename);
-			return TRUE;
+			open_dir = TRUE;
+			path_p = hostsfilepath;
+			filename_p = hostsfilename;
+			button_pressed = 1;
+			break;
+		case IDC_SSH_SETUPDIR_BUTTON_FILE | (BN_CLICKED << 16) :
+			open_dir = FALSE;
+			path_p = hostsfilepath;
+			filename_p = hostsfilename;
+			button_pressed = 1;
+			break;
 
 		case IDCANCEL:
 			EndDialog(hDlgWnd, IDCANCEL);
@@ -4852,6 +4957,18 @@
 			return FALSE;
 		}
 
+		if (button_pressed) {
+			char *app = NULL;
+
+			if (open_dir)
+				app = NULL;
+			else
+				app = ts.ViewlogEditor;
+
+			openVirtualStore(path_p, filename_p, open_dir, app);
+			return TRUE;
+		}
+
 	case WM_CLOSE:
 		EndDialog(hDlgWnd, 0);
 		return TRUE;



Ttssh2-commit メーリングリストの案内
Zurück zum Archiv-Index