Add sort function as optional argument to Fl_File_Browser::load().

Add docos for sort functions and changes to fl_filename_list() and
Fl_File_Browser::load().


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2176 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet
2002-05-02 14:31:10 +00:00
parent 47e7de17bc
commit ae0a956f2e
4 changed files with 58 additions and 25 deletions
+4 -3
View File
@@ -1,5 +1,5 @@
// //
// "$Id: Fl_File_Browser.H,v 1.1.2.2 2002/01/01 15:11:27 easysw Exp $" // "$Id: Fl_File_Browser.H,v 1.1.2.3 2002/05/02 14:31:10 easysw Exp $"
// //
// FileBrowser definitions. // FileBrowser definitions.
// //
@@ -32,6 +32,7 @@
# include "Fl_Browser.H" # include "Fl_Browser.H"
# include "Fl_File_Icon.H" # include "Fl_File_Icon.H"
# include "filename.H"
// //
@@ -62,7 +63,7 @@ public:
FL_EXPORT void filter(const char *pattern); FL_EXPORT void filter(const char *pattern);
const char *filter() const { return (pattern_); }; const char *filter() const { return (pattern_); };
FL_EXPORT int load(const char *directory); FL_EXPORT int load(const char *directory, Fl_File_Sort_F *sort = fl_numericsort);
uchar textsize() const { return (Fl_Browser::textsize()); }; uchar textsize() const { return (Fl_Browser::textsize()); };
void textsize(uchar s) { Fl_Browser::textsize(s); iconsize_ = 3 * s / 2; }; void textsize(uchar s) { Fl_Browser::textsize(s); iconsize_ = 3 * s / 2; };
@@ -74,5 +75,5 @@ public:
#endif // !_Fl_File_Browser_H_ #endif // !_Fl_File_Browser_H_
// //
// End of "$Id: Fl_File_Browser.H,v 1.1.2.2 2002/01/01 15:11:27 easysw Exp $". // End of "$Id: Fl_File_Browser.H,v 1.1.2.3 2002/05/02 14:31:10 easysw Exp $".
// //
+4 -1
View File
@@ -69,10 +69,13 @@ int filetype() const</A></H4>
files and directories are shown. Otherwise only directories are files and directories are shown. Otherwise only directories are
shown. shown.
<H4><A NAME="Fl_File_Browser.load">int load(const char *directory)</A></H4> <H4><A NAME="Fl_File_Browser.load">int load(const char *directory, Fl_File_Sort_F *sort = fl_numeric_sort)</A></H4>
<P>Loads the specified directory into the browser. If icons have been <P>Loads the specified directory into the browser. If icons have been
loaded then the correct icon is associated with each file in the list. loaded then the correct icon is associated with each file in the list.
<P>The <tt>sort</tt> argument specifies a sort function to be used with
<A HREF="functions.html#fl_filename_list"><tt>fl_filename_list()</tt></A>.
</BODY> </BODY>
</HTML> </HTML>
+32 -4
View File
@@ -579,7 +579,7 @@ int fl_filename_isdir(const char *f);
<H3>Prototype</H3> <H3>Prototype</H3>
<UL><PRE> <UL><PRE>
int fl_filename_list(const char *d, dirent ***list); int fl_filename_list(const char *d, dirent ***list, Fl_File_Sort_F *sort = fl_numericsort);
</PRE></UL> </PRE></UL>
<H3>Description</H3> <H3>Description</H3>
@@ -595,9 +595,37 @@ pointer to the array is returned in <tt>*list</tt>. The number
of entries is given as a return value. If there is an error of entries is given as a return value. If there is an error
reading the directory a number less than zero is returned, and reading the directory a number less than zero is returned, and
<tt>errno</tt> has the reason; <tt>errno</tt> does not work <tt>errno</tt> has the reason; <tt>errno</tt> does not work
under WIN32. The files are sorted in &quot;alphanumeric&quot; under WIN32.
order, where an attempt is made to put unpadded numbers in
consecutive order. <P>The <tt>sort</tt> argument specifies a sort function to be used
when on the array of filenames. The following standard sort functions
are provided with FLTK:
<UL>
<LI><TT>fl_alphasort</tt> - The files are sorted in
ascending alphabetical order; upper- and lowercase
letters are compared according to their ASCII ordering -
uppercase before lowercase.
<LI><TT>fl_casealphasort</tt> - The files are sorted in
ascending alphabetical order; upper- and lowercase
letters are compared equally - case is not significant.
<LI><TT>fl_casenumericsort</TT> - The files are sorted
in ascending &quot;alphanumeric&quot; order, where an
attempt is made to put unpadded numbers in consecutive
order; upper- and lowercase letters are compared equally
- case is not significant.
<LI><TT>fl_numericsort</TT> - The files are sorted in
ascending &quot;alphanumeric&quot; order, where an
attempt is made to put unpadded numbers in consecutive
order; upper- and lowercase letters are compared
according to their ASCII ordering - uppercase before
lowercase.
</UL>
<P>You can free the returned list of files with the following <P>You can free the returned list of files with the following
code: code:
+18 -17
View File
@@ -1,5 +1,5 @@
// //
// "$Id: Fl_File_Browser.cxx,v 1.1.2.13 2002/05/01 20:05:19 easysw Exp $" // "$Id: Fl_File_Browser.cxx,v 1.1.2.14 2002/05/02 14:31:10 easysw Exp $"
// //
// Fl_File_Browser routines. // Fl_File_Browser routines.
// //
@@ -24,13 +24,13 @@
// //
// Contents: // Contents:
// //
// Fl_File_Browser::full_height() - Return the height of the list. // Fl_File_Browser::full_height() - Return the height of the list.
// Fl_File_Browser::item_height() - Return the height of a list item. // Fl_File_Browser::item_height() - Return the height of a list item.
// Fl_File_Browser::item_width() - Return the width of a list item. // Fl_File_Browser::item_width() - Return the width of a list item.
// Fl_File_Browser::item_draw() - Draw a list item. // Fl_File_Browser::item_draw() - Draw a list item.
// Fl_File_Browser::Fl_File_Browser() - Create a Fl_File_Browser widget. // Fl_File_Browser::Fl_File_Browser() - Create a Fl_File_Browser widget.
// Fl_File_Browser::load() - Load a directory into the browser. // Fl_File_Browser::load() - Load a directory into the browser.
// Fl_File_Browser::filter() - Set the filename filter. // Fl_File_Browser::filter() - Set the filename filter.
// //
// //
@@ -394,14 +394,15 @@ Fl_File_Browser::Fl_File_Browser(int x, // I - Upper-lefthand X coordinat
// 'Fl_File_Browser::load()' - Load a directory into the browser. // 'Fl_File_Browser::load()' - Load a directory into the browser.
// //
int // O - Number of files loaded int // O - Number of files loaded
Fl_File_Browser::load(const char *directory)// I - Directory to load Fl_File_Browser::load(const char *directory,// I - Directory to load
Fl_File_Sort_F *sort) // I - Sort function to use
{ {
int i; // Looping var int i; // Looping var
int num_files; // Number of files in directory int num_files; // Number of files in directory
int num_dirs; // Number of directories in list int num_dirs; // Number of directories in list
char filename[4096]; // Current file char filename[4096]; // Current file
Fl_File_Icon *icon; // Icon to use Fl_File_Icon *icon; // Icon to use
// printf("Fl_File_Browser::load(\"%s\")\n", directory); // printf("Fl_File_Browser::load(\"%s\")\n", directory);
@@ -559,9 +560,9 @@ Fl_File_Browser::load(const char *directory)// I - Directory to load
else if (filename[i] != '/' && filename[i] != '\\') else if (filename[i] != '/' && filename[i] != '\\')
strcat(filename, "/"); strcat(filename, "/");
num_files = fl_filename_list(filename, &files); num_files = fl_filename_list(filename, &files, sort);
#else #else
num_files = fl_filename_list(directory_, &files); num_files = fl_filename_list(directory_, &files, sort);
#endif /* WIN32 || __EMX__ */ #endif /* WIN32 || __EMX__ */
if (num_files <= 0) if (num_files <= 0)
@@ -626,5 +627,5 @@ Fl_File_Browser::filter(const char *pattern) // I - Pattern string
// //
// End of "$Id: Fl_File_Browser.cxx,v 1.1.2.13 2002/05/01 20:05:19 easysw Exp $". // End of "$Id: Fl_File_Browser.cxx,v 1.1.2.14 2002/05/02 14:31:10 easysw Exp $".
// //