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