libgnomevfsmm 2.26.0
|
00001 /* $Id: directory-handle.h 2019 2009-01-27 08:29:42Z murrayc $ */ 00002 00003 /* Copyright 2003 gnome-vfsmm Development Team 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free 00017 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 */ 00019 00020 00021 #ifndef _LIBGNOMEVFSMM_DIRECTORYHANDLE_H 00022 #define _LIBGNOMEVFSMM_DIRECTORYHANDLE_H 00023 00024 #include <glibmm.h> 00025 00026 #include <libgnomevfsmm/uri.h> 00027 #include <libgnomevfsmm/file-info.h> 00028 #include <libgnomevfsmm/enums.h> 00029 #include <libgnomevfsmm/exception.h> 00030 #include <libgnomevfs/gnome-vfs-directory.h> 00031 00032 00033 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00034 typedef struct GnomeVFSDirectoryHandle GnomeVFSDirectoryHandle; 00035 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 00036 00037 namespace Gnome 00038 { 00039 00040 namespace Vfs 00041 { 00042 00043 class DirectoryHandle 00044 { 00045 public: 00046 DirectoryHandle(); 00047 virtual ~DirectoryHandle(); 00048 00049 00051 typedef sigc::slot<bool, const Glib::ustring&, const Glib::RefPtr<const FileInfo>&, bool, bool&> SlotVisit; 00052 00053 /* 00054 typedef gboolean (* GnomeVFSDirectoryVisitFunc) (const gchar *rel_path, 00055 GnomeVFSFileInfo *info, 00056 gboolean recursing_will_loop, 00057 gpointer data, 00058 gboolean *recurse); 00059 */ 00060 00061 #ifdef GLIBMM_EXCEPTIONS_ENABLED 00062 static void visit(const Glib::ustring& uri, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot) throw(exception); 00063 static void visit(const Glib::RefPtr<const Uri>& uri, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot) throw(exception); 00064 00065 static void visit_files(const Glib::ustring& uri, const Glib::ListHandle<Glib::ustring>& file_list, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot) throw(exception); 00066 static void visit_files(const Glib::RefPtr<const Uri>& uri, const Glib::ListHandle<Glib::ustring> & file_list, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot) throw(exception); 00067 00068 static void list_load(const Glib::ListHandle<Glib::ustring>& list, const Glib::ustring& text_uri, FileInfoOptions info_options) throw(exception); 00069 00070 void open(const Glib::ustring& text_uri, FileInfoOptions options = FILE_INFO_DEFAULT) throw(exception); 00071 void open(const Glib::RefPtr<const Uri>& uri, FileInfoOptions options = FILE_INFO_DEFAULT) throw(exception); 00072 00073 void close() throw(exception); 00074 00075 Glib::RefPtr<FileInfo> read_next(bool& file_exists) throw(exception); 00076 00079 Glib::RefPtr<FileInfo> read_next() throw(exception); 00080 #else 00081 static void visit(const Glib::ustring& uri, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot, std::auto_ptr<Gnome::Vfs::exception>& error); 00082 static void visit(const Glib::RefPtr<const Uri>& uri, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot, std::auto_ptr<Gnome::Vfs::exception>& error); 00083 00084 static void visit_files(const Glib::ustring& uri, const Glib::ListHandle<Glib::ustring>& file_list, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot, std::auto_ptr<Gnome::Vfs::exception>& error); 00085 static void visit_files(const Glib::RefPtr<const Uri>& uri, const Glib::ListHandle<Glib::ustring> & file_list, FileInfoOptions info_options, DirectoryVisitOptions visit_options, const SlotVisit& slot, std::auto_ptr<Gnome::Vfs::exception>& error); 00086 00087 static void list_load(const Glib::ListHandle<Glib::ustring>& list, const Glib::ustring& text_uri, FileInfoOptions info_options, std::auto_ptr<Gnome::Vfs::exception>& error); 00088 00089 void open(const Glib::ustring& text_uri, FileInfoOptions options, std::auto_ptr<Gnome::Vfs::exception>& error); 00090 void open(const Glib::RefPtr<const Uri>& uri, FileInfoOptions options, std::auto_ptr<Gnome::Vfs::exception>& error); 00091 00092 void close(std::auto_ptr<Gnome::Vfs::exception>& error); 00093 00094 Glib::RefPtr<FileInfo> read_next(bool& file_exists, std::auto_ptr<Gnome::Vfs::exception>& error); 00095 00098 Glib::RefPtr<FileInfo> read_next(std::auto_ptr<Gnome::Vfs::exception>& error); 00099 #endif //GLIBMM_EXCEPTIONS_ENABLED 00100 00101 GnomeVFSDirectoryHandle* gobj(); 00102 const GnomeVFSDirectoryHandle* gobj() const; 00103 00104 00105 protected: 00106 00107 GnomeVFSDirectoryHandle* gobj_; 00108 }; 00109 00110 } // namespace Vfs 00111 } // namespace Gnome 00112 00113 00114 00115 00116 #endif /* _LIBGNOMEVFSMM_DIRECTORYHANDLE_H */ 00117