From: <sag...@us...> - 2009-10-04 12:50:26
|
Revision: 385 http://modplug.svn.sourceforge.net/modplug/?rev=385&view=rev Author: saga-games Date: 2009-10-04 12:50:16 +0000 (Sun, 04 Oct 2009) Log Message: ----------- [Imp] Treeview: Double-clicking order items and pattern items should work now, dragondrop is not fully functional yet. [Mod] Updated DE_jojo.mkb (Reset Channel shortcut, Note Cut / Off / Fade are now "old style". [Mod] Pattern editor: It is impossible to enter something into the voluem column in mod format now. [Ref] More refactoring (not much). Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Ctrl_pat.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/View_tre.h trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2009-10-04 12:50:16 UTC (rev 385) @@ -337,7 +337,8 @@ } - } else { + } else + { UINT nmax = m_pSndFile->m_nSamples; while ((nmax > 1) && (m_pSndFile->Samples[nmax].pSample == NULL) && (!m_pSndFile->m_szNames[nmax][0])) nmax--; for (UINT i=1; i<=nmax; i++) if ((m_pSndFile->m_szNames[i][0]) || (m_pSndFile->Samples[i].pSample)) { @@ -413,7 +414,7 @@ break; case CTRLMSG_SETCURRENTPATTERN: - SetCurrentPattern(lParam); + SetCurrentPattern((PATTERNINDEX)lParam); break; case CTRLMSG_SETCURRENTORDER: @@ -535,10 +536,10 @@ } -void CCtrlPatterns::SetCurrentPattern(UINT nPat) -//---------------------------------------------- +void CCtrlPatterns::SetCurrentPattern(PATTERNINDEX nPat) +//------------------------------------------------------ { - SendViewMessage(VIEWMSG_SETCURRENTPATTERN, nPat); + SendViewMessage(VIEWMSG_SETCURRENTPATTERN, (LPARAM)nPat); } @@ -576,10 +577,7 @@ void CCtrlPatterns::OnActivatePage(LPARAM lParam) //----------------------------------------------- { - CModDoc *pModDoc = GetDocument(); - CSoundFile* pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; - - if ((pModDoc) && (m_pParent)) + if ((m_pModDoc) && (m_pParent)) { int nIns = m_pParent->GetInstrumentChange(); if (nIns > 0) @@ -588,30 +586,37 @@ } m_pParent->InstrumentChanged(-1); } - if ((lParam >= 0) && (lParam < m_pSndFile->Patterns.Size())) + if (!(lParam & 0x8000) && m_pSndFile) { - if (pSndFile) + // Pattern item + PATTERNINDEX nPat = (PATTERNINDEX)(lParam & 0x7FFF); + if(m_pSndFile->Patterns.IsValidIndex(nPat)) { - for (ORDERINDEX i=0; i<pSndFile->Order.size(); i++) + for (SEQUENCEINDEX nSeq = 0; nSeq < m_pSndFile->Order.GetNumSequences(); nSeq++) { - if (pSndFile->Order[i] == (UINT)lParam) + for (ORDERINDEX nOrd = 0; nOrd < m_pSndFile->Order.GetSequence(nSeq).GetLengthTailTrimmed(); nOrd++) { - m_OrderList.SetCurSel(i, TRUE); - break; + if (m_pSndFile->Order.GetSequence(nSeq)[nOrd] == nPat) + { + m_OrderList.SelectSequence(nSeq); + m_OrderList.SetCurSel(nOrd, true); + break; + } } - if (pSndFile->Order[i] == pSndFile->Order.GetInvalidPatIndex()) break; } } - SetCurrentPattern(lParam); + SetCurrentPattern(nPat); } - else if ((lParam >= 0x8000) && (lParam < int(pSndFile->Order.size()) + 0x8000)) + else if ((lParam & 0x8000) && m_pSndFile) { - if (pSndFile) + // Order item + ORDERINDEX nOrd = (ORDERINDEX)(lParam & 0x7FFF); + SEQUENCEINDEX nSeq = (SEQUENCEINDEX)(lParam >> 16); + if((nSeq < m_pSndFile->Order.GetNumSequences()) && (nOrd < m_pSndFile->Order.GetSequence(nSeq).size())) { - lParam &= 0x7FFF; - m_OrderList.OnSelectSequence(pSndFile->Order.GetCurrentSequenceIndex()); // new sequence already set in view_tre.cpp, GetModItem() - m_OrderList.SetCurSel((ORDERINDEX)lParam); - SetCurrentPattern(pSndFile->Order[lParam]); + m_OrderList.SelectSequence(nSeq); + m_OrderList.SetCurSel(nOrd); + SetCurrentPattern(m_pSndFile->Order[nOrd]); } } if (m_hWndView) Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.h 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/Ctrl_pat.h 2009-10-04 12:50:16 UTC (rev 385) @@ -81,6 +81,9 @@ // is not interpreted to be in margins regardless of the margin value. bool IsOrderInMargins(int order, int startOrder); + // Set given sqeuence and update orderlist display. + void SelectSequence(const SEQUENCEINDEX nSeq); + public: //{{AFX_VIRTUAL(COrderList) virtual BOOL PreTranslateMessage(MSG *pMsg); @@ -164,7 +167,7 @@ LONG* GetSplitPosRef() {return &CMainFrame::glPatternWindowHeight;} //rewbs.varWindowSize public: - void SetCurrentPattern(UINT nPat); + void SetCurrentPattern(PATTERNINDEX nPat); BOOL SetCurrentInstrument(UINT nIns); BOOL GetFollowSong() { return IsDlgButtonChecked(IDC_PATTERN_FOLLOWSONG); } BOOL GetLoopPattern() {return IsDlgButtonChecked(IDC_PATTERN_LOOP);} Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2009-10-04 12:50:16 UTC (rev 385) @@ -786,37 +786,7 @@ void COrderList::OnSelectSequence(UINT nid) //----------------------------------------- { - BEGIN_CRITICAL(); - CMainFrame::GetMainFrame()->ResetNotificationBuffer(); - const SEQUENCEINDEX nId = static_cast<SEQUENCEINDEX>(nid - ID_SEQUENCE_ITEM); - CSoundFile& rSf = *m_pModDoc->GetSoundFile(); - if (nId == MAX_SEQUENCES + 1) - { - CString strParam; strParam.Format(TEXT("%u: %s"), rSf.Order.GetCurrentSequenceIndex(), rSf.Order.m_sName); - CString str; - AfxFormatString1(str, IDS_CONFIRM_SEQUENCE_DELETE, strParam); - if (AfxMessageBox(str, MB_YESNO | MB_ICONQUESTION) == IDYES) - rSf.Order.RemoveSequence(); - else - { - END_CRITICAL(); - return; - } - } - else if (nId == MAX_SEQUENCES) - rSf.Order.AddSequence(); - else if (nId < rSf.Order.GetNumSequences()) - rSf.Order.SetSequence(nId); - ORDERINDEX nPosCandidate = rSf.Order.GetLengthTailTrimmed() - 1; - SetCurSel(min(m_nScrollPos, nPosCandidate), true, false, true); - if (m_pParent) - m_pParent->SetCurrentPattern(rSf.Order[m_nScrollPos]); - - UpdateScrollInfo(); - END_CRITICAL(); - UpdateView(HINT_MODSEQUENCE); - m_pModDoc->SetModified(); - m_pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, this); + SelectSequence(static_cast<SEQUENCEINDEX>(nid - ID_SEQUENCE_ITEM)); } @@ -1168,3 +1138,38 @@ m_nOrderlistMargins = static_cast<BYTE>(i); return GetMargins(); } + +void COrderList::SelectSequence(const SEQUENCEINDEX nSeq) +//------------------------------------------------------- +{ + BEGIN_CRITICAL(); + CMainFrame::GetMainFrame()->ResetNotificationBuffer(); + CSoundFile& rSf = *m_pModDoc->GetSoundFile(); + if (nSeq == MAX_SEQUENCES + 1) + { + CString strParam; strParam.Format(TEXT("%u: %s"), rSf.Order.GetCurrentSequenceIndex(), rSf.Order.m_sName); + CString str; + AfxFormatString1(str, IDS_CONFIRM_SEQUENCE_DELETE, strParam); + if (AfxMessageBox(str, MB_YESNO | MB_ICONQUESTION) == IDYES) + rSf.Order.RemoveSequence(); + else + { + END_CRITICAL(); + return; + } + } + else if (nSeq == MAX_SEQUENCES) + rSf.Order.AddSequence(); + else if (nSeq < rSf.Order.GetNumSequences()) + rSf.Order.SetSequence(nSeq); + ORDERINDEX nPosCandidate = rSf.Order.GetLengthTailTrimmed() - 1; + SetCurSel(min(m_nScrollPos, nPosCandidate), true, false, true); + if (m_pParent) + m_pParent->SetCurrentPattern(rSf.Order[m_nScrollPos]); + + UpdateScrollInfo(); + END_CRITICAL(); + UpdateView(HINT_MODSEQUENCE); + m_pModDoc->SetModified(); + m_pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, this); +} Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/Moddoc.h 2009-10-04 12:50:16 UTC (rev 385) @@ -242,7 +242,7 @@ BOOL IsChildSample(UINT nIns, UINT nSmp) const; UINT FindSampleParent(UINT nSmp) const; UINT FindInstrumentChild(UINT nIns) const; - bool MoveOrder(UINT nSourceNdx, UINT nDestNdx, bool bUpdate = true, bool bCopy = false); + bool MoveOrder(ORDERINDEX nSourceNdx, ORDERINDEX nDestNdx, bool bUpdate = true, bool bCopy = false); BOOL ExpandPattern(PATTERNINDEX nPattern); BOOL ShrinkPattern(PATTERNINDEX nPattern); BOOL CopyPattern(PATTERNINDEX nPattern, DWORD dwBeginSel, DWORD dwEndSel); Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2009-10-04 12:50:16 UTC (rev 385) @@ -1022,13 +1022,18 @@ vector<MODCOMMAND*> pPatterns(maxPatIndex, NULL); vector<BOOL> bPatUsed(maxPatIndex, false); - const ORDERINDEX nLengthSub0 = m_SndFile.Order.GetLengthFirstEmpty(); - const ORDERINDEX nLengthUsed = m_SndFile.Order.GetLengthTailTrimmed(); + bool bSubtunesDetected = false; + // detect subtunes (separated by "---") + for(SEQUENCEINDEX nSeq = 0; nSeq < m_SndFile.Order.GetNumSequences(); nSeq++) + { + if(m_SndFile.Order.GetSequence(nSeq).GetLengthFirstEmpty() != m_SndFile.Order.GetSequence(nSeq).GetLengthTailTrimmed()) + bSubtunesDetected = true; + } // Flag to tell whether keeping sequence items which are after the first empty('---') order. bool bKeepSubSequences = false; - if(nLengthUsed != nLengthSub0) + if(bSubtunesDetected) { // There are used sequence items after first '---'; ask user whether to remove those. if (CMainFrame::GetMainFrame()->MessageBox( _TEXT("Do you want to remove sequence items which are after the first '---' item?"), @@ -2009,8 +2014,8 @@ } -bool CModDoc::MoveOrder(UINT nSourceNdx, UINT nDestNdx, bool bUpdate, bool bCopy) -//------------------------------------------------------------------------------- +bool CModDoc::MoveOrder(ORDERINDEX nSourceNdx, ORDERINDEX nDestNdx, bool bUpdate, bool bCopy) +//------------------------------------------------------------------------------------------- { if ((nSourceNdx >= m_SndFile.Order.size()) || (nDestNdx >= m_SndFile.Order.size())) return false; if (nDestNdx >= m_SndFile.GetModSpecifications().ordersMax) return false; Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2009-10-04 12:50:16 UTC (rev 385) @@ -3707,6 +3707,7 @@ { CSoundFile *pSndFile = pModDoc->GetSoundFile(); + if(pSndFile->m_nType & MOD_TYPE_MOD) return; // no volume column PrepareUndo(m_dwBeginSel, m_dwEndSel); @@ -3745,7 +3746,7 @@ case kcSetVolumeITVelocity: if (pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) volcmd = VOLCMD_VELOCITY; break; //rewbs.velocity case kcSetVolumeITOffset: if (pSndFile->m_nType & (MOD_TYPE_IT | MOD_TYPE_MPT)) volcmd = VOLCMD_OFFSET; break; //rewbs.volOff } - if ((pSndFile->m_nType & MOD_TYPE_MOD) && (volcmd > VOLCMD_PANNING)) volcmd = vol = 0; + //if ((pSndFile->m_nType & MOD_TYPE_MOD) && (volcmd > VOLCMD_PANNING)) volcmd = vol = 0; UINT max = 64; if (volcmd > VOLCMD_PANNING) Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2009-10-04 12:50:16 UTC (rev 385) @@ -6,7 +6,6 @@ #include "dlsbank.h" #include "dlg_misc.h" #include "vstplug.h" -#include ".\view_tre.h" #ifndef TVS_SINGLEEXPAND #define TVS_SINGLEEXPAND 0x400 @@ -704,6 +703,8 @@ pInfo->tiOrders.resize(pSndFile->Order.GetNumSequences()); } + // TODO what to do when seq count changed from 2 to 1 or from 1 to 2? + /* // number of sequences changed: wipe tree first (is this necessary?) if(pInfo->tiOrders.size() != pSndFile->Order.GetNumSequences()) { @@ -728,11 +729,14 @@ if(pSndFile->Order.GetNumSequences() > 1) { // more than one sequence -> add folder + CString sSeqName = pSndFile->Order.GetSequence(nSeq).m_sName; + if(sSeqName.IsEmpty()) sSeqName.Format("Sequence %d", nSeq); if(pInfo->tiSequences[nSeq] == NULL) { - CString sSeqName = pSndFile->Order.GetSequence(nSeq).m_sName; - if(sSeqName.IsEmpty()) sSeqName.Format("Sequence %d", nSeq); pInfo->tiSequences[nSeq] = InsertItem(sSeqName, IMAGE_FOLDER, IMAGE_FOLDER, pInfo->hOrders, TVI_LAST); + } else + { + } hAncestorNode = pInfo->tiSequences[nSeq]; } @@ -861,7 +865,7 @@ { if (iSmp <= pSndFile->m_nSamples) { - BOOL bSamplePresent = (pSndFile->Samples[iSmp].pSample) ? TRUE : FALSE; + bool bSamplePresent = (pSndFile->Samples[iSmp].pSample) ? true : false; UINT nImage = (bSamplePresent) ? IMAGE_SAMPLES : IMAGE_NOSAMPLE; wsprintf(s, "%3d: %s", iSmp, pSndFile->m_szNames[iSmp]); if (!pInfo->tiSamples[iSmp]) @@ -948,7 +952,7 @@ } -DWORD CModTree::GetModItem(HTREEITEM hItem) +uint64 CModTree::GetModItem(HTREEITEM hItem) //----------------------------------------- { LPARAM lParam; @@ -1025,8 +1029,8 @@ if (hItem == pSong->hSamples) return MODITEM_HDR_SAMPLES; if (hItem == pSong->hInstruments) return MODITEM_HDR_INSTRUMENTS; if (hItem == pSong->hComments) return MODITEM_COMMENTS; - // Order List? (either "order list" or "sequence x" item as parent) - if ((hItemParent == pSong->hOrders && pSong->tiSequences.size() == 1) || (hItemParentParent == pSong->hOrders)) + // Order List or Sequence item? + if ((hItemParent == pSong->hOrders) || (hItemParentParent == pSong->hOrders)) { // find sequence this item belongs to for(SEQUENCEINDEX nSeq = 0; nSeq < pSong->tiOrders.size(); nSeq++) @@ -1036,16 +1040,10 @@ { if (hItem == pSong->tiOrders[nSeq][nOrd]) { - if(pSong->pModDoc->GetSoundFile() != nullptr) - { - pSong->pModDoc->GetSoundFile()->Order.SetSequence(nSeq); - // TODO this is buggy - //OnSelectSequence must be called? Or send a message? - } - //if(nSeq != pSong->nSeqSel) // sequence change - // return (MODITEM_ORDER_SEQUENCE | (nOrd << 16)); - //else // same sequence - return (MODITEM_ORDER | (nOrd << 16)); + return (MODITEM_ORDER | (nOrd << 16) | (((uint64)nSeq) << 32)); + } else if(hItem == pSong->tiSequences[nSeq]) + { + return (MODITEM_SEQUENCE | (nSeq << 16)); } } } @@ -1111,11 +1109,11 @@ { if (hItem) { - DWORD dwItemType = GetModItem(hItem); - DWORD dwItem = dwItemType >> 16; + uint64 qwItemType = GetModItem(hItem); + DWORD dwItem = (DWORD)(qwItemType >> 16); PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - switch(dwItemType & 0xFFFF) + switch(qwItemType & 0xFFFF) { case MODITEM_COMMENTS: if (pModDoc) pModDoc->ActivateView(IDD_CONTROL_COMMENTS, 0); @@ -1155,7 +1153,7 @@ return TRUE; default: - if (dwItemType & 0x8000) + if (qwItemType & 0x8000) { PlayItem(hItem); return TRUE; @@ -1171,11 +1169,11 @@ { if (hItem) { - DWORD dwItemType = GetModItem(hItem); - DWORD dwItem = dwItemType >> 16; + uint64 qwItemType = GetModItem(hItem); + DWORD dwItem = (DWORD)(qwItemType >> 16); PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - switch(dwItemType & 0xFFFF) + switch(qwItemType & 0xFFFF) { case MODITEM_SAMPLE: if (pModDoc) @@ -1234,7 +1232,7 @@ CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); if (pMainFrm) { - if ((dwItemType & 0xFFFF) == MODITEM_INSLIB_INSTRUMENT) + if ((qwItemType & 0xFFFF) == MODITEM_INSLIB_INSTRUMENT) { pMainFrm->PlaySoundFile(&m_SongFile, n, 0, nParam); } else @@ -1265,21 +1263,21 @@ break; default: - if (dwItemType & 0x8000) + if (qwItemType & 0x8000) { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); - UINT bank = (dwItemType & 0x3F000000) >> 24; + UINT bank = (qwItemType & 0x3F000000) >> 24; if ((bank < MAX_DLS_BANKS) && (CTrackApp::gpDLSBanks[bank]) && (pMainFrm)) { CDLSBank *pDLSBank = CTrackApp::gpDLSBanks[bank]; - UINT rgn = 0, instr = (dwItemType & 0x00007FFF); + UINT rgn = 0, instr = (qwItemType & 0x00007FFF); // Drum - if (dwItemType & 0x80000000) + if (qwItemType & 0x80000000) { - rgn = (dwItemType & 0x007F0000) >> 16; + rgn = (qwItemType & 0x007F0000) >> 16; } else // Melodic - if (dwItemType & 0x40000000) + if (qwItemType & 0x40000000) { if ((!nParam) || (nParam > NOTE_MAX)) nParam = NOTE_MIDDLEC; rgn = pDLSBank->GetRegionFromKey(instr, nParam-1); @@ -1333,54 +1331,54 @@ BOOL CModTree::DeleteTreeItem(HTREEITEM hItem) //-------------------------------------------- { - DWORD dwItemType = GetModItem(hItem); - WORD nItem = WORD(dwItemType >> 16); + uint64 qwItemType = GetModItem(hItem); + DWORD dwItem = (DWORD)(qwItemType >> 16); PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - switch(dwItemType & 0xFFFF) + switch(qwItemType & 0xFFFF) { case MODITEM_ORDER: - if ((pModDoc) && (pModDoc->RemoveOrder(nItem))) + if ((pModDoc) && (pModDoc->RemoveOrder((ORDERINDEX)dwItem))) { pModDoc->UpdateAllViews(NULL, HINT_MODSEQUENCE, NULL); } break; case MODITEM_PATTERN: - if ((pModDoc) && (pModDoc->RemovePattern(nItem))) + if ((pModDoc) && (pModDoc->RemovePattern((PATTERNINDEX)dwItem))) { //pModDoc->UpdateAllViews(NULL, (dwItem << 16)|HINT_PATTERNDATA|HINT_PATNAMES); - pModDoc->UpdateAllViews(NULL, (UINT(nItem) << HINT_SHIFT_PAT) | HINT_PATTERNDATA|HINT_PATNAMES); + pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_PAT) | HINT_PATTERNDATA|HINT_PATNAMES); } break; case MODITEM_SAMPLE: - if ((pModDoc) && (pModDoc->RemoveSample(nItem))) + if ((pModDoc) && (pModDoc->RemoveSample((SAMPLEINDEX)dwItem))) { //pModDoc->UpdateAllViews(NULL, (dwItem << 16) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO); - pModDoc->UpdateAllViews(NULL, (UINT(nItem) << HINT_SHIFT_SMP) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO); + pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_SMP) | HINT_SMPNAMES|HINT_SAMPLEDATA|HINT_SAMPLEINFO); } break; case MODITEM_INSTRUMENT: - if ((pModDoc) && (pModDoc->RemoveInstrument(nItem))) + if ((pModDoc) && (pModDoc->RemoveInstrument((INSTRUMENTINDEX)dwItem))) { //pModDoc->UpdateAllViews(NULL, (dwItem << 16)|HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT); - pModDoc->UpdateAllViews(NULL, (UINT(nItem) << HINT_SHIFT_INS) | HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT); + pModDoc->UpdateAllViews(NULL, (UINT(dwItem) << HINT_SHIFT_INS) | HINT_MODTYPE|HINT_ENVELOPE|HINT_INSTRUMENT); } break; case MODITEM_MIDIINSTRUMENT: - SetMidiInstrument(nItem, ""); + SetMidiInstrument(dwItem, ""); RefreshMidiLibrary(); break; case MODITEM_MIDIPERCUSSION: - SetMidiPercussion(nItem, ""); + SetMidiPercussion(dwItem, ""); RefreshMidiLibrary(); break; case MODITEM_DLSBANK_FOLDER: - CTrackApp::RemoveDLSBank(nItem); + CTrackApp::RemoveDLSBank(dwItem); RefreshDlsBanks(); break; @@ -1408,12 +1406,12 @@ BOOL CModTree::OpenTreeItem(HTREEITEM hItem) //------------------------------------------ { - DWORD dwItemType = GetModItem(hItem); + uint64 qwItemType = GetModItem(hItem); //DWORD dwItem = dwItemType >> 16; //PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; //CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - switch(dwItemType & 0xFFFF) + switch(qwItemType & 0xFFFF) { case MODITEM_INSLIB_SONG: { @@ -1853,9 +1851,9 @@ PMODTREEDOCINFO pInfo = DocInfo[m_nDragDocNdx]; pdropinfo->pModDoc = (pInfo) ? pInfo->pModDoc : NULL; pdropinfo->dwDropType = DRAGONDROP_NOTHING; - pdropinfo->dwDropItem = m_dwItemDrag >> 16; + pdropinfo->dwDropItem = (DWORD)(m_qwItemDrag >> 16); pdropinfo->lDropParam = 0; - switch(m_dwItemDrag & 0xFFFF) + switch(m_qwItemDrag & 0xFFFF) { case MODITEM_ORDER: pdropinfo->dwDropType = DRAGONDROP_ORDER; @@ -1883,7 +1881,7 @@ if (s[0] >= '0') n += (s[0] - '0'); if ((s[1] >= '0') && (s[1] <= '9')) n = n*10 + (s[1] - '0'); if ((s[2] >= '0') && (s[2] <= '9')) n = n*10 + (s[2] - '0'); - pdropinfo->dwDropType = ((m_dwItemDrag & 0xFFFF) == MODITEM_INSLIB_SAMPLE) ? DRAGONDROP_SAMPLE : DRAGONDROP_INSTRUMENT; + pdropinfo->dwDropType = ((m_qwItemDrag & 0xFFFF) == MODITEM_INSLIB_SAMPLE) ? DRAGONDROP_SAMPLE : DRAGONDROP_INSTRUMENT; pdropinfo->dwDropItem = n; pdropinfo->pModDoc = NULL; pdropinfo->lDropParam = (LPARAM)&m_SongFile; @@ -1918,14 +1916,14 @@ break; default: - if (m_dwItemDrag & 0xC0000000) + if (m_qwItemDrag & 0xC0000000) { pdropinfo->dwDropType = DRAGONDROP_DLS; // dwDropItem = DLS Bank # - pdropinfo->dwDropItem = (m_dwItemDrag & 0x3F000000) >> 24; // bank # + pdropinfo->dwDropItem = (DWORD)((m_qwItemDrag & 0x3F000000) >> 24); // bank # // Melodic: (Instrument) // Drums: (0x80000000) | (Region << 16) | (Instrument) - pdropinfo->lDropParam = (m_dwItemDrag & 0x80FF7FFF); // + pdropinfo->lDropParam = (LPARAM)((m_qwItemDrag & 0x80FF7FFF)); // break; } } @@ -1936,13 +1934,13 @@ BOOL CModTree::CanDrop(HTREEITEM hItem, BOOL bDoDrop) //--------------------------------------------------- { - DWORD dwItemDrop = GetModItem(hItem); - DWORD dwItemDrag = m_dwItemDrag >> 16; - DWORD dwDragType = m_dwItemDrag & 0xFFFF; - DWORD dwDropType = dwItemDrop & 0xFFFF; + uint64 qwItemDrop = GetModItem(hItem); + DWORD dwItemDrag = (DWORD)(m_qwItemDrag >> 16); + DWORD dwDragType = m_qwItemDrag & 0xFFFF; + DWORD dwDropType = (DWORD)(qwItemDrop & 0xFFFF); PMODTREEDOCINFO pInfo = DocInfo[m_nDocNdx]; CModDoc *pModDoc = (pInfo) ? pInfo->pModDoc : NULL; - dwItemDrop >>= 16; + qwItemDrop >>= 16; switch(dwDropType) { case MODITEM_ORDER: @@ -1950,7 +1948,7 @@ { if (bDoDrop) { - if (dwItemDrag != dwItemDrop) pModDoc->MoveOrder(dwItemDrag, dwItemDrop, true); + if (dwItemDrag != qwItemDrop) pModDoc->MoveOrder((ORDERINDEX)dwItemDrag, (ORDERINDEX)qwItemDrop, true); } return TRUE; } @@ -1969,9 +1967,9 @@ CHAR szFullPath[_MAX_PATH] = ""; InsLibGetFullPath(m_hItemDrag, szFullPath); if (dwDropType == MODITEM_MIDIINSTRUMENT) - SetMidiInstrument(dwItemDrop, szFullPath); + SetMidiInstrument((DWORD)qwItemDrop, szFullPath); else - SetMidiPercussion(dwItemDrop, szFullPath); + SetMidiPercussion((DWORD)qwItemDrop, szFullPath); } return TRUE; } @@ -2046,9 +2044,9 @@ { if (!ItemHasChildren(m_hItemDrag)) SelectItem(m_hItemDrag); } - m_dwItemDrag = GetModItem(m_hItemDrag); + m_qwItemDrag = GetModItem(m_hItemDrag); m_nDragDocNdx = m_nDocNdx; - switch(m_dwItemDrag & 0xFFFF) + switch(m_qwItemDrag & 0xFFFF) { case MODITEM_ORDER: case MODITEM_PATTERN: @@ -2062,7 +2060,7 @@ bDrag = TRUE; break; default: - if (m_dwItemDrag & 0x8000) bDrag = TRUE; + if (m_qwItemDrag & 0x8000) bDrag = TRUE; } if (bDrag) { @@ -2158,13 +2156,13 @@ { UINT nDefault = 0; BOOL bSep = FALSE; - DWORD dwItemType; + uint64 qwItemType; - dwItemType = GetModItem(hItem); - const uint16 nItemNo = HIWORD(dwItemType); - dwItemType &= 0xFFFF; + qwItemType = GetModItem(hItem); + const DWORD dwItemNo = (DWORD)(qwItemType >> 16); + qwItemType &= 0xFFFF; SelectItem(hItem); - switch(dwItemType) + switch(qwItemType) { case MODITEM_COMMENTS: nDefault = ID_MODTREE_EXECUTE; @@ -2176,9 +2174,17 @@ nDefault = ID_MODTREE_EXECUTE; AppendMenu(hMenu, MF_STRING, nDefault, "&Edit Pattern"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE, - (dwItemType == MODITEM_ORDER) ? "&Delete from list" : "&Delete Pattern"); + (qwItemType == MODITEM_ORDER) ? "&Delete from list" : "&Delete Pattern"); break; + case MODITEM_SEQUENCE: + // TODO: Right-click menu for sequences + //nDefault = ID_MODTREE_EXECUTE; + //AppendMenu(hMenu, MF_STRING, nDefault, "&Switch to Seqeuence"); + //AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE, "&Delete Sequence"); + //AppendMenu(hMenu, MF_STRING, ID_MODTREE_REMOVE, "D&uplicate Sequence"); + break; + case MODITEM_SAMPLE: { CModDoc *pModDoc = GetDocumentFromItem(hItem); @@ -2189,7 +2195,7 @@ if ((pModDoc) && (!pModDoc->GetNumInstruments())) { AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); - AppendMenu(hMenu, (pModDoc->IsSampleMuted(nItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Sample"); + AppendMenu(hMenu, (pModDoc->IsSampleMuted((SAMPLEINDEX)dwItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Sample"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_SOLO, "&Solo Sample"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_UNMUTEALL, "&Unmute all"); } @@ -2206,7 +2212,7 @@ if ((pModDoc) && (pModDoc->GetNumInstruments())) { AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); - AppendMenu(hMenu, (pModDoc->IsInstrumentMuted(nItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Instrument"); + AppendMenu(hMenu, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)dwItemNo) ? MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Mute Instrument"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_SOLO, "&Solo Instrument"); AppendMenu(hMenu, MF_STRING, ID_MODTREE_UNMUTEALL, "&Unmute all"); // -> CODE#0023 @@ -2227,7 +2233,7 @@ CModDoc *pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; if (pSndFile) { - PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[nItemNo]; + PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItemNo]; if (pPlugin) { bool bypassed = ((pPlugin->Info.dwInputRouting&MIXPLUG_INPUTF_BYPASS) != 0); AppendMenu(hMenu, (bypassed?MF_CHECKED:0)|MF_STRING, ID_MODTREE_MUTE, "&Bypass"); @@ -2286,7 +2292,7 @@ break; default: - if (dwItemType & 0x8000) + if (qwItemType & 0x8000) { nDefault = ID_MODTREE_PLAY; AppendMenu(hMenu, MF_STRING, ID_MODTREE_PLAY, "&Play Instrument"); @@ -2294,9 +2300,9 @@ break; } if (nDefault) SetMenuDefaultItem(hMenu, nDefault, FALSE); - if ((dwItemType == MODITEM_INSLIB_FOLDER) - || (dwItemType == MODITEM_INSLIB_SONG) - || (dwItemType == MODITEM_HDR_INSTRUMENTLIB)) + if ((qwItemType == MODITEM_INSLIB_FOLDER) + || (qwItemType == MODITEM_INSLIB_SONG) + || (qwItemType == MODITEM_HDR_INSTRUMENTLIB)) { if ((bSep) || (nDefault)) AppendMenu(hMenu, MF_SEPARATOR, NULL, ""); AppendMenu(hMenu, (m_bShowAllFiles) ? (MF_STRING|MF_CHECKED) : MF_STRING, ID_MODTREE_SHOWALLFILES, "Show All Files"); @@ -2325,8 +2331,8 @@ HTREEITEM hItem = HitTest(pt, &flags); if (hItem != NULL) { - DWORD dwItem = GetModItem(hItem); - switch(dwItem & 0xFFFF) + uint64 qwItem = GetModItem(hItem); + switch(qwItem & 0xFFFF) { case MODITEM_INSLIB_FOLDER: case MODITEM_INSLIB_SONG: @@ -2341,8 +2347,8 @@ if (pFrame) { pFrame->SendMessage(WM_MOD_INSTRSELECTED, - ((dwItem & 0xffff) == MODITEM_INSTRUMENT) ? TRUE : FALSE, - dwItem >> 16); + ((qwItem & 0xffff) == MODITEM_INSTRUMENT) ? TRUE : FALSE, + (LPARAM)(qwItem >> 16)); } } break; @@ -2415,7 +2421,7 @@ // Bug? if (!(nFlags & (MK_LBUTTON|MK_RBUTTON))) { - m_dwItemDrag = 0; + m_qwItemDrag = 0; m_hItemDrag = NULL; OnEndDrag(TREESTATUS_DRAGGING); return; @@ -2568,29 +2574,29 @@ //----------------------------- { HTREEITEM hItem = GetSelectedItem(); - DWORD dwItemType; + uint64 qwItemType; CModDoc *pModDoc; - dwItemType = GetModItem(hItem); - const uint16 nItemNo = HIWORD(dwItemType); - dwItemType &= 0xFFFF; + qwItemType = GetModItem(hItem); + const DWORD dwItemNo = (DWORD)(qwItemType >> 16); + qwItemType &= 0xFFFF; pModDoc = GetDocumentFromItem(hItem); if (pModDoc) { - if ((dwItemType == MODITEM_SAMPLE) && (!pModDoc->GetNumInstruments())) + if ((qwItemType == MODITEM_SAMPLE) && (!pModDoc->GetNumInstruments())) { - pModDoc->MuteSample(nItemNo, (pModDoc->IsSampleMuted(nItemNo)) ? FALSE : TRUE); + pModDoc->MuteSample((SAMPLEINDEX)dwItemNo, (pModDoc->IsSampleMuted((SAMPLEINDEX)dwItemNo)) ? false : true); } else - if ((dwItemType == MODITEM_INSTRUMENT) && (pModDoc->GetNumInstruments())) + if ((qwItemType == MODITEM_INSTRUMENT) && (pModDoc->GetNumInstruments())) { - pModDoc->MuteInstrument(nItemNo, (pModDoc->IsInstrumentMuted(nItemNo)) ? FALSE : TRUE); + pModDoc->MuteInstrument((INSTRUMENTINDEX)dwItemNo, (pModDoc->IsInstrumentMuted((INSTRUMENTINDEX)dwItemNo)) ? false : true); } - if ((dwItemType == MODITEM_EFFECT)) + if ((qwItemType == MODITEM_EFFECT)) { CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; if (pSndFile) { - PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[nItemNo]; + PSNDMIXPLUGIN pPlugin = &pSndFile->m_MixPlugins[dwItemNo]; if (pPlugin) { CVstPlugin *pVstPlugin = (CVstPlugin *)pPlugin->pMixPlugin; if (pVstPlugin) pVstPlugin->Bypass(); @@ -2606,29 +2612,29 @@ //----------------------------- { HTREEITEM hItem = GetSelectedItem(); - DWORD dwItemType; + uint64 qwItemType; CModDoc *pModDoc; - dwItemType = GetModItem(hItem); - const uint16 nItemNo = HIWORD(dwItemType); - dwItemType &= 0xFFFF; + qwItemType = GetModItem(hItem); + const DWORD dwItemNo = (DWORD)(qwItemType >> 16); + qwItemType &= 0xFFFF; pModDoc = GetDocumentFromItem(hItem); if (pModDoc) { SAMPLEINDEX nSamples = pModDoc->GetNumSamples(); INSTRUMENTINDEX nInstruments = pModDoc->GetNumInstruments(); - if ((dwItemType == MODITEM_SAMPLE) && (!nInstruments)) + if ((qwItemType == MODITEM_SAMPLE) && (!nInstruments)) { for (SAMPLEINDEX i=1; i<=nSamples; i++) { - pModDoc->MuteSample(i, (i == nItemNo) ? FALSE : TRUE); + pModDoc->MuteSample(i, (i == dwItemNo) ? false : true); } } else - if ((dwItemType == MODITEM_INSTRUMENT) && (nInstruments)) + if ((qwItemType == MODITEM_INSTRUMENT) && (nInstruments)) { for (INSTRUMENTINDEX i=1; i<=nInstruments; i++) { - pModDoc->MuteInstrument(i, (i == nItemNo) ? FALSE : TRUE); + pModDoc->MuteInstrument(i, (i == dwItemNo) ? false : true); } } } @@ -2639,16 +2645,16 @@ //---------------------------------- { HTREEITEM hItem = GetSelectedItem(); - DWORD dwItemType; + uint64 qwItemType; CModDoc *pModDoc; - dwItemType = GetModItem(hItem) & 0xFFFF; + qwItemType = GetModItem(hItem) & 0xFFFF; pModDoc = GetDocumentFromItem(hItem); if (pModDoc) { SAMPLEINDEX nSamples = pModDoc->GetNumSamples(); INSTRUMENTINDEX nInstruments = pModDoc->GetNumInstruments(); - if ((dwItemType == MODITEM_SAMPLE) || (dwItemType == MODITEM_INSTRUMENT)) + if ((qwItemType == MODITEM_SAMPLE) || (qwItemType == MODITEM_INSTRUMENT)) { for (SAMPLEINDEX i=1; i<=nSamples; i++) { @@ -2668,9 +2674,9 @@ void CModTree::OnSetItemPath() { HTREEITEM hItem = GetSelectedItem(); - DWORD dwItemType = GetModItem(hItem); - DWORD dwItem = dwItemType >> 16; - dwItemType &= 0xFFFF; + uint64 qwItemType = GetModItem(hItem); + DWORD dwItem = (DWORD)(qwItemType >> 16); + qwItemType &= 0xFFFF; CModDoc *pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; @@ -2700,15 +2706,15 @@ void CModTree::OnSaveItem() { HTREEITEM hItem = GetSelectedItem(); - DWORD dwItemType = GetModItem(hItem); - const uint16 nItem = HIWORD(dwItemType); - dwItemType &= 0xFFFF; + uint64 qwItemType = GetModItem(hItem); + const DWORD dwItem = HIWORD(qwItemType); + qwItemType &= 0xFFFF; CModDoc *pModDoc = GetDocumentFromItem(hItem); CSoundFile *pSndFile = pModDoc ? pModDoc->GetSoundFile() : NULL; - if(pSndFile && nItem){ + if(pSndFile && dwItem){ - if(pSndFile->m_szInstrumentPath[nItem-1][0] == '\0'){ + if(pSndFile->m_szInstrumentPath[dwItem-1][0] == '\0'){ CHAR pszFileNames[_MAX_PATH]; CFileDialog dlg(FALSE, (pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT)) ? "iti" : "xi", NULL, @@ -2724,23 +2730,23 @@ dlg.m_ofn.lpstrFile = pszFileNames; dlg.m_ofn.nMaxFile = _MAX_PATH; - if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[nItem-1], pszFileNames); + if(dlg.DoModal() == IDOK) strcpy(pSndFile->m_szInstrumentPath[dwItem - 1], pszFileNames); dlg.m_ofn.lpstrFile = NULL; dlg.m_ofn.nMaxFile = 0; } - if(pSndFile->m_szInstrumentPath[nItem-1][0] != '\0'){ - int size = strlen(pSndFile->m_szInstrumentPath[nItem-1]); - BOOL iti = _stricmp(&pSndFile->m_szInstrumentPath[nItem-1][size-3],"iti") == 0; - BOOL xi = _stricmp(&pSndFile->m_szInstrumentPath[nItem-1][size-2],"xi") == 0; + if(pSndFile->m_szInstrumentPath[dwItem - 1][0] != '\0'){ + int size = strlen(pSndFile->m_szInstrumentPath[dwItem - 1]); + BOOL iti = _stricmp(&pSndFile->m_szInstrumentPath[dwItem - 1][size-3],"iti") == 0; + BOOL xi = _stricmp(&pSndFile->m_szInstrumentPath[dwItem - 1][size-2],"xi") == 0; if(iti || (!iti && !xi && pSndFile->m_nType & (MOD_TYPE_IT|MOD_TYPE_MPT))) - pSndFile->SaveITIInstrument(nItem, pSndFile->m_szInstrumentPath[nItem-1]); + pSndFile->SaveITIInstrument((INSTRUMENTINDEX)dwItem, pSndFile->m_szInstrumentPath[dwItem - 1]); if(xi || (!xi && !iti && pSndFile->m_nType == MOD_TYPE_XM)) - pSndFile->SaveXIInstrument(nItem, pSndFile->m_szInstrumentPath[nItem-1]); + pSndFile->SaveXIInstrument((INSTRUMENTINDEX)dwItem, pSndFile->m_szInstrumentPath[dwItem - 1]); - pSndFile->instrumentModified[nItem-1] = FALSE; + pSndFile->instrumentModified[dwItem - 1] = FALSE; } if(pModDoc) pModDoc->UpdateAllViews(NULL, HINT_MODTYPE); @@ -2799,8 +2805,8 @@ { UINT flags; HTREEITEM hItem = HitTest(point, &flags); - DWORD dwItemType = GetModItem(hItem); - switch(dwItemType & 0xFFFF) + uint64 qwItemType = GetModItem(hItem); + switch(qwItemType & 0xFFFF) { case MODITEM_MIDIINSTRUMENT: case MODITEM_MIDIPERCUSSION: @@ -2810,7 +2816,7 @@ EnsureVisible(hItem); } m_hItemDrag = hItem; - m_dwItemDrag = dwItemType; + m_qwItemDrag = qwItemType; return DROPEFFECT_LINK; // Folders: case MODITEM_HDR_MIDILIB: @@ -2842,8 +2848,8 @@ DragQueryFile(hDropInfo, 0, szFileName, _MAX_PATH); if (szFileName[0]) { - DWORD dwItem = m_dwItemDrag >> 16; - switch(m_dwItemDrag & 0xFFFF) + DWORD dwItem = (DWORD)(m_qwItemDrag >> 16); + switch(m_qwItemDrag & 0xFFFF) { case MODITEM_MIDIINSTRUMENT: bOk = SetMidiInstrument(dwItem, szFileName); @@ -2918,10 +2924,10 @@ //------------------------------------ { HTREEITEM hItem = GetSelectedItem(); - DWORD dwItemType = GetModItem(hItem); - if ((dwItemType & 0xFFFF) == MODITEM_DLSBANK_FOLDER) + uint64 qwItemType = GetModItem(hItem); + if ((qwItemType & 0xFFFF) == MODITEM_DLSBANK_FOLDER) { - UINT nBank = dwItemType >> 16; + UINT nBank = (UINT)(qwItemType >> 16); if ((nBank < MAX_DLS_BANKS) && (CTrackApp::gpDLSBanks[nBank])) { CSoundBankProperties dlg(CTrackApp::gpDLSBanks[nBank], this); Modified: trunk/OpenMPT/mptrack/View_tre.h =================================================================== --- trunk/OpenMPT/mptrack/View_tre.h 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/mptrack/View_tre.h 2009-10-04 12:50:16 UTC (rev 385) @@ -32,6 +32,7 @@ MODITEM_INSLIB_SONG, MODITEM_DLSBANK_FOLDER, MODITEM_DLSBANK_INSTRUMENT, + MODITEM_SEQUENCE, }; #define TREESTATUS_RDRAG 0x01 @@ -109,7 +110,7 @@ CModTree *m_pDataTree; DWORD m_dwStatus; HWND m_hDropWnd; - DWORD m_dwItemDrag; + uint64 m_qwItemDrag; BOOL m_bShowAllFiles; UINT m_nDocNdx, m_nDragDocNdx; HTREEITEM m_hItemDrag, m_hItemDrop; @@ -135,7 +136,7 @@ VOID RefreshInstrumentLibrary(); VOID EmptyInstrumentLibrary(); VOID FillInstrumentLibrary(); - DWORD GetModItem(HTREEITEM hItem); + uint64 GetModItem(HTREEITEM hItem); BOOL SetMidiInstrument(UINT nIns, LPCSTR lpszFileName); BOOL SetMidiPercussion(UINT nPerc, LPCSTR lpszFileName); BOOL ExecuteItem(HTREEITEM hItem); Modified: trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb =================================================================== --- trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb 2009-10-02 15:49:41 UTC (rev 384) +++ trunk/OpenMPT/packageTemplate/extraKeymaps/DE_jojo.mkb 2009-10-04 12:50:16 UTC (rev 385) @@ -18,7 +18,7 @@ 0:1027:0:118:5 //Play pattern from start: F7 (KeyDown|KeyHold) 0:1026:2:118:5 //Play pattern from cursor: Ctrl+F7 (KeyDown|KeyHold) 0:1376:0:120:1 //Toggle Midi Record: F9 (KeyDown) -0:1359:2:90:1 //Undo: Ctrl+Z (KeyDown) +0:1359:2:90:5 //Undo: Ctrl+Z (KeyDown|KeyHold) 0:1360:2:88:1 //Cut: Ctrl+X (KeyDown) 0:1361:2:67:1 //Copy: Ctrl+C (KeyDown) 0:1361:2:45:1 //Copy: Ctrl+EINFG (KeyDown) @@ -77,6 +77,7 @@ 2:1662:6:80:1 //Toggle channel's plugin editor: Ctrl+Alt+P (KeyDown) 2:1062:0:93:1 //Show note properties: ANWENDUNG (KeyDown) 2:1780:2:80:1 //Show playback time at current row: Ctrl+P (KeyDown) +2:1786:2:82:1 //Reset channel: Ctrl+R (KeyDown) 2:1007:2:81:5 //Transpose +1: Ctrl+Q (KeyDown|KeyHold) 2:1008:2:65:5 //Transpose -1: Ctrl+A (KeyDown|KeyHold) 2:1009:3:81:5 //Transpose +12: Shift+Ctrl+Q (KeyDown|KeyHold) @@ -155,9 +156,9 @@ 3:1221:0:57:1 //Set octave 9: 9 (KeyDown) 3:1221:0:105:1 //Set octave 9: 9 (ZEHNERTASTATUR) (KeyDown) 3:1316:1:16:1 //Chord Modifier: Shift+UMSCHALT (KeyDown) -3:1200:0:220:1 //Note Cut: ZIRKUMFLEX (KeyDown) -3:1201:0:221:1 //Note Off: AKUT (KeyDown) -3:1791:0:219:1 //Note Fade: \xDF (KeyDown) +3:1667:0:220:1 //Note Cut (don't remember instrument): ZIRKUMFLEX (KeyDown) +3:1668:0:221:1 //Note Off (don't remember instrument): AKUT (KeyDown) +3:1792:0:219:1 //Note Fade (don't remember instrument): \xDF (KeyDown) 3:1788:0:226:1 //Parameter control(MPTm only): < (KeyDown) 3:1789:1:226:1 //Parameter control(smooth)(MPTm only): Shift+< (KeyDown) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |