| 2248 | |
| 2249 | |
| 2250 | static 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 |
no test coverage detected