char *fl_native_file_chooser(const char *message,const char *pat,const char *fname,int relative=0) {
static char retname[FL_PATH_MAX]; // Returned filename
char *tmpstr = NULL;
Fl_Native_File_Chooser *fnfc = new Fl_Native_File_Chooser;
fnfc->title(message);
fnfc->type(Fl_Native_File_Chooser::BROWSE_FILE);
fnfc->filter(pat);
if (!fname || !*fname) fname = ".";
fnfc->preset_file(fname);
// Show native chooser
switch ( fnfc->show() ) {
case -1:
break; // ERROR
case 1:
break; // CANCEL
default:
tmpstr = (char *)fnfc->filename();
break; // FILE CHOSEN
}
if (tmpstr && relative) {
fl_filename_relative(retname, sizeof(retname), (char *)fnfc->filename());
return retname;
}
return tmpstr;
}