ASPiK SDK
cfileselector.h
1 // This file is part of VSTGUI. It is subject to the license terms
2 // in the LICENSE file found in the top-level directory of this
3 // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
4 
5 #ifndef __cfileselector__
6 #define __cfileselector__
7 
8 #include "vstguifwd.h"
9 #include "cstring.h"
10 #include <list>
11 #include <vector>
12 #include <functional>
13 
14 namespace VSTGUI {
15 
16 //-----------------------------------------------------------------------------
17 // CFileExtension Declaration
19 //-----------------------------------------------------------------------------
21 {
22 public:
23  CFileExtension (const UTF8String& description, const UTF8String& extension, const UTF8String& mimeType = "", int32_t macType = 0, const UTF8String& uti = "");
24  CFileExtension (const CFileExtension& ext);
25  ~CFileExtension () noexcept;
26 
27  const UTF8String& getDescription () const { return description; }
28  const UTF8String& getExtension () const { return extension; }
29  const UTF8String& getMimeType () const { return mimeType; }
30  const UTF8String& getUTI () const { return uti; }
31  int32_t getMacType () const { return macType; }
32 
33  bool operator== (const CFileExtension& ext) const;
34 //-----------------------------------------------------------------------------
35  CFileExtension (CFileExtension&& ext) noexcept;
36  CFileExtension& operator=(CFileExtension&& ext) noexcept;
37 protected:
38  void init (const UTF8String& description, const UTF8String& extension, const UTF8String& mimeType, const UTF8String& uti);
39 
40  UTF8String description;
41  UTF8String extension;
42  UTF8String mimeType;
43  UTF8String uti;
44  int32_t macType;
45 };
46 
47 //-----------------------------------------------------------------------------
48 // CNewFileSelector Declaration
50 
84 //-----------------------------------------------------------------------------
86 {
87 public:
88  enum Style {
92  };
93 
94  //-----------------------------------------------------------------------------
96  //-----------------------------------------------------------------------------
98  static CNewFileSelector* create (CFrame* parent = nullptr, Style style = kSelectFile);
99 
100  using CallbackFunc = std::function<void(CNewFileSelector*)>;
101  bool run (CallbackFunc&& callback);
102  bool run (CBaseObject* delegate);
103  void cancel ();
104  bool runModal ();
105 
106 
107  //-----------------------------------------------------------------------------
109  //-----------------------------------------------------------------------------
111  void setTitle (const UTF8String& title);
112  void setInitialDirectory (const UTF8String& path);
113  void setDefaultSaveName (const UTF8String& name);
114  void setDefaultExtension (const CFileExtension& extension);
115  void setAllowMultiFileSelection (bool state);
116  void addFileExtension (const CFileExtension& extension);
117  void addFileExtension (CFileExtension&& extension);
118 
119 
120  //-----------------------------------------------------------------------------
122  //-----------------------------------------------------------------------------
124  uint32_t getNumSelectedFiles () const;
125  UTF8StringPtr getSelectedFile (uint32_t index) const;
126 
127 
128  static const CFileExtension& getAllFilesExtension ();
129 
130  static IdStringPtr kSelectEndMessage;
131 //-----------------------------------------------------------------------------
132  CLASS_METHODS_NOCOPY(CNewFileSelector, CBaseObject)
133 protected:
134  explicit CNewFileSelector (CFrame* frame = nullptr);
135  ~CNewFileSelector () noexcept override;
136 
137  virtual bool runInternal (CBaseObject* delegate) = 0;
138  virtual void cancelInternal () = 0;
139  virtual bool runModalInternal () = 0;
140 
141  CFrame* frame;
142  UTF8String title;
143  UTF8String initialPath;
144  UTF8String defaultSaveName;
145  const CFileExtension* defaultExtension;
146  bool allowMultiFileSelection;
147 
148  using FileExtensionList = std::list<CFileExtension>;
149  FileExtensionList extensions;
150  std::vector<UTF8String> result;
151 };
152 
153 } // namespace
154 
155 #endif
file extension description
Definition: cfileselector.h:20
Style
Definition: cfileselector.h:88
uint32_t getNumSelectedFiles() const
get number of selected files
Definition: cfileselector.cpp:228
select directory style
Definition: cfileselector.h:91
select save file selector style
Definition: cfileselector.h:90
static const CFileExtension & getAllFilesExtension()
get the all files extension
Definition: cfileselector.cpp:78
Base Object with reference counter.
Definition: vstguibase.h:276
select file(s) selector style
Definition: cfileselector.h:89
void setTitle(const UTF8String &title)
set title of file selector
Definition: cfileselector.cpp:162
void setDefaultExtension(const CFileExtension &extension)
set default file extension
Definition: cfileselector.cpp:186
Definition: customcontrols.cpp:8
static CNewFileSelector * create(CFrame *parent=nullptr, Style style=kSelectFile)
create a new instance
Definition: x11platform.cpp:183
void setAllowMultiFileSelection(bool state)
set allow multi file selection (only valid for kSelectFile selector style)
Definition: cfileselector.cpp:180
void setDefaultSaveName(const UTF8String &name)
set initial save name (UTF8 string)
Definition: cfileselector.cpp:174
holds an UTF8 encoded string and a platform representation of it
Definition: cstring.h:56
New file selector class.
Definition: cfileselector.h:85
void addFileExtension(const CFileExtension &extension)
add a file extension
Definition: cfileselector.cpp:216
void cancel()
cancel running the file selector
Definition: cfileselector.cpp:119
void setInitialDirectory(const UTF8String &path)
set initial directory (UTF8 string)
Definition: cfileselector.cpp:168
The CFrame is the parent container of all views.
Definition: cframe.h:32
bool runModal()
run as modal dialog
Definition: cfileselector.cpp:125
UTF8StringPtr getSelectedFile(uint32_t index) const
get selected file. Result is only valid as long as the instance of CNewFileSelector is valid...
Definition: cfileselector.cpp:234