//--------------------------------------------------------------------------- uintptr_t StrToVersionNumber(const UnicodeString & VersionMumberStr) { uintptr_t Result = 0; UnicodeString Version = VersionMumberStr; int Shift = 16; while (!Version.IsEmpty()) { UnicodeString Num = CutToChar(Version, L'.', true); Result += static_cast<uintptr_t>(Num.ToInt()) << Shift; if (Shift >= 8) Shift -= 8; } return Result; }
UnicodeString TCopyParamType::ValidLocalPath(const UnicodeString & APath) const { UnicodeString Result; UnicodeString Path = APath; while (!Path.IsEmpty()) { if (!Result.IsEmpty()) { Result += L"\\"; } Result += ValidLocalFileName(CutToChar(Path, L'\\', false)); } return Result; }
void TSessionLog::DoAdd(TLogLineType AType, UnicodeString Line, TDoAddLogEvent Event) { UnicodeString Prefix; if (!GetName().IsEmpty()) { Prefix = L"[" + GetName() + L"] "; } while (!Line.IsEmpty()) { Event(AType, Prefix + CutToChar(Line, L'\n', false)); } }
//--------------------------------------------------------------------------- void TSessionLog::DoAdd(TLogLineType AType, const UnicodeString & Line, TDoAddLogEvent Event) { UnicodeString Prefix; if (!GetName().IsEmpty()) { Prefix = L"[" + GetName() + L"] "; } UnicodeString Ln = Line; while (!Ln.IsEmpty()) { // UnicodeString Param = ; Event(AType, Prefix + CutToChar(Ln, L'\n', false)); } }
UnicodeString EnumName(T Value, UnicodeString Names) { intptr_t N = intptr_t(Value); do { UnicodeString Name = CutToChar(Names, L';', true); if (N == 0) { return Name; } --N; } while ((N >= 0) && !Names.IsEmpty()); return L"(unknown)"; }
//--------------------------------------------------------------------------- void __fastcall TWebHelpSystem::ShowHelp(const UnicodeString AHelpString) { UnicodeString HelpUrl; if (IsHttpUrl(AHelpString)) { HelpUrl = AHelpString; } else { // see also AppendUrlParams UnicodeString HelpString = AHelpString; const wchar_t FragmentSeparator = L'#'; UnicodeString HelpPath = CutToChar(HelpString, FragmentSeparator, false); HelpUrl = FMTLOAD(DOCUMENTATION_KEYWORD_URL2, (HelpPath, FVersion, FLanguage)); AddToList(HelpUrl, HelpString, FragmentSeparator); } OpenBrowser(HelpUrl); }
bool THierarchicalStorage::OpenSubKey(const UnicodeString & ASubKey, bool CanCreate, bool Path) { bool Result; UnicodeString MungedKey; UnicodeString Key = ASubKey; if (Path) { DebugAssert(Key.IsEmpty() || (Key[Key.Length()] != L'\\')); Result = true; while (!Key.IsEmpty() && Result) { if (!MungedKey.IsEmpty()) { MungedKey += L'\\'; } MungedKey += MungeKeyName(CutToChar(Key, L'\\', false)); Result = DoOpenSubKey(MungedKey, CanCreate); } // hack to restore last opened key for registry storage if (!Result) { FKeyHistory->Add(::IncludeTrailingBackslash(GetCurrentSubKey() + MungedKey)); CloseSubKey(); } } else { MungedKey = MungeKeyName(Key); Result = DoOpenSubKey(MungedKey, CanCreate); } if (Result) { FKeyHistory->Add(::IncludeTrailingBackslash(GetCurrentSubKey() + MungedKey)); } return Result; }
UnicodeString TConfiguration::GetProductVersionStr() const { UnicodeString Result; #ifndef __linux__ TGuard Guard(FCriticalSection); try { TVSFixedFileInfo * Info = GetFixedApplicationInfo(); /*return FMTLOAD(VERSION, HIWORD(Info->dwFileVersionMS), LOWORD(Info->dwFileVersionMS), HIWORD(Info->dwFileVersionLS), LOWORD(Info->dwFileVersionLS));*/ UnicodeString BuildStr; if (!GetIsUnofficial()) { BuildStr = LoadStr(VERSION_BUILD); } else { #ifdef _DEBUG BuildStr = LoadStr(VERSION_DEBUG_BUILD); #else BuildStr = LoadStr(VERSION_DEV_BUILD); #endif } int Build = LOWORD(Info->dwFileVersionLS); if (Build > 0) { BuildStr += L" " + ::IntToStr(Build); } #if 0 #ifndef BUILD_OFFICIAL UnicodeString BuildDate = __DATE__; UnicodeString MonthStr = CutToChar(BuildDate, L' ', true); int Month = ParseShortEngMonthName(MonthStr); int Day = StrToInt64(CutToChar(BuildDate, L' ', true)); int Year = StrToInt64(Trim(BuildDate)); UnicodeString DateStr = FORMAT("%d-%2.2d-%2.2d", Year, Month, Day); AddToList(BuildStr, DateStr, L" "); #endif #endif UnicodeString FullVersion = GetProductVersion(); UnicodeString AReleaseType = GetReleaseType(); if (DebugAlwaysTrue(!AReleaseType.IsEmpty()) && !SameText(AReleaseType, L"stable") && !SameText(AReleaseType, L"development")) { FullVersion += L" " + AReleaseType; } Result = FMTLOAD(VERSION2, GetProductVersion().c_str(), Build); #if 0 #ifndef BUILD_OFFICIAL Result += L" " + LoadStr(VERSION_DONT_DISTRIBUTE); #endif #endif } catch (Exception & E) { throw ExtException(&E, "Can't get application version"); } #endif return Result; }
//--------------------------------------------------------------------------- void __fastcall TAboutDialog::LoadThirdParty() { TWebBrowserEx * ThirdPartyWebBrowser = CreateBrowserViewer(ThirdPartyPanel, L""); reinterpret_cast<TLabel *>(ThirdPartyWebBrowser)->Color = clBtnFace; ThirdPartyWebBrowser->Navigate(L"about:blank"); while (ThirdPartyWebBrowser->ReadyState < ::READYSTATE_INTERACTIVE) { Application->ProcessMessages(); } std::unique_ptr<TFont> DefaultFont(new TFont()); UnicodeString ThirdParty; ThirdParty += L"<!DOCTYPE html>\n" L"<meta charset=\"utf-8\">\n" L"<html>\n" L"<head>\n" L"<style>\n" L"\n" L"body\n" L"{\n" L" font-family: '" + DefaultFont->Name + L"';\n" L" margin: 0.5em;\n" L" background-color: " + ColorToWebColorStr(Color) + L";\n" L"}\n" L"\n" L"body\n" L"{\n" L" font-size: " + IntToStr(DefaultFont->Size) + L"pt;\n" L"}\n" L"\n" L"p\n" L"{\n" L" margin-top: 0;\n" L" margin-bottom: 1em;\n" L"}\n" L"\n" L"a, a:visited, a:hover, a:visited, a:current\n" L"{\n" L" color: " + ColorToWebColorStr(LinkColor) + L";\n" L"}\n" L"</style>\n" L"</head>\n" L"<body>\n"; UnicodeString Br = "<br/>\n"; AddPara(ThirdParty, LoadStr(ABOUT_THIRDPARTY_HEADER)); AddPara(ThirdParty, FMTLOAD(PUTTY_BASED_ON, (LoadStr(PUTTY_VERSION))) + Br + LoadStr(PUTTY_COPYRIGHT) + Br + CreateLink(LoadStr(PUTTY_LICENSE_URL), LoadStr(ABOUT_THIRDPARTY_LICENSE)) + Br + CreateLink(LoadStr(PUTTY_URL))); #ifndef NO_FILEZILLA UnicodeString OpenSSLVersionText = GetOpenSSLVersionText(); CutToChar(OpenSSLVersionText, L' ', true); // "OpenSSL" UnicodeString OpenSSLVersion = CutToChar(OpenSSLVersionText, L' ', true); CutToChar(OpenSSLVersionText, L' ', true); // day CutToChar(OpenSSLVersionText, L' ', true); // month UnicodeString OpenSSLYear = CutToChar(OpenSSLVersionText, L' ', true); AddPara(ThirdParty, FMTLOAD(OPENSSL_BASED_ON, (OpenSSLVersion)) + Br + FMTLOAD(OPENSSL_COPYRIGHT2, (OpenSSLYear)) + Br + CreateLink(LoadStr(OPENSSL_URL))); AddPara(ThirdParty, LoadStr(FILEZILLA_BASED_ON2) + Br + LoadStr(FILEZILLA_COPYRIGHT2) + Br + CreateLink(LoadStr(FILEZILLA_URL))); #endif AddPara(ThirdParty, FMTLOAD(NEON_BASED_ON, (NeonVersion())) + Br + LoadStr(NEON_COPYRIGHT) + Br + CreateLink(LoadStr(NEON_URL))); #define EXPAT_LICENSE_URL L"license:expat" AddPara(ThirdParty, FMTLOAD(EXPAT_BASED_ON, (ExpatVersion())) + Br + CreateLink(EXPAT_LICENSE_URL, LoadStr(ABOUT_THIRDPARTY_LICENSE)) + Br + CreateLink(LoadStr(EXPAT_URL))); AddBrowserLinkHandler(ThirdPartyWebBrowser, EXPAT_LICENSE_URL, ExpatLicenceHandler); #ifndef NO_COMPONENTS AddPara(ThirdParty, FMTLOAD(ABOUT_TOOLBAR2000, (Toolbar2000Version)) + Br + LoadStr(ABOUT_TOOLBAR2000_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_TOOLBAR2000_URL))); AddPara(ThirdParty, FMTLOAD(ABOUT_TBX, (TBXVersionString)) + Br + LoadStr(ABOUT_TBX_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_TBX_URL))); AddPara(ThirdParty, LoadStr(ABOUT_FILEMANAGER) + Br + LoadStr(ABOUT_FILEMANAGER_COPYRIGHT)); #endif UnicodeString JclVersion = FormatVersion(JclVersionMajor, JclVersionMinor, JclVersionRelease); AddPara(ThirdParty, FMTLOAD(ABOUT_JCL, (JclVersion)) + Br + CreateLink(LoadStr(ABOUT_JCL_URL))); AddPara(ThirdParty, LoadStr(ABOUT_PNG) + Br + LoadStr(ABOUT_PNG_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_PNG_URL))); ThirdParty += L"</body>\n" L"</html>\n"; std::unique_ptr<TMemoryStream> ThirdPartyStream(new TMemoryStream()); UTF8String ThirdPartyUTF8 = UTF8String(ThirdParty); ThirdPartyStream->Write(ThirdPartyUTF8.c_str(), ThirdPartyUTF8.Length()); ThirdPartyStream->Seek(0, 0); // For stream-loaded document, when set only after loading from OnDocumentComplete, // browser stops working SetBrowserDesignModeOff(ThirdPartyWebBrowser); TStreamAdapter * ThirdPartyStreamAdapter = new TStreamAdapter(ThirdPartyStream.get(), soReference); IPersistStreamInit * PersistStreamInit = NULL; if (ALWAYS_TRUE(ThirdPartyWebBrowser->Document != NULL) && SUCCEEDED(ThirdPartyWebBrowser->Document->QueryInterface(IID_IPersistStreamInit, (void **)&PersistStreamInit)) && ALWAYS_TRUE(PersistStreamInit != NULL)) { PersistStreamInit->Load(static_cast<_di_IStream>(*ThirdPartyStreamAdapter)); } }