Skip to content

Commit

Permalink
Remove platform specific code from test apps
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Albrecht Schlosser committed Aug 21, 2020
1 parent f3005a4 commit d91160a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 70 deletions.
39 changes: 6 additions & 33 deletions test/browser.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -160,42 +160,15 @@ void wtype_cb(Fl_Widget *, void *) {

int main(int argc, char **argv) {
int i;
if (!Fl::args(argc,argv,i)) Fl::fatal(Fl::help);
const char* fname = (i < argc) ? argv[i] : "browser.cxx";
Fl_Double_Window window(720,520,fname);
browser = new Fl_Select_Browser(0,0,window.w(),350,0);
if (!Fl::args(argc, argv, i)) Fl::fatal(Fl::help);
const char *fname = (i < argc) ? argv[i] : "browser.cxx";
Fl_Double_Window window(720, 520, fname);
browser = new Fl_Select_Browser(0, 0, window.w(), 350, 0);
browser->type(FL_MULTI_BROWSER);
//browser->type(FL_HOLD_BROWSER);
//browser->color(42);
browser->callback(b_cb);
// browser->scrollbar_right();
//browser->has_scrollbar(Fl_Browser::BOTH_ALWAYS);
//browser->format_char('#');
if (!browser->load(fname)) {
int done = 0;
#ifdef _MSC_VER
// 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);
}
fl_message("Can't load '%s'\n%s\n", fname, strerror(errno));
exit(1);
}
browser->position(0);

Expand Down
23 changes: 7 additions & 16 deletions test/colbrowser.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -47,29 +47,20 @@ static Fl_Value_Slider *rs, *gs, *bs;
static char dbname[FL_PATH_MAX];

static void create_form_cl(void);
static int load_browser(char *);
static int load_browser(const char *);

typedef struct { int r, g, b; } RGBdb;

static RGBdb rgbdb[MAX_RGB];


int main(int argc, char *argv[])
{
Fl::args(argc, argv);
int main(int argc, char *argv[]) {
int i;
if (!Fl::args(argc, argv, i)) Fl::fatal(Fl::help);
const char *dbname = (i < argc) ? argv[i] : "rgb.txt";

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))
dbobj->label(dbname);
else
Expand Down Expand Up @@ -139,15 +130,15 @@ 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;
RGBdb *db = rgbdb, *dbs = db + MAX_RGB;
int r, g, b, lr = -1 , lg = -1, lb = -1;
char name[256], buf[300];

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;
}

Expand Down
2 changes: 1 addition & 1 deletion test/demo.menu
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
@main:Fluid\n(UI design tool):fluid valuators.fl

@main:Cool\nDemos...:@e
@e:X Color\nBrowser:colbrowser
@e:X Color\nBrowser:colbrowser rgb.txt
@e:Mandelbrot:mandelbrot
@e:Fractals:fractals
@e:Puzzle:glpuzzle
Expand Down
24 changes: 4 additions & 20 deletions test/help_dialog.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -36,27 +36,11 @@ main(int argc, // I - Number of command-line arguments
char *argv[]) // I - Command-line arguments
{
Fl_Help_Dialog *help = new Fl_Help_Dialog;
char htmlname[FL_PATH_MAX];
#ifdef __APPLE__
int i = 1;
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
int i;
if (!Fl::args(argc, argv, i)) Fl::fatal(Fl::help);
const char *fname = (i < argc) ? argv[i] : "help_dialog.html";

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);

Expand Down

0 comments on commit d91160a

Please sign in to comment.