MCPcopy Create free account
hub / github.com/black-sliver/PopTracker / openFileDialogWinGui

Function openFileDialogWinGui

lib/tinyfiledialogs/tinyfiledialogs.cpp:2250–2315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2248
2249
2250static char * openFileDialogWinGui(
2251 char const * aTitle, /* NULL or "" */
2252 char const * aDefaultPathAndOrFile, /* NULL or "" */
2253 int aNumOfFilterPatterns, /* 0 */
2254 char const * const * aFilterPatterns, /* NULL or {"*.jpg","*.png"} */
2255 char const * aSingleFilterDescription, /* NULL or "image files" */
2256 int aAllowMultipleSelects) /* 0 or 1 */
2257{
2258 wchar_t lTitle[128] = L"";
2259 wchar_t lDefaultPathAndFile[MAX_PATH_OR_CMD] = L"";
2260 wchar_t lSingleFilterDescription[128] = L"";
2261 wchar_t * * lFilterPatterns;
2262 wchar_t * lTmpWChar;
2263 char * lTmpChar;
2264 int i;
2265
2266 lFilterPatterns = (wchar_t * *) malloc(aNumOfFilterPatterns*sizeof(wchar_t *));
2267 for (i = 0; i < aNumOfFilterPatterns; i++)
2268 {
2269 if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aFilterPatterns[i]);
2270 else lTmpWChar = tinyfd_mbcsTo16(aFilterPatterns[i]);
2271 lFilterPatterns[i] = (wchar_t *) malloc((wcslen(lTmpWChar) + 1)*sizeof(wchar_t *));
2272 if (lFilterPatterns[i]) wcscpy(lFilterPatterns[i], lTmpWChar);
2273 }
2274
2275 if (aTitle)
2276 {
2277 if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle);
2278 else lTmpWChar = tinyfd_mbcsTo16(aTitle);
2279 wcscpy(lTitle, lTmpWChar);
2280 }
2281 if (aDefaultPathAndOrFile)
2282 {
2283 if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDefaultPathAndOrFile);
2284 else lTmpWChar = tinyfd_mbcsTo16(aDefaultPathAndOrFile);
2285 wcscpy(lDefaultPathAndFile, lTmpWChar);
2286 }
2287 if (aSingleFilterDescription)
2288 {
2289 if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aSingleFilterDescription);
2290 else lTmpWChar = tinyfd_mbcsTo16(aSingleFilterDescription);
2291 wcscpy(lSingleFilterDescription, lTmpWChar);
2292 }
2293
2294 lTmpWChar = tinyfd_openFileDialogW(
2295 lTitle,
2296 lDefaultPathAndFile,
2297 aNumOfFilterPatterns,
2298 (wchar_t const**) lFilterPatterns, /*stupid cast for gcc*/
2299 lSingleFilterDescription,
2300 aAllowMultipleSelects);
2301
2302 for (i = 0; i < aNumOfFilterPatterns; i++)
2303 {
2304 free(lFilterPatterns[i]);
2305 }
2306 free(lFilterPatterns);
2307

Callers 1

tinyfd_openFileDialogFunction · 0.85

Calls 5

tinyfd_utf8to16Function · 0.85
tinyfd_mbcsTo16Function · 0.85
tinyfd_openFileDialogWFunction · 0.85
tinyfd_utf16to8Function · 0.85
tinyfd_utf16toMbcsFunction · 0.85

Tested by

no test coverage detected