CFFI hookups for nfd "open directory" functionality

This commit is contained in:
Lars A. Doucet
2015-12-17 10:34:41 -06:00
committed by Joshua Granick
parent 97fb0dcccc
commit 1ddb43b990
5 changed files with 53 additions and 2 deletions

View File

@@ -12,6 +12,7 @@ namespace lime {
public:
static const char* OpenDirectory (const char* filter = 0, const char* defaultPath = 0);
static const char* OpenFile (const char* filter = 0, const char* defaultPath = 0);
static void OpenFiles (std::vector<const char*>* files, const char* filter = 0, const char* defaultPath = 0);
static const char* SaveFile (const char* filter = 0, const char* defaultPath = 0);

View File

@@ -264,6 +264,17 @@ namespace lime {
}
value lime_file_dialog_open_directory (HxString filter, HxString defaultPath) {
#ifdef LIME_NFD
const char* path = FileDialog::OpenDirectory (filter.__s, defaultPath.__s);
return path ? alloc_string (path) : alloc_null ();
#endif
return 0;
}
value lime_file_dialog_open_file (HxString filter, HxString defaultPath) {
#ifdef LIME_NFD
@@ -1410,6 +1421,7 @@ namespace lime {
DEFINE_PRIME1 (lime_cffi_set_finalizer);
DEFINE_PRIME0 (lime_clipboard_get_text);
DEFINE_PRIME1v (lime_clipboard_set_text);
DEFINE_PRIME2 (lime_file_dialog_open_directory);
DEFINE_PRIME2 (lime_file_dialog_open_file);
DEFINE_PRIME2 (lime_file_dialog_open_files);
DEFINE_PRIME2 (lime_file_dialog_save_file);

View File

@@ -6,6 +6,34 @@
namespace lime {
const char* FileDialog::OpenDirectory (const char* filter, const char* defaultPath) {
nfdchar_t *savePath = 0;
nfdresult_t result = NFD_OpenDirectoryDialog (filter, defaultPath, &savePath);
switch (result) {
case NFD_OKAY:
return savePath;
break;
case NFD_CANCEL:
break;
default:
printf ("Error: %s\n", NFD_GetError ());
break;
}
return savePath;
}
const char* FileDialog::OpenFile (const char* filter, const char* defaultPath) {
nfdchar_t *savePath = 0;