ReadFileDialog(FileSpecifier dir, Typecode type, const char* prompt) : FileDialog(), m_prompt(prompt) { w_directory_browsing_list::SortOrder default_order = w_directory_browsing_list::sort_by_name; if (!m_prompt) { switch(type) { case _typecode_savegame: m_prompt = "CONTINUE SAVED GAME"; break; case _typecode_film: m_prompt = "REPLAY SAVED FILM"; break; default: m_prompt = "OPEN FILE"; break; } } std::string filename; switch (type) { case _typecode_savegame: dir.SetToSavedGamesDir(); default_order = w_directory_browsing_list::sort_by_date; break; case _typecode_film: dir.SetToRecordingsDir(); break; case _typecode_scenario: case _typecode_netscript: { // Go to most recently-used directory DirectorySpecifier theDirectory; dir.SplitPath(theDirectory, filename); dir.FromDirectory(theDirectory); if (!dir.Exists()) dir.SetToLocalDataDir(); } break; default: dir.SetToLocalDataDir(); break; } Init(dir, default_order, filename); m_list_w->file_selected = boost::bind(&ReadFileDialog::on_file_selected, this); }
WriteFileDialog(FileSpecifier dir, Typecode type, const char* prompt, const char* default_name) : FileDialog(), m_prompt(prompt), m_default_name(default_name), m_extension(0) { if (!m_prompt) { switch (type) { case _typecode_savegame: prompt = "SAVE GAME"; break; case _typecode_film: prompt = "SAVE FILM"; break; case _typecode_movie: prompt = "EXPORT FILM"; break; default: prompt = "SAVE FILE"; break; } } switch (type) { case _typecode_savegame: m_extension = ".sgaA"; break; case _typecode_film: m_extension = ".filA"; break; default: break; } if (m_extension && boost::algorithm::ends_with(m_default_name, m_extension)) { m_default_name.resize(m_default_name.size() - strlen(m_extension)); } w_directory_browsing_list::SortOrder default_order = w_directory_browsing_list::sort_by_name; switch (type) { case _typecode_savegame: { string base; string part; dir.SplitPath(base, part); if (part != string()) { dir = base; } default_order = w_directory_browsing_list::sort_by_date; } break; case _typecode_film: case _typecode_movie: dir.SetToRecordingsDir(); break; default: dir.SetToLocalDataDir(); break; } Init(dir, default_order, m_default_name); m_list_w->file_selected = boost::bind(&WriteFileDialog::on_file_selected, this, _1); }