From: <sag...@us...> - 2013-01-25 00:01:18
|
Revision: 1508 http://sourceforge.net/p/modplug/code/1508 Author: saga-games Date: 2013-01-25 00:01:06 +0000 (Fri, 25 Jan 2013) Log Message: ----------- [Imp] Treeview: Entering +++ and --- patterns in the order list does work now. [Mod] Sample Editor: 8-Bit/Mono conversion is now also shown in the context menu if a selection has been made. [Mod] OpenMPT: Version is now 1.21.01.08 Modified Paths: -------------- trunk/OpenMPT/common/version.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/View_tre.h Modified: trunk/OpenMPT/common/version.h =================================================================== --- trunk/OpenMPT/common/version.h 2013-01-22 15:27:14 UTC (rev 1507) +++ trunk/OpenMPT/common/version.h 2013-01-25 00:01:06 UTC (rev 1508) @@ -19,7 +19,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 21 #define VER_MINOR 01 -#define VER_MINORMINOR 07 +#define VER_MINORMINOR 08 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2013-01-22 15:27:14 UTC (rev 1507) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2013-01-25 00:01:06 UTC (rev 1508) @@ -1528,18 +1528,15 @@ } } - if(m_dwBeginSel >= m_dwEndSel) + if(sample.GetElementarySampleSize() > 1) ::AppendMenu(hMenu, MF_STRING, ID_SAMPLE_8BITCONVERT, "Convert to &8-bit\t" + ih->GetKeyTextFromCommand(kcSample8Bit)); + if(sample.GetNumChannels() > 1) { - if(sample.GetElementarySampleSize() > 1) ::AppendMenu(hMenu, MF_STRING, ID_SAMPLE_8BITCONVERT, "Convert to &8-bit\t" + ih->GetKeyTextFromCommand(kcSample8Bit)); - if(sample.GetNumChannels() > 1) - { - HMENU hMonoMenu = ::CreatePopupMenu(); - ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT, "&Mix Channels\t" + ih->GetKeyTextFromCommand(kcSampleMonoMix)); - ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT_LEFT, "&Left Channel\t" + ih->GetKeyTextFromCommand(kcSampleMonoLeft)); - ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT_RIGHT, "&Right Channel\t" + ih->GetKeyTextFromCommand(kcSampleMonoRight)); - ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT_SPLIT, "&Split Sample\t" + ih->GetKeyTextFromCommand(kcSampleMonoSplit)); - ::AppendMenu(hMenu, MF_POPUP, reinterpret_cast<UINT_PTR>(hMonoMenu), "Convert to &Mono"); - } + HMENU hMonoMenu = ::CreatePopupMenu(); + ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT, "&Mix Channels\t" + ih->GetKeyTextFromCommand(kcSampleMonoMix)); + ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT_LEFT, "&Left Channel\t" + ih->GetKeyTextFromCommand(kcSampleMonoLeft)); + ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT_RIGHT, "&Right Channel\t" + ih->GetKeyTextFromCommand(kcSampleMonoRight)); + ::AppendMenu(hMonoMenu, MF_STRING, ID_SAMPLE_MONOCONVERT_SPLIT, "&Split Sample\t" + ih->GetKeyTextFromCommand(kcSampleMonoSplit)); + ::AppendMenu(hMenu, MF_POPUP, reinterpret_cast<UINT_PTR>(hMonoMenu), "Convert to &Mono"); } // "Trim" menu item is responding differently if there's no selection, Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2013-01-22 15:27:14 UTC (rev 1507) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2013-01-25 00:01:06 UTC (rev 1508) @@ -296,8 +296,7 @@ } } - ModTreeDocInfo *pInfo = new ModTreeDocInfo(pModDoc->GetSoundFile()); - pInfo->pModDoc = pModDoc; + ModTreeDocInfo *pInfo = new ModTreeDocInfo(*pModDoc->GetSoundFile()); pInfo->nSeqSel = SEQUENCEINDEX_INVALID; pInfo->nOrdSel = ORDERINDEX_INVALID; DocInfo.push_back(pInfo); @@ -969,7 +968,7 @@ || ((!pSndFile->Instruments[smin]) && (pInfo->tiInstruments[smin] != NULL))) { smax = MAX_INSTRUMENTS-1; - for (UINT iRem=smin; iRem<smax; iRem++) + for (INSTRUMENTINDEX iRem=smin; iRem<smax; iRem++) { if (pInfo->tiInstruments[iRem]) { @@ -1031,7 +1030,7 @@ LPARAM lParam; HTREEITEM hItemParent, hItemParentParent, hRootParent; - if (!hItem) return 0; + if (!hItem) return MODITEM_NULL; // First, test root items if (hItem == m_hInsLib) return MODITEM_HDR_INSTRUMENTLIB; if (hItem == m_hMidiLib) return MODITEM_HDR_MIDILIB; @@ -1301,21 +1300,18 @@ if (m_szSongName[0]) { // Preview sample / instrument in module - CHAR szName[64]; + char szName[16]; lstrcpyn(szName, GetItemText(hItem), sizeof(szName)); - UINT n = 0; - if (szName[0] >= '0') n += (szName[0] - '0'); - if ((szName[1] >= '0') && (szName[1] <= '9')) n = n*10 + (szName[1] - '0'); - if ((szName[2] >= '0') && (szName[2] <= '9')) n = n*10 + (szName[2] - '0'); + const size_t n = ConvertStrTo<size_t>(szName); CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); if (pMainFrm) { if (modItemType == MODITEM_INSLIB_INSTRUMENT) { - pMainFrm->PlaySoundFile(&m_SongFile, n, 0, nParam); + pMainFrm->PlaySoundFile(&m_SongFile, static_cast<INSTRUMENTINDEX>(n), SAMPLEINDEX_INVALID, nParam); } else { - pMainFrm->PlaySoundFile(&m_SongFile, 0, n, nParam); + pMainFrm->PlaySoundFile(&m_SongFile, INSTRUMENTINDEX_INVALID, static_cast<SAMPLEINDEX>(n), nParam); } } } else @@ -1881,7 +1877,7 @@ if ((!lpszDir) || (!lpszDir[0])) return FALSE; BeginWaitCursor(); - if (!GetCurrentDirectory(sizeof(s), s)) s[0] = 0; + if (!GetCurrentDirectory(CountOf(s), s)) s[0] = 0; if (!strcmp(lpszDir+1, ":\\")) { sdrive[0] = lpszDir[0]; @@ -3484,8 +3480,16 @@ switch(modItemType) { case MODITEM_ORDER: - tempText.Format("%u", sndFile->Order.GetSequence(static_cast<SEQUENCEINDEX>(modItemID >> 16)).At(static_cast<ORDERINDEX>(modItemID & 0xFFFF))); - text = tempText; + { + PATTERNINDEX pat = sndFile->Order.GetSequence(static_cast<SEQUENCEINDEX>(modItemID >> 16)).At(static_cast<ORDERINDEX>(modItemID & 0xFFFF)); + if(pat == sndFile->Order.GetInvalidPatIndex()) + tempText = "---"; + else if(pat == sndFile->Order.GetIgnoreIndex()) + tempText = "+++"; + else + tempText.Format("%u", pat); + text = tempText; + } break; case MODITEM_SEQUENCE: @@ -3552,10 +3556,25 @@ switch(modItemType) { case MODITEM_ORDER: + if(info->item.pszText[0]) { PATTERNINDEX pat = ConvertStrTo<PATTERNINDEX>(info->item.pszText); + bool valid = true; + if(info->item.pszText[0] == '-') + { + pat = sndFile->Order.GetInvalidPatIndex(); + } else if(info->item.pszText[0] == '+') + { + if(modSpecs.hasIgnoreIndex) + pat = sndFile->Order.GetIgnoreIndex(); + else + valid = false; + } else + { + valid = (pat < sndFile->Patterns.GetNumPatterns()); + } PATTERNINDEX &target = sndFile->Order.GetSequence(static_cast<SEQUENCEINDEX>(modItemID >> 16)).At(static_cast<ORDERINDEX>(modItemID & 0xFFFF)); - if(pat < sndFile->Patterns.GetNumPatterns() && pat != target) + if(valid && pat != target) { target = pat; modDoc->SetModified(); Modified: trunk/OpenMPT/mptrack/View_tre.h =================================================================== --- trunk/OpenMPT/mptrack/View_tre.h 2013-01-22 15:27:14 UTC (rev 1507) +++ trunk/OpenMPT/mptrack/View_tre.h 2013-01-25 00:01:06 UTC (rev 1508) @@ -25,8 +25,6 @@ #define TREESTATUS_SINGLEEXPAND 0x04 #define TREESTATUS_DRAGGING (TREESTATUS_RDRAG|TREESTATUS_LDRAG) -#define MODTREE_MAX_DOCUMENTS 32 - struct ModTreeDocInfo { CModDoc *pModDoc; @@ -44,18 +42,15 @@ bitset<MAX_SAMPLES> samplesPlaying; bitset<MAX_INSTRUMENTS> instrumentsPlaying; - ModTreeDocInfo(const CSoundFile* const pSndFile) + ModTreeDocInfo(const CSoundFile &sndFile) { - pModDoc = NULL; + pModDoc = sndFile.GetpModDoc(); nSeqSel = SEQUENCEINDEX_INVALID; nOrdSel = ORDERINDEX_INVALID; - hSong = hPatterns = hSamples = hInstruments = hComments = hOrders = hEffects = NULL; - if(pSndFile != NULL) - { - tiPatterns.resize(pSndFile->Patterns.Size(), NULL); - tiOrders.resize(pSndFile->Order.GetNumSequences()); - tiSequences.resize(pSndFile->Order.GetNumSequences(), NULL); - } + hSong = hPatterns = hSamples = hInstruments = hComments = hOrders = hEffects = nullptr; + tiPatterns.resize(sndFile.Patterns.Size(), nullptr); + tiOrders.resize(sndFile.Order.GetNumSequences()); + tiSequences.resize(sndFile.Order.GetNumSequences(), nullptr); MemsetZero(tiSamples); MemsetZero(tiInstruments); MemsetZero(tiEffects); @@ -132,6 +127,7 @@ HTREEITEM m_tiPerc[128]; vector<HTREEITEM> m_tiDLS; vector<ModTreeDocInfo *> DocInfo; + // Instrument library CHAR m_szInstrLibPath[_MAX_PATH], m_szOldPath[_MAX_PATH], m_szSongName[_MAX_PATH]; public: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |