From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Plugins/General/gen_ml/util.cpp | 84 +++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Src/Plugins/General/gen_ml/util.cpp (limited to 'Src/Plugins/General/gen_ml/util.cpp') diff --git a/Src/Plugins/General/gen_ml/util.cpp b/Src/Plugins/General/gen_ml/util.cpp new file mode 100644 index 00000000..6737bfb5 --- /dev/null +++ b/Src/Plugins/General/gen_ml/util.cpp @@ -0,0 +1,84 @@ +#include "./main.h" +#include +#include +#include "./config.h" +#include "./resource.h" + +#include "../nu/AutoChar.h" +#include "../nu/AutoWide.h" +#include "api__gen_ml.h" +#include +#include + +void myOpenURLWithFallback(HWND hwnd, wchar_t *loc, wchar_t *fallbackLoc) +{ + bool override=false; + if (loc) + { + WASABI_API_SYSCB->syscb_issueCallback(SysCallback::BROWSER, BrowserCallback::ONOPENURL, reinterpret_cast(loc), reinterpret_cast(&override)); + } + if (!override && fallbackLoc) + ShellExecuteW(hwnd, L"open", fallbackLoc, NULL, NULL, SW_SHOWNORMAL); +} + +void FixAmps(char *str, size_t len) +{ + size_t realSize=0; + size_t extra=0; + char *itr = str; + while (itr && *itr) + { + if (*itr == '&') + extra++; + itr++; + realSize++; + } + + extra = min(len-(realSize+1), extra); + + while (extra) + { + str[extra+realSize]=str[realSize]; + if (str[realSize] == '&') + { + extra--; + str[extra+realSize]='&'; + } + realSize--; + } +} + +LPWSTR FixAmpsW(LPWSTR pszText, INT cchMaxText) +{ + INT realSize, extra; + LPWSTR itr; + + for (itr = pszText, extra = 0; NULL != *itr; itr++) if (L'&' == *itr) extra++; + + realSize = (INT)(itr - pszText); + + for (extra = min(cchMaxText - (realSize + 1), extra); extra > 0; realSize--) + { + pszText[extra+realSize] = pszText[realSize]; + if (L'&' == pszText[realSize]) + { + extra--; + pszText[extra+realSize] = L'&'; + } + } + return pszText; +} + +bool IsVista() +{ + static INT fVista = -1; + + if (-1 == fVista) + { + OSVERSIONINFO osver; + osver.dwOSVersionInfoSize = sizeof( OSVERSIONINFO ); + fVista = ( ::GetVersionEx(&osver) && osver.dwPlatformId == VER_PLATFORM_WIN32_NT && (osver.dwMajorVersion >= 6 )) ? 1 : 0; + } + + return (1 == fVista); +} \ No newline at end of file -- cgit