#ifndef DIALOGTOOLKIT_H #define DIALOGTOOLKIT_H #include #include #include #include #include namespace DialogToolkit { void ErrorDialog(const char* message); class FileDialog { protected: std::string id_; std::string directory_; std::string path_; std::vector< std::future >promises_; public: FileDialog(const std::string &name); virtual void open() = 0; virtual bool closed(); inline std::string path() const { return path_; } static bool pending; }; 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(); bool closed() override; inline std::list images() const { return pathlist_; } }; } #endif // DIALOGTOOLKIT_H