本文整理汇总了C++中WDL_FastString::DeleteSub方法的典型用法代码示例。如果您正苦于以下问题:C++ WDL_FastString::DeleteSub方法的具体用法?C++ WDL_FastString::DeleteSub怎么用?C++ WDL_FastString::DeleteSub使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WDL_FastString
的用法示例。
在下文中一共展示了WDL_FastString::DeleteSub方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OpenFileInTab
void MultiTab_Editor::OpenFileInTab(const char *fnp)
{
// try to find file to open
WDL_FastString s;
FILE *fp=NULL;
{
const char *ptr = fnp;
while (!fp && *ptr)
{
// first try same path as loading effect
if (m_filename.Get()[0])
{
s.Set(m_filename.Get());
const char *sp=s.Get()+s.GetLength();
while (sp>=s.Get() && *sp != '\\' && *sp != '/') sp--;
s.SetLen(sp + 1 - s.Get());
if (s.GetLength())
{
s.Append(ptr);
fp=fopenUTF8(s.Get(),"rb");
}
}
// scan past any / or \\, and try again
if (!fp)
{
while (*ptr && *ptr != '\\' && *ptr != '/') ptr++;
if (*ptr) ptr++;
}
}
}
if (!fp)
{
s.Set("");
fp = tryToFindOrCreateFile(fnp,&s);
}
if (!fp && s.Get()[0])
{
m_newfn.Set(s.Get());
if (COLS > 25)
{
int allowed = COLS-25;
if (s.GetLength()>allowed)
{
s.DeleteSub(0,s.GetLength() - allowed + 3);
s.Insert("...",0);
}
s.Insert("Create new file '",0);
s.Append("' (Y/n)? ");
}
else
s.Set("Create new file (Y/n)? ");
m_state=UI_STATE_SAVE_AS_NEW;
attrset(m_color_message);
bkgdset(m_color_message);
mvaddstr(LINES-1,0,s.Get());
clrtoeol();
attrset(0);
bkgdset(0);
}
else if (fp)
{
fclose(fp);
int x;
for (x=0;x<GetTabCount();x++)
{
MultiTab_Editor *e = GetTab(x);
if (e && !stricmp(e->GetFileName(),s.Get()))
{
SwitchTab(x,false);
return;
}
}
AddTab(s.Get());
}
}
示例2: onChar
//.........这里部分代码省略.........
}
draw();
setCursor();
draw_message("Pasted");
saveUndoState();
}
else
{
setCursor();
draw_message("Clipboard empty");
}
}
break;
case KEY_DC:
if (!SHIFT_KEY_DOWN && !ALT_KEY_DOWN)
{
WDL_FastString *s;
if (m_selecting)
{
preSaveUndoState();
removeSelect();
draw();
saveUndoState();
setCursor();
}
else if ((s=m_text.Get(m_curs_y)))
{
if (m_curs_x < s->GetLength())
{
preSaveUndoState();
bool hadCom = LineCanAffectOtherLines(s->Get(),m_curs_x,1);
s->DeleteSub(m_curs_x,1);
if (!hadCom) hadCom = LineCanAffectOtherLines(s->Get(),-1,-1);
draw(hadCom ? -1 : m_curs_y);
saveUndoState();
setCursor();
}
else // append next line to us
{
if (m_curs_y < m_text.GetSize()-1)
{
preSaveUndoState();
WDL_FastString *nl=m_text.Get(m_curs_y+1);
if (nl)
{
s->Append(nl->Get());
}
m_text.Delete(m_curs_y+1,true);
draw();
saveUndoState();
setCursor();
}
}
}
break;
}
case 'C'-'A'+1:
case 'X'-'A'+1:
if (!SHIFT_KEY_DOWN && !ALT_KEY_DOWN && m_selecting)
{
if (c!= 'C'-'A'+1) m_selecting=0;
int miny,maxy,minx,maxx;
示例3: Build
bool BR_MidiEditor::Build ()
{
m_take = (m_midiEditor) ? SWS_MIDIEditor_GetTake(m_midiEditor) : m_take;
if (m_take)
{
MediaItem* item = GetMediaItemTake_Item(m_take);
int takeId = GetTakeId(m_take, item);
if (takeId >= 0)
{
SNM_TakeParserPatcher p(item, CountTakes(item));
WDL_FastString takeChunk;
if (p.GetTakeChunk(takeId, &takeChunk))
{
SNM_ChunkParserPatcher ptk(&takeChunk, false);
LineParser lp(false);
int laneId = 0;
WDL_FastString lineLane;
while (ptk.Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "SOURCE", "VELLANE", laneId++, -1, &lineLane))
{
lp.parse(lineLane.Get());
m_ccLanes.push_back(lp.gettoken_int(1));
m_ccLanesHeight.push_back(lp.gettoken_int(((m_midiEditor) ? 2 : 3)));
if (!m_midiEditor && m_ccLanesHeight.back() == 0)
m_ccLanesHeight.back() = INLINE_MIDI_LANE_DIVIDER_H; // sometimes REAPER will return 0 when lane is completely hidden, but divider will still be visible
lineLane.DeleteSub(0, lineLane.GetLength());
}
WDL_FastString dataLine;
if (ptk.Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "SOURCE", "HASDATA", 0, -1, &dataLine))
{
lp.parse(dataLine.Get());
m_ppq = lp.gettoken_int(2);
}
else if (ptk.Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "SOURCE", "FILE", 0, -1, &dataLine))
{
lp.parse(dataLine.Get());
m_ppq = GetMIDIFilePPQ (lp.gettoken_str(1));
if (!m_ppq)
return false;
}
else
return false;
WDL_FastString lineView;
if (ptk.Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "SOURCE", "CFGEDITVIEW", 0, -1, &lineView))
{
lp.parse(lineView.Get());
m_startPos = (m_midiEditor) ? lp.gettoken_float(1) : GetMediaItemInfo_Value(GetMediaItemTake_Item(m_take), "D_POSITION");
m_hZoom = (m_midiEditor) ? lp.gettoken_float(2) : GetHZoomLevel();
m_vPos = (m_midiEditor) ? lp.gettoken_int(3) : lp.gettoken_int(7);
m_vZoom = (m_midiEditor) ? lp.gettoken_int(4) : lp.gettoken_int(6);
}
else
return false;
WDL_FastString lineFilter;
if (ptk.Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "SOURCE", "EVTFILTER", 0, -1, &lineFilter))
{
lp.parse(lineFilter.Get());
m_filterEnabled = !!GetBit(lp.gettoken_int(7), 0);
m_filterInverted = !!GetBit(lp.gettoken_int(7), 2);
m_filterChannel = lp.gettoken_int(1);
m_filterEventType = lp.gettoken_int(2);
m_filterEventParam = !!lp.gettoken_int(16);
m_filterEventVal = !!lp.gettoken_int(8);
m_filterEventPos = !!lp.gettoken_int(14);
m_filterEventLen = !!lp.gettoken_int(9);
m_filterEventParamLo = lp.gettoken_int(17);
m_filterEventParamHi = lp.gettoken_int(18);
m_filterEventValLo = lp.gettoken_int(4);
m_filterEventValHi = lp.gettoken_int(5);
m_filterEventPosRepeat = lp.gettoken_float(15);
m_filterEventPosLo = lp.gettoken_float(12);
m_filterEventPosHi = lp.gettoken_float(13);
m_filterEventLenLo = lp.gettoken_float(10);
m_filterEventLenHi = lp.gettoken_float(11);
}
else
return false;
WDL_FastString lineProp;
if (ptk.Parse(SNM_GET_SUBCHUNK_OR_LINE, 1, "SOURCE", "CFGEDIT", 0, -1, &lineProp))
{
lp.parse(lineProp.Get());
m_pianoroll = (m_midiEditor) ? lp.gettoken_int(6) : 0; // inline midi editor doesn't have piano roll modes
m_drawChannel = lp.gettoken_int(9) - 1;
m_noteshow = lp.gettoken_int(18);
m_timebase = (m_midiEditor) ? lp.gettoken_int(19) : PROJECT_SYNC;
}
else
return false;
// A few "corrections" for easier manipulation afterwards
if (m_filterChannel == 0) m_filterChannel = ~m_filterChannel;
if (m_filterEventParamLo < 0) m_filterEventParamLo = 0;
if (m_filterEventParamHi < 0) m_filterEventParamHi = INT_MAX;
if (m_filterEventValLo < 0) m_filterEventValLo = 0;
if (m_filterEventValHi < 0) m_filterEventValHi = INT_MAX;
//.........这里部分代码省略.........