File chooser cleanup (use fl_ok and fl_cancel for translated label

strings)

Remove fl_file_chooser_cb() function, which is not needed with the
new Fl_FileChooser dialog and related widgets.

List directories first, in boldface.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1548 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet
2001-08-03 18:46:57 +00:00
parent 5994addeca
commit 03b112773d
7 changed files with 54 additions and 46 deletions
+1 -1
View File
@@ -10,9 +10,9 @@
#include <FL/Fl_FileBrowser.H> #include <FL/Fl_FileBrowser.H>
#include <FL/Fl_Button.H> #include <FL/Fl_Button.H>
#include <FL/Fl_Return_Button.H> #include <FL/Fl_Return_Button.H>
#include <FL/fl_ask.H>
#include <FL/Fl_Input.H> #include <FL/Fl_Input.H>
#include <FL/Fl_Choice.H> #include <FL/Fl_Choice.H>
#include <FL/fl_ask.H>
class Fl_FileChooser { class Fl_FileChooser {
public: public:
+2 -3
View File
@@ -1,5 +1,5 @@
// //
// "$Id: fl_file_chooser.H,v 1.5.2.3 2001/01/22 15:13:38 easysw Exp $" // "$Id: fl_file_chooser.H,v 1.5.2.3.2.1 2001/08/03 18:46:57 easysw Exp $"
// //
// File chooser header file for the Fast Light Tool Kit (FLTK). // File chooser header file for the Fast Light Tool Kit (FLTK).
// //
@@ -29,10 +29,9 @@
#include "Enumerations.H" #include "Enumerations.H"
FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname); FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname);
FL_EXPORT void fl_file_chooser_callback(void (*cb)(const char *));
#endif #endif
// //
// End of "$Id: fl_file_chooser.H,v 1.5.2.3 2001/01/22 15:13:38 easysw Exp $". // End of "$Id: fl_file_chooser.H,v 1.5.2.3.2.1 2001/08/03 18:46:57 easysw Exp $".
// //
+32 -18
View File
@@ -1,5 +1,5 @@
// //
// "$Id: Fl_FileBrowser.cxx,v 1.13.2.1 2001/08/02 16:17:04 easysw Exp $" // "$Id: Fl_FileBrowser.cxx,v 1.13.2.2 2001/08/03 18:46:57 easysw Exp $"
// //
// Fl_FileBrowser routines. // Fl_FileBrowser routines.
// //
@@ -237,11 +237,11 @@ Fl_FileBrowser::item_width(void *p) const // I - List item data
// //
void void
Fl_FileBrowser::item_draw(void *p, // I - List item data Fl_FileBrowser::item_draw(void *p, // I - List item data
int x, // I - Upper-lefthand X coordinate int x, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate int y, // I - Upper-lefthand Y coordinate
int w, // I - Width of item int w, // I - Width of item
int h) const // I - Height of item int h) const // I - Height of item
{ {
int i; // Looping var int i; // Looping var
FL_BLINE *line; // Pointer to line FL_BLINE *line; // Pointer to line
@@ -260,7 +260,10 @@ Fl_FileBrowser::item_draw(void *p, // I - List item data
// Draw the list item text... // Draw the list item text...
line = (FL_BLINE *)p; line = (FL_BLINE *)p;
fl_font(textfont(), textsize()); if (line->txt[strlen(line->txt) - 1] == '/')
fl_font(textfont() | FL_BOLD, textsize());
else
fl_font(textfont(), textsize());
if (line->flags & SELECTED) if (line->flags & SELECTED)
c = contrast(textcolor(), selection_color()); c = contrast(textcolor(), selection_color());
@@ -278,16 +281,15 @@ Fl_FileBrowser::item_draw(void *p, // I - List item data
// Draw the icon if it is set... // Draw the icon if it is set...
if (line->data) if (line->data)
((Fl_FileIcon *)line->data)->draw(x, y, iconsize_, iconsize_, ((Fl_FileIcon *)line->data)->draw(x, y, iconsize_, iconsize_,
(line->flags & SELECTED) ? FL_YELLOW : (line->flags & SELECTED) ? FL_YELLOW :
FL_LIGHT2, FL_LIGHT2,
active_r()); active_r());
// Draw the text offset to the right... // Draw the text offset to the right...
x += iconsize_ + 9; x += iconsize_ + 9;
w -= iconsize_ - 10; w -= iconsize_ - 10;
// Center the text vertically... // Center the text vertically...
line = (FL_BLINE *)p;
height = fl_height(); height = fl_height();
for (text = line->txt; *text != '\0'; text ++) for (text = line->txt; *text != '\0'; text ++)
@@ -385,6 +387,7 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
{ {
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
char filename[4096]; // Current file char filename[4096]; // Current file
Fl_FileIcon *icon; // Icon to use Fl_FileIcon *icon; // Icon to use
@@ -413,7 +416,7 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
for (i = 'A'; i <= 'Z'; i ++, drives >>= 1) for (i = 'A'; i <= 'Z'; i ++, drives >>= 1)
if (drives & 1) if (drives & 1)
{ {
sprintf(filename, "%c:", i); sprintf(filename, "%c:/", i);
if (i < 'C') if (i < 'C')
add(filename, icon); add(filename, icon);
@@ -433,7 +436,7 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
for (i = 'A'; i <= 'Z'; i ++, drives >>= 1) for (i = 'A'; i <= 'Z'; i ++, drives >>= 1)
if (drives & 1) if (drives & 1)
{ {
sprintf(filename, "%c:", i); sprintf(filename, "%c:/", i);
add(filename, icon); add(filename, icon);
num_files ++; num_files ++;
@@ -465,6 +468,8 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
if (sscanf(line, "%*s%4095s", filename) != 1) if (sscanf(line, "%*s%4095s", filename) != 1)
continue; continue;
strncat(filename, "/", sizeof(filename) - 1);
// printf("Fl_FileBrowser::load() - adding \"%s\" to list...\n", filename); // printf("Fl_FileBrowser::load() - adding \"%s\" to list...\n", filename);
add(filename, icon); add(filename, icon);
num_files ++; num_files ++;
@@ -502,15 +507,24 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
if (num_files <= 0) if (num_files <= 0)
return (0); return (0);
for (i = 0; i < num_files; i ++) for (i = 0, num_dirs = 0; i < num_files; i ++)
{ {
if (strcmp(files[i]->d_name, ".") != 0 && if (strcmp(files[i]->d_name, ".") != 0 &&
strcmp(files[i]->d_name, "..") != 0) strcmp(files[i]->d_name, "..") != 0)
{ {
sprintf(filename, "%s/%s", directory_, files[i]->d_name); snprintf(filename, sizeof(filename), "%s/%s", directory_,
files[i]->d_name);
if (filename_isdir(filename) || if (filename_isdir(filename))
filename_match(files[i]->d_name, pattern_)) {
char name[1024]; // Temporary directory name
snprintf(name, sizeof(name), "%s/", files[i]->d_name);
num_dirs ++;
insert(num_dirs, name, Fl_FileIcon::find(filename));
}
else if (filename_match(files[i]->d_name, pattern_))
add(files[i]->d_name, Fl_FileIcon::find(filename)); add(files[i]->d_name, Fl_FileIcon::find(filename));
} }
@@ -543,5 +557,5 @@ Fl_FileBrowser::filter(const char *pattern) // I - Pattern string
// //
// End of "$Id: Fl_FileBrowser.cxx,v 1.13.2.1 2001/08/02 16:17:04 easysw Exp $". // End of "$Id: Fl_FileBrowser.cxx,v 1.13.2.2 2001/08/03 18:46:57 easysw Exp $".
// //
+3 -2
View File
@@ -104,16 +104,17 @@ Fl_FileChooser::Fl_FileChooser(const char *d, const char *p, int t, const char *
w->hotspot(o); w->hotspot(o);
{ Fl_FileBrowser* o = fileList = new Fl_FileBrowser(10, 45, 355, 180); { Fl_FileBrowser* o = fileList = new Fl_FileBrowser(10, 45, 355, 180);
o->type(2); o->type(2);
o->when(FL_WHEN_RELEASE_ALWAYS);
o->callback((Fl_Callback*)cb_fileList); o->callback((Fl_Callback*)cb_fileList);
Fl_Group::current()->resizable(o); Fl_Group::current()->resizable(o);
w->hotspot(o); w->hotspot(o);
} }
{ Fl_Button* o = new Fl_Button(285, 280, 80, 25, "Cancel"); { Fl_Button* o = new Fl_Button(285, 280, 80, 25, "Cancel");
o->callback((Fl_Callback*)cb_Cancel); o->callback((Fl_Callback*)cb_Cancel);
o->label(fl_cancel);
} }
{ Fl_Return_Button* o = okButton = new Fl_Return_Button(205, 280, 75, 25, "OK"); { Fl_Return_Button* o = okButton = new Fl_Return_Button(200, 280, 75, 25, "OK");
o->callback((Fl_Callback*)cb_okButton); o->callback((Fl_Callback*)cb_okButton);
okButton->label(fl_ok);
} }
{ Fl_Input* o = fileName = new Fl_Input(10, 245, 355, 25, "Filename:"); { Fl_Input* o = fileName = new Fl_Input(10, 245, 355, 25, "Filename:");
o->callback((Fl_Callback*)cb_fileName); o->callback((Fl_Callback*)cb_fileName);
+6 -3
View File
@@ -23,7 +23,7 @@ window->hide();} open
code3 {\#include <string.h>} modal visible code3 {\#include <string.h>} modal visible
} { } {
Fl_Browser fileList { Fl_Browser fileList {
callback {fileListCB();} selected callback {fileListCB();}
private xywh {10 45 355 180} type Hold resizable hotspot private xywh {10 45 355 180} type Hold resizable hotspot
code0 {\#include <FL/Fl_FileBrowser.H>} code0 {\#include <FL/Fl_FileBrowser.H>}
class Fl_FileBrowser class Fl_FileBrowser
@@ -32,13 +32,16 @@ window->hide();} open
label Cancel label Cancel
callback {fileList->deselect(); callback {fileList->deselect();
fileName->value(""); fileName->value("");
window->hide();} window->hide();} selected
private xywh {285 280 80 25} private xywh {285 280 80 25}
code0 {o->label(fl_cancel);}
} }
Fl_Return_Button okButton { Fl_Return_Button okButton {
label OK label OK
callback {window->hide();} callback {window->hide();}
private xywh {205 280 75 25} private xywh {200 280 75 25}
code0 {\#include <FL/fl_ask.H>}
code1 {okButton->label(fl_ok);}
} }
Fl_Input fileName { Fl_Input fileName {
label {Filename:} label {Filename:}
+2 -8
View File
@@ -1,5 +1,5 @@
// //
// "$Id: fl_file_chooser.cxx,v 1.10.2.10.2.2 2001/08/03 15:48:20 easysw Exp $" // "$Id: fl_file_chooser.cxx,v 1.10.2.10.2.3 2001/08/03 18:46:57 easysw Exp $"
// //
// File chooser widget for the Fast Light Tool Kit (FLTK). // File chooser widget for the Fast Light Tool Kit (FLTK).
// //
@@ -29,12 +29,6 @@
static Fl_FileChooser *fc = (Fl_FileChooser *)0; static Fl_FileChooser *fc = (Fl_FileChooser *)0;
static void default_callback(const char*) {}
static void (*current_callback)(const char*) = default_callback;
void fl_file_chooser_callback(void (*cb)(const char*)) {
current_callback = cb ? cb : default_callback;
}
char* fl_file_chooser(const char* message, const char* pat, const char* fname) char* fl_file_chooser(const char* message, const char* pat, const char* fname)
{ {
if (!fname || !*fname) fname = "."; if (!fname || !*fname) fname = ".";
@@ -56,5 +50,5 @@ char* fl_file_chooser(const char* message, const char* pat, const char* fname)
// //
// End of "$Id: fl_file_chooser.cxx,v 1.10.2.10.2.2 2001/08/03 15:48:20 easysw Exp $". // End of "$Id: fl_file_chooser.cxx,v 1.10.2.10.2.3 2001/08/03 18:46:57 easysw Exp $".
// //
+8 -11
View File
@@ -1,5 +1,5 @@
// //
// "$Id: file_chooser.cxx,v 1.4.2.3 2001/01/22 15:13:41 easysw Exp $" // "$Id: file_chooser.cxx,v 1.4.2.3.2.1 2001/08/03 18:46:57 easysw Exp $"
// //
// File chooser test program for the Fast Light Tool Kit (FLTK). // File chooser test program for the Fast Light Tool Kit (FLTK).
// //
@@ -28,6 +28,7 @@
#include <FL/Fl_Window.H> #include <FL/Fl_Window.H>
#include <FL/Fl_Input.H> #include <FL/Fl_Input.H>
#include <FL/fl_file_chooser.H> #include <FL/fl_file_chooser.H>
#include <FL/Fl_FileIcon.H>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
@@ -41,23 +42,19 @@ void pickfile(Fl_Widget *) {
if (p) current->value(p); if (p) current->value(p);
} }
void thecb(const char *name) {
printf("Callback '%s'\n",name);
}
int main(int argc, char **argv) { int main(int argc, char **argv) {
Fl_Window window(400,200); Fl_FileIcon::load_system_icons();
pattern = new Fl_Input(100,50,280,30,"Pattern:"); Fl_Window window(310,110);
pattern = new Fl_Input(100,10,200,25,"Pattern:");
pattern->static_value("*"); pattern->static_value("*");
current = new Fl_Input(100,90,280,30,"Current:"); current = new Fl_Input(100,40,200,25,"Current:");
Fl_Button button(100,120,100,30,"&Choose file"); Fl_Button button(200,75,100,25,"&Choose file");
button.callback(pickfile); button.callback(pickfile);
window.end(); window.end();
window.show(argc, argv); window.show(argc, argv);
fl_file_chooser_callback(thecb);
return Fl::run(); return Fl::run();
} }
// //
// End of "$Id: file_chooser.cxx,v 1.4.2.3 2001/01/22 15:13:41 easysw Exp $". // End of "$Id: file_chooser.cxx,v 1.4.2.3.2.1 2001/08/03 18:46:57 easysw Exp $".
// //