diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-05-17 21:29:53 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-05-17 21:29:53 +0200 | 
| commit | bcb9f8b3ae7d477a35e2baa48c5f5bcff2d98986 (patch) | |
| tree | 309b57b1ad4abb89e133b08ddebabbbdd06a03c3 /plugingui | |
| parent | 0e048dee411cc20beb2a8667e5bb339f9b7fb939 (diff) | |
| parent | 488070f321b1fb24bb0a7022c321c574fd4b06ac (diff) | |
Merge branch 'master' into resample
Pull in changes from master.
Diffstat (limited to 'plugingui')
| -rw-r--r-- | plugingui/Makefile.mingw32 | 3 | ||||
| -rw-r--r-- | plugingui/directory.cc | 61 | ||||
| -rw-r--r-- | plugingui/directory.h | 5 | 
3 files changed, 52 insertions, 17 deletions
| diff --git a/plugingui/Makefile.mingw32 b/plugingui/Makefile.mingw32 index d1cd3bc..3a9542a 100644 --- a/plugingui/Makefile.mingw32 +++ b/plugingui/Makefile.mingw32 @@ -3,7 +3,7 @@ include Makefile.am.plugingui  CFLAGS=-DSTANDALONE -DWIN32 -DUSE_THREAD ${PLUGIN_GUI_CFLAGS} \  										-I$(top_srcdir)/src -I/local/include  -LDFLAGS=-mconsole -lgdi32 -lsetupapi -lws2_32 -L/local/lib -lpng -lz -pthread +LDFLAGS=-mconsole -lgdi32 -lsetupapi -lws2_32 -L/local/lib -lz -pthread  C_SOURCES = \  	$(top_srcdir)/hugin/hugin.c \ @@ -39,6 +39,7 @@ CXX_SOURCES = \  	$(top_srcdir)/plugingui/progressbar.cc \  	$(top_srcdir)/plugingui/resource.cc \  	$(top_srcdir)/plugingui/resource_data.cc \ +	$(top_srcdir)/plugingui/lodepng/lodepng.cpp \  	$(top_srcdir)/src/thread.cc \  	$(top_srcdir)/src/semaphore.cc \  	$(top_srcdir)/src/mutex.cc \ diff --git a/plugingui/directory.cc b/plugingui/directory.cc index 057aead..d481d24 100644 --- a/plugingui/directory.cc +++ b/plugingui/directory.cc @@ -77,7 +77,8 @@ size_t Directory::count()  void Directory::refresh()  { -  _files = listFiles(_path); +  _files = listFiles(_path, DIRECTORY_HIDDEN); +//  _files = listFiles(_path);  }  bool Directory::cd(std::string dir) @@ -128,7 +129,7 @@ std::string Directory::cleanPath(std::string path)    return Directory::pathToStr(pathlst);    } -Directory::EntryList Directory::listFiles(std::string path) +Directory::EntryList Directory::listFiles(std::string path, unsigned char filter)  {    DEBUG(directory, "Listing files in '%s'\n", path.c_str()); @@ -149,12 +150,19 @@ Directory::EntryList Directory::listFiles(std::string path)      if(Directory::isRoot(path) && name == "..") continue; +    unsigned char entryinfo = 0; +    if(isHidden(name)) { +      entryinfo |= DIRECTORY_HIDDEN; +    } +      std::string entrypath = path;      entrypath += SEP;      entrypath += entry->d_name;      if(Directory::isDir(entrypath)) { -      if(name == "..") directories.push_back(entry->d_name); -      else directories.push_back(std::string(SEP) + entry->d_name); +      if(!(entryinfo && filter)) { +        if(name == "..") directories.push_back(entry->d_name); +        else directories.push_back(std::string(SEP) + entry->d_name); +      }      }      else {        int drumkit_suffix_length = strlen(DRUMKIT_SUFFIX); @@ -164,7 +172,10 @@ Directory::EntryList Directory::listFiles(std::string path)          continue;        } -      files.push_back(entry->d_name); + +//      if(!(entryinfo && filter)) { +        files.push_back(entry->d_name); +//      }      }    } @@ -276,6 +287,20 @@ bool Directory::isDir()    return isDir(_path);  } +bool Directory::isDir(std::string path) +{ +  DEBUG(directory, "Is '%s' dir?\n", path.c_str()); +  struct stat st; +  if(stat(path.c_str(), &st) == 0) { +    if((st.st_mode & S_IFDIR) != 0) { +      DEBUG(directory, "Yes\n"); +      return true; +    } +  } +  DEBUG(directory, "No\n"); +  return false; +} +  bool Directory::fileExists(std::string filename)  {    return !isDir(_path + SEP + filename); @@ -291,18 +316,24 @@ bool Directory::exists(std::string path)    }  } -bool Directory::isDir(std::string path) +bool Directory::isHidden(std::string path)   { -  DEBUG(directory, "Is '%s' dir?\n", path.c_str()); -  struct stat st; -  if(stat(path.c_str(), &st) == 0) { -    if((st.st_mode & S_IFDIR) != 0) { -      DEBUG(directory, "Yes\n"); -      return true; -    } +  // TODO: Handle hidden and system files in windows +#ifdef WIN32 +  return false +#else +  unsigned pos = path.find_last_of("/\\"); +  std::string entry = path.substr(pos+1); + +  if(entry.size() > 1 && +     entry.at(0) == '.' && +     entry.at(1) != '.') { +    return true;    } -  DEBUG(directory, "No\n"); -  return false; +  else { +    return false; +  } +#endif  }  Directory::Path Directory::parsePath(std::string path_str) diff --git a/plugingui/directory.h b/plugingui/directory.h index 50d5fae..04ed3e7 100644 --- a/plugingui/directory.h +++ b/plugingui/directory.h @@ -36,6 +36,8 @@  #include <sys/stat.h>  #include <unistd.h> +#define DIRECTORY_HIDDEN 1 +  class Directory {    public: @@ -70,10 +72,11 @@ class Directory {      static std::string root();      static std::string root(std::string path);       static std::string cleanPath(std::string path); -    static Directory::EntryList listFiles(std::string path); +    static Directory::EntryList listFiles(std::string path, unsigned char filter = 0);      static bool isRoot(std::string path);      static Directory::DriveList drives();      static bool isDir(std::string path); +    static bool isHidden(std::string entry);      static bool exists(std::string path);      static std::string pathDirectory(std::string filepath); | 
