1 // SHE library 2 // Copyright (C) 2015-2018 David Capello 3 // 4 // This file is released under the terms of the MIT license. 5 // Read LICENSE.txt for more information. 6 7 #ifndef SHE_NATIVE_DIALOGS_H_INCLUDED 8 #define SHE_NATIVE_DIALOGS_H_INCLUDED 9 #pragma once 10 11 #include "base/paths.h" 12 13 #include <string> 14 15 namespace she { 16 class Display; 17 18 class FileDialog { 19 public: 20 enum class Type { 21 OpenFile, 22 OpenFiles, 23 OpenFolder, 24 SaveFile, 25 }; 26 ~FileDialog()27 virtual ~FileDialog() { } 28 virtual void dispose() = 0; 29 virtual void setType(const Type type) = 0; 30 virtual void setTitle(const std::string& title) = 0; 31 virtual void setDefaultExtension(const std::string& extension) = 0; 32 virtual void addFilter(const std::string& extension, const std::string& description) = 0; 33 virtual std::string fileName() = 0; 34 virtual void getMultipleFileNames(base::paths& output) = 0; 35 virtual void setFileName(const std::string& filename) = 0; 36 virtual bool show(Display* parent) = 0; 37 }; 38 39 class NativeDialogs { 40 public: ~NativeDialogs()41 virtual ~NativeDialogs() { } 42 virtual FileDialog* createFileDialog() = 0; 43 }; 44 45 } // namespace she 46 47 #endif 48