summaryrefslogtreecommitdiff
path: root/src/Fl_File_Chooser.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2011-06-06 16:11:22 +0000
committerManolo Gouy <Manolo>2011-06-06 16:11:22 +0000
commit7feb5a9dfeeae416cb86e7019ffda697c94c8f90 (patch)
tree5a8bcdb60c1ca0e55c9f660cd2e7955463a13082 /src/Fl_File_Chooser.cxx
parent922352799211caa32187bdd92af26a0527d3b304 (diff)
Added "Show hidden files" check button to the file chooser panel.
This had been previously done in r.8282 and r.8286 without accounting for the existence of the Fl_File_Chooser.fl file. With this commit, files Fl_File_Chooser.{cxx, H} are properly generated by Fl_File_Chooser.fl git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8785 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_File_Chooser.cxx')
-rw-r--r--src/Fl_File_Chooser.cxx147
1 files changed, 60 insertions, 87 deletions
diff --git a/src/Fl_File_Chooser.cxx b/src/Fl_File_Chooser.cxx
index 75718cdd1..8ef6e15ca 100644
--- a/src/Fl_File_Chooser.cxx
+++ b/src/Fl_File_Chooser.cxx
@@ -87,27 +87,14 @@ void Fl_File_Chooser::cb_previewButton_i(Fl_Check_Button*, void*) {
void Fl_File_Chooser::cb_previewButton(Fl_Check_Button* o, void* v) {
((Fl_File_Chooser*)(o->parent()->parent()->parent()->user_data()))->cb_previewButton_i(o,v);
}
-#ifndef WIN32
-void Fl_File_Chooser::remove_hidden_files()
-{
- int count = fileList->size();
- for(int num = count; num >= 1; num--) {
- const char *p = fileList->text(num);
- if (*p == '.' && strcmp(p, "../") != 0) fileList->remove(num);
- }
- fileList->topline(1);
-}
-
-void Fl_File_Chooser::show_hidden_cb(Fl_Check_Button* o, void* data) {
- Fl_File_Chooser *mychooser = (Fl_File_Chooser *)data;
- if (o->value()) {
- mychooser->browser()->load(mychooser->directory());
- } else {
- mychooser->remove_hidden_files();
- mychooser->browser()->redraw();
- }
-}
-#endif
+
+void Fl_File_Chooser::cb_showHiddenButton_i(Fl_Check_Button*, void*) {
+ showHidden(showHiddenButton->value());
+}
+void Fl_File_Chooser::cb_showHiddenButton(Fl_Check_Button* o, void* v) {
+ ((Fl_File_Chooser*)(o->parent()->parent()->parent()->user_data()))->cb_showHiddenButton_i(o,v);
+}
+
void Fl_File_Chooser::cb_fileName_i(Fl_File_Input*, void*) {
fileNameCB();
}
@@ -228,15 +215,11 @@ Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char
previewButton->callback((Fl_Callback*)cb_previewButton);
previewButton->label(preview_label);
} // Fl_Check_Button* previewButton
-#ifndef WIN32
- { show_hidden = new Fl_Check_Button(
- previewButton->x() + previewButton->w() + 30, 275, 140, 20, "Show hidden files");
- show_hidden->down_box(FL_DOWN_BOX);
- show_hidden->value(0);
- show_hidden->callback((Fl_Callback*)show_hidden_cb, this);
- show_hidden->label(hidden_label);
- } // Fl_Check_Button* show_hidden
-#endif
+ { showHiddenButton = new Fl_Check_Button(115, 275, 165, 20, "Show hidden files");
+ showHiddenButton->down_box(FL_DOWN_BOX);
+ showHiddenButton->callback((Fl_Callback*)cb_showHiddenButton);
+ showHiddenButton->label(hidden_label);
+ } // Fl_Check_Button* showHiddenButton
{ Fl_Box* o = new Fl_Box(115, 275, 365, 20);
Fl_Group::current()->resizable(o);
} // Fl_Box* o
@@ -315,31 +298,31 @@ Fl_File_Chooser::Fl_File_Chooser(const char *d, const char *p, int t, const char
favWindow->end();
} // Fl_Double_Window* favWindow
callback_ = 0;
-data_ = 0;
-directory_[0] = 0;
-window->size_range(window->w(), window->h(), Fl::w(), Fl::h());
-type(t);
-filter(p);
-update_favorites();
-value(d);
-type(t);
-int e;
-prefs_.get("preview", e, 1);
-preview(e);
-Fl_Group::current(prev_current);
+ data_ = 0;
+ directory_[0] = 0;
+ window->size_range(window->w(), window->h(), Fl::w(), Fl::h());
+ type(t);
+ filter(p);
+ update_favorites();
+ value(d);
+ type(t);
+ int e;
+ prefs_.get("preview", e, 1);
+ preview(e);
+ Fl_Group::current(prev_current);
ext_group=(Fl_Widget*)0;
}
Fl_File_Chooser::~Fl_File_Chooser() {
Fl::remove_timeout((Fl_Timeout_Handler)previewCB, this);
-if(ext_group)window->remove(ext_group);
-delete window;
-delete favWindow;
+ if(ext_group)window->remove(ext_group);
+ delete window;
+ delete favWindow;
}
void Fl_File_Chooser::callback(void (*cb)(Fl_File_Chooser *, void *), void *d ) {
callback_ = cb;
-data_ = d;
+ data_ = d;
}
void Fl_File_Chooser::color(Fl_Color c) {
@@ -364,7 +347,7 @@ int Fl_File_Chooser::filter_value() {
void Fl_File_Chooser::filter_value(int f) {
showChoice->value(f);
-showChoiceCB();
+ showChoiceCB();
}
void Fl_File_Chooser::hide() {
@@ -389,27 +372,17 @@ const char * Fl_File_Chooser::label() {
void Fl_File_Chooser::ok_label(const char *l) {
okButton->label(l);
-int w=0, h=0;
-okButton->measure_label(w, h);
-okButton->resize(cancelButton->x() - 50 - w, cancelButton->y(),
- w + 40, 25);
-okButton->parent()->init_sizes();
+ int w=0, h=0;
+ okButton->measure_label(w, h);
+ okButton->resize(cancelButton->x() - 50 - w, cancelButton->y(),
+ w + 40, 25);
+ okButton->parent()->init_sizes();
}
const char * Fl_File_Chooser::ok_label() {
return (okButton->label());
}
-void Fl_File_Chooser::show() {
- window->hotspot(fileList);
-window->show();
-Fl::flush();
-fl_cursor(FL_CURSOR_WAIT);
-rescan_keep_filename();
-fl_cursor(FL_CURSOR_DEFAULT);
-fileName->take_focus();
-}
-
int Fl_File_Chooser::shown() {
return window->shown();
}
@@ -440,18 +413,18 @@ Fl_Fontsize Fl_File_Chooser::textsize() {
void Fl_File_Chooser::type(int t) {
type_ = t;
-if (t & MULTI)
- fileList->type(FL_MULTI_BROWSER);
-else
- fileList->type(FL_HOLD_BROWSER);
-if (t & CREATE)
- newButton->activate();
-else
- newButton->deactivate();
-if (t & DIRECTORY)
- fileList->filetype(Fl_File_Browser::DIRECTORIES);
-else
- fileList->filetype(Fl_File_Browser::FILES);
+ if (t & MULTI)
+ fileList->type(FL_MULTI_BROWSER);
+ else
+ fileList->type(FL_HOLD_BROWSER);
+ if (t & CREATE)
+ newButton->activate();
+ else
+ newButton->deactivate();
+ if (t & DIRECTORY)
+ fileList->filetype(Fl_File_Browser::DIRECTORIES);
+ else
+ fileList->filetype(Fl_File_Browser::FILES);
}
int Fl_File_Chooser::type() {
@@ -477,22 +450,22 @@ Fl_Widget* Fl_File_Chooser::add_extra(Fl_Widget* gr) {
}
if (ext_group) {
int sh=ext_group->h()+4;
-Fl_Widget* svres=window->resizable();
-window->resizable(NULL);
-window->size(window->w(),window->h()-sh);
-window->remove(ext_group);
-ext_group=NULL;
-window->resizable(svres);
+ Fl_Widget* svres=window->resizable();
+ window->resizable(NULL);
+ window->size(window->w(),window->h()-sh);
+ window->remove(ext_group);
+ ext_group=NULL;
+ window->resizable(svres);
}
if (gr) {
int nh=window->h()+gr->h()+4;
-Fl_Widget* svres=window->resizable();
-window->resizable(NULL);
-window->size(window->w(),nh);
-gr->position(2,okButton->y()+okButton->h()+2);
-window->add(gr);
-ext_group=gr;
-window->resizable(svres);
+ Fl_Widget* svres=window->resizable();
+ window->resizable(NULL);
+ window->size(window->w(),nh);
+ gr->position(2,okButton->y()+okButton->h()+2);
+ window->add(gr);
+ ext_group=gr;
+ window->resizable(svres);
}
return ret;
}