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); }
static void dialog_export(void *arg) { dialog *d = static_cast<dialog *>(arg); w_saves *saves_w = static_cast<w_saves *>(d->get_widget_by_id(iDIALOG_SAVES_W)); QuickSave sel = saves_w->selected_save(); std::string name = sel.name; if (!name.length()) name = sel.level_name; FileSpecifier dstFile; dstFile.SetToSavedGamesDir(); dstFile += "unused.sgaA"; char prompt[256]; if (dstFile.WriteDialog(_typecode_savegame, getcstr(prompt, strPROMPTS, _save_replay_prompt), utf8_to_mac_roman(name).c_str())) { dstFile.CopyContents(sel.save_file); int error = dstFile.GetError(); if (error) alert_user(infoError, strERRORS, fileError, error); } }