void Fl_File_Dialog::filters(Filter **filters) { filter_->clear(); filter_->begin(); Fl_Item *i; if(!filters) { static Filter tmp; tmp.pattern = "*"; tmp.type_str = "All Files (*)"; _cur_filter = &tmp; i = new Fl_Item(); i->copy_label("(All Files)"); i->user_data(&tmp); } else { _cur_filter = filters[0]; for(Filter *f=*filters++; f!=0; f=*filters++) { char tmp[128]; sprintf(tmp, "%s",f->type_str); i = new Fl_Item(); i->copy_label(tmp); i->user_data(f); } } filter_->value(filter_->child(0)->label()); filter_->end(); filter_->redraw(); }