28 #ifndef _GG_FileDlg_h_
29 #define _GG_FileDlg_h_
33 #include <boost/filesystem/path.hpp>
69 FileDlg(
const std::string& directory,
const std::string& filename,
bool save,
bool multi,
const boost::shared_ptr<Font>& font,
70 Clr color,
Clr border_color,
Clr text_color = CLR_BLACK);
74 std::set<std::string> Result()
const;
77 bool SelectDirectories()
const;
85 bool AppendMissingSaveExtension()
const;
87 const std::string& FilesString()
const;
88 const std::string& FileTypesString()
const;
89 const std::string& SaveString()
const;
90 const std::string& OpenString()
const;
91 const std::string& CancelString()
const;
93 const std::string& MalformedFilenameString()
const;
94 const std::string& OverwritePromptString()
const;
95 const std::string& InvalidFilenameString()
const;
96 const std::string& FilenameIsADirectoryString()
const;
97 const std::string& FileDoesNotExistString()
const;
98 const std::string& DeviceIsNotReadyString()
const;
99 const std::string& ThreeButtonDlgOKString()
const;
100 const std::string& ThreeButtonDlgCancelString()
const;
104 virtual void Render();
105 virtual void KeyPress(
Key key, boost::uint32_t key_code_point,
Flags<ModKey> mod_keys);
109 void SelectDirectories(
bool directories);
117 void AppendMissingSaveExtension(
bool append);
130 void SetFileFilters(
const std::vector<std::pair<std::string, std::string> >& filters);
132 void SetFilesString(
const std::string& str);
133 void SetFileTypesString(
const std::string& str);
134 void SetSaveString(
const std::string& str);
135 void SetOpenString(
const std::string& str);
136 void SetCancelString(
const std::string& str);
138 void SetMalformedFilenameString(
const std::string& str);
139 void SetOverwritePromptString(
const std::string& str);
140 void SetInvalidFilenameString(
const std::string& str);
141 void SetFilenameIsADirectoryString(
const std::string& str);
142 void SetFileDoesNotExistString(
const std::string& str);
143 void SetDeviceIsNotReadyString(
const std::string& str);
144 void SetThreeButtonDlgOKString(
const std::string& str);
145 void SetThreeButtonDlgCancelString(
const std::string& str);
150 static const boost::filesystem::path& WorkingDirectory();
169 void CreateChildren(
const std::string& filename,
bool multi);
170 void PlaceLabelsAndEdits(
X button_width,
Y button_height);
171 void AttachSignalChildren();
172 void DetachSignalChildren();
173 void Init(
const std::string& directory);
174 void ConnectSignals();
176 void OkHandler(
bool double_click);
177 void CancelClicked();
178 void FileSetChanged(
const ListBox::SelectionSet& files);
179 void FileDoubleClicked(DropDownList::iterator it);
180 void FilesEditChanged(
const std::string& str);
181 void FilterChanged(DropDownList::iterator it);
182 void SetWorkingDirectory(
const boost::filesystem::path& p);
183 void PopulateFilters();
185 void UpdateDirectoryText();
186 void OpenDirectory();
191 boost::shared_ptr<Font>
195 std::vector<std::pair<std::string, std::string> >
197 std::set<std::string>
199 bool m_select_directories;
200 bool m_append_missing_save_extension;
201 bool m_in_win32_drive_selection;
203 std::string m_save_str;
204 std::string m_open_str;
205 std::string m_cancel_str;
207 std::string m_malformed_filename_str;
208 std::string m_overwrite_prompt_str;
209 std::string m_invalid_filename_str;
210 std::string m_filename_is_a_directory_str;
211 std::string m_file_does_not_exist_str;
212 std::string m_device_is_not_ready_str;
213 std::string m_three_button_dlg_ok_str;
214 std::string m_three_button_dlg_cancel_str;
225 static boost::filesystem::path s_working_dir;