From: curt Date: Tue, 5 Dec 2000 22:19:42 +0000 (+0000) Subject: Added a file load / save entry box so you can specify a file name (contributed X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=f37f2f73ce6ed17fa5eaf17d52402b4bd30959bd;p=flightgear.git Added a file load / save entry box so you can specify a file name (contributed by David Findley) --- diff --git a/src/GUI/gui.cxx b/src/GUI/gui.cxx index 87ffecbe1..0b2843bd4 100644 --- a/src/GUI/gui.cxx +++ b/src/GUI/gui.cxx @@ -693,34 +693,137 @@ void guiToggleMenu(void) the Gui callback functions ____________________________________________________________________*/ -static void saveFlight(puObject *cv) -{ - BusyCursor(0); - ofstream output("fgfs.sav"); + +// Hier Neu :-) This is my newly added code +// Added by David Findlay +// on Sunday 3rd of December + +// Start new Save Dialog Box +static puDialogBox *SaveDialog = 0; +static puFrame *SaveDialogFrame = 0; +static puText *SaveDialogMessage = 0; +static puInput *SaveDialogInput = 0; + +static puOneShot *SaveDialogOkButton = 0; +static puOneShot *SaveDialogCancelButton = 0; +static puOneShot *SaveDialogResetButton = 0; + +// Default save filename +static char saveFile[256] = "fgfs.sav"; + +// Cancel Button +void SaveDialogCancel(puObject *) { + FG_POP_PUI_DIALOG( SaveDialog ); +} + +// If press OK do this +void SaveDialogOk(puObject*) { + + FG_POP_PUI_DIALOG( SaveDialog ); + + char *s; + SaveDialogInput->getValue(&s); + + ofstream output(s); + cout << saveFile << endl; if (output.good() && fgSaveFlight(output)) { - output.close(); - mkDialog("Saved flight to ./fgfs.sav"); - FG_LOG(FG_INPUT, FG_INFO, "Saved flight to fgfs.sav"); + output.close(); + mkDialog("Saved flight"); + FG_LOG(FG_INPUT, FG_INFO, "Saved flight"); } else { - mkDialog("Cannot save flight to ./fgfs.sav"); - FG_LOG(FG_INPUT, FG_ALERT, "Cannot save flight to fgfs.sav"); + mkDialog("Cannot save flight"); + FG_LOG(FG_INPUT, FG_ALERT, "Cannot save flight"); } - BusyCursor(1); } -static void loadFlight(puObject *cb) -{ - BusyCursor(0); - ifstream input("fgfs.sav"); +// Create Dialog +static void saveFlight(puObject *cv) { + SaveDialog = new puDialogBox (150, 50); + { + SaveDialogFrame = new puFrame (0,0,350, 150); + SaveDialogMessage = new puText ((150 - puGetStringWidth( puGetDefaultLabelFont(), "File Name:" ) / 2), 110); + SaveDialogMessage -> setLabel ("File Name:"); + + SaveDialogInput = new puInput (50, 70, 300, 100); + SaveDialogInput -> setValue (saveFile); + SaveDialogInput -> acceptInput(); + + SaveDialogOkButton = new puOneShot (50, 10, 110, 50); + SaveDialogOkButton -> setLegend (gui_msg_OK); + SaveDialogOkButton -> setCallback ( SaveDialogOk ); + SaveDialogOkButton -> makeReturnDefault(TRUE); + + SaveDialogCancelButton = new puOneShot (140, 10, 210, 50); + SaveDialogCancelButton -> setLegend (gui_msg_CANCEL); + SaveDialogCancelButton -> setCallback ( SaveDialogCancel ); + } + FG_FINALIZE_PUI_DIALOG( SaveDialog ); + + SaveDialog -> reveal(); +} + +// Load Dialog Start +static puDialogBox *LoadDialog = 0; +static puFrame *LoadDialogFrame = 0; +static puText *LoadDialogMessage = 0; +static puInput *LoadDialogInput = 0; + +static puOneShot *LoadDialogOkButton = 0; +static puOneShot *LoadDialogCancelButton = 0; +static puOneShot *LoadDialogResetButton = 0; + +// Default load filename +static char loadFile[256] = "fgfs.sav"; + +// Do this if the person click okay +void LoadDialogOk(puObject *) { + + FG_POP_PUI_DIALOG( LoadDialog ); + + char *l; + LoadDialogInput->getValue(&l); + + ifstream input(l); if (input.good() && fgLoadFlight(input)) { - input.close(); - mkDialog("Loaded flight from fgfs.sav"); - FG_LOG(FG_INPUT, FG_INFO, "Restored flight from ./fgfs.sav"); + input.close(); + mkDialog("Loaded flight"); + FG_LOG(FG_INPUT, FG_INFO, "Restored flight"); } else { - mkDialog("Failed to load flight from fgfs.sav"); - FG_LOG(FG_INPUT, FG_ALERT, "Cannot load flight from ./fgfs.sav"); + mkDialog("Failed to load flight"); + FG_LOG(FG_INPUT, FG_ALERT, "Cannot load flight"); } - BusyCursor(1); +} + +// Do this is the person presses cancel +void LoadDialogCancel(puObject *) { + FG_POP_PUI_DIALOG( LoadDialog ); +} + +// Create Load Dialog +static void loadFlight(puObject *cb) +{ + LoadDialog = new puDialogBox (150, 50); + { + LoadDialogFrame = new puFrame (0,0,350, 150); + LoadDialogMessage = new puText ((150 - puGetStringWidth( puGetDefaultLabelFont(), "File Name:" ) / 2), 110); + LoadDialogMessage -> setLabel ("File Name:"); + + LoadDialogInput = new puInput (50, 70, 300, 100); + LoadDialogInput -> setValue (loadFile); + LoadDialogInput -> acceptInput(); + + LoadDialogOkButton = new puOneShot (50, 10, 110, 50); + LoadDialogOkButton -> setLegend (gui_msg_OK); + LoadDialogOkButton -> setCallback ( LoadDialogOk ); + LoadDialogOkButton -> makeReturnDefault(TRUE); + + LoadDialogCancelButton = new puOneShot (140, 10, 210, 50); + LoadDialogCancelButton -> setLegend (gui_msg_CANCEL); + LoadDialogCancelButton -> setCallback ( LoadDialogCancel ); + } + FG_FINALIZE_PUI_DIALOG( LoadDialog ); + + LoadDialog -> reveal(); } void reInit(puObject *cb)