diff --git a/waifu2x-caffe-gui/MainDialog.cpp b/waifu2x-caffe-gui/MainDialog.cpp index d433faf..21d8e3c 100644 --- a/waifu2x-caffe-gui/MainDialog.cpp +++ b/waifu2x-caffe-gui/MainDialog.cpp @@ -1879,6 +1879,68 @@ void DialogEvent::UpdateAddString(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOI ReplaceAddString(); } +void DialogEvent::OnModeChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData) +{ + bool isNoise = false; + bool isScale = false; + + if (SendMessage(GetDlgItem(dh, IDC_RADIO_MODE_NOISE), BM_GETCHECK, 0, 0)) + { + isNoise = true; + isScale = false; + } + else if (SendMessage(GetDlgItem(dh, IDC_RADIO_MODE_SCALE), BM_GETCHECK, 0, 0)) + { + isNoise = false; + isScale = true; + } + else if (SendMessage(GetDlgItem(dh, IDC_RADIO_MODE_NOISE_SCALE), BM_GETCHECK, 0, 0)) + { + isNoise = true; + isScale = true; + } + else + { + isNoise = true; + isScale = true; + } + + if (isNoise) + { + EnableWindow(GetDlgItem(dh, IDC_RADIONOISE_LEVEL1), TRUE); + EnableWindow(GetDlgItem(dh, IDC_RADIONOISE_LEVEL2), TRUE); + EnableWindow(GetDlgItem(dh, IDC_RADIONOISE_LEVEL3), TRUE); + } + else + { + EnableWindow(GetDlgItem(dh, IDC_RADIONOISE_LEVEL1), FALSE); + EnableWindow(GetDlgItem(dh, IDC_RADIONOISE_LEVEL2), FALSE); + EnableWindow(GetDlgItem(dh, IDC_RADIONOISE_LEVEL3), FALSE); + } + + if (isScale) + { + EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), TRUE); + EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), TRUE); + EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), TRUE); + + ScaleRadio(NULL, NULL, NULL, NULL); // ここでReplaceAddString()やるからreturn + return; + } + else + { + EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), FALSE); + EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), FALSE); + EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), FALSE); + + EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); + EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); + EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); + } + + ReplaceAddString(); +} + void DialogEvent::ScaleRadio(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData) { if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), BM_GETCHECK, 0, 0)) diff --git a/waifu2x-caffe-gui/MainDialog.h b/waifu2x-caffe-gui/MainDialog.h index 5abf787..367f534 100644 --- a/waifu2x-caffe-gui/MainDialog.h +++ b/waifu2x-caffe-gui/MainDialog.h @@ -182,6 +182,8 @@ public: void UpdateAddString(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData); + void OnModeChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData); + void ScaleRadio(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData); void CheckCUDNN(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData); diff --git a/waifu2x-caffe-gui/Source.cpp b/waifu2x-caffe-gui/Source.cpp index 841ea61..f10f88d 100644 --- a/waifu2x-caffe-gui/Source.cpp +++ b/waifu2x-caffe-gui/Source.cpp @@ -67,15 +67,14 @@ int WINAPI WinMain(HINSTANCE hInstance, cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::ClearOutputDir, &cDialogEvent), NULL, IDC_BUTTON_CLEAR_OUTPUT_DIR); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::AppSetting, &cDialogEvent), NULL, IDC_BUTTON_APP_SETTING); - cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODE_NOISE); - cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODE_SCALE); - cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODE_NOISE_SCALE); - cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_AUTO_SCALE); + cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_NOISE); + cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_SCALE); + cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_NOISE_SCALE); + cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_AUTO_SCALE); + cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL1); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL2); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL3); - cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODE_CPU); - cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODE_GPU); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODEL_RGB); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODEL_PHOTO); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIO_MODEL_Y);