mirror of https://github.com/fltk/fltk
Updated Fl_File_Chooser to correctly deselect other items when
the user picks a file or directory in multiple selection mode (only files or directories, not both at once...) Use the fl_file_chooser_ok_label() function in FLUID. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4191 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
2ccbfdccc9
commit
f5ed012b28
2
CHANGES
2
CHANGES
|
@ -2,6 +2,8 @@ CHANGES IN FLTK 1.1.7
|
||||||
|
|
||||||
- Documentation fixes (STR #648, STR #692, STR #730, STR
|
- Documentation fixes (STR #648, STR #692, STR #730, STR
|
||||||
#744, STR #745)
|
#744, STR #745)
|
||||||
|
- Fl_File_Chooser now correctly handles multiple
|
||||||
|
selections that are a mix of files and directories.
|
||||||
- Fl_File_Chooser no longer resets the type() when
|
- Fl_File_Chooser no longer resets the type() when
|
||||||
choosing a single file, and it now works when selecting
|
choosing a single file, and it now works when selecting
|
||||||
multiple directories (STR #747)
|
multiple directories (STR #747)
|
||||||
|
|
|
@ -780,7 +780,9 @@ void Fl_Comment_Type::open() {
|
||||||
}
|
}
|
||||||
else if (w == comment_load) {
|
else if (w == comment_load) {
|
||||||
// load a comment from disk
|
// load a comment from disk
|
||||||
|
fl_file_chooser_ok_label("Use File");
|
||||||
const char *fname = fl_file_chooser("Pick a comment", 0L, 0L);
|
const char *fname = fl_file_chooser("Pick a comment", 0L, 0L);
|
||||||
|
fl_file_chooser_ok_label(NULL);
|
||||||
if (fname) {
|
if (fname) {
|
||||||
if (comment_input->buffer()->loadfile(fname)) {
|
if (comment_input->buffer()->loadfile(fname)) {
|
||||||
fl_alert("Error loading file\n%s", fname);
|
fl_alert("Error loading file\n%s", fname);
|
||||||
|
|
|
@ -212,7 +212,9 @@ Fluid_Image::~Fluid_Image() {
|
||||||
const char *ui_find_image_name;
|
const char *ui_find_image_name;
|
||||||
Fluid_Image *ui_find_image(const char *oldname) {
|
Fluid_Image *ui_find_image(const char *oldname) {
|
||||||
goto_source_dir();
|
goto_source_dir();
|
||||||
|
fl_file_chooser_ok_label("Use Image");
|
||||||
const char *name = fl_file_chooser("Image?","Image Files (*.{bm,bmp,gif,jpg,pbm,pgm,png,ppm,xbm,xpm})",oldname,1);
|
const char *name = fl_file_chooser("Image?","Image Files (*.{bm,bmp,gif,jpg,pbm,pgm,png,ppm,xbm,xpm})",oldname,1);
|
||||||
|
fl_file_chooser_ok_label(NULL);
|
||||||
ui_find_image_name = name;
|
ui_find_image_name = name;
|
||||||
Fluid_Image *ret = (name && *name) ? Fluid_Image::find(name) : 0;
|
Fluid_Image *ret = (name && *name) ? Fluid_Image::find(name) : 0;
|
||||||
leave_source_dir();
|
leave_source_dir();
|
||||||
|
|
|
@ -176,9 +176,9 @@ static char* cutfname(int which = 0) {
|
||||||
void save_cb(Fl_Widget *, void *v) {
|
void save_cb(Fl_Widget *, void *v) {
|
||||||
const char *c = filename;
|
const char *c = filename;
|
||||||
if (v || !c || !*c) {
|
if (v || !c || !*c) {
|
||||||
fl_ok = "Save";
|
fl_file_chooser_ok_label("Save");
|
||||||
c=fl_file_chooser("Save To:", "FLUID Files (*.f[ld])", c);
|
c=fl_file_chooser("Save To:", "FLUID Files (*.f[ld])", c);
|
||||||
fl_ok = "OK";
|
fl_file_chooser_ok_label(NULL);
|
||||||
if (!c) return;
|
if (!c) return;
|
||||||
|
|
||||||
if (!access(c, 0)) {
|
if (!access(c, 0)) {
|
||||||
|
@ -436,9 +436,9 @@ void open_cb(Fl_Widget *, void *v) {
|
||||||
}
|
}
|
||||||
const char *c;
|
const char *c;
|
||||||
const char *oldfilename;
|
const char *oldfilename;
|
||||||
fl_ok = "Open";
|
fl_file_chooser_ok_label("Open");
|
||||||
c = fl_file_chooser("Open:", "FLUID Files (*.f[ld])", filename);
|
c = fl_file_chooser("Open:", "FLUID Files (*.f[ld])", filename);
|
||||||
fl_ok = "OK";
|
fl_file_chooser_ok_label(NULL);
|
||||||
if (!c) return;
|
if (!c) return;
|
||||||
oldfilename = filename;
|
oldfilename = filename;
|
||||||
filename = NULL;
|
filename = NULL;
|
||||||
|
@ -964,9 +964,9 @@ void print_cb(Fl_Return_Button *, void *) {
|
||||||
outfile = popen(command, "w");
|
outfile = popen(command, "w");
|
||||||
} else {
|
} else {
|
||||||
// Print to file...
|
// Print to file...
|
||||||
fl_ok = "Print";
|
fl_file_chooser_ok_label("Print");
|
||||||
const char *outname = fl_file_chooser("Print To", "PostScript (*.ps)", NULL, 1);
|
const char *outname = fl_file_chooser("Print To", "PostScript (*.ps)", NULL, 1);
|
||||||
fl_ok = "OK";
|
fl_file_chooser_ok_label(NULL);
|
||||||
|
|
||||||
if (outname && !access(outname, 0)) {
|
if (outname && !access(outname, 0)) {
|
||||||
if (fl_choice("The file \"%s\" already exists.\n"
|
if (fl_choice("The file \"%s\" already exists.\n"
|
||||||
|
|
|
@ -415,8 +415,36 @@ Fl_File_Chooser::fileListCB()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Strip any trailing slash from the directory name...
|
// Check if the user clicks on a directory when picking files;
|
||||||
|
// if so, make sure only that item is selected...
|
||||||
filename = pathname + strlen(pathname) - 1;
|
filename = pathname + strlen(pathname) - 1;
|
||||||
|
|
||||||
|
if ((type_ & MULTI) && !(type_ & DIRECTORY)) {
|
||||||
|
if (*filename == '/') {
|
||||||
|
// Clicked on a directory, deselect everything else...
|
||||||
|
int i = fileList->value();
|
||||||
|
fileList->deselect();
|
||||||
|
fileList->select(i);
|
||||||
|
} else {
|
||||||
|
// Clicked on a file - see if there are other directories selected...
|
||||||
|
int i;
|
||||||
|
const char *temp;
|
||||||
|
for (i = 1; i <= fileList->size(); i ++) {
|
||||||
|
if (i != fileList->value() && fileList->selected(i)) {
|
||||||
|
temp = fileList->text(i);
|
||||||
|
temp += strlen(temp) - 1;
|
||||||
|
if (*temp == '/') break; // Yes, selected directory
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i <= fileList->size()) {
|
||||||
|
i = fileList->value();
|
||||||
|
fileList->deselect();
|
||||||
|
fileList->select(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Strip any trailing slash from the directory name...
|
||||||
if (*filename == '/') *filename = '\0';
|
if (*filename == '/') *filename = '\0';
|
||||||
|
|
||||||
// puts("Setting fileName from fileListCB...");
|
// puts("Setting fileName from fileListCB...");
|
||||||
|
|
Loading…
Reference in New Issue