• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision11013 (tree)
Time2023-10-19 21:51:47
Authorzmatsuo

Log Message

ログダイアログに反映されない設定があったので修正

Change Summary

Incremental Difference

--- trunk/teraterm/teraterm/logdlg.cpp (revision 11012)
+++ trunk/teraterm/teraterm/logdlg.cpp (revision 11013)
@@ -145,34 +145,19 @@
145145 }
146146 }
147147
148-/*
149- * Log ダイアログのうち、Enable/Disable が変化するコントロール
150- *
151- * - Append
152- * 指定されたファイルが存在する場合は Enable
153- * 指定されたファイルが存在しない場合は Disable
154- *
155- * - BOM, Encoding
156- * Text かつ New/Overwrite の場合に Enable
157- * そうでない場合に Disable
158- * BOM はファイルの先頭から書き込むときしか意味がない
159- * Encoding は追記でも意味があるが、既存ファイルのエンコーディングを
160- * 強制的にダイアログに反映するので、ユーザによる指定はさせない
161- *
162- * - Plain Text, Timestamp, Timestamp 種別
163- * Text の場合は Enable
164- * Binary の場合は Disable
165- *
166- * - Timestamp 種別
167- * Timestamp=on の場合は Enable
168- * Timestamp=off の場合は Disable
148+/**
149+ * ラジオボタン、ファイルの状態からコントロールをEnable/Disableする
169150 */
170-static void ArrangeControls(HWND Dialog, LogDlgWork_t *work,
171- WORD Append, WORD LogBinary,
172- WORD LogTypePlainText, WORD LogTimestamp)
151+static void ArrangeControls(HWND Dialog, LogDlgWork_t *work)
173152 {
153+ WORD Append, LogBinary;
154+
155+ GetRB(Dialog, &Append, IDC_APPEND, IDC_APPEND);
156+ GetRB(Dialog, &LogBinary, IDC_FOPTBIN, IDC_FOPTBIN);
157+
158+ // Append ラジオボタン
174159 if (work->file_exist) {
175- // Append ラジオボタンは、ファイルがあるときだけ有効になる
160+ // 指定されたファイルが存在する場合は Enable
176161 EnableWindow(GetDlgItem(Dialog, IDC_APPEND), TRUE);
177162
178163 if (Append > 0) {
@@ -182,21 +167,32 @@
182167 CheckRadioButton(Dialog, IDC_NEW_OVERWRITE, IDC_APPEND, IDC_NEW_OVERWRITE);
183168 }
184169 }
185- else { // ファイルがない -> 新規
170+ else {
171+ // 指定されたファイルが存在しない場合は Disable
186172 EnableWindow(GetDlgItem(Dialog, IDC_APPEND), FALSE);
173+
174+ // ファイルがない -> 新規
187175 CheckRadioButton(Dialog, IDC_NEW_OVERWRITE, IDC_APPEND, IDC_NEW_OVERWRITE);
188176 }
189177
178+ // BOM, Encoding
190179 if (!LogBinary && !Append) {
180+ // Text かつ New/Overwrite の場合に Enable
191181 EnableWindow(GetDlgItem(Dialog, IDC_BOM), TRUE);
192182 EnableWindow(GetDlgItem(Dialog, IDC_TEXTCODING_DROPDOWN), TRUE);
193183 }
194184 else {
185+ // そうでない場合に Disable
186+ // BOM はファイルの先頭から書き込むときしか意味がない
187+ // Encoding は追記でも意味があるが、既存ファイルのエンコーディングを
188+ // 強制的にダイアログに反映するので、ユーザによる指定はさせない
195189 EnableWindow(GetDlgItem(Dialog, IDC_BOM), FALSE);
196190 EnableWindow(GetDlgItem(Dialog, IDC_TEXTCODING_DROPDOWN), FALSE);
197191 }
198192
193+ // Plain Text, Timestamp, Timestamp 種別
199194 if (LogBinary) {
195+ // Binary の場合は Disable
200196 CheckRadioButton(Dialog, IDC_FOPTBIN, IDC_FOPTTEXT, IDC_FOPTBIN);
201197
202198 DisableDlgItem(Dialog, IDC_PLAINTEXT, IDC_PLAINTEXT);
@@ -204,20 +200,19 @@
204200 DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE);
205201 }
206202 else {
203+ // Text の場合は Enable
207204 CheckRadioButton(Dialog, IDC_FOPTBIN, IDC_FOPTTEXT, IDC_FOPTTEXT);
208205
209206 EnableDlgItem(Dialog, IDC_PLAINTEXT, IDC_PLAINTEXT);
210207 EnableDlgItem(Dialog, IDC_TIMESTAMP, IDC_TIMESTAMP);
211- EnableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE);
212208
213- if (LogTypePlainText) {
214- SetRB(Dialog, 1, IDC_PLAINTEXT, IDC_PLAINTEXT);
215- }
216- if (LogTimestamp) {
217- SetRB(Dialog, 1, IDC_TIMESTAMP, IDC_TIMESTAMP);
218- }
219- else {
209+ // Timestamp 種別
210+ if (IsDlgButtonChecked(Dialog, IDC_TIMESTAMP) == BST_UNCHECKED) {
211+ // Timestamp=off の場合は Disable
220212 DisableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE);
213+ } else {
214+ // Timestamp=on の場合は Enable
215+ EnableDlgItem(Dialog, IDC_TIMESTAMPTYPE, IDC_TIMESTAMPTYPE);
221216 }
222217 }
223218
@@ -312,6 +307,9 @@
312307 SetWindowLongPtr(file_edit, GWLP_USERDATA, (LONG_PTR)work);
313308 work->proc = (WNDPROC)SetWindowLongPtrW(file_edit, GWLP_WNDPROC, (LONG_PTR)FNameEditProc);
314309
310+ // timestamp
311+ CheckDlgButton(Dialog, IDC_TIMESTAMP, pts->LogTimestamp == 0 ? BST_UNCHECKED : BST_CHECKED);
312+
315313 // timestamp 種別
316314 int tstype = pts->LogTimestampType == TIMESTAMP_LOCAL ? 0 :
317315 pts->LogTimestampType == TIMESTAMP_UTC ? 1 :
@@ -318,7 +316,11 @@
318316 pts->LogTimestampType == TIMESTAMP_ELAPSED_LOGSTART ? 2 :
319317 pts->LogTimestampType == TIMESTAMP_ELAPSED_CONNECTED ? 3 : 0;
320318 SendDlgItemMessageA(Dialog, IDC_TIMESTAMPTYPE, CB_SETCURSEL, tstype, 0);
319+ EnableWindow(GetDlgItem(Dialog, IDC_TIMESTAMPTYPE), pts->LogTimestamp == 0 ? FALSE : TRUE);
321320
321+ // plain text
322+ CheckDlgButton(Dialog, IDC_PLAINTEXT, pts->LogTypePlainText == 0 ? BST_UNCHECKED : BST_CHECKED);
323+
322324 // Hide dialog チェックボックス
323325 if (pts->LogHideDialog) {
324326 SetRB(Dialog, 1, IDC_HIDEDIALOG, IDC_HIDEDIALOG);
@@ -402,14 +404,7 @@
402404 case IDC_FOPTTEXT:
403405 case IDC_FOPTBIN:
404406 case IDC_TIMESTAMP:
405- {
406- WORD Appnd, LogBinary, LogTypePlainText, LogTimestamp;
407- GetRB(Dialog, &Appnd, IDC_APPEND, IDC_APPEND);
408- GetRB(Dialog, &LogBinary, IDC_FOPTBIN, IDC_FOPTBIN);
409- GetRB(Dialog, &LogTypePlainText, IDC_PLAINTEXT, IDC_PLAINTEXT);
410- GetRB(Dialog, &LogTimestamp, IDC_TIMESTAMP, IDC_TIMESTAMP);
411- ArrangeControls(Dialog, work, Appnd, LogBinary, LogTypePlainText, LogTimestamp);
412- }
407+ ArrangeControls(Dialog, work);
413408 break;
414409 case IDC_FOPT_FILENAME_EDIT:
415410 if (HIWORD(wParam) == EN_CHANGE){
@@ -417,14 +412,7 @@
417412 hGetDlgItemTextW(Dialog, IDC_FOPT_FILENAME_EDIT, &filename);
418413 CheckLogFile(Dialog, filename, work);
419414 free(filename);
420- {
421- WORD Appnd, LogBinary, LogTypePlainText, LogTimestamp;
422- GetRB(Dialog, &Appnd, IDC_APPEND, IDC_APPEND);
423- GetRB(Dialog, &LogBinary, IDC_FOPTBIN, IDC_FOPTBIN);
424- GetRB(Dialog, &LogTypePlainText, IDC_PLAINTEXT, IDC_PLAINTEXT);
425- GetRB(Dialog, &LogTimestamp, IDC_TIMESTAMP, IDC_TIMESTAMP);
426- ArrangeControls(Dialog, work, Appnd, LogBinary, LogTypePlainText, LogTimestamp);
427- }
415+ ArrangeControls(Dialog, work);
428416 }
429417 break;
430418 }
Show on old repository browser