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" 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 { 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 char*
const,
const struct dirent*);
179 void followSymLink (
const char*
const, FDirEntry&)
const;
180 auto openDirectory() -> DIR*;
181 auto closeDirectory (DIR*) -> CloseDir;
182 void readDirEntries (DIR*);
183 auto isCurrentDirectory (
const struct dirent*)
const -> bool;
184 auto isParentDirectory (
const struct dirent*)
const -> bool;
185 auto isHiddenEntry (
const struct dirent*)
const -> bool;
186 auto isRootDirectory (
const char*
const)
const -> bool;
187 void dirEntriesToList();
188 void selectDirectoryEntry (
const std::string&);
189 auto changeDir (
const FString&) -> int;
190 void printPath (
const FString&);
191 void setTitelbarText();
192 static auto getHomeDir() ->
FString;
193 auto isFilterInput()
const -> bool;
194 auto isDirectoryInput()
const -> bool;
195 void activateNewFilter();
196 void activateDefaultFilter();
197 void findItem (
const FString&);
198 void changeIntoSubDir();
201 void cb_processActivate();
202 void cb_processRowChanged();
203 void cb_processClicked();
204 void cb_processCancel();
205 void cb_processOpen();
206 void cb_processShowHidden();
209 DirEntries dir_entries{};
217 DialogType dlg_type{DialogType::Open};
218 bool show_hidden{
false};
221 friend auto sortByName (
const FFileDialog::FDirEntry&
222 ,
const FFileDialog::FDirEntry& ) -> bool;
223 friend auto sortDirFirst (
const FFileDialog::FDirEntry&) -> bool;
224 friend auto fileChooser (
FWidget*
227 , FFileDialog::DialogType) ->
FString;
232 inline auto FFileDialog::getClassName()
const ->
FString 233 {
return "FFileDialog"; }
236 inline auto FFileDialog::getPath()
const ->
FString 237 {
return directory; }
240 inline auto FFileDialog::getFilter()
const ->
FString 241 {
return filter_pattern; }
244 inline void FFileDialog::unsetShowHiddenFiles()
245 { setShowHiddenFiles(
false); }
248 inline auto FFileDialog::getShowHiddenFiles()
const noexcept ->
bool 249 {
return show_hidden; }
253 #endif // FFILEDIALOG_H Definition: ffiledialog.h:87
Definition: flistbox.h:173
Definition: class_template.cpp:25
Definition: fcheckbox.h:64
Definition: flineedit.h:67