Add an 'exec'-prefix to snapshot name when saving from a script.

Allow the user to specify an additional 'prefix' string in the exec command
that will be prepended the ticks-part of the snapshot name when saving a
snapshot from script.
This commit is contained in:
Markus Uhr 2017-11-14 23:22:54 +01:00 committed by Stephen Anthony
parent 7010400235
commit 0ecb4f5ae7
4 changed files with 24 additions and 10 deletions

View File

@ -59,7 +59,8 @@ DebuggerParser::DebuggerParser(Debugger& d, Settings& s)
: debugger(d), : debugger(d),
settings(s), settings(s),
argCount(0), argCount(0),
execDepth(0) execDepth(0),
execPrefix("")
{ {
} }
@ -1063,11 +1064,19 @@ void DebuggerParser::executeExec()
string file = argStrings[0]; string file = argStrings[0];
if(file.find_last_of('.') == string::npos) if(file.find_last_of('.') == string::npos)
file += ".script"; file += ".script";
FilesystemNode node(file); FilesystemNode node(file);
if (!node.exists()) { if (!node.exists()) {
node = FilesystemNode(debugger.myOSystem.defaultSaveDir() + file); node = FilesystemNode(debugger.myOSystem.defaultSaveDir() + file);
} }
if (argCount == 2) {
execPrefix = argStrings[1];
}
else {
ostringstream prefix;
prefix << std::hex << std::setw(8) << std::setfill('0') << (debugger.myOSystem.getTicks()/1000 & 0xffffffff);
execPrefix = prefix.str();
}
execDepth++; execDepth++;
commandResult << exec(node); commandResult << exec(node);
execDepth--; execDepth--;
@ -1711,7 +1720,7 @@ void DebuggerParser::executeSaveses()
// "savesnap" // "savesnap"
void DebuggerParser::executeSavesnap() void DebuggerParser::executeSavesnap()
{ {
debugger.tiaOutput().saveSnapshot(execDepth); debugger.tiaOutput().saveSnapshot(execDepth, execPrefix);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -2389,11 +2398,11 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
{ {
"exec", "exec",
"Execute script file <xx>", "Execute script file <xx> [prefix]",
"Example: exec script.dat, exec auto.txt", "Example: exec script.dat, exec auto.txt",
true, true,
true, true,
{ kARG_FILE, kARG_END_ARGS }, { kARG_FILE, kARG_LABEL, kARG_MULTI_BYTE },
std::mem_fn(&DebuggerParser::executeExec) std::mem_fn(&DebuggerParser::executeExec)
}, },

View File

@ -124,6 +124,7 @@ class DebuggerParser
uInt32 argCount; uInt32 argCount;
uInt32 execDepth; uInt32 execDepth;
string execPrefix;
StringList myWatches; StringList myWatches;

View File

@ -58,7 +58,7 @@ void TiaOutputWidget::loadConfig()
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaOutputWidget::saveSnapshot(int execDepth) void TiaOutputWidget::saveSnapshot(int execDepth, const string& execPrefix)
{ {
if (execDepth > 0) { if (execDepth > 0) {
drawWidget(false); drawWidget(false);
@ -66,8 +66,12 @@ void TiaOutputWidget::saveSnapshot(int execDepth)
int number = int(instance().getTicks() / 1000); int number = int(instance().getTicks() / 1000);
ostringstream sspath; ostringstream sspath;
sspath << instance().snapshotSaveDir() sspath << instance().snapshotSaveDir()
<< instance().console().properties().get(Cartridge_Name) << instance().console().properties().get(Cartridge_Name);
<< "_dbg_" << std::hex << std::setw(8) << std::setfill('0') << number << ".png"; sspath << "_dbg_";
if (execDepth > 0 && !execPrefix.empty()) {
sspath << execPrefix << "_";
}
sspath << std::hex << std::setw(8) << std::setfill('0') << (number/1000 & 0xffffffff) << ".png";
const uInt32 width = instance().console().tia().width(), const uInt32 width = instance().console().tia().width(),
height = instance().console().tia().height(); height = instance().console().tia().height();

View File

@ -36,8 +36,8 @@ class TiaOutputWidget : public Widget, public CommandSender
void loadConfig() override; void loadConfig() override;
void setZoomWidget(TiaZoomWidget* w) { myZoom = w; } void setZoomWidget(TiaZoomWidget* w) { myZoom = w; }
void saveSnapshot() { saveSnapshot(0); }; void saveSnapshot() { saveSnapshot(0, ""); };
void saveSnapshot(int execDepth); void saveSnapshot(int execDepth, const string& execPrefix);
// Eventually, these methods will enable access to the onscreen TIA image // Eventually, these methods will enable access to the onscreen TIA image
// For example, clicking an area may cause an action // For example, clicking an area may cause an action