56 #if !defined (USE_FINAL_H) && !defined (COMPILE_FINAL_CUT) 57 #error "Only <final/final.h> can be included directly." 60 #include <sys/param.h> 61 #include <sys/types.h> 71 #include "final/dialog/fdialog.h" 72 #include "final/dialog/fmessagebox.h" 73 #include "final/output/tty/fterm.h" 74 #include "final/widget/fbutton.h" 75 #include "final/widget/fcheckbox.h" 76 #include "final/widget/flineedit.h" 77 #include "final/widget/flistbox.h" 78 #include "final/widget/fstatusbar.h" 91 enum class DialogType : uInt8
102 , DialogType = DialogType::Open
109 auto getClassName()
const ->
FString override;
110 auto getPath()
const ->
FString;
111 auto getFilter()
const ->
FString;
112 auto getSelectedFile()
const ->
FString;
113 auto getShowHiddenFiles()
const noexcept -> bool;
117 void setFilter (
const FString&);
118 void setShowHiddenFiles (
bool =
true);
119 void unsetShowHiddenFiles();
125 static auto fileOpenChooser (
FWidget*
128 static auto fileSaveChooser (
FWidget*
134 void adjustSize()
override;
138 enum class CloseDir : uInt8 { success, error };
145 , character_device{
false}
147 , block_device{
false}
148 , regular_file{
false}
149 , symbolic_link{
false}
157 uChar character_device : 1;
159 uChar block_device : 1;
160 uChar regular_file : 1;
161 uChar symbolic_link : 1;
166 using DirEntries = std::vector<FDirEntry>;
170 void widgetSettings (
const FPoint&);
171 void initCallbacks();
172 auto patternMatch (
const std::string&
173 ,
const std::string& )
const -> bool;
175 auto numOfDirs() -> sInt64;
177 auto readDir() -> int;
178 void getEntry (
const std::string&, std::string&& name,
const struct dirent*);
179 void followSymLink (
const std::string&, FDirEntry&)
const;
180 auto openDirectory() -> DIR*;
181 auto closeDirectory (DIR*) -> CloseDir;
182 void readDirEntries (DIR*);
183 auto getSelectedFileName()
const -> std::string;
184 auto isCurrentDirectory (
const std::string&)
const -> bool;
185 auto isParentDirectory (
const std::string&)
const -> bool;
186 auto isHiddenEntry (
const std::string&)
const -> bool;
187 auto isRootDirectory (
const std::string&)
const -> bool;
188 void dirEntriesToList();
189 void selectDirectoryEntry (
const std::string&);
190 auto changeDir (
const FString&) -> int;
191 void printPath (
const FString&);
192 void setTitelbarText();
193 static auto getHomeDir() ->
FString;
194 auto isFilterInput()
const -> bool;
195 auto isDirectoryInput()
const -> bool;
196 void activateNewFilter();
197 void activateDefaultFilter();
198 void findItem (
const FString&);
199 void changeIntoSubDir();
202 void cb_processActivate();
203 void cb_processRowChanged();
204 void cb_processClicked();
205 void cb_processCancel();
206 void cb_processOpen();
207 void cb_processShowHidden();
210 DirEntries dir_entries{};
218 DialogType dlg_type{DialogType::Open};
219 bool show_hidden{
false};
222 friend auto sortByName (
const FFileDialog::FDirEntry&
223 ,
const FFileDialog::FDirEntry& ) -> bool;
224 friend auto sortDirFirst (
const FFileDialog::FDirEntry&) -> bool;
225 friend auto isRegularFile (
const std::string&) noexcept -> bool;
227 friend auto fileChooser (
FWidget*
230 , FFileDialog::DialogType) ->
FString;
235 inline auto FFileDialog::getClassName()
const ->
FString 236 {
return "FFileDialog"; }
239 inline auto FFileDialog::getPath()
const ->
FString 240 {
return directory; }
243 inline auto FFileDialog::getFilter()
const ->
FString 244 {
return filter_pattern; }
247 inline void FFileDialog::unsetShowHiddenFiles()
248 { setShowHiddenFiles(
false); }
251 inline auto FFileDialog::getShowHiddenFiles()
const noexcept ->
bool 252 {
return show_hidden; }
256 #endif // FFILEDIALOG_H Definition: ffiledialog.h:87
Definition: flistbox.h:173
Definition: class_template.cpp:25
Definition: fcheckbox.h:64
Definition: flineedit.h:67