From: <sag...@us...> - 2015-06-24 23:26:37
|
Revision: 5351 http://sourceforge.net/p/modplug/code/5351 Author: saga-games Date: 2015-06-24 23:26:31 +0000 (Wed, 24 Jun 2015) Log Message: ----------- [Imp] Add edit groups for tempo swing editor. Modified Paths: -------------- trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/dlg_misc.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-06-24 21:52:32 UTC (rev 5350) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-06-24 23:26:31 UTC (rev 5351) @@ -1200,6 +1200,8 @@ //{{AFX_MSG_MAP(CTempoSwingDlg) ON_WM_HSCROLL() ON_COMMAND(IDC_BUTTON1, OnReset) + ON_COMMAND(IDC_CHECK1, OnToggleGroup) + ON_EN_CHANGE(IDC_EDIT1, OnGroupChanged) ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -1207,6 +1209,7 @@ CTempoSwingDlg::CTempoSwingDlg(CWnd *parent, const TempoSwing ¤tTempoSwing, CSoundFile &sndFile, PATTERNINDEX pattern) : CDialog(IDD_TEMPO_SWING, parent) + , m_groupSize(1) , m_tempoSwing(currentTempoSwing) , m_origTempoSwing(pattern == PATTERNINDEX_INVALID ? sndFile.m_tempoSwing : sndFile.Patterns[pattern].GetTempoSwing()) , m_sndFile(sndFile) @@ -1226,7 +1229,7 @@ edValueLabelWidth = 64, // Label "100%" edPaddingX = 8, // Spacing between elements edPaddingY = 4, // Spacing between elements - edPaddingTop = 35, // Topping from top of dialog + edPaddingTop = 64, // Spacing from top of dialog edTotalHeight = edSliderHeight + edPaddingY, // Height of one set of controls edFooterHeight = 32, // Buttons }; @@ -1261,6 +1264,7 @@ GetClientRect(rect); windowRect.bottom = windowRect.top + windowRect.Height() - rect.Height(); rect.DeflateRect(m.paddingX, m.paddingTop, m.paddingX, 0); + m_controls.resize(m_tempoSwing.size()); for(size_t i = 0; i < m_controls.size(); i++) { @@ -1285,6 +1289,11 @@ r->valueSlider.SetPos(val); rect.MoveToY(rect.top + m.totalHeight); } + + ((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange32(1, static_cast<int>(m_tempoSwing.size())); + SetDlgItemInt(IDC_EDIT1, m_groupSize); + OnToggleGroup(); + OnHScroll(0, 0, nullptr); rect.MoveToY(rect.top + m.paddingY); { @@ -1353,9 +1362,49 @@ } -void CTempoSwingDlg::OnHScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* /*pScrollBar*/) -//----------------------------------------------------------------------------------------- +void CTempoSwingDlg::OnToggleGroup() +//---------------------------------- { + const BOOL checked = IsDlgButtonChecked(IDC_CHECK1); + GetDlgItem(IDC_EDIT1)->EnableWindow(checked); + GetDlgItem(IDC_SPIN1)->EnableWindow(checked); +} + + +void CTempoSwingDlg::OnGroupChanged() +//----------------------------------- +{ + m_groupSize = GetDlgItemInt(IDC_EDIT1); + Limit(m_groupSize, 1, static_cast<int>(m_tempoSwing.size())); +} + + +void CTempoSwingDlg::OnHScroll(UINT /*nSBCode*/, UINT /*nPos*/, CScrollBar* pScrollBar) +//------------------------------------------------------------------------------------- +{ + if(IsDlgButtonChecked(IDC_CHECK1)) + { + // Edit groups + size_t editedGroup = 0; + int editedValue = SliderUnity; + for(size_t i = 0; i < m_controls.size(); i++) + { + if(m_controls[i]->valueSlider.m_hWnd == pScrollBar->m_hWnd) + { + editedValue = m_controls[i]->valueSlider.GetPos(); + editedGroup = (i / m_groupSize) % 2; + break; + } + } + for(size_t i = 0; i < m_controls.size(); i++) + { + if((i / m_groupSize) % 2 == editedGroup) + { + m_controls[i]->valueSlider.SetPos(editedValue); + } + } + } + for(size_t i = 0; i < m_controls.size(); i++) { m_tempoSwing[i] = Util::muldivr(m_controls[i]->valueSlider.GetPos(), TempoSwing::Unity, SliderUnity) + TempoSwing::Unity; Modified: trunk/OpenMPT/mptrack/dlg_misc.h =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.h 2015-06-24 21:52:32 UTC (rev 5350) +++ trunk/OpenMPT/mptrack/dlg_misc.h 2015-06-24 23:26:31 UTC (rev 5351) @@ -278,6 +278,8 @@ CSliderCtrl valueSlider; }; std::vector<RowCtls *> m_controls; + int m_groupSize; + public: TempoSwing m_tempoSwing; const TempoSwing m_origTempoSwing; @@ -293,6 +295,8 @@ virtual void OnCancel(); void OnClose(); afx_msg void OnReset(); + afx_msg void OnToggleGroup(); + afx_msg void OnGroupChanged(); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg BOOL OnToolTipNotify(UINT, NMHDR *pNMHDR, LRESULT *); DECLARE_MESSAGE_MAP() Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2015-06-24 21:52:32 UTC (rev 5350) +++ trunk/OpenMPT/mptrack/mptrack.rc 2015-06-24 23:26:31 UTC (rev 5351) @@ -365,10 +365,14 @@ CAPTION "Tempo Swing Settings" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "OK",IDOK,132,120,50,14 - PUSHBUTTON "Cancel",IDCANCEL,186,120,50,14 + DEFPUSHBUTTON "&OK",IDOK,132,120,50,14 + PUSHBUTTON "&Cancel",IDCANCEL,186,120,50,14 LTEXT "Configure how much each row contributes to a beat:",IDC_STATIC,6,9,174,8 - PUSHBUTTON "Reset",IDC_BUTTON1,186,6,50,14 + PUSHBUTTON "&Reset",IDC_BUTTON1,186,6,50,14 + CONTROL "&Edit group:",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,24,54,12 + EDITTEXT IDC_EDIT1,60,24,30,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,78,30,11,12 + LTEXT "consecutive rows are grouped",IDC_STATIC,96,26,138,8 END This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |