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

View File

@ -10,9 +10,9 @@
#include <FL/Fl_FileBrowser.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Return_Button.H>
#include <FL/fl_ask.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Choice.H>
#include <FL/fl_ask.H>
class Fl_FileChooser {
public:

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).
//
@ -29,10 +29,9 @@
#include "Enumerations.H"
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
//
// 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 $".
//

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.
//
@ -237,11 +237,11 @@ Fl_FileBrowser::item_width(void *p) const // I - List item data
//
void
Fl_FileBrowser::item_draw(void *p, // I - List item data
int x, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate
int w, // I - Width of item
int h) const // I - Height of item
Fl_FileBrowser::item_draw(void *p, // I - List item data
int x, // I - Upper-lefthand X coordinate
int y, // I - Upper-lefthand Y coordinate
int w, // I - Width of item
int h) const // I - Height of item
{
int i; // Looping var
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...
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)
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...
if (line->data)
((Fl_FileIcon *)line->data)->draw(x, y, iconsize_, iconsize_,
(line->flags & SELECTED) ? FL_YELLOW :
FL_LIGHT2,
active_r());
(line->flags & SELECTED) ? FL_YELLOW :
FL_LIGHT2,
active_r());
// Draw the text offset to the right...
x += iconsize_ + 9;
w -= iconsize_ - 10;
// Center the text vertically...
line = (FL_BLINE *)p;
height = fl_height();
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 num_files; // Number of files in directory
int num_dirs; // Number of directories in list
char filename[4096]; // Current file
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)
if (drives & 1)
{
sprintf(filename, "%c:", i);
sprintf(filename, "%c:/", i);
if (i < 'C')
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)
if (drives & 1)
{
sprintf(filename, "%c:", i);
sprintf(filename, "%c:/", i);
add(filename, icon);
num_files ++;
@ -465,6 +468,8 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
if (sscanf(line, "%*s%4095s", filename) != 1)
continue;
strncat(filename, "/", sizeof(filename) - 1);
// printf("Fl_FileBrowser::load() - adding \"%s\" to list...\n", filename);
add(filename, icon);
num_files ++;
@ -502,15 +507,24 @@ Fl_FileBrowser::load(const char *directory)// I - Directory to load
if (num_files <= 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 &&
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) ||
filename_match(files[i]->d_name, pattern_))
if (filename_isdir(filename))
{
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));
}
@ -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 $".
//

View File

@ -104,16 +104,17 @@ Fl_FileChooser::Fl_FileChooser(const char *d, const char *p, int t, const char *
w->hotspot(o);
{ Fl_FileBrowser* o = fileList = new Fl_FileBrowser(10, 45, 355, 180);
o->type(2);
o->when(FL_WHEN_RELEASE_ALWAYS);
o->callback((Fl_Callback*)cb_fileList);
Fl_Group::current()->resizable(o);
w->hotspot(o);
}
{ Fl_Button* o = new Fl_Button(285, 280, 80, 25, "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);
okButton->label(fl_ok);
}
{ Fl_Input* o = fileName = new Fl_Input(10, 245, 355, 25, "Filename:");
o->callback((Fl_Callback*)cb_fileName);

View File

@ -23,7 +23,7 @@ window->hide();} open
code3 {\#include <string.h>} modal visible
} {
Fl_Browser fileList {
callback {fileListCB();} selected
callback {fileListCB();}
private xywh {10 45 355 180} type Hold resizable hotspot
code0 {\#include <FL/Fl_FileBrowser.H>}
class Fl_FileBrowser
@ -32,13 +32,16 @@ window->hide();} open
label Cancel
callback {fileList->deselect();
fileName->value("");
window->hide();}
window->hide();} selected
private xywh {285 280 80 25}
code0 {o->label(fl_cancel);}
}
Fl_Return_Button okButton {
label OK
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 {
label {Filename:}

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).
//
@ -29,12 +29,6 @@
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)
{
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 $".
//

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).
//
@ -28,6 +28,7 @@
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/fl_file_chooser.H>
#include <FL/Fl_FileIcon.H>
#include <stdio.h>
#include <string.h>
#include <errno.h>
@ -41,23 +42,19 @@ void pickfile(Fl_Widget *) {
if (p) current->value(p);
}
void thecb(const char *name) {
printf("Callback '%s'\n",name);
}
int main(int argc, char **argv) {
Fl_Window window(400,200);
pattern = new Fl_Input(100,50,280,30,"Pattern:");
Fl_FileIcon::load_system_icons();
Fl_Window window(310,110);
pattern = new Fl_Input(100,10,200,25,"Pattern:");
pattern->static_value("*");
current = new Fl_Input(100,90,280,30,"Current:");
Fl_Button button(100,120,100,30,"&Choose file");
current = new Fl_Input(100,40,200,25,"Current:");
Fl_Button button(200,75,100,25,"&Choose file");
button.callback(pickfile);
window.end();
window.show(argc, argv);
fl_file_chooser_callback(thecb);
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 $".
//