Merge pull request #7563 from RayKoopa/extended_list_dir_begin
Add parameters to Directory.list_dir_begin() to skip navigational or hidden entries
This commit is contained in:
commit
831d9b925a
2 changed files with 19 additions and 4 deletions
|
@ -1825,16 +1825,28 @@ Error _Directory::open(const String& p_path) {
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
Error _Directory::list_dir_begin() {
|
Error _Directory::list_dir_begin(bool p_skip_navigational, bool p_skip_hidden) {
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED);
|
ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED);
|
||||||
|
|
||||||
|
_list_skip_navigational = p_skip_navigational;
|
||||||
|
_list_skip_hidden = p_skip_hidden;
|
||||||
|
|
||||||
return d->list_dir_begin();
|
return d->list_dir_begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
String _Directory::get_next(){
|
String _Directory::get_next(){
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!d,"");
|
ERR_FAIL_COND_V(!d,"");
|
||||||
return d->get_next();
|
|
||||||
|
String next = d->get_next();
|
||||||
|
while (next != ""
|
||||||
|
&& ((_list_skip_navigational && (next == "." || next == ".."))
|
||||||
|
|| (_list_skip_hidden && d->current_is_hidden()))) {
|
||||||
|
|
||||||
|
next = d->get_next();
|
||||||
|
}
|
||||||
|
return next;
|
||||||
}
|
}
|
||||||
bool _Directory::current_is_dir() const{
|
bool _Directory::current_is_dir() const{
|
||||||
|
|
||||||
|
@ -1964,7 +1976,7 @@ void _Directory::_bind_methods() {
|
||||||
|
|
||||||
|
|
||||||
ClassDB::bind_method(_MD("open:Error","path"),&_Directory::open);
|
ClassDB::bind_method(_MD("open:Error","path"),&_Directory::open);
|
||||||
ClassDB::bind_method(_MD("list_dir_begin"),&_Directory::list_dir_begin);
|
ClassDB::bind_method(_MD("list_dir_begin", "skip_navigational", "skip_hidden"), &_Directory::list_dir_begin, DEFVAL(false), DEFVAL(false));
|
||||||
ClassDB::bind_method(_MD("get_next"),&_Directory::get_next);
|
ClassDB::bind_method(_MD("get_next"),&_Directory::get_next);
|
||||||
ClassDB::bind_method(_MD("current_is_dir"),&_Directory::current_is_dir);
|
ClassDB::bind_method(_MD("current_is_dir"),&_Directory::current_is_dir);
|
||||||
ClassDB::bind_method(_MD("list_dir_end"),&_Directory::list_dir_end);
|
ClassDB::bind_method(_MD("list_dir_end"),&_Directory::list_dir_end);
|
||||||
|
|
|
@ -458,7 +458,7 @@ public:
|
||||||
|
|
||||||
Error open(const String& p_path);
|
Error open(const String& p_path);
|
||||||
|
|
||||||
Error list_dir_begin(); ///< This starts dir listing
|
Error list_dir_begin(bool p_skip_internal = false, bool p_skip_hidden = false); ///< This starts dir listing
|
||||||
String get_next();
|
String get_next();
|
||||||
bool current_is_dir() const;
|
bool current_is_dir() const;
|
||||||
|
|
||||||
|
@ -487,6 +487,9 @@ public:
|
||||||
_Directory();
|
_Directory();
|
||||||
virtual ~_Directory();
|
virtual ~_Directory();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool _list_skip_navigational;
|
||||||
|
bool _list_skip_hidden;
|
||||||
};
|
};
|
||||||
|
|
||||||
class _Marshalls : public Reference {
|
class _Marshalls : public Reference {
|
||||||
|
|
Loading…
Reference in a new issue