#ifndef DIALOGTOOLKIT_H #define DIALOGTOOLKIT_H #include #include #include #include #define VIMIX_FILES_PATTERN "*.mix" #define MEDIA_FILES_PATTERN "*.mix", "*.mp4", "*.mpg", "*.mpeg", "*.m2v", "*.m4v", "*.avi", "*.mov",\ "*.mkv", "*.webm", "*.mod", "*.wmv", "*.mxf", "*.ogg",\ "*.flv", "*.hevc", "*.asf", "*.jpg", "*.png", "*.gif",\ "*.tif", "*.tiff", "*.webp", "*.bmp", "*.ppm", "*.svg," #define IMAGES_FILES_PATTERN "*.jpg", "*.png", "*.bmp", "*.ppm", "*.gif" namespace DialogToolkit { void ErrorDialog(const char* message); class FileDialog { protected: std::string id_; std::string directory_; std::string path_; std::vector< std::future >promises_; static bool busy_; public: FileDialog(const std::string &name); virtual void open() = 0; virtual bool closed(); inline std::string path() const { return path_; } static bool busy() { return busy_; } }; class OpenImageDialog : public FileDialog { public: OpenImageDialog(const std::string &name) : FileDialog(name) {} void open(); }; class OpenSessionDialog : public FileDialog { public: OpenSessionDialog(const std::string &name) : FileDialog(name) {} void open(); }; class OpenMediaDialog : public FileDialog { public: OpenMediaDialog(const std::string &name) : FileDialog(name) {} void open(); }; class SaveSessionDialog : public FileDialog { public: SaveSessionDialog(const std::string &name) : FileDialog(name) {} void open(); }; class OpenFolderDialog : public FileDialog { public: OpenFolderDialog(const std::string &name) : FileDialog(name) {} void open(); }; class MultipleImagesDialog : public FileDialog { std::list pathlist_; std::vector< std::future< std::list > > promisedlist_; public: MultipleImagesDialog(const std::string &name) : FileDialog(name) {} void open() override; bool closed() override; inline std::list images() const { return pathlist_; } }; } #endif // DIALOGTOOLKIT_H