summaryrefslogtreecommitdiff
path: root/FL
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2020-07-10 21:49:00 -0700
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-14 12:52:56 +0200
commit0693c70f577624e66fd660a888f2d2bcd3fc180b (patch)
treee3b4161c0516ebacaf84e9b58852f48d4e4b6357 /FL
parent9925b0f12852dc37fb7fb773a525486c258d2c62 (diff)
First pass at fixing issue 99
A lot of code touched because low level functions needed to pass up error messages reliably, and this had to propagate up the entire driver hierarchy. Tested OK *in English* on: > Linux > OSX 10.10.x > Windows VS2017 > Windows mingw64 I have no way to test on Android, but it might work. TODO: Needs testing in other languages to verify proper UTF8 error messages, esp. with Windows VS, due to complexities with FormatMessage() -- see get_ms_errmsg()
Diffstat (limited to 'FL')
-rw-r--r--FL/Fl_File_Browser.H20
-rw-r--r--FL/Fl_File_Chooser.H3
2 files changed, 10 insertions, 13 deletions
diff --git a/FL/Fl_File_Browser.H b/FL/Fl_File_Browser.H
index 67b0a9d81..40d328093 100644
--- a/FL/Fl_File_Browser.H
+++ b/FL/Fl_File_Browser.H
@@ -40,6 +40,7 @@ class FL_EXPORT Fl_File_Browser : public Fl_Browser {
const char *directory_;
uchar iconsize_;
const char *pattern_;
+ const char *errmsg_;
int full_height() const;
int item_height(void *) const;
@@ -50,11 +51,8 @@ class FL_EXPORT Fl_File_Browser : public Fl_Browser {
public:
enum { FILES, DIRECTORIES };
- /**
- The constructor creates the Fl_File_Browser widget at the specified position and size.
- The destructor destroys the widget and frees all memory that has been allocated.
- */
Fl_File_Browser(int, int, int, int, const char * = 0);
+ ~Fl_File_Browser();
/** Sets or gets the size of the icons. The default size is 20 pixels. */
uchar iconsize() const { return (iconsize_); };
@@ -73,16 +71,7 @@ public:
function in FLTK.
*/
const char *filter() const { return (pattern_); };
-
- /**
- Loads the specified directory into the browser. If icons have been
- loaded then the correct icon is associated with each file in the list.
-
- <P>The sort argument specifies a sort function to be used with
- fl_filename_list().
- */
int load(const char *directory, Fl_File_Sort_F *sort = fl_numericsort);
-
Fl_Fontsize textsize() const { return Fl_Browser::textsize(); };
void textsize(Fl_Fontsize s) { Fl_Browser::textsize(s); iconsize_ = (uchar)(3 * s / 2); };
@@ -100,6 +89,11 @@ public:
shown.
*/
void filetype(int t) { filetype_ = t; };
+ void errmsg(const char *emsg);
+ /**
+ Returns OS error messages, or NULL if none. Use when advised.
+ */
+ const char* errmsg() const { return errmsg_; }
};
#endif // !_Fl_File_Browser_H_
diff --git a/FL/Fl_File_Chooser.H b/FL/Fl_File_Chooser.H
index 702c4ff9f..341b8e683 100644
--- a/FL/Fl_File_Chooser.H
+++ b/FL/Fl_File_Chooser.H
@@ -85,6 +85,7 @@ private:
Fl_File_Browser *fileList;
inline void cb_fileList_i(Fl_File_Browser*, void*);
static void cb_fileList(Fl_File_Browser*, void*);
+ Fl_Box *errorBox;
Fl_Box *previewBox;
public:
Fl_Check_Button *previewButton;
@@ -231,6 +232,8 @@ private:
Fl_Widget* ext_group;
public:
Fl_Widget* add_extra(Fl_Widget* gr);
+protected:
+ void show_error_box(int val);
};
FL_EXPORT char *fl_dir_chooser(const char *message,const char *fname,int relative=0);
FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname,int relative=0);