INT_PTR WINAPI doRecInputDialog(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (INT_PTR r = SNM_HookThemeColorsMessage(hwndDlg, uMsg, wParam, lParam)) return r; switch(uMsg) { case WM_INITDIALOG: CheckDlgButton(hwndDlg, IDC_DONTSHOW, !g_bEnRecInputCheck ? BST_CHECKED : BST_UNCHECKED); RestoreWindowPos(hwndDlg, RECINPUTWNDPOS_KEY, false); return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: g_bEnRecInputCheck = IsDlgButtonChecked(hwndDlg, IDC_DONTSHOW) ? false : true; WritePrivateProfileString(SWS_INI, RECINPUTCHECK_KEY, g_bEnRecInputCheck ? "1" : "0", get_ini_file()); SaveWindowPos(hwndDlg, RECINPUTWNDPOS_KEY); EndDialog(hwndDlg, (INT_PTR)(LOWORD(wParam))); break; } } return 0; }
INT_PTR WINAPI doResolve(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (INT_PTR r = SNM_HookThemeColorsMessage(hwndDlg, uMsg, wParam, lParam)) return r; switch (uMsg) { case WM_INITDIALOG: { SetDlgItemText(hwndDlg, IDC_TEXT, g_cErrorStr); CheckDlgButton(hwndDlg, IDC_APPLY, BST_CHECKED); HWND hTracks = GetDlgItem(hwndDlg, IDC_TRACK); WDL_UTF8_HookComboBox(hTracks); SendMessage(hTracks, CB_ADDSTRING, 0, (LPARAM)__LOCALIZE("(create new track)","sws_DLG_114")); for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); if (tr != g_send) { char cName[80]; _snprintf(cName, 80, "%d: %s", i, (char*)GetSetMediaTrackInfo(tr, "P_NAME", NULL)); SendMessage(hTracks, CB_ADDSTRING, 0, (LPARAM)cName); } } SendMessage(hTracks, CB_SETCURSEL, 0, 0); RestoreWindowPos(hwndDlg, RESOLVE_WND_POS, false); g_iResolveRet = 0; return 0; } case WM_COMMAND: wParam = LOWORD(wParam); if (wParam == IDC_DELETE) g_iResolveRet = 1; else if (wParam == IDOK) { char cTrack[10]; GetDlgItemText(hwndDlg, IDC_TRACK, cTrack, 10); int id = atol(cTrack); if (!id) // assume they chose "create new track" { id = GetNumTracks()+1; InsertTrackAtIndex(id, false); TrackList_AdjustWindows(false); } g_recv = CSurf_TrackFromID(id, false); g_iResolveRet = 2; } if (wParam == IDC_DELETE || wParam == IDOK || wParam == IDCANCEL) { SaveWindowPos(hwndDlg, RESOLVE_WND_POS); EndDialog(hwndDlg,0); } return 0; } return 0; }
static INT_PTR WINAPI doDeleteDialog(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (INT_PTR r = SNM_HookThemeColorsMessage(hwndDlg, uMsg, wParam, lParam)) return r; switch (uMsg) { case WM_INITDIALOG: { HWND list = GetDlgItem(hwndDlg, IDC_COMBO); WDL_UTF8_HookComboBox(list); for (int i = 0; i < g_relatedProjects.Get()->GetSize(); i++) SendMessage(list, CB_ADDSTRING, 0, (LPARAM)g_relatedProjects.Get()->Get(i)->Get()); SendMessage(list, CB_SETCURSEL, 0, 0); SetWindowText(hwndDlg, __LOCALIZE("SWS Delete Related Project","sws_mbox")); RestoreWindowPos(hwndDlg, DELWINDOW_POS_KEY); return 0; } case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: { HWND list = GetDlgItem(hwndDlg, IDC_COMBO); int iList = (int)SendMessage(list, CB_GETCURSEL, 0, 0); if (iList >= 0 && iList < g_relatedProjects.Get()->GetSize()) g_relatedProjects.Get()->Delete(iList, true); Undo_OnStateChangeEx(__LOCALIZE("Delete related project","sws_undo"), UNDO_STATE_MISCCFG, -1); } // Fall through to cancel to save/end case IDCANCEL: SaveWindowPos(hwndDlg, DELWINDOW_POS_KEY); EndDialog(hwndDlg, 0); break; } break; } return 0; }
static WDL_DLGRET DialogProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (INT_PTR r = SNM_HookThemeColorsMessage(hwnd, uMsg, wParam, lParam)) return r; static BR_SearchObject* s_searchObject = NULL; #ifndef _WIN32 static bool s_positionSet = false; #endif switch(uMsg) { case WM_INITDIALOG: { s_searchObject = (BR_SearchObject*)lParam; SetVersionMessage(hwnd, s_searchObject); SetTimer(hwnd, 1, 100, NULL); #ifdef _WIN32 CenterDialog(hwnd, GetParent(hwnd), HWND_TOPMOST); #else s_positionSet = false; #endif } break; #ifndef _WIN32 case WM_ACTIVATE: { // SetWindowPos doesn't seem to work in WM_INITDIALOG on OSX // when creating a dialog with DialogBox so call here if (!s_positionSet) CenterDialog(hwnd, GetParent(hwnd), HWND_TOPMOST); s_positionSet = true; } break; #endif case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BR_VER_DOWNLOAD: { if (s_searchObject->GetStatus(NULL, NULL) == NO_CONNECTION) { s_searchObject->RestartSearch(); SetVersionMessage(hwnd, s_searchObject); SetTimer(hwnd, 1, 100, NULL); } if (s_searchObject->GetStatus(NULL, NULL) == OFFICIAL_AVAILABLE) { ShellExecute(NULL, "open", SWS_URL_DOWNLOAD, NULL, NULL, SW_SHOWNORMAL); EndDialog(hwnd, 0); } else if (s_searchObject->GetStatus(NULL, NULL) == BETA_AVAILABLE) { ShellExecute(NULL, "open", SWS_URL_BETA_DOWNLOAD, NULL, NULL, SW_SHOWNORMAL); EndDialog(hwnd, 0); } } break; case IDC_BR_VER_OFF: { ShellExecute(NULL, "open", SWS_URL_DOWNLOAD , NULL, NULL, SW_SHOWNORMAL); EndDialog(hwnd, 0); } break; case IDC_BR_VER_BETA: { ShellExecute(NULL, "open", SWS_URL_BETA_DOWNLOAD, NULL, NULL, SW_SHOWNORMAL); EndDialog(hwnd, 0); } break; case IDCANCEL: { EndDialog(hwnd, 0); } break; } } break; case WM_TIMER: { SendMessage(GetDlgItem(hwnd, IDC_BR_VER_PROGRESS), PBM_SETPOS, (int)(s_searchObject->GetProgress() * 100.0), 0); if (s_searchObject->GetStatus(NULL, NULL) != SEARCH_INITIATED) { SetVersionMessage(hwnd, s_searchObject); KillTimer(hwnd, 1); } } break; case WM_DESTROY: { KillTimer(hwnd, 1); s_searchObject = NULL; } break; } return 0; }
INT_PTR WINAPI doColorDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { #ifndef _WIN32 static int iSettingColor = -1; #endif if (INT_PTR r = SNM_HookThemeColorsMessage(hwndDlg, uMsg, wParam, lParam)) return r; switch (uMsg) { case WM_INITDIALOG: UpdateCustomColors(); RestoreWindowPos(hwndDlg, COLORDLG_WINDOWPOS_KEY, false); return 0; case WM_DRAWITEM: { LPDRAWITEMSTRUCT pDI = (LPDRAWITEMSTRUCT)lParam; HBRUSH hb = NULL; switch (pDI->CtlID) { case IDC_COLOR1: hb = CreateSolidBrush(g_crGradStart); break; case IDC_COLOR2: hb = CreateSolidBrush(g_crGradEnd); break; } FillRect(pDI->hDC, &pDI->rcItem, hb); DeleteObject(hb); return 1; } #ifndef _WIN32 case WM_TIMER: { COLORREF cr; if (iSettingColor != -1 && GetChosenColor(&cr)) { switch (iSettingColor) { case 0: g_crGradStart = cr; break; case 1: g_crGradEnd = cr; break; case 2: UpdateCustomColors(); break; } PersistColors(); InvalidateRect(hwndDlg, NULL, 0); KillTimer(hwndDlg, 1); iSettingColor = -1; } break; } #endif case WM_COMMAND: { wParam = LOWORD(wParam); switch(wParam) { case IDC_COLOR1: case IDC_COLOR2: case IDC_SETCUST: { #ifdef _WIN32 CHOOSECOLOR cc; memset(&cc, 0, sizeof(CHOOSECOLOR)); cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwndDlg; cc.lpCustColors = g_custColors; cc.Flags = CC_FULLOPEN | CC_RGBINIT; if (wParam == IDC_COLOR1) { cc.rgbResult = g_crGradStart; if (ChooseColor(&cc)) { g_crGradStart = cc.rgbResult; PersistColors(); RedrawWindow(hwndDlg, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } else if (wParam == IDC_COLOR2) { cc.rgbResult = g_crGradEnd; if (ChooseColor(&cc)) { g_crGradEnd = cc.rgbResult; PersistColors(); RedrawWindow(hwndDlg, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } } else if (wParam == IDC_SETCUST && ChooseColor(&cc)) PersistColors(); #else switch(wParam) { case IDC_COLOR1: iSettingColor = 0; ShowColorChooser(g_crGradStart); break; case IDC_COLOR2: iSettingColor = 1; ShowColorChooser(g_crGradEnd); break; case IDC_SETCUST: iSettingColor = 2; ShowColorChooser(g_custColors[0]); break; } SetTimer(hwndDlg, 1, 50, NULL); #endif break; } case IDC_SAVECOL: case IDC_LOADCOL: case IDC_LOADFROMTHEME: { char cPath[512] = { 0 }; const char* cExt = "SWS Color Files (*.SWSColor)\0*.SWSColor\0Color Theme Files (*.ReaperTheme)\0*.ReaperTheme\0All Files\0*.*\0"; GetPrivateProfileString("REAPER", "lastthemefn", "", cPath, 512, get_ini_file()); char* pC = strrchr(cPath, PATH_SLASH_CHAR); if (pC) *pC = 0; if (wParam == IDC_SAVECOL) { char cFilename[512]; UpdateCustomColors(); if (BrowseForSaveFile(__LOCALIZE("Save color theme","sws_color"), cPath, NULL, cExt, cFilename, 512)) { char key[32]; char val[32]; for (int i = 0; i < 16; i++) { sprintf(key, "custcolor%d", i+1); sprintf(val, "%d", g_custColors[i]); WritePrivateProfileString("SWS Color", key, val, cFilename); } sprintf(val, "%d", g_crGradStart); WritePrivateProfileString("SWS Color", "gradientStart", val, cFilename); sprintf(val, "%d", g_crGradEnd); WritePrivateProfileString("SWS Color", "gradientEnd", val, cFilename); } } else if (wParam == IDC_LOADCOL || wParam == IDC_LOADFROMTHEME) { #ifndef _WIN32 if (MessageBox(hwndDlg, __LOCALIZE("WARNING: Loading colors from file will overwrite your global personalized color choices.\nIf these are important to you, press press cancel to abort the loading of new colors!","sws_color"), __LOCALIZE("OSX Color Load WARNING","sws_color"), MB_OKCANCEL) == IDCANCEL) break; #endif if (wParam == IDC_LOADCOL) { char* cFile = BrowseForFiles(__LOCALIZE("Choose color theme file","sws_color"), cPath, NULL, false, cExt); if (cFile) { lstrcpyn(cPath, cFile, 512); free(cFile); } else cPath[0] = 0; } else GetPrivateProfileString("REAPER", "lastthemefn", "", cPath, 512, get_ini_file()); if (cPath[0]) { char key[32]; bool bFound = false; for (int i = 0; i < 16; i++) { sprintf(key, "custcolor%d", i+1); int iColor = GetPrivateProfileInt("SWS Color", key, -1, cPath); if (iColor != -1) { g_custColors[i] = iColor; bFound = true; } } if (!bFound) { char cMsg[512]; _snprintf(cMsg, 512, __LOCALIZE_VERFMT("No SWS custom colors found in %s.","sws_color"), cPath); MessageBox(hwndDlg, cMsg, __LOCALIZE("SWS Color Load","sws_color"), MB_OK); } g_crGradStart = GetPrivateProfileInt("SWS Color", "gradientStart", g_crGradStart, cPath); g_crGradEnd = GetPrivateProfileInt("SWS Color", "gradientEnd", g_crGradEnd, cPath); PersistColors(); #ifdef _WIN32 RedrawWindow(hwndDlg, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); #else InvalidateRect(hwndDlg, NULL, 0); #endif } } } break; case IDOK: // Do something ? // fall through! case IDCANCEL: #ifndef _WIN32 if (iSettingColor != -1) { HideColorChooser(); KillTimer(hwndDlg, 1); } #endif SaveWindowPos(hwndDlg, COLORDLG_WINDOWPOS_KEY); EndDialog(hwndDlg,0); break; } return 0; } } return 0; }
WDL_DLGRET EnvelopeLfoDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { const char cWndPosKey[] = "LFO Window Pos"; if (INT_PTR r = SNM_HookThemeColorsMessage(hwnd, uMsg, wParam, lParam)) return r; switch(uMsg) { case WM_INITDIALOG : { WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_TARGET)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_TIMESEGMENT)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_LFOSHAPE)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_SYNCFREQUENCY)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_SYNCDELAY)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_TAKEENV)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADRELFO_MIDICC)); for(int i=eENVTYPE_TRACK; i<=eENVTYPE_MIDICC; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_ADDSTRING,0,(LPARAM)GetEnvTypeStr((EnvType)i)); SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.envType) SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_SETCURSEL,x,0); } SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_PADRELFO_TARGET, CBN_SELCHANGE), NULL); if(EnvelopeProcessor::getInstance()->_parameters.activeTakeOnly) CheckDlgButton(hwnd, IDC_PADRELFO_ACTIVETAKES, TRUE); else CheckDlgButton(hwnd, IDC_PADRELFO_ACTIVETAKES, FALSE); int iLastShape = eWAVSHAPE_SAWDOWN_BEZIER; if(EnvelopeProcessor::getInstance()->_parameters.envType == eENVTYPE_MIDICC) iLastShape = eWAVSHAPE_SAWDOWN; for(int i=eWAVSHAPE_SINE; i<=iLastShape; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_LFOSHAPE,CB_ADDSTRING,0,(LPARAM)GetWaveShapeStr((WaveShape)i)); SendDlgItemMessage(hwnd,IDC_PADRELFO_LFOSHAPE,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.waveParams.shape) SendDlgItemMessage(hwnd,IDC_PADRELFO_LFOSHAPE,CB_SETCURSEL,x,0); } for(int i=eGRID_OFF; i<eGRID_LAST; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_ADDSTRING,0,(LPARAM)GetGridDivisionStr((GridDivision)i)); SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.waveParams.freqBeat) SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_SETCURSEL,x,0); } SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_PADRELFO_SYNCFREQUENCY, CBN_SELCHANGE), NULL); for(int i=eGRID_OFF; i<eGRID_LAST; i++) { if( (i>eGRID_OFF) && (i<=eGRID_1_1) ) continue; int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_ADDSTRING,0,(LPARAM)GetGridDivisionStr((GridDivision)i)); SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.waveParams.delayBeat) SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_SETCURSEL,x,0); } SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_PADRELFO_SYNCDELAY, CBN_SELCHANGE), NULL); char buffer[BUFFER_SIZE]; sprintf(buffer, "%.3lf", EnvelopeProcessor::getInstance()->_parameters.waveParams.freqHz); SetDlgItemText(hwnd, IDC_PADRELFO_FREQUENCY, buffer); sprintf(buffer, "%.3lf", EnvelopeProcessor::getInstance()->_parameters.waveParams.delayMsec); SetDlgItemText(hwnd, IDC_PADRELFO_DELAY, buffer); sprintf(buffer, "%.0lf", 100.0*EnvelopeProcessor::getInstance()->_parameters.waveParams.strength); SetDlgItemText(hwnd, IDC_PADRELFO_STRENGTH, buffer); sprintf(buffer, "%.0lf", 100.0*EnvelopeProcessor::getInstance()->_parameters.waveParams.offset); SetDlgItemText(hwnd, IDC_PADRELFO_OFFSET, buffer); for(int i=eTAKEENV_VOLUME; i<=eTAKEENV_PITCH; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TAKEENV,CB_ADDSTRING,0,(LPARAM)GetTakeEnvelopeStr((TakeEnvType)i)); SendDlgItemMessage(hwnd,IDC_PADRELFO_TAKEENV,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.takeEnvType) SendDlgItemMessage(hwnd,IDC_PADRELFO_TAKEENV,CB_SETCURSEL,x,0); } for(int i=0; i<128; i++) { sprintf(buffer, "%3d", i); int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_MIDICC,CB_ADDSTRING,0,(LPARAM)buffer); SendDlgItemMessage(hwnd,IDC_PADRELFO_MIDICC,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.midiCc) SendDlgItemMessage(hwnd,IDC_PADRELFO_MIDICC,CB_SETCURSEL,x,0); } RestoreWindowPos(hwnd, cWndPosKey, false); SetFocus(GetDlgItem(hwnd, IDC_PADRELFO_TARGET)); return 0; } case WM_COMMAND : switch(LOWORD(wParam)) { case IDOK: { int combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.envType = (EnvType)(SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_GETITEMDATA,combo,0)); EnvelopeProcessor::getInstance()->_parameters.activeTakeOnly = (IsDlgButtonChecked(hwnd, IDC_PADRELFO_ACTIVETAKES) != 0); combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TIMESEGMENT,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.timeSegment = (TimeSegment)(SendDlgItemMessage(hwnd,IDC_PADRELFO_TIMESEGMENT,CB_GETITEMDATA,combo,0)); combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_LFOSHAPE,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.waveParams.shape = (WaveShape)(SendDlgItemMessage(hwnd,IDC_PADRELFO_LFOSHAPE,CB_GETITEMDATA,combo,0)); combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.waveParams.freqBeat = (GridDivision)(SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_GETITEMDATA,combo,0)); combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.waveParams.delayBeat = (GridDivision)(SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_GETITEMDATA,combo,0)); char buffer[BUFFER_SIZE]; GetDlgItemText(hwnd,IDC_PADRELFO_FREQUENCY,buffer,BUFFER_SIZE); EnvelopeProcessor::getInstance()->_parameters.waveParams.freqHz = atof(buffer); GetDlgItemText(hwnd,IDC_PADRELFO_DELAY,buffer,BUFFER_SIZE); EnvelopeProcessor::getInstance()->_parameters.waveParams.delayMsec = atof(buffer); GetDlgItemText(hwnd,IDC_PADRELFO_STRENGTH,buffer,BUFFER_SIZE); EnvelopeProcessor::getInstance()->_parameters.waveParams.strength = atof(buffer)/100.0; GetDlgItemText(hwnd,IDC_PADRELFO_OFFSET,buffer,BUFFER_SIZE); EnvelopeProcessor::getInstance()->_parameters.waveParams.offset = atof(buffer)/100.0; combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TAKEENV,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.takeEnvType = (TakeEnvType)(SendDlgItemMessage(hwnd,IDC_PADRELFO_TAKEENV,CB_GETITEMDATA,combo,0)); combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_MIDICC,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_parameters.midiCc = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_MIDICC,CB_GETITEMDATA,combo,0); EnvelopeProcessor::ErrorCode res = EnvelopeProcessor::eERRORCODE_UNKNOWN; switch(EnvelopeProcessor::getInstance()->_parameters.envType) { case eENVTYPE_TRACK : res = EnvelopeProcessor::getInstance()->generateSelectedTrackEnvLfo(); break; case eENVTYPE_TAKE : res = EnvelopeProcessor::getInstance()->generateSelectedTakesLfo(); break; case eENVTYPE_MIDICC : res = EnvelopeProcessor::getInstance()->generateSelectedMidiTakeLfo(); break; default: break; } EnvelopeProcessor::errorHandlerDlg(hwnd, res); //EndDialog(hwnd,0); return 0; } break; case IDCANCEL: { ShowWindow(hwnd, SW_HIDE); return 0; } break; case IDC_PADRELFO_TARGET: { if(HIWORD(wParam) == CBN_SELCHANGE) { int combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_GETCURSEL,0,0); if(combo != CB_ERR) { EnvType envType = (EnvType)(SendDlgItemMessage(hwnd,IDC_PADRELFO_TARGET,CB_GETITEMDATA,combo,0)); switch(envType) { case eENVTYPE_TRACK: EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_ACTIVETAKES), FALSE); EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_TAKEENV), FALSE); EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_MIDICC), FALSE); break; case eENVTYPE_TAKE: EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_ACTIVETAKES), TRUE); EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_TAKEENV), TRUE); EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_MIDICC), FALSE); break; case eENVTYPE_MIDICC: EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_ACTIVETAKES), TRUE); EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_TAKEENV), FALSE); EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_MIDICC), TRUE); break; default: break; } SendDlgItemMessage(hwnd,IDC_PADRELFO_TIMESEGMENT,CB_RESETCONTENT,0,NULL); for(int i=eTIMESEGMENT_TIMESEL; i<eTIMESEGMENT_LAST; i++) { if( (envType == eENVTYPE_TRACK) && (i == eTIMESEGMENT_SELITEM) ) continue; if( (envType == eENVTYPE_TAKE) && (i == eTIMESEGMENT_PROJECT) ) continue; int x = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_TIMESEGMENT,CB_ADDSTRING,0,(LPARAM)GetTimeSegmentStr((TimeSegment)i)); SendDlgItemMessage(hwnd,IDC_PADRELFO_TIMESEGMENT,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_parameters.timeSegment) SendDlgItemMessage(hwnd,IDC_PADRELFO_TIMESEGMENT,CB_SETCURSEL,x,0); } } } return 0; } break; case IDC_PADRELFO_SYNCFREQUENCY: { if(HIWORD(wParam) == CBN_SELCHANGE) { int combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_GETCURSEL,0,0); if(combo != CB_ERR) { GridDivision freqBeat = (GridDivision)(SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCFREQUENCY,CB_GETITEMDATA,combo,0)); if(freqBeat == eGRID_OFF) EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_FREQUENCY), TRUE); else EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_FREQUENCY), FALSE); } } return 0; } break; case IDC_PADRELFO_SYNCDELAY: { if(HIWORD(wParam) == CBN_SELCHANGE) { int combo = (int)SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_GETCURSEL,0,0); if(combo != CB_ERR) { GridDivision delayBeat = (GridDivision)(SendDlgItemMessage(hwnd,IDC_PADRELFO_SYNCDELAY,CB_GETITEMDATA,combo,0)); if(delayBeat == eGRID_OFF) EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_DELAY), TRUE); else EnableWindow(GetDlgItem(hwnd,IDC_PADRELFO_DELAY), FALSE); } } return 0; } break; } case WM_DESTROY: SaveWindowPos(hwnd, cWndPosKey); break; } return 0; }
WDL_DLGRET EnvelopeProcessorDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { const char cWndPosKey[] = "EnvProc Window Pos"; if (INT_PTR r = SNM_HookThemeColorsMessage(hwnd, uMsg, wParam, lParam)) return r; switch(uMsg) { case WM_INITDIALOG : { WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADREENVPROC_TYPE)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADREENVPROC_TARGET)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADREENVPROC_TIMESEGMENT)); WDL_UTF8_HookComboBox(GetDlgItem(hwnd, IDC_PADREENVPROC_TAKEENV)); for(int i=eENVTYPE_TRACK; i<eENVTYPE_MIDICC; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_ADDSTRING,0,(LPARAM)GetEnvTypeStr((EnvType)i)); SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_envModParams.envType) SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_SETCURSEL,x,0); } SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_PADREENVPROC_TARGET, CBN_SELCHANGE), NULL); if(EnvelopeProcessor::getInstance()->_envModParams.activeTakeOnly) CheckDlgButton(hwnd, IDC_PADREENVPROC_ACTIVETAKES, TRUE); else CheckDlgButton(hwnd, IDC_PADREENVPROC_ACTIVETAKES, FALSE); for(int i=eENVMOD_FADEIN; i<eENVMOD_LAST; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TYPE,CB_ADDSTRING,0,(LPARAM)GetEnvModTypeStr((EnvModType)i)); SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TYPE,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_envModParams.type) SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TYPE,CB_SETCURSEL,x,0); } char buffer[BUFFER_SIZE]; sprintf(buffer, "%.0lf", 100.0*EnvelopeProcessor::getInstance()->_envModParams.strength); SetDlgItemText(hwnd, IDC_PADREENVPROC_STRENGTH, buffer); sprintf(buffer, "%.0lf", 100.0*EnvelopeProcessor::getInstance()->_envModParams.offset); SetDlgItemText(hwnd, IDC_PADREENVPROC_OFFSET, buffer); for(int i=eTAKEENV_VOLUME; i<=eTAKEENV_PITCH; i++) { int x = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TAKEENV,CB_ADDSTRING,0,(LPARAM)GetTakeEnvelopeStr((TakeEnvType)i)); SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TAKEENV,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_envModParams.takeEnvType) SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TAKEENV,CB_SETCURSEL,x,0); } RestoreWindowPos(hwnd, cWndPosKey, false); SetFocus(GetDlgItem(hwnd, IDC_PADREENVPROC_TYPE)); return 0; } break; case WM_COMMAND : { switch(LOWORD(wParam)) { case IDOK: { int combo = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_envModParams.envType = (EnvType)(SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_GETITEMDATA,combo,0)); EnvelopeProcessor::getInstance()->_envModParams.activeTakeOnly = (IsDlgButtonChecked(hwnd, IDC_PADREENVPROC_ACTIVETAKES) != 0); combo = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TIMESEGMENT,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_envModParams.timeSegment = (TimeSegment)(SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TIMESEGMENT,CB_GETITEMDATA,combo,0)); combo = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TYPE,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_envModParams.type = (EnvModType)(SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TYPE,CB_GETITEMDATA,combo,0)); char buffer[BUFFER_SIZE]; GetDlgItemText(hwnd,IDC_PADREENVPROC_STRENGTH,buffer,BUFFER_SIZE); EnvelopeProcessor::getInstance()->_envModParams.strength = atof(buffer)/100.0; GetDlgItemText(hwnd,IDC_PADREENVPROC_OFFSET,buffer,BUFFER_SIZE); EnvelopeProcessor::getInstance()->_envModParams.offset = atof(buffer)/100.0; combo =(int) SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TAKEENV,CB_GETCURSEL,0,0); if(combo != CB_ERR) EnvelopeProcessor::getInstance()->_envModParams.takeEnvType = (TakeEnvType)(SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TAKEENV,CB_GETITEMDATA,combo,0)); EnvelopeProcessor::ErrorCode res = EnvelopeProcessor::eERRORCODE_UNKNOWN; switch(EnvelopeProcessor::getInstance()->_envModParams.envType) { case eENVTYPE_TRACK : res = EnvelopeProcessor::getInstance()->processSelectedTrackEnv(); break; case eENVTYPE_TAKE : res = EnvelopeProcessor::getInstance()->processSelectedTakes(); break; default: break; } EnvelopeProcessor::errorHandlerDlg(hwnd, res); return 0; } break; case IDCANCEL: { ShowWindow(hwnd, SW_HIDE); return 0; } break; case IDC_PADREENVPROC_TARGET: { if(HIWORD(wParam) == CBN_SELCHANGE) { int combo = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_GETCURSEL,0,0); if(combo != CB_ERR) { EnvType envType = (EnvType)(SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TARGET,CB_GETITEMDATA,combo,0)); switch(envType) { case eENVTYPE_TRACK: EnableWindow(GetDlgItem(hwnd,IDC_PADREENVPROC_ACTIVETAKES), FALSE); EnableWindow(GetDlgItem(hwnd,IDC_PADREENVPROC_TAKEENV), FALSE); break; case eENVTYPE_TAKE: EnableWindow(GetDlgItem(hwnd,IDC_PADREENVPROC_ACTIVETAKES), TRUE); EnableWindow(GetDlgItem(hwnd,IDC_PADREENVPROC_TAKEENV), TRUE); break; default: break; } SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TIMESEGMENT,CB_RESETCONTENT,0,NULL); for(int i=eTIMESEGMENT_TIMESEL; i<eTIMESEGMENT_LAST; i++) { if( (envType == eENVTYPE_TRACK) && (i == eTIMESEGMENT_SELITEM) ) continue; if( (envType == eENVTYPE_TAKE) && (i == eTIMESEGMENT_PROJECT) ) continue; int x = (int)SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TIMESEGMENT,CB_ADDSTRING,0,(LPARAM)GetTimeSegmentStr((TimeSegment)i)); SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TIMESEGMENT,CB_SETITEMDATA,x,i); if(i == EnvelopeProcessor::getInstance()->_envModParams.timeSegment) SendDlgItemMessage(hwnd,IDC_PADREENVPROC_TIMESEGMENT,CB_SETCURSEL,x,0); } } } return 0; } break; } } case WM_DESTROY: SaveWindowPos(hwnd, cWndPosKey); break; } return 0; }
WDL_DLGRET CueBussDlgProc(HWND _hwnd, UINT _uMsg, WPARAM _wParam, LPARAM _lParam) { if (INT_PTR r = SNM_HookThemeColorsMessage(_hwnd, _uMsg, _wParam, _lParam)) return r; const char cWndPosKey[] = "CueBus Window Pos"; switch(_uMsg) { case WM_INITDIALOG: { WDL_UTF8_HookComboBox(GetDlgItem(_hwnd, IDC_SNM_CUEBUS_TYPE)); WDL_UTF8_HookComboBox(GetDlgItem(_hwnd, IDC_COMBO)); for(int i=0; i < SNM_MAX_HW_OUTS; i++) WDL_UTF8_HookComboBox(GetDlgItem(_hwnd, IDC_SNM_CUEBUS_HWOUT1+i)); RestoreWindowPos(_hwnd, cWndPosKey, false); char buf[16] = ""; for(int i=0; i < SNM_MAX_CUE_BUSS_CONFS; i++) if (_snprintfStrict(buf,sizeof(buf),"%d",i+1) > 0) SendDlgItemMessage(_hwnd,IDC_COMBO,CB_ADDSTRING,0,(LPARAM)buf); SendDlgItemMessage(_hwnd,IDC_COMBO,CB_SETCURSEL,0,0); FillCueBussDlg(_hwnd); return 0; } break; case WM_CLOSE : g_cueBussHwnd = NULL; // for proper toggle state report, see openCueBussWnd() break; case WM_COMMAND : switch(LOWORD(_wParam)) { case IDC_COMBO: if(HIWORD(_wParam) == CBN_SELCHANGE) // config id update? { int id = (int)SendDlgItemMessage(_hwnd, IDC_COMBO, CB_GETCURSEL, 0, 0); if (id != CB_ERR) { g_cueBussConfId = id; FillCueBussDlg(); } } break; case IDOK: CueBuss(__LOCALIZE("Create cue buss from track selection","sws_undo"), g_cueBussConfId); return 0; case IDCANCEL: g_cueBussHwnd = NULL; // for proper toggle state report, see openCueBussWnd() ShowWindow(_hwnd, SW_HIDE); return 0; case IDC_FILES: { char curPath[SNM_MAX_PATH]=""; GetDlgItemText(_hwnd, IDC_SNM_CUEBUS_TEMPLATE, curPath, sizeof(curPath)); if (!*curPath || !FileOrDirExists(curPath)) if (_snprintfStrict(curPath, sizeof(curPath), "%s%cTrackTemplates", GetResourcePath(), PATH_SLASH_CHAR) <= 0) *curPath = '\0'; if (char* fn = BrowseForFiles(__LOCALIZE("S&M - Load track template","sws_DLG_149"), curPath, NULL, false, "REAPER Track Template (*.RTrackTemplate)\0*.RTrackTemplate\0")) { SetDlgItemText(_hwnd,IDC_SNM_CUEBUS_TEMPLATE,fn); free(fn); SaveCueBussSettings(); } break; } case IDC_CHECK3: { bool templateEnable = (IsDlgButtonChecked(_hwnd, IDC_CHECK3) == 1); EnableWindow(GetDlgItem(_hwnd, IDC_SNM_CUEBUS_TEMPLATE), templateEnable); EnableWindow(GetDlgItem(_hwnd, IDC_FILES), templateEnable); EnableWindow(GetDlgItem(_hwnd, IDC_SNM_CUEBUS_NAME), !templateEnable); for(int k=0; k < SNM_MAX_HW_OUTS ; k++) EnableWindow(GetDlgItem(_hwnd, IDC_SNM_CUEBUS_HWOUT1+k), !templateEnable); EnableWindow(GetDlgItem(_hwnd, IDC_CHECK1), !templateEnable); EnableWindow(GetDlgItem(_hwnd, IDC_CHECK4), !templateEnable); // SetFocus(GetDlgItem(_hwnd, templateEnable ? IDC_SNM_CUEBUS_TEMPLATE : IDC_SNM_CUEBUS_NAME)); SaveCueBussSettings(); break; } case IDC_SNM_CUEBUS_SOLOGRP: case IDC_CHECK1: case IDC_CHECK2: case IDC_CHECK4: SaveCueBussSettings(); break; case IDC_SNM_CUEBUS_TYPE: case IDC_SNM_CUEBUS_HWOUT1: case IDC_SNM_CUEBUS_HWOUT2: case IDC_SNM_CUEBUS_HWOUT3: case IDC_SNM_CUEBUS_HWOUT4: case IDC_SNM_CUEBUS_HWOUT5: case IDC_SNM_CUEBUS_HWOUT6: case IDC_SNM_CUEBUS_HWOUT7: case IDC_SNM_CUEBUS_HWOUT8: if(HIWORD(_wParam) == CBN_SELCHANGE) SaveCueBussSettings(); break; case IDC_SNM_CUEBUS_TEMPLATE: case IDC_SNM_CUEBUS_NAME: if (HIWORD(_wParam)==EN_CHANGE) SaveCueBussSettings(); break; } break; case WM_DESTROY: SaveWindowPos(_hwnd, cWndPosKey); break; } return 0; }