From: <sag...@us...> - 2010-12-03 22:13:04
|
Revision: 769 http://modplug.svn.sourceforge.net/modplug/?rev=769&view=rev Author: saga-games Date: 2010-12-03 22:12:57 +0000 (Fri, 03 Dec 2010) Log Message: ----------- [New] Pattern Editor: New (experimental) Find/Replace mode: Find in pattern selection. [Ref] Refactored Find/Replace code to use a struct for all the Find/Replace data (to keep the CViewPattern class clean) [Mod] OpenMPT: Version is now 1.19.00.14 Modified Paths: -------------- trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/dlg_misc.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/version.h Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2010-12-03 22:05:09 UTC (rev 768) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2010-12-03 22:12:57 UTC (rev 769) @@ -24,16 +24,16 @@ #pragma warning(disable:4244) //"conversion from 'type1' to 'type2', possible loss of data" +FindReplaceStruct CViewPattern::m_findReplace = +{ + {0,0,0,0,0,0}, {0,0,0,0,0,0}, + PATSEARCH_FULLSEARCH, PATSEARCH_REPLACEALL, + 0, 0, + 0, +}; + MODCOMMAND CViewPattern::m_cmdOld = {0,0,0,0,0,0}; -MODCOMMAND CViewPattern::m_cmdFind = {0,0,0,0,0,0}; -MODCOMMAND CViewPattern::m_cmdReplace = {0,0,0,0,0,0}; -DWORD CViewPattern::m_dwFindFlags = PATSEARCH_FULLSEARCH; -DWORD CViewPattern::m_dwReplaceFlags = PATSEARCH_REPLACEALL; -UINT CViewPattern::m_nFindMinChn = 0; -UINT CViewPattern::m_nFindMaxChn = 0; -signed char cInstrRelChange = 0; - IMPLEMENT_SERIAL(CViewPattern, CModScrollView, 0) BEGIN_MESSAGE_MAP(CViewPattern, CModScrollView) @@ -1690,44 +1690,50 @@ CFindReplaceTab pageReplace(IDD_EDIT_REPLACE, TRUE, pModDoc); CPropertySheet dlg("Find/Replace"); - pageFind.m_nNote = m_cmdFind.note; - pageFind.m_nInstr = m_cmdFind.instr; - pageFind.m_nVolCmd = m_cmdFind.volcmd; - pageFind.m_nVol = m_cmdFind.vol; - pageFind.m_nCommand = m_cmdFind.command; - pageFind.m_nParam = m_cmdFind.param; - pageFind.m_dwFlags = m_dwFindFlags; - pageFind.m_nMinChannel = m_nFindMinChn; - pageFind.m_nMaxChannel = m_nFindMaxChn; - pageReplace.m_nNote = m_cmdReplace.note; - pageReplace.m_nInstr = m_cmdReplace.instr; - pageReplace.m_nVolCmd = m_cmdReplace.volcmd; - pageReplace.m_nVol = m_cmdReplace.vol; - pageReplace.m_nCommand = m_cmdReplace.command; - pageReplace.m_nParam = m_cmdReplace.param; - pageReplace.m_dwFlags = m_dwReplaceFlags; - pageReplace.cInstrRelChange = m_cInstrRelChange; + pageFind.m_nNote = m_findReplace.cmdFind.note; + pageFind.m_nInstr = m_findReplace.cmdFind.instr; + pageFind.m_nVolCmd = m_findReplace.cmdFind.volcmd; + pageFind.m_nVol = m_findReplace.cmdFind.vol; + pageFind.m_nCommand = m_findReplace.cmdFind.command; + pageFind.m_nParam = m_findReplace.cmdFind.param; + pageFind.m_dwFlags = m_findReplace.dwFindFlags; + pageFind.m_nMinChannel = m_findReplace.nFindMinChn; + pageFind.m_nMaxChannel = m_findReplace.nFindMaxChn; + pageFind.m_bPatSel = (m_dwBeginSel != m_dwEndSel) ? true : false; + pageReplace.m_nNote = m_findReplace.cmdReplace.note; + pageReplace.m_nInstr = m_findReplace.cmdReplace.instr; + pageReplace.m_nVolCmd = m_findReplace.cmdReplace.volcmd; + pageReplace.m_nVol = m_findReplace.cmdReplace.vol; + pageReplace.m_nCommand = m_findReplace.cmdReplace.command; + pageReplace.m_nParam = m_findReplace.cmdReplace.param; + pageReplace.m_dwFlags = m_findReplace.dwReplaceFlags; + pageReplace.cInstrRelChange = m_findReplace.cInstrRelChange; + if(m_dwBeginSel != m_dwEndSel) + { + pageFind.m_dwFlags |= PATSEARCH_PATSELECTION; + pageFind.m_dwFlags &= ~PATSEARCH_FULLSEARCH; + } dlg.AddPage(&pageFind); dlg.AddPage(&pageReplace); if (dlg.DoModal() == IDOK) { - m_cmdFind.note = pageFind.m_nNote; - m_cmdFind.instr = pageFind.m_nInstr; - m_cmdFind.volcmd = pageFind.m_nVolCmd; - m_cmdFind.vol = pageFind.m_nVol; - m_cmdFind.command = pageFind.m_nCommand; - m_cmdFind.param = pageFind.m_nParam; - m_nFindMinChn = pageFind.m_nMinChannel; - m_nFindMaxChn = pageFind.m_nMaxChannel; - m_dwFindFlags = pageFind.m_dwFlags; - m_cmdReplace.note = pageReplace.m_nNote; - m_cmdReplace.instr = pageReplace.m_nInstr; - m_cmdReplace.volcmd = pageReplace.m_nVolCmd; - m_cmdReplace.vol = pageReplace.m_nVol; - m_cmdReplace.command = pageReplace.m_nCommand; - m_cmdReplace.param = pageReplace.m_nParam; - m_dwReplaceFlags = pageReplace.m_dwFlags; - m_cInstrRelChange = pageReplace.cInstrRelChange; + m_findReplace.cmdFind.note = pageFind.m_nNote; + m_findReplace.cmdFind.instr = pageFind.m_nInstr; + m_findReplace.cmdFind.volcmd = pageFind.m_nVolCmd; + m_findReplace.cmdFind.vol = pageFind.m_nVol; + m_findReplace.cmdFind.command = pageFind.m_nCommand; + m_findReplace.cmdFind.param = pageFind.m_nParam; + m_findReplace.nFindMinChn = pageFind.m_nMinChannel; + m_findReplace.nFindMaxChn = pageFind.m_nMaxChannel; + m_findReplace.dwFindFlags = pageFind.m_dwFlags; + m_findReplace.cmdReplace.note = pageReplace.m_nNote; + m_findReplace.cmdReplace.instr = pageReplace.m_nInstr; + m_findReplace.cmdReplace.volcmd = pageReplace.m_nVolCmd; + m_findReplace.cmdReplace.vol = pageReplace.m_nVol; + m_findReplace.cmdReplace.command = pageReplace.m_nCommand; + m_findReplace.cmdReplace.param = pageReplace.m_nParam; + m_findReplace.dwReplaceFlags = pageReplace.m_dwFlags; + m_findReplace.cInstrRelChange = pageReplace.cInstrRelChange; m_bContinueSearch = false; OnEditFindNext(); } @@ -1787,7 +1793,7 @@ BOOL bEffectEx; if (!pModDoc) return; - if (!(m_dwFindFlags & ~PATSEARCH_FULLSEARCH)) + if (!(m_findReplace.dwFindFlags & ~PATSEARCH_FULLSEARCH)) { PostMessage(WM_COMMAND, ID_EDIT_FIND); return; @@ -1796,19 +1802,23 @@ pSndFile = pModDoc->GetSoundFile(); nPatStart = m_nPattern; nPatEnd = m_nPattern+1; - if (m_dwFindFlags & PATSEARCH_FULLSEARCH) + if (m_findReplace.dwFindFlags & PATSEARCH_FULLSEARCH) { nPatStart = 0; nPatEnd = pSndFile->Patterns.Size(); + } else if(m_findReplace.dwFindFlags & PATSEARCH_PATSELECTION) + { + nPatStart = m_nPattern; + nPatEnd = nPatStart + 1; } if (m_bContinueSearch) { nPatStart = m_nPattern; } bEffectEx = FALSE; - if (m_dwFindFlags & PATSEARCH_COMMAND) + if (m_findReplace.dwFindFlags & PATSEARCH_COMMAND) { - UINT fxndx = pModDoc->GetIndexFromEffect(m_cmdFind.command, m_cmdFind.param); + UINT fxndx = pModDoc->GetIndexFromEffect(m_findReplace.cmdFind.command, m_findReplace.cmdFind.param); bEffectEx = pModDoc->IsExtendedEffect(fxndx); } for (UINT nPat=nPatStart; nPat<nPatEnd; nPat++) @@ -1824,42 +1834,51 @@ } for (; n<len; n++, m++) { - BOOL bFound = TRUE, bReplace = TRUE; + bool bFound = true, bReplace = true; - if (m_dwFindFlags & PATSEARCH_CHANNEL) + if (m_findReplace.dwFindFlags & PATSEARCH_CHANNEL) { - UINT ch = n % pSndFile->m_nChannels; - if ((ch < m_nFindMinChn) || (ch > m_nFindMaxChn)) bFound = FALSE; + // limit to given channels + const CHANNELINDEX ch = n % pSndFile->m_nChannels; + if ((ch < m_findReplace.nFindMinChn) || (ch > m_findReplace.nFindMaxChn)) bFound = false; } - if (((m_dwFindFlags & PATSEARCH_NOTE) && ((m->note != m_cmdFind.note) && ((m_cmdFind.note != CFindReplaceTab::findAny) || (!m->note) || (m->note & 0x80)))) - || ((m_dwFindFlags & PATSEARCH_INSTR) && (m->instr != m_cmdFind.instr)) - || ((m_dwFindFlags & PATSEARCH_VOLCMD) && (m->volcmd != m_cmdFind.volcmd)) - || ((m_dwFindFlags & PATSEARCH_VOLUME) && (m->vol != m_cmdFind.vol)) - || ((m_dwFindFlags & PATSEARCH_COMMAND) && (m->command != m_cmdFind.command)) - || ((m_dwFindFlags & PATSEARCH_PARAM) && (m->param != m_cmdFind.param))) + if (m_findReplace.dwFindFlags & PATSEARCH_PATSELECTION) { - bFound = FALSE; + // limit to pattern selection + const CHANNELINDEX ch = n % pSndFile->m_nChannels; + const ROWINDEX row = n / pSndFile->m_nChannels; + if ((ch < GetSelectionStartChan()) || (ch > GetSelectionEndChan())) bFound = false; + if ((row < GetSelectionStartRow()) || (row > GetSelectionEndRow())) bFound = false; + } + if (((m_findReplace.dwFindFlags & PATSEARCH_NOTE) && ((m->note != m_findReplace.cmdFind.note) && ((m_findReplace.cmdFind.note != CFindReplaceTab::findAny) || (!m->note) || (m->note & 0x80)))) + || ((m_findReplace.dwFindFlags & PATSEARCH_INSTR) && (m->instr != m_findReplace.cmdFind.instr)) + || ((m_findReplace.dwFindFlags & PATSEARCH_VOLCMD) && (m->volcmd != m_findReplace.cmdFind.volcmd)) + || ((m_findReplace.dwFindFlags & PATSEARCH_VOLUME) && (m->vol != m_findReplace.cmdFind.vol)) + || ((m_findReplace.dwFindFlags & PATSEARCH_COMMAND) && (m->command != m_findReplace.cmdFind.command)) + || ((m_findReplace.dwFindFlags & PATSEARCH_PARAM) && (m->param != m_findReplace.cmdFind.param))) + { + bFound = false; } else { - if (((m_dwFindFlags & (PATSEARCH_COMMAND|PATSEARCH_PARAM)) == PATSEARCH_COMMAND) && (bEffectEx)) + if (((m_findReplace.dwFindFlags & (PATSEARCH_COMMAND|PATSEARCH_PARAM)) == PATSEARCH_COMMAND) && (bEffectEx)) { - if ((m->param & 0xF0) != (m_cmdFind.param & 0xF0)) bFound = FALSE; + if ((m->param & 0xF0) != (m_findReplace.cmdFind.param & 0xF0)) bFound = false; } // Ignore modcommands with PC/PCS notes when searching from volume or effect column. if( (m->IsPcNote()) && - m_dwFindFlags & (PATSEARCH_VOLCMD|PATSEARCH_VOLUME|PATSEARCH_COMMAND|PATSEARCH_PARAM)) + m_findReplace.dwFindFlags & (PATSEARCH_VOLCMD|PATSEARCH_VOLUME|PATSEARCH_COMMAND|PATSEARCH_PARAM)) { - bFound = FALSE; + bFound = false; } } // Found! if (bFound) { - BOOL bUpdPos = TRUE; - if ((m_dwReplaceFlags & (PATSEARCH_REPLACEALL|PATSEARCH_REPLACE)) == (PATSEARCH_REPLACEALL|PATSEARCH_REPLACE)) bUpdPos = FALSE; + bool bUpdPos = true; + if ((m_findReplace.dwReplaceFlags & (PATSEARCH_REPLACEALL|PATSEARCH_REPLACE)) == (PATSEARCH_REPLACEALL|PATSEARCH_REPLACE)) bUpdPos = false; nFound++; if (bUpdPos) { @@ -1871,16 +1890,16 @@ SetCurrentRow(n / pSndFile->m_nChannels); } UINT ncurs = (n % pSndFile->m_nChannels) << 3; - if (!(m_dwFindFlags & PATSEARCH_NOTE)) + if (!(m_findReplace.dwFindFlags & PATSEARCH_NOTE)) { ncurs++; - if (!(m_dwFindFlags & PATSEARCH_INSTR)) + if (!(m_findReplace.dwFindFlags & PATSEARCH_INSTR)) { ncurs++; - if (!(m_dwFindFlags & (PATSEARCH_VOLCMD|PATSEARCH_VOLUME))) + if (!(m_findReplace.dwFindFlags & (PATSEARCH_VOLCMD|PATSEARCH_VOLUME))) { ncurs++; - if (!(m_dwFindFlags & PATSEARCH_COMMAND)) ncurs++; + if (!(m_findReplace.dwFindFlags & PATSEARCH_COMMAND)) ncurs++; } } } @@ -1888,77 +1907,77 @@ { SetCurrentColumn(ncurs); } - if (!(m_dwReplaceFlags & PATSEARCH_REPLACE)) goto EndSearch; - if (!(m_dwReplaceFlags & PATSEARCH_REPLACEALL)) + if (!(m_findReplace.dwReplaceFlags & PATSEARCH_REPLACE)) goto EndSearch; + if (!(m_findReplace.dwReplaceFlags & PATSEARCH_REPLACEALL)) { UINT ans = MessageBox("Replace this occurrence?", "Replace", MB_YESNOCANCEL); - if (ans == IDYES) bReplace = TRUE; else - if (ans == IDNO) bReplace = FALSE; else goto EndSearch; + if (ans == IDYES) bReplace = true; else + if (ans == IDNO) bReplace = false; else goto EndSearch; } if (bReplace) { pModDoc->GetPatternUndo()->PrepareUndo(nPat, n % pSndFile->m_nChannels, n / pSndFile->m_nChannels, 1, 1); - if ((m_dwReplaceFlags & PATSEARCH_NOTE)) + if ((m_findReplace.dwReplaceFlags & PATSEARCH_NOTE)) { // -1 octave - if (m_cmdReplace.note == CFindReplaceTab::replaceNoteMinusOctave) + if (m_findReplace.cmdReplace.note == CFindReplaceTab::replaceNoteMinusOctave) { if (m->note > 12) m->note -= 12; } else // +1 octave - if (m_cmdReplace.note == CFindReplaceTab::replaceNotePlusOctave) + if (m_findReplace.cmdReplace.note == CFindReplaceTab::replaceNotePlusOctave) { if (m->note <= NOTE_MAX - 12) m->note += 12; } else // Note-- - if (m_cmdReplace.note == CFindReplaceTab::replaceNoteMinusOne) + if (m_findReplace.cmdReplace.note == CFindReplaceTab::replaceNoteMinusOne) { if (m->note > 1) m->note--; } else // Note++ - if (m_cmdReplace.note == CFindReplaceTab::replaceNotePlusOne) + if (m_findReplace.cmdReplace.note == CFindReplaceTab::replaceNotePlusOne) { if (m->note < NOTE_MAX) m->note++; } else // Replace with another note { - // If we're going to remove a PC Note, wipe out the complete column. - if(m->IsPcNote() && !MODCOMMAND::IsPcNote(m_cmdReplace.note)) + // If we're going to remove a PC Note or replace a normal note by a PC note, wipe out the complete column. + if(m->IsPcNote() != MODCOMMAND::IsPcNote(m_findReplace.cmdReplace.note)) { m->Clear(); } - m->note = m_cmdReplace.note; + m->note = m_findReplace.cmdReplace.note; } } - if ((m_dwReplaceFlags & PATSEARCH_INSTR)) + if ((m_findReplace.dwReplaceFlags & PATSEARCH_INSTR)) { // Instr-- - if (m_cInstrRelChange == -1 && m->instr > 1) + if (m_findReplace.cInstrRelChange == -1 && m->instr > 1) m->instr--; // Instr++ - else if (m_cInstrRelChange == 1 && m->instr > 0 && m->instr < (MAX_INSTRUMENTS - 1)) + else if (m_findReplace.cInstrRelChange == 1 && m->instr > 0 && m->instr < (MAX_INSTRUMENTS - 1)) m->instr++; - else m->instr = m_cmdReplace.instr; + else m->instr = m_findReplace.cmdReplace.instr; } - if ((m_dwReplaceFlags & PATSEARCH_VOLCMD)) + if ((m_findReplace.dwReplaceFlags & PATSEARCH_VOLCMD)) { - m->volcmd = m_cmdReplace.volcmd; + m->volcmd = m_findReplace.cmdReplace.volcmd; } - if ((m_dwReplaceFlags & PATSEARCH_VOLUME)) + if ((m_findReplace.dwReplaceFlags & PATSEARCH_VOLUME)) { - m->vol = m_cmdReplace.vol; + m->vol = m_findReplace.cmdReplace.vol; } - if ((m_dwReplaceFlags & PATSEARCH_COMMAND)) + if ((m_findReplace.dwReplaceFlags & PATSEARCH_COMMAND)) { - m->command = m_cmdReplace.command; + m->command = m_findReplace.cmdReplace.command; } - if ((m_dwReplaceFlags & PATSEARCH_PARAM)) + if ((m_findReplace.dwReplaceFlags & PATSEARCH_PARAM)) { - if ((bEffectEx) && (!(m_dwReplaceFlags & PATSEARCH_COMMAND))) - m->param = (BYTE)((m->param & 0xF0) | (m_cmdReplace.param & 0x0F)); + if ((bEffectEx) && (!(m_findReplace.dwReplaceFlags & PATSEARCH_COMMAND))) + m->param = (BYTE)((m->param & 0xF0) | (m_findReplace.cmdReplace.param & 0x0F)); else - m->param = m_cmdReplace.param; + m->param = m_findReplace.cmdReplace.param; } pModDoc->SetModified(); if (bUpdPos) InvalidateRow(); @@ -1967,52 +1986,52 @@ } } EndSearch: - if (m_dwReplaceFlags & PATSEARCH_REPLACEALL) InvalidatePattern(); + if (m_findReplace.dwReplaceFlags & PATSEARCH_REPLACEALL) InvalidatePattern(); m_bContinueSearch = true; EndWaitCursor(); // Display search results - //m_dwReplaceFlags &= ~PATSEARCH_REPLACEALL; + //m_findReplace.dwReplaceFlags &= ~PATSEARCH_REPLACEALL; if (!nFound) { - if (m_dwFindFlags & PATSEARCH_NOTE) + if (m_findReplace.dwFindFlags & PATSEARCH_NOTE) { - wsprintf(szFind, "%s", GetNoteStr(m_cmdFind.note)); + wsprintf(szFind, "%s", GetNoteStr(m_findReplace.cmdFind.note)); } else strcpy(szFind, "???"); strcat(szFind, " "); - if (m_dwFindFlags & PATSEARCH_INSTR) + if (m_findReplace.dwFindFlags & PATSEARCH_INSTR) { - if (m_cmdFind.instr) - wsprintf(&szFind[strlen(szFind)], "%03d", m_cmdFind.instr); + if (m_findReplace.cmdFind.instr) + wsprintf(&szFind[strlen(szFind)], "%03d", m_findReplace.cmdFind.instr); else strcat(szFind, " .."); } else strcat(szFind, " ??"); strcat(szFind, " "); - if (m_dwFindFlags & PATSEARCH_VOLCMD) + if (m_findReplace.dwFindFlags & PATSEARCH_VOLCMD) { - if (m_cmdFind.volcmd) - wsprintf(&szFind[strlen(szFind)], "%c", gszVolCommands[m_cmdFind.volcmd]); + if (m_findReplace.cmdFind.volcmd) + wsprintf(&szFind[strlen(szFind)], "%c", gszVolCommands[m_findReplace.cmdFind.volcmd]); else strcat(szFind, "."); } else strcat(szFind, "?"); - if (m_dwFindFlags & PATSEARCH_VOLUME) + if (m_findReplace.dwFindFlags & PATSEARCH_VOLUME) { - wsprintf(&szFind[strlen(szFind)], "%02d", m_cmdFind.vol); + wsprintf(&szFind[strlen(szFind)], "%02d", m_findReplace.cmdFind.vol); } else strcat(szFind, "??"); strcat(szFind, " "); - if (m_dwFindFlags & PATSEARCH_COMMAND) + if (m_findReplace.dwFindFlags & PATSEARCH_COMMAND) { - if (m_cmdFind.command) + if (m_findReplace.cmdFind.command) { if (pSndFile->m_nType & (MOD_TYPE_S3M|MOD_TYPE_IT|MOD_TYPE_MPT)) - wsprintf(&szFind[strlen(szFind)], "%c", gszS3mCommands[m_cmdFind.command]); + wsprintf(&szFind[strlen(szFind)], "%c", gszS3mCommands[m_findReplace.cmdFind.command]); else - wsprintf(&szFind[strlen(szFind)], "%c", gszModCommands[m_cmdFind.command]); + wsprintf(&szFind[strlen(szFind)], "%c", gszModCommands[m_findReplace.cmdFind.command]); } else strcat(szFind, "."); } else strcat(szFind, "?"); - if (m_dwFindFlags & PATSEARCH_PARAM) + if (m_findReplace.dwFindFlags & PATSEARCH_PARAM) { - wsprintf(&szFind[strlen(szFind)], "%02X", m_cmdFind.param); + wsprintf(&szFind[strlen(szFind)], "%02X", m_findReplace.cmdFind.param); } else strcat(szFind, "??"); wsprintf(s, "Cannot find \"%s\"", szFind); MessageBox(s, "Find/Replace", MB_OK | MB_ICONINFORMATION); Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2010-12-03 22:05:09 UTC (rev 768) +++ trunk/OpenMPT/mptrack/View_pat.h 2010-12-03 22:12:57 UTC (rev 769) @@ -63,7 +63,16 @@ CHANNELINDEX nChn; }; +// Find/Replace data +struct FindReplaceStruct +{ + MODCOMMAND cmdFind, cmdReplace; + DWORD dwFindFlags, dwReplaceFlags; + CHANNELINDEX nFindMinChn, nFindMaxChn; + signed char cInstrRelChange; // relative instrument change (quick'n'dirty fix, this should be implemented in a less cryptic way) +}; + ////////////////////////////////////////////////////////////////// // Pattern editing class @@ -72,13 +81,6 @@ class CViewPattern: public CModScrollView //======================================= { -public: - // Find/Replace - static MODCOMMAND m_cmdFind, m_cmdReplace, m_cmdOld; - static DWORD m_dwFindFlags, m_dwReplaceFlags; - static UINT m_nFindMinChn, m_nFindMaxChn; - signed char m_cInstrRelChange; // relative instrument change (quick'n'dirty fix, this should be implemented in a less cryptic way) - protected: CFastBitmap m_Dib; CEditCommand *m_pEditWnd; @@ -102,6 +104,9 @@ UINT m_nLastPlayedChannel; //rewbs.customkeys bool m_bLastNoteEntryBlocked; + static MODCOMMAND m_cmdOld; // Quick cursor copy/paste data + static FindReplaceStruct m_findReplace; // Find/replace data + // -> CODE#0012 // -> DESC="midi keyboard split" BYTE activeNoteChannel[NOTE_MAX + 1]; Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2010-12-03 22:05:09 UTC (rev 768) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2010-12-03 22:12:57 UTC (rev 769) @@ -759,9 +759,18 @@ } else { if (m_dwFlags & PATSEARCH_CHANNEL) CheckDlgButton(IDC_CHECK7, MF_CHECKED); - CheckRadioButton(IDC_RADIO1, IDC_RADIO2, (m_dwFlags & PATSEARCH_FULLSEARCH) ? IDC_RADIO2 : IDC_RADIO1); - SetDlgItemInt(IDC_EDIT1, m_nMinChannel+1); - SetDlgItemInt(IDC_EDIT2, m_nMaxChannel+1); + int nButton = IDC_RADIO1; + if((m_dwFlags & PATSEARCH_FULLSEARCH)) + { + nButton = IDC_RADIO2; + } else if(/*(m_dwFlags & PATSEARCH_PATSELECTION) &&*/ m_bPatSel) + { + nButton = IDC_RADIO3; + } + CheckRadioButton(IDC_RADIO1, IDC_RADIO3, nButton); + GetDlgItem(IDC_RADIO3)->EnableWindow(m_bPatSel ? TRUE : FALSE); + SetDlgItemInt(IDC_EDIT1, m_nMinChannel + 1); + SetDlgItemInt(IDC_EDIT2, m_nMaxChannel + 1); } // Note if ((combo = (CComboBox *)GetDlgItem(IDC_COMBO1)) != NULL) @@ -941,6 +950,7 @@ { if (IsDlgButtonChecked(IDC_CHECK7)) m_dwFlags |= PATSEARCH_CHANNEL; if (IsDlgButtonChecked(IDC_RADIO2)) m_dwFlags |= PATSEARCH_FULLSEARCH; + if (IsDlgButtonChecked(IDC_RADIO3)) m_dwFlags |= PATSEARCH_PATSELECTION; } // Note if ((combo = (CComboBox *)GetDlgItem(IDC_COMBO1)) != NULL) Modified: trunk/OpenMPT/mptrack/dlg_misc.h =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.h 2010-12-03 22:05:09 UTC (rev 768) +++ trunk/OpenMPT/mptrack/dlg_misc.h 2010-12-03 22:12:57 UTC (rev 769) @@ -141,16 +141,17 @@ ///////////////////////////////////////////////////////////////////////// // Search/Replace -#define PATSEARCH_NOTE 0x01 -#define PATSEARCH_INSTR 0x02 -#define PATSEARCH_VOLCMD 0x04 -#define PATSEARCH_VOLUME 0x08 -#define PATSEARCH_COMMAND 0x10 -#define PATSEARCH_PARAM 0x20 -#define PATSEARCH_CHANNEL 0x40 -#define PATSEARCH_FULLSEARCH 0x100 -#define PATSEARCH_REPLACE 0x200 -#define PATSEARCH_REPLACEALL 0x400 +#define PATSEARCH_NOTE 0x01 // Search for note +#define PATSEARCH_INSTR 0x02 // Search for instrument +#define PATSEARCH_VOLCMD 0x04 // Search for volume effect +#define PATSEARCH_VOLUME 0x08 // Search for volume +#define PATSEARCH_COMMAND 0x10 // Search for effect +#define PATSEARCH_PARAM 0x20 // Search for effect parameter +#define PATSEARCH_CHANNEL 0x40 // Limit search to channels +#define PATSEARCH_FULLSEARCH 0x100 // Search whole song +#define PATSEARCH_PATSELECTION 0x200 // Search in current pattern selection +#define PATSEARCH_REPLACE 0x400 // Replace +#define PATSEARCH_REPLACEALL 0x800 // Replace all //========================================= class CFindReplaceTab: public CPropertyPage @@ -161,8 +162,10 @@ CModDoc *m_pModDoc; public: - UINT m_nNote, m_nInstr, m_nVolCmd, m_nVol, m_nCommand, m_nParam, m_nMinChannel, m_nMaxChannel; + UINT m_nNote, m_nInstr, m_nVolCmd, m_nVol, m_nCommand, m_nParam; + CHANNELINDEX m_nMinChannel, m_nMaxChannel; signed char cInstrRelChange; + bool m_bPatSel; DWORD m_dwFlags; enum findItem Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2010-12-03 22:05:09 UTC (rev 768) +++ trunk/OpenMPT/mptrack/mptrack.rc 2010-12-03 22:12:57 UTC (rev 769) @@ -871,8 +871,8 @@ CTEXT "Wet Dry Ratio",IDC_STATIC8,245,282,65,14,SS_CENTERIMAGE,WS_EX_STATICEDGE END -IDD_EDIT_FIND DIALOGEX 0, 0, 182, 145 -STYLE DS_SETFONT | WS_CHILD | WS_CAPTION +IDD_EDIT_FIND DIALOGEX 0, 0, 182, 161 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CAPTION CAPTION "Find" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -889,12 +889,13 @@ COMBOBOX IDC_COMBO5,13,92,94,71,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP CONTROL "Effect Data",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,117,78,52,10 COMBOBOX IDC_COMBO6,117,92,48,68,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - CONTROL "Find in current pattern",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,6,117,88,10 - CONTROL "Find in the whole song",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,6,131,89,10 + CONTROL "Find in current pattern",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,6,120,96,8 + CONTROL "Find in the whole song",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,6,144,102,8 CONTROL "Only in channels",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,105,117,70,10 EDITTEXT IDC_EDIT1,117,130,22,12,ES_AUTOHSCROLL | ES_NUMBER CTEXT "to",IDC_STATIC,143,131,8,8 EDITTEXT IDC_EDIT2,155,130,22,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Find in current selection",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,6,132,102,8 END IDD_EDIT_REPLACE DIALOGEX 0, 0, 182, 145 @@ -1641,6 +1642,11 @@ BOTTOMMARGIN, 335 END + IDD_EDIT_FIND, DIALOG + BEGIN + BOTTOMMARGIN, 145 + END + IDD_PATTERN_PROPERTIES, DIALOG BEGIN LEFTMARGIN, 4 Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2010-12-03 22:05:09 UTC (rev 768) +++ trunk/OpenMPT/mptrack/version.h 2010-12-03 22:12:57 UTC (rev 769) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 19 #define VER_MINOR 00 -#define VER_MINORMINOR 13 +#define VER_MINORMINOR 14 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |