AutoSave configuration for ease of use.

Add option to load .ini file from different location.

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
Andrea Odetti 2021-04-04 18:56:53 +01:00
parent f144cb037f
commit 7a8a162d78
5 changed files with 20 additions and 11 deletions

View file

@ -49,7 +49,7 @@ namespace
private:
const std::string myFilename;
const bool mySaveOnExit;
bool mySaveOnExit;
};
Configuration::Configuration(const std::string & filename, const bool saveOnExit) : myFilename(filename), mySaveOnExit(saveOnExit)
@ -60,6 +60,7 @@ namespace
}
else
{
mySaveOnExit = false;
LogFileOutput("Registry: configuration file '%s' not found\n", filename.c_str());
}
}
@ -117,8 +118,8 @@ namespace common2
}
else
{
filename = GetConfigFile("applewin.conf");
saveOnExit = !filename.empty() && options.saveConfigurationOnExit;
filename = options.configurationFile;
saveOnExit = true;
}
std::shared_ptr<Configuration> config(new Configuration(filename, saveOnExit));

View file

@ -1,5 +1,6 @@
#include "frontends/common2/programoptions.h"
#include "frontends/common2/utils.h"
#include "frontends/common2/fileregistry.h"
#include "linux/version.h"
#include "linux/paddle.h"
@ -10,6 +11,7 @@
#include "Log.h"
#include "Disk.h"
#include "Utilities.h"
#include "Core.h"
#include <iostream>
#include <regex>
@ -45,6 +47,12 @@ namespace
namespace common2
{
EmulatorOptions::EmulatorOptions()
{
memclear = g_nMemoryClearType;
configurationFile = GetConfigFile("applewin.conf");
}
bool getEmulatorOptions(int argc, const char * argv [], const std::string & edition, EmulatorOptions & options)
{
const std::string name = "Apple Emulator for " + edition + " (based on AppleWin " + getVersion() + ")";
@ -55,8 +63,8 @@ namespace common2
po::options_description configDesc("configuration");
configDesc.add_options()
("save-conf", "Save configuration on exit")
("config,c", po::value<std::vector<std::string>>(), "Registry options section.path=value")
("conf", po::value<std::string>()->default_value(options.configurationFile), "Select configuration file")
("registry,r", po::value<std::vector<std::string>>(), "Registry options section.path=value")
("qt-ini,q", "Use Qt ini file (read only)")
;
desc.add(configDesc);
@ -96,7 +104,7 @@ namespace common2
("sdl-driver", po::value<int>()->default_value(options.sdlDriver), "SDL driver")
("gl-swap", po::value<int>()->default_value(options.glSwapInterval), "SDL_GL_SwapInterval")
("imgui", "Render with Dear ImGui")
("geometry", po::value<std::string>(), "WxH(+X+Y)")
("geometry", po::value<std::string>(), "WxH[+X+Y]")
;
desc.add(sdlDesc);
@ -118,7 +126,7 @@ namespace common2
return false;
}
options.saveConfigurationOnExit = vm.count("save-conf");
options.configurationFile = vm["conf"].as<std::string>();
options.useQtIni = vm.count("qt-ini");
options.sdlDriver = vm["sdl-driver"].as<int>();
options.glSwapInterval = vm["gl-swap"].as<int>();

View file

@ -17,13 +17,15 @@ namespace common2
struct EmulatorOptions
{
EmulatorOptions();
std::string disk1;
std::string disk2;
std::string snapshotFilename;
bool loadSnapshot = false;
int memclear = 0;
int memclear;
bool log = false;
@ -36,7 +38,7 @@ namespace common2
// "/dev/input/by-id/usb-©Microsoft_Corporation_Controller_1BBE3DB-event-joystick"
std::string paddleDeviceName;
bool saveConfigurationOnExit = false;
std::string configurationFile;
bool useQtIni = false; // use Qt .ini file (read only)
bool run = true; // false if options include "-h"

View file

@ -141,7 +141,6 @@ namespace
int run_ncurses(int argc, const char * argv [])
{
common2::EmulatorOptions options;
options.memclear = g_nMemoryClearType;
const bool run = getEmulatorOptions(argc, argv, "ncurses", options);
if (!run)

View file

@ -84,7 +84,6 @@ void run_sdl(int argc, const char * argv [])
options.geometry.height = sh * 2;
options.geometry.x = SDL_WINDOWPOS_UNDEFINED;
options.geometry.y = SDL_WINDOWPOS_UNDEFINED;
options.memclear = g_nMemoryClearType;
const bool run = getEmulatorOptions(argc, argv, "SDL2", options);
if (!run)