Remove platform specific code from test apps

Test programs that open files don't use platform specific code.
They don't open files from macOS bundles.
Support files must either be in the current working directory or
given on the command line.
On macOS this requires a full path when using bundles.
This commit is contained in:
Albrecht Schlosser
2020-08-21 18:54:40 +02:00
parent f3005a44f8
commit d91160a9e0
4 changed files with 18 additions and 70 deletions
+6 -33
View File
@@ -160,42 +160,15 @@ void wtype_cb(Fl_Widget *, void *) {
int main(int argc, char **argv) { int main(int argc, char **argv) {
int i; int i;
if (!Fl::args(argc,argv,i)) Fl::fatal(Fl::help); if (!Fl::args(argc, argv, i)) Fl::fatal(Fl::help);
const char* fname = (i < argc) ? argv[i] : "browser.cxx"; const char *fname = (i < argc) ? argv[i] : "browser.cxx";
Fl_Double_Window window(720,520,fname); Fl_Double_Window window(720, 520, fname);
browser = new Fl_Select_Browser(0,0,window.w(),350,0); browser = new Fl_Select_Browser(0, 0, window.w(), 350, 0);
browser->type(FL_MULTI_BROWSER); browser->type(FL_MULTI_BROWSER);
//browser->type(FL_HOLD_BROWSER);
//browser->color(42);
browser->callback(b_cb); browser->callback(b_cb);
// browser->scrollbar_right();
//browser->has_scrollbar(Fl_Browser::BOTH_ALWAYS);
//browser->format_char('#');
if (!browser->load(fname)) { if (!browser->load(fname)) {
int done = 0; fl_message("Can't load '%s'\n%s\n", fname, strerror(errno));
#ifdef _MSC_VER exit(1);
// if 'browser' was started from the VisualC environment in Win32,
// the current directory is set to the environment itself,
// so we need to correct the browser file path
if ( i == argc )
{
fname = "../test/browser.cxx";
done = browser->load(fname);
}
#elif defined(__APPLE__)
char buf[2048];
strcpy(buf, argv[0]);
char *slash = strrchr(buf, '/');
if (slash) {
strcpy(slash, "/../../../browser.cxx");
}
done = browser->load(buf);
#endif
if ( !done )
{
fl_message("Can't load %s, %s\n", fname, strerror(errno));
exit(1);
}
} }
browser->position(0); browser->position(0);
+7 -16
View File
@@ -47,29 +47,20 @@ static Fl_Value_Slider *rs, *gs, *bs;
static char dbname[FL_PATH_MAX]; static char dbname[FL_PATH_MAX];
static void create_form_cl(void); static void create_form_cl(void);
static int load_browser(char *); static int load_browser(const char *);
typedef struct { int r, g, b; } RGBdb; typedef struct { int r, g, b; } RGBdb;
static RGBdb rgbdb[MAX_RGB]; static RGBdb rgbdb[MAX_RGB];
int main(int argc, char *argv[]) int main(int argc, char *argv[]) {
{ int i;
Fl::args(argc, argv); if (!Fl::args(argc, argv, i)) Fl::fatal(Fl::help);
const char *dbname = (i < argc) ? argv[i] : "rgb.txt";
create_form_cl(); create_form_cl();
#ifdef __APPLE__
// Bundled apps do not set the current directory
strcpy(dbname, argv[0]);
char *slash = strrchr(dbname, '/');
if (slash)
strcpy(slash, "/../Resources/rgb.txt");
#else
strcpy(dbname, "rgb.txt");
#endif
if (load_browser(dbname)) if (load_browser(dbname))
dbobj->label(dbname); dbobj->label(dbname);
else else
@@ -139,7 +130,7 @@ static int read_entry(FILE * fp, int *r, int *g, int *b, char *name)
} }
static int load_browser(char *fname) static int load_browser(const char *fname)
{ {
FILE *fp; FILE *fp;
RGBdb *db = rgbdb, *dbs = db + MAX_RGB; RGBdb *db = rgbdb, *dbs = db + MAX_RGB;
@@ -147,7 +138,7 @@ static int load_browser(char *fname)
char name[256], buf[300]; char name[256], buf[300];
if (!(fp = fl_fopen(fname, "r"))) { if (!(fp = fl_fopen(fname, "r"))) {
fl_alert("%s\n%s\n%s","Load", fname, "Can't open"); fl_alert("Load:\nCan't open '%s'", fname);
return 0; return 0;
} }
+1 -1
View File
@@ -61,7 +61,7 @@
@main:Fluid\n(UI design tool):fluid valuators.fl @main:Fluid\n(UI design tool):fluid valuators.fl
@main:Cool\nDemos...:@e @main:Cool\nDemos...:@e
@e:X Color\nBrowser:colbrowser @e:X Color\nBrowser:colbrowser rgb.txt
@e:Mandelbrot:mandelbrot @e:Mandelbrot:mandelbrot
@e:Fractals:fractals @e:Fractals:fractals
@e:Puzzle:glpuzzle @e:Puzzle:glpuzzle
+4 -20
View File
@@ -36,27 +36,11 @@ main(int argc, // I - Number of command-line arguments
char *argv[]) // I - Command-line arguments char *argv[]) // I - Command-line arguments
{ {
Fl_Help_Dialog *help = new Fl_Help_Dialog; Fl_Help_Dialog *help = new Fl_Help_Dialog;
char htmlname[FL_PATH_MAX]; int i;
#ifdef __APPLE__ if (!Fl::args(argc, argv, i)) Fl::fatal(Fl::help);
int i = 1; const char *fname = (i < argc) ? argv[i] : "help_dialog.html";
while (i < argc && Fl::arg(argc, argv, i)) i++;
if (i < argc) {
strcpy(htmlname, argv[i]);
} else {
// bundled apps do not set the current directory
strcpy(htmlname, argv[0]);
char *slash = strrchr(htmlname, '/');
if (slash) strcpy(slash, "/../Resources/help_dialog.html");
}
#else
if (argc > 1) {
strcpy(htmlname, argv[1]);
} else {
strcpy(htmlname, "help_dialog.html");
}
#endif
help->load(htmlname); // TODO: add error check (when load() returns int instead of void) help->load(fname); // TODO: add error check (when load() returns int instead of void)
help->show(1, argv); help->show(1, argv);