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); }
void operator() (const std::string& arg) const { if (!NetAllowSavingLevel()) { screen_printf("Level saving disabled"); return; } std::string filename = arg; if (filename == "") { if (last_level != "") filename = last_level; else { filename = mac_roman_to_utf8(static_world->level_name); if (!boost::algorithm::ends_with(filename, ".sceA")) filename += ".sceA"; } } else { if (!boost::algorithm::ends_with(filename, ".sceA")) filename += ".sceA"; } last_level = filename; FileSpecifier fs; fs.SetToLocalDataDir(); fs += filename; if (export_level(fs)) screen_printf("Saved %s", utf8_to_mac_roman(fs.GetPath()).c_str()); else screen_printf("An error occurred while saving the level"); }
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); }
bool get_recording_filedesc(FileSpecifier &File) { File.SetToLocalDataDir(); File += getcstr(temporary, strFILENAMES, filenameMARATHON_RECORDING); return File.Exists(); }