bool WString::ReplaceAll(const WString &findWhat,const WString &replaceWith) { WString process = *this; WString result; int pos; bool processed = false; while ((pos = process.Find(findWhat)) != -1) { result = result+process.Left(pos)+replaceWith; process = process.Right(pos+findWhat.GetLength()); processed = true; } *this = result+process; return processed; }
void FileTabs::ComposeTab(Tab& tab, const Font &font, Color ink, int style) { if(PaintIcons() && tab.HasIcon()) { tab.AddImage(tab.img); tab.AddSpace(TB_SPACEICON); } WString txt = IsString(tab.value) ? tab.value : StdConvert().Format(tab.value); int extpos = txt.ReverseFind('.'); tab.AddText(extpos >= 0 ? txt.Left(extpos) : txt, font, filecolor); if (extpos >= 0) { tab.AddText(txt.Right(txt.GetLength() - extpos), font, extcolor); } }
void FilePath::GetPathComponents(WString path, collections::List<WString>& components) { WString pathRemaining = path; WString delimiter = Delimiter; components.Clear(); while(true) { auto index = INVLOC.FindFirst(pathRemaining, delimiter, Locale::None); if (index.key == -1) break; if(index.key != 0) components.Add(pathRemaining.Left(index.key)); else { #if defined VCZH_GCC // Unix absolute path starting with "/" // components[0] will be L"/" components.Add(delimiter); #elif defined VCZH_MSVC if(pathRemaining.Length() >= 2 && pathRemaining[1] == Delimiter) { // Windows UNC Path starting with "\\" // components[0] will be L"\\" components.Add(L"\\"); index.value++; } #endif } pathRemaining = pathRemaining.Right(pathRemaining.Length() - (index.key + index.value)); } if(pathRemaining.Length() != 0) { components.Add(pathRemaining); } }