// NONPORTABLE NONPORTABLE NONPORTABLE #include "precomp_wasabi_bfc.h" #ifdef WIN32 #include <windows.h> #endif #include "wildcharsenum.h" #include <bfc/parse/pathparse.h> #include <bfc/parse/paramparser.h> #include <bfc/file/readdir.h> WildcharsEnumerator::WildcharsEnumerator(const wchar_t *_selection) : selection(_selection) { // Then scan. rescan(); } WildcharsEnumerator::~WildcharsEnumerator() { finddatalist.deleteAll(); } int WildcharsEnumerator::getNumFiles() { return finddatalist.getNumItems(); } const wchar_t *WildcharsEnumerator::enumFile(int n) { StringW path = finddatalist.enumItem(n)->path; if (!path.isempty()) { enumFileString = StringPathCombine(path.getValue(), finddatalist.enumItem(n)->filename.getValue()); return enumFileString; } return finddatalist.enumItem(n)->filename; } void WildcharsEnumerator::rescan() { finddatalist.removeAll(); ParamParser pp(selection, L";"); for (int is = 0; is < pp.getNumItems(); is++) { StringW _selection = pp.enumItem(is); PathParserW parse(_selection); StringW path = L""; StringW mask = L""; for (int i=0;i<parse.getNumStrings()-1;i++) path.AppendFolder(parse.enumString(i)); mask = parse.getLastString(); // enum files and store a list ReadDir rd(path, mask, true); while (rd.next()) { finddatalist.addItem(new find_entry(rd.getPath(), rd.getFilename())); } } } int WildcharsEnumerator::isWildchars(const wchar_t *filename) { return (wcschr(filename, '*') || wcschr(filename, '?')); }