Beispiel #1
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;
}
Beispiel #2
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;
}
Beispiel #3
0
void WDL_UTF8_HookListBox(HWND h)
{
  WDL_UTF8_HookComboBox(h);
}
Beispiel #4
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;
}
Beispiel #5
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;
}
Beispiel #6
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;
}