diff --git a/src/gui/StringList.hxx b/src/common/StringList.hxx similarity index 94% rename from src/gui/StringList.hxx rename to src/common/StringList.hxx index d15057e5a..9ba0b99f2 100644 --- a/src/gui/StringList.hxx +++ b/src/common/StringList.hxx @@ -15,9 +15,6 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. // // $Id$ -// -// Based on code from ScummVM - Scumm Interpreter -// Copyright (C) 2002-2004 The ScummVM project //============================================================================ #ifndef STRING_LIST_HXX diff --git a/src/common/StringParser.hxx b/src/common/StringParser.hxx new file mode 100644 index 000000000..86a4bf1d2 --- /dev/null +++ b/src/common/StringParser.hxx @@ -0,0 +1,49 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2011 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +// +// $Id$ +//============================================================================ + +#ifndef STRING_PARSER_HXX +#define STRING_PARSER_HXX + +#include "StringList.hxx" +#include "bspf.hxx" + +/** + This class converts a string into a StringList by splitting on a delimiter. + By default, the delimiter is a newline. + + @author Stephen Anthony +*/ +class StringParser +{ + public: + StringParser(const string& str, char delim = '\n') + { + stringstream buf(str); + string line; + while(std::getline(buf, line, delim)) + myStringList.push_back(line); + } + + const StringList& stringList() const { return myStringList; } + + private: + StringList myStringList; +}; + +#endif diff --git a/src/common/Version.hxx b/src/common/Version.hxx index 593850402..4851abe93 100644 --- a/src/common/Version.hxx +++ b/src/common/Version.hxx @@ -22,7 +22,7 @@ #include -#define STELLA_VERSION "3.4_svn1" +#define STELLA_VERSION "3.4_beta1" #define STELLA_BUILD atoi("$Rev$" + 6) #endif diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index aac073294..e3294c738 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -112,15 +112,12 @@ Debugger::Debugger(OSystem* osystem) : DialogContainer(osystem), myConsole(NULL), mySystem(NULL), + myDialog(NULL), myParser(NULL), myCartDebug(NULL), myCpuDebug(NULL), myRiotDebug(NULL), myTiaDebug(NULL), - myTiaInfo(NULL), - myTiaOutput(NULL), - myTiaZoom(NULL), - myRom(NULL), myBreakPoints(NULL), myReadTraps(NULL), myWriteTraps(NULL), @@ -172,19 +169,12 @@ void Debugger::initialize() const GUI::Rect& r = getDialogBounds(); - delete myBaseDialog; - DebuggerDialog *dd = new DebuggerDialog(myOSystem, this, - r.left, r.top, r.width(), r.height()); - myBaseDialog = dd; + delete myBaseDialog; myBaseDialog = myDialog = NULL; + myDialog = new DebuggerDialog(myOSystem, this, + r.left, r.top, r.width(), r.height()); + myBaseDialog = myDialog; - myPrompt = dd->prompt(); - myTiaInfo = dd->tiaInfo(); - myTiaOutput = dd->tiaOutput(); - myTiaZoom = dd->tiaZoom(); - myRom = dd->rom(); - myMessage = dd->message(); - - myRewindManager = new RewindManager(*myOSystem, *dd->rewindButton()); + myRewindManager = new RewindManager(*myOSystem, myDialog->rewindButton()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -235,7 +225,7 @@ bool Debugger::start(const string& message, int address) if(address > -1) buf << valueToString(address); - myMessage->setEditString(buf.str()); + myDialog->message().setEditString(buf.str()); return true; } return false; @@ -247,17 +237,20 @@ bool Debugger::startWithFatalError(const string& message) if(myOSystem->eventHandler().enterDebugMode()) { // This must be done *after* we enter debug mode, - // so the message isn't erased - myMessage->setEditString(message); + // so the dialog is properly shown + myDialog->showFatalMessage(message); return true; } return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Debugger::quit() +void Debugger::quit(bool exitrom) { - myOSystem->eventHandler().leaveDebugMode(); + if(exitrom) + myOSystem->eventHandler().handleEvent(Event::LauncherMode, 1); + else + myOSystem->eventHandler().leaveDebugMode(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -630,7 +623,7 @@ void Debugger::setStartState() saveOldState(false); // Set the 're-disassemble' flag, but don't do it until the next scheduled time - myRom->invalidate(false); + myDialog->rom().invalidate(false); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/debugger/Debugger.hxx b/src/debugger/Debugger.hxx index 99616625e..71a1055ed 100644 --- a/src/debugger/Debugger.hxx +++ b/src/debugger/Debugger.hxx @@ -42,6 +42,7 @@ class ButtonWidget; #include "Array.hxx" #include "DialogContainer.hxx" +#include "DebuggerDialog.hxx" #include "DebuggerParser.hxx" #include "System.hxx" #include "Rect.hxx" @@ -119,7 +120,7 @@ class Debugger : public DialogContainer Wrapper method for EventHandler::leaveDebugMode() for those classes that don't have access to EventHandler. */ - void quit(); + void quit(bool exitrom); bool addFunction(const string& name, const string& def, Expression* exp, bool builtin = false); @@ -344,7 +345,8 @@ class Debugger : public DialogContainer void reset(); void clearAllBreakPoints(); - PromptWidget *prompt() { return myPrompt; } + PromptWidget& prompt() { return myDialog->prompt(); } + RomWidget& rom() { return myDialog->rom(); }; void saveState(int state); void loadState(int state); @@ -353,22 +355,16 @@ class Debugger : public DialogContainer Console* myConsole; System* mySystem; + DebuggerDialog* myDialog; DebuggerParser* myParser; CartDebug* myCartDebug; CpuDebug* myCpuDebug; RiotDebug* myRiotDebug; TIADebug* myTiaDebug; - TiaInfoWidget* myTiaInfo; - TiaOutputWidget* myTiaOutput; - TiaZoomWidget* myTiaZoom; - RomWidget* myRom; - EditTextWidget* myMessage; - PackedBitArray* myBreakPoints; PackedBitArray* myReadTraps; PackedBitArray* myWriteTraps; - PromptWidget* myPrompt; static Debugger* myStaticDebugger; diff --git a/src/debugger/DebuggerParser.cxx b/src/debugger/DebuggerParser.cxx index 1f8c2ccdf..9f1b54e9b 100644 --- a/src/debugger/DebuggerParser.cxx +++ b/src/debugger/DebuggerParser.cxx @@ -699,7 +699,7 @@ void DebuggerParser::executeBreak() else bp = args[0]; debugger->toggleBreakPoint(bp); - debugger->myRom->invalidate(); + debugger->rom().invalidate(); if(debugger->breakPoint(bp)) commandResult << "Set"; @@ -799,7 +799,7 @@ void DebuggerParser::executeClearwatches() // "cls" void DebuggerParser::executeCls() { - debugger->prompt()->clearScreen(); + debugger->prompt().clearScreen(); commandResult << ""; } @@ -822,7 +822,7 @@ void DebuggerParser::executeCode() CartDebug::CODE, args[0], args[1]); commandResult << (result ? "added" : "removed") << " CODE directive on range $" << hex << args[0] << " $" << hex << args[1]; - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -863,7 +863,7 @@ void DebuggerParser::executeData() CartDebug::DATA, args[0], args[1]); commandResult << (result ? "added" : "removed") << " DATA directive on range $" << hex << args[0] << " $" << hex << args[1]; - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -872,7 +872,7 @@ void DebuggerParser::executeDefine() { // TODO: check if label already defined? debugger->cartDebug().addLabel(argStrings[0], args[1]); - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -952,6 +952,13 @@ void DebuggerParser::executeExec() commandResult << exec(file); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// "exitrom" +void DebuggerParser::executeExitRom() +{ + debugger->quit(true); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // "frame" void DebuggerParser::executeFrame() @@ -1002,7 +1009,7 @@ void DebuggerParser::executeGfx() CartDebug::GFX, args[0], args[1]); commandResult << (result ? "added" : "removed") << " GFX directive on range $" << hex << args[0] << " $" << hex << args[1]; - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1040,7 +1047,7 @@ void DebuggerParser::executeJump() if(line >= 0 && address >= 0) { - debugger->myRom->scrollTo(line); + debugger->rom().scrollTo(line); commandResult << "disassembly scrolled to address $" << HEX4 << address; } else @@ -1141,7 +1148,7 @@ void DebuggerParser::executeLoadconfig() else commandResult << debugger->cartDebug().loadConfigFile(); - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1159,7 +1166,7 @@ void DebuggerParser::executeLoadstate() void DebuggerParser::executeLoadsym() { commandResult << debugger->cartDebug().loadSymbolFile(argStrings[0]); - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1198,7 +1205,7 @@ void DebuggerParser::executePGfx() CartDebug::PGFX, args[0], args[1]); commandResult << (result ? "added" : "removed") << " PGFX directive on range $" << hex << args[0] << " $" << hex << args[1]; - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1223,7 +1230,7 @@ void DebuggerParser::executeRam() void DebuggerParser::executeReset() { debugger->reset(); - debugger->myRom->invalidate(); + debugger->rom().invalidate(); commandResult << "reset CPU"; } @@ -1233,7 +1240,7 @@ void DebuggerParser::executeRewind() { if(debugger->rewindState()) { - debugger->myRom->invalidate(); + debugger->rom().invalidate(); commandResult << "rewind by one level"; } else @@ -1266,7 +1273,7 @@ void DebuggerParser::executeRom() // The RomWidget is a special case, since we don't want to re-disassemble // any more than necessary. So we only do it by calling the following // method ... - debugger->myRom->invalidate(); + debugger->rom().invalidate(); commandResult << "changed " << debugger->valueToString( args.size() - 1 ) << " location(s)"; @@ -1291,7 +1298,7 @@ void DebuggerParser::executeRow() CartDebug::ROW, args[0], args[1]); commandResult << (result ? "added" : "removed") << " ROW directive on range $" << hex << args[0] << " $" << hex << args[1]; - debugger->myRom->invalidate(); + debugger->rom().invalidate(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1299,7 +1306,7 @@ void DebuggerParser::executeRow() void DebuggerParser::executeRun() { debugger->saveOldState(); - debugger->quit(); + debugger->quit(false); commandResult << "_EXIT_DEBUGGER"; // See PromptWidget for more info } @@ -1420,7 +1427,7 @@ void DebuggerParser::executeSaverom() // "saveses" void DebuggerParser::executeSaveses() { - if(debugger->prompt()->saveBuffer(argStrings[0])) + if(debugger->prompt().saveBuffer(argStrings[0])) commandResult << "saved session to file " << argStrings[0]; else commandResult << red("I/O error"); @@ -1563,7 +1570,7 @@ void DebuggerParser::executeUndef() { if(debugger->cartDebug().removeLabel(argStrings[0])) { - debugger->myRom->invalidate(); + debugger->rom().invalidate(); commandResult << argStrings[0] + " now undefined"; } else @@ -1823,6 +1830,15 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = { &DebuggerParser::executeExec }, + { + "exitrom", + "Exit emulator, return to ROM launcher", + false, + false, + { kARG_END_ARGS }, + &DebuggerParser::executeExitRom + }, + { "frame", "Advance emulation by xx frames (default=1)", diff --git a/src/debugger/DebuggerParser.hxx b/src/debugger/DebuggerParser.hxx index 5d5a83554..e1678018a 100644 --- a/src/debugger/DebuggerParser.hxx +++ b/src/debugger/DebuggerParser.hxx @@ -83,7 +83,7 @@ class DebuggerParser private: enum { - kNumCommands = 69, + kNumCommands = 70, kMAX_ARG_TYPES = 10 }; @@ -157,6 +157,7 @@ class DebuggerParser void executeDisasm(); void executeDump(); void executeExec(); + void executeExitRom(); void executeFrame(); void executeFunction(); void executeGfx(); diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index 031290954..23cdb36fb 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -35,26 +35,19 @@ #include "TiaWidget.hxx" #include "DataGridOpsWidget.hxx" #include "EditTextWidget.hxx" +#include "MessageBox.hxx" #include "Rect.hxx" #include "Debugger.hxx" #include "DebuggerParser.hxx" #include "DebuggerDialog.hxx" -enum { - kDDStepCmd = 'DDst', - kDDTraceCmd = 'DDtr', - kDDAdvCmd = 'DDav', - kDDSAdvCmd = 'DDsv', - kDDRewindCmd = 'DDrw', - kDDExitCmd = 'DDex' -}; - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DebuggerDialog::DebuggerDialog(OSystem* osystem, DialogContainer* parent, int x, int y, int w, int h) : Dialog(osystem, parent, x, y, w, h, true), // use base surface - myTab(NULL) + myTab(NULL), + myFatalError(NULL) { addTiaArea(); addTabArea(); @@ -145,7 +138,11 @@ void DebuggerDialog::handleCommand(CommandSender* sender, int cmd, break; case kDDExitCmd: - doExit(); + doExitDebugger(); + break; + + case kDDExitFatalCmd: + doExitRom(); break; default: @@ -153,10 +150,23 @@ void DebuggerDialog::handleCommand(CommandSender* sender, int cmd, } } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void DebuggerDialog::showFatalMessage(const string& msg) +{ + const GUI::Rect& r = instance().debugger().getDialogBounds(); + + delete myFatalError; + myFatalError = + new MessageBox(this, instance().consoleFont(), msg, + r.width(), r.height(), kDDExitFatalCmd, + "Exit ROM", "Continue"); + myFatalError->show(); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DebuggerDialog::addTiaArea() { - GUI::Rect r = instance().debugger().getTiaBounds(); + const GUI::Rect& r = instance().debugger().getTiaBounds(); myTiaOutput = new TiaOutputWidget(this, instance().consoleFont(), r.left, r.top, r.width(), r.height()); @@ -165,7 +175,7 @@ void DebuggerDialog::addTiaArea() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DebuggerDialog::addTabArea() { - GUI::Rect r = instance().debugger().getTabBounds(); + const GUI::Rect& r = instance().debugger().getTabBounds(); const int vBorder = 4; @@ -214,7 +224,7 @@ void DebuggerDialog::addStatusArea() { const GUI::Font& font = instance().consoleFont(); const int lineHeight = font.getLineHeight(); - GUI::Rect r = instance().debugger().getStatusBounds(); + const GUI::Rect& r = instance().debugger().getStatusBounds(); int xpos, ypos; xpos = r.left; ypos = r.top; @@ -237,7 +247,7 @@ void DebuggerDialog::addStatusArea() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DebuggerDialog::addRomArea() { - GUI::Rect r = instance().debugger().getRomBounds(); + const GUI::Rect& r = instance().debugger().getRomBounds(); int xpos, ypos; xpos = r.left + 10; ypos = 10; @@ -320,7 +330,13 @@ void DebuggerDialog::doRewind() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void DebuggerDialog::doExit() +void DebuggerDialog::doExitDebugger() { instance().debugger().parser().run("run"); } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void DebuggerDialog::doExitRom() +{ + instance().debugger().parser().run("exitrom"); +} diff --git a/src/debugger/gui/DebuggerDialog.hxx b/src/debugger/gui/DebuggerDialog.hxx index 865b75b3d..60312dbbd 100644 --- a/src/debugger/gui/DebuggerDialog.hxx +++ b/src/debugger/gui/DebuggerDialog.hxx @@ -36,6 +36,7 @@ class EditTextWidget; class TiaInfoWidget; class TiaOutputWidget; class TiaZoomWidget; +class MessageBox; #include "Dialog.hxx" @@ -46,19 +47,31 @@ class DebuggerDialog : public Dialog int x, int y, int w, int h); ~DebuggerDialog(); - PromptWidget* prompt() { return myPrompt; } - TiaInfoWidget* tiaInfo() { return myTiaInfo; } - TiaOutputWidget* tiaOutput() { return myTiaOutput; } - TiaZoomWidget* tiaZoom() { return myTiaZoom; } - RomWidget* rom() { return myRom; } - EditTextWidget* message() { return myMessageBox; } - ButtonWidget* rewindButton() { return myRewindButton; } + PromptWidget& prompt() { return *myPrompt; } + TiaInfoWidget& tiaInfo() { return *myTiaInfo; } + TiaOutputWidget& tiaOutput() { return *myTiaOutput; } + TiaZoomWidget& tiaZoom() { return *myTiaZoom; } + RomWidget& rom() { return *myRom; } + EditTextWidget& message() { return *myMessageBox; } + ButtonWidget& rewindButton() { return *myRewindButton; } - virtual void loadConfig(); - virtual void handleKeyDown(int ascii, int keycode, int modifiers); - virtual void handleCommand(CommandSender* sender, int cmd, int data, int id); + void loadConfig(); + void handleKeyDown(int ascii, int keycode, int modifiers); + void handleCommand(CommandSender* sender, int cmd, int data, int id); + + void showFatalMessage(const string& msg); private: + enum { + kDDStepCmd = 'DDst', + kDDTraceCmd = 'DDtr', + kDDAdvCmd = 'DDav', + kDDSAdvCmd = 'DDsv', + kDDRewindCmd = 'DDrw', + kDDExitCmd = 'DDex', + kDDExitFatalCmd = 'DDer' + }; + TabWidget* myTab; PromptWidget* myPrompt; @@ -70,6 +83,7 @@ class DebuggerDialog : public Dialog RomWidget* myRom; EditTextWidget* myMessageBox; ButtonWidget* myRewindButton; + MessageBox* myFatalError; private: void addTiaArea(); @@ -82,7 +96,8 @@ class DebuggerDialog : public Dialog void doScanlineAdvance(); void doAdvance(); void doRewind(); - void doExit(); + void doExitDebugger(); + void doExitRom(); }; #endif diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index d456125da..23c4baad0 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -212,9 +212,10 @@ inline void CartridgeDPCPlus::callFunction(uInt8 value) catch(const string& error) { if(!mySystem->autodectMode()) { - cerr << error << endl; #ifdef DEBUGGER_SUPPORT Debugger::debugger().startWithFatalError(error); + #else + cout << error << endl; #endif } } diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index 578f40141..e2e46264f 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -1034,7 +1034,8 @@ void EventHandler::handleEvent(Event::Type event, int state) return; case Event::LauncherMode: - if((myState == S_EMULATE || myState == S_CMDMENU) && state) + if((myState == S_EMULATE || myState == S_CMDMENU || + myState == S_DEBUGGER) && state) { myOSystem->settings().saveConfig(); diff --git a/src/emucore/Thumbulator.cxx b/src/emucore/Thumbulator.cxx index 3334e5e39..3d1490d53 100644 --- a/src/emucore/Thumbulator.cxx +++ b/src/emucore/Thumbulator.cxx @@ -72,7 +72,8 @@ string Thumbulator::run( void ) throw(const string&) inline int Thumbulator::fatalError(const char* opcode, uInt32 v1, const char* msg) throw(const string&) { - statusMsg << opcode << "(" << HEX8 << v1 << "), " << msg << endl; + statusMsg << "Thumb ARM emulation fatal error: " << endl + << opcode << "(" << HEX8 << v1 << "), " << msg << endl; dump_regs(); throw statusMsg.str(); } @@ -82,7 +83,8 @@ inline int Thumbulator::fatalError(const char* opcode, uInt32 v1, uInt32 v2, const char* msg) throw(const string&) { - statusMsg << opcode << "(" << HEX8 << v1 << "," << v2 << "), " << msg << endl; + statusMsg << "Thumb ARM emulation fatal error: " << endl + << opcode << "(" << HEX8 << v1 << "," << v2 << "), " << msg << endl; dump_regs(); throw statusMsg.str(); } diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index f6f4b8ace..0db90b757 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -584,7 +584,10 @@ Widget* Dialog::findWidget(int x, int y) void Dialog::addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font, const string& okText, const string& cancelText) { - int buttonWidth = font.getStringWidth("Cancel") + 15; + + int buttonWidth = BSPF_max(font.getStringWidth("Cancel"), + BSPF_max(font.getStringWidth(okText), + font.getStringWidth(okText))) + 15; int buttonHeight = font.getLineHeight() + 4; ButtonWidget* b; #ifndef MAC_OSX diff --git a/src/gui/MessageBox.cxx b/src/gui/MessageBox.cxx index e4482c084..a371b373c 100644 --- a/src/gui/MessageBox.cxx +++ b/src/gui/MessageBox.cxx @@ -21,28 +21,60 @@ #include "OSystem.hxx" #include "Version.hxx" #include "Widget.hxx" +#include "StringParser.hxx" #include "MessageBox.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font, - const StringList& text, int max_w, int max_h, int cmd) - : Dialog(&boss->instance(), &boss->parent(), 0, 0, 16, 16), + const StringList& text, int max_w, int max_h, int cmd, + const string& okText, const string& cancelText) + : Dialog(&boss->instance(), &boss->parent(), 0, 0, max_w, max_h), CommandSender(boss), myCmd(cmd) +{ + addText(font, text); + + WidgetArray wid; + addOKCancelBGroup(wid, font, okText, cancelText); + addToFocusList(wid); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font, + const string& text, int max_w, int max_h, int cmd, + const string& okText, const string& cancelText) + : Dialog(&boss->instance(), &boss->parent(), 0, 0, max_w, max_h), + CommandSender(boss), + myCmd(cmd) +{ + StringParser p(text); + addText(font, p.stringList()); + + WidgetArray wid; + addOKCancelBGroup(wid, font, okText, cancelText); + addToFocusList(wid); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +MessageBox::~MessageBox() +{ +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void MessageBox::addText(const GUI::Font& font, const StringList& text) { const int lineHeight = font.getLineHeight(), fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(); int xpos, ypos; - WidgetArray wid; // Set real dimensions int str_w = 0; for(uInt32 i = 0; i < text.size(); ++i) str_w = BSPF_max((int)text[i].length(), str_w); - _w = BSPF_min(str_w * fontWidth + 20, max_w); - _h = BSPF_min(((text.size() + 2) * lineHeight + 20), (uInt32)max_h); + _w = BSPF_min(str_w * fontWidth + 20, _w); + _h = BSPF_min(((text.size() + 2) * lineHeight + 20), (uInt32)_h); xpos = 10; ypos = 10; for(uInt32 i = 0; i < text.size(); ++i) @@ -51,15 +83,6 @@ MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font, fontHeight, text[i], kTextAlignLeft); ypos += fontHeight; } - - addOKCancelBGroup(wid, font); - - addToFocusList(wid); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MessageBox::~MessageBox() -{ } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/MessageBox.hxx b/src/gui/MessageBox.hxx index e3ab60dcd..2a05713f5 100644 --- a/src/gui/MessageBox.hxx +++ b/src/gui/MessageBox.hxx @@ -36,14 +36,19 @@ class MessageBox : public Dialog, public CommandSender { public: MessageBox(GuiObject* boss, const GUI::Font& font, const StringList& text, - int max_w, int max_h, int cmd = 0); + int max_w, int max_h, int cmd = 0, + const string& okText = "", const string& cancelText = ""); + MessageBox(GuiObject* boss, const GUI::Font& font, const string& text, + int max_w, int max_h, int cmd = 0, + const string& okText = "", const string& cancelText = ""); virtual ~MessageBox(); /** Place the input dialog onscreen and center it */ void show() { parent().addDialog(this); } private: - virtual void handleCommand(CommandSender* sender, int cmd, int data, int id); + void addText(const GUI::Font& font, const StringList& text); + void handleCommand(CommandSender* sender, int cmd, int data, int id); private: int myCmd; diff --git a/src/macosx/stella.xcodeproj/project.pbxproj b/src/macosx/stella.xcodeproj/project.pbxproj index 1a11608fc..03a7ad310 100644 --- a/src/macosx/stella.xcodeproj/project.pbxproj +++ b/src/macosx/stella.xcodeproj/project.pbxproj @@ -69,7 +69,6 @@ 2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC7084578BF00812C11 /* PopUpWidget.hxx */; }; 2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */; }; 2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */; }; - 2D91741509BA90380026E9FF /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACF084578BF00812C11 /* StringList.hxx */; }; 2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD1084578BF00812C11 /* TabWidget.hxx */; }; 2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD3084578BF00812C11 /* VideoDialog.hxx */; }; 2D91741809BA90380026E9FF /* Widget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD5084578BF00812C11 /* Widget.hxx */; }; @@ -251,6 +250,8 @@ DC17E80C1361FDB500397A9E /* pngstruct.h in Headers */ = {isa = PBXBuildFile; fileRef = DC17E8081361FDB500397A9E /* pngstruct.h */; }; DC1FC18A0DB3B2C7009B3DF7 /* SerialPortMACOSX.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC1FC1880DB3B2C7009B3DF7 /* SerialPortMACOSX.cxx */; }; DC1FC18B0DB3B2C7009B3DF7 /* SerialPortMACOSX.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC1FC1890DB3B2C7009B3DF7 /* SerialPortMACOSX.hxx */; }; + DC20D6F3138EB130002A7428 /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC20D6F1138EB130002A7428 /* StringList.hxx */; }; + DC20D6F4138EB130002A7428 /* StringParser.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC20D6F2138EB130002A7428 /* StringParser.hxx */; }; DC3FE47C11C7D35600C91C72 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = DC3FE46A11C7D35600C91C72 /* png.c */; }; DC3FE47D11C7D35600C91C72 /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = DC3FE46B11C7D35600C91C72 /* png.h */; }; DC3FE47E11C7D35600C91C72 /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = DC3FE46C11C7D35600C91C72 /* pngconf.h */; }; @@ -336,7 +337,6 @@ DCE9CC2B1103812700C86671 /* CartDebug.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE9CC271103812700C86671 /* CartDebug.hxx */; }; DCE9CC2C1103812700C86671 /* DiStella.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCE9CC281103812700C86671 /* DiStella.cxx */; }; DCE9CC2D1103812700C86671 /* DiStella.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE9CC291103812700C86671 /* DiStella.hxx */; }; - DCECDAFA10B9DBDC00AF4E1B /* Device.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCECDAF210B9DBDC00AF4E1B /* Device.cxx */; }; DCECDAFB10B9DBDC00AF4E1B /* Device.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCECDAF310B9DBDC00AF4E1B /* Device.hxx */; }; DCECDAFC10B9DBDC00AF4E1B /* M6502.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCECDAF410B9DBDC00AF4E1B /* M6502.cxx */; }; DCECDAFD10B9DBDC00AF4E1B /* M6502.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCECDAF510B9DBDC00AF4E1B /* M6502.hxx */; }; @@ -547,7 +547,6 @@ 2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ProgressDialog.hxx; path = ../gui/ProgressDialog.hxx; sourceTree = SOURCE_ROOT; }; 2DDBEACA084578BF00812C11 /* ScrollBarWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollBarWidget.cxx; path = ../gui/ScrollBarWidget.cxx; sourceTree = SOURCE_ROOT; }; 2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ScrollBarWidget.hxx; path = ../gui/ScrollBarWidget.hxx; sourceTree = SOURCE_ROOT; }; - 2DDBEACF084578BF00812C11 /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../gui/StringList.hxx; sourceTree = SOURCE_ROOT; }; 2DDBEAD0084578BF00812C11 /* TabWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TabWidget.cxx; path = ../gui/TabWidget.cxx; sourceTree = SOURCE_ROOT; }; 2DDBEAD1084578BF00812C11 /* TabWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = TabWidget.hxx; path = ../gui/TabWidget.hxx; sourceTree = SOURCE_ROOT; }; 2DDBEAD2084578BF00812C11 /* VideoDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDialog.cxx; path = ../gui/VideoDialog.cxx; sourceTree = SOURCE_ROOT; }; @@ -658,6 +657,8 @@ DC17E8081361FDB500397A9E /* pngstruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pngstruct.h; path = ../libpng/pngstruct.h; sourceTree = SOURCE_ROOT; }; DC1FC1880DB3B2C7009B3DF7 /* SerialPortMACOSX.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SerialPortMACOSX.cxx; sourceTree = ""; }; DC1FC1890DB3B2C7009B3DF7 /* SerialPortMACOSX.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = SerialPortMACOSX.hxx; sourceTree = ""; }; + DC20D6F1138EB130002A7428 /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../common/StringList.hxx; sourceTree = SOURCE_ROOT; }; + DC20D6F2138EB130002A7428 /* StringParser.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringParser.hxx; path = ../common/StringParser.hxx; sourceTree = SOURCE_ROOT; }; DC3FE46A11C7D35600C91C72 /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../libpng/png.c; sourceTree = SOURCE_ROOT; }; DC3FE46B11C7D35600C91C72 /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = png.h; path = ../libpng/png.h; sourceTree = SOURCE_ROOT; }; DC3FE46C11C7D35600C91C72 /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = ../libpng/pngconf.h; sourceTree = SOURCE_ROOT; }; @@ -744,7 +745,6 @@ DCE9CC271103812700C86671 /* CartDebug.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CartDebug.hxx; path = ../debugger/CartDebug.hxx; sourceTree = SOURCE_ROOT; }; DCE9CC281103812700C86671 /* DiStella.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiStella.cxx; path = ../debugger/DiStella.cxx; sourceTree = SOURCE_ROOT; }; DCE9CC291103812700C86671 /* DiStella.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DiStella.hxx; path = ../debugger/DiStella.hxx; sourceTree = SOURCE_ROOT; }; - DCECDAF210B9DBDC00AF4E1B /* Device.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Device.cxx; path = ../emucore/Device.cxx; sourceTree = SOURCE_ROOT; }; DCECDAF310B9DBDC00AF4E1B /* Device.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Device.hxx; path = ../emucore/Device.hxx; sourceTree = SOURCE_ROOT; }; DCECDAF410B9DBDC00AF4E1B /* M6502.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = M6502.cxx; path = ../emucore/M6502.cxx; sourceTree = SOURCE_ROOT; }; DCECDAF510B9DBDC00AF4E1B /* M6502.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = M6502.hxx; path = ../emucore/M6502.hxx; sourceTree = SOURCE_ROOT; }; @@ -946,6 +946,8 @@ 2DDA34020665817D00CDD299 /* SoundSDL.cxx */, 2DDA34030665817D00CDD299 /* SoundSDL.hxx */, DC5D1AA6102C6FC900E59AC1 /* Stack.hxx */, + DC20D6F1138EB130002A7428 /* StringList.hxx */, + DC20D6F2138EB130002A7428 /* StringParser.hxx */, DCF467BC0F9399F500B25D7A /* Version.hxx */, ); name = common; @@ -1041,7 +1043,6 @@ 2DE2DF3A0627AE07006BEC99 /* Control.cxx */, 2DE2DF3B0627AE07006BEC99 /* Control.hxx */, DC932D3F0F278A5200FEFEFC /* DefProps.hxx */, - DCECDAF210B9DBDC00AF4E1B /* Device.cxx */, DCECDAF310B9DBDC00AF4E1B /* Device.hxx */, 2DE2DF3E0627AE07006BEC99 /* Driving.cxx */, 2DE2DF3F0627AE07006BEC99 /* Driving.hxx */, @@ -1189,7 +1190,6 @@ DC5D2C4F0F117CFD004D1660 /* StellaFont.hxx */, DC5D2C500F117CFD004D1660 /* StellaLargeFont.hxx */, DC5D2C510F117CFD004D1660 /* StellaMediumFont.hxx */, - 2DDBEACF084578BF00812C11 /* StringList.hxx */, 2DEF21FA08BC033500B246B4 /* StringListWidget.cxx */, 2DEF21FB08BC033500B246B4 /* StringListWidget.hxx */, 2DDBEAD0084578BF00812C11 /* TabWidget.cxx */, @@ -1358,7 +1358,6 @@ 2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */, 2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */, 2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */, - 2D91741509BA90380026E9FF /* StringList.hxx in Headers */, 2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */, 2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */, 2D91741809BA90380026E9FF /* Widget.hxx in Headers */, @@ -1475,6 +1474,8 @@ DC17E80A1361FDB500397A9E /* pnginfo.h in Headers */, DC17E80B1361FDB500397A9E /* pnglibconf.h in Headers */, DC17E80C1361FDB500397A9E /* pngstruct.h in Headers */, + DC20D6F3138EB130002A7428 /* StringList.hxx in Headers */, + DC20D6F4138EB130002A7428 /* StringParser.hxx in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1705,7 +1706,6 @@ DCF467C40F939A1400B25D7A /* CartEFSC.cxx in Sources */, DCF7B0DD10A762FC007A2870 /* CartF0.cxx in Sources */, DCF7B0DF10A762FC007A2870 /* CartFA.cxx in Sources */, - DCECDAFA10B9DBDC00AF4E1B /* Device.cxx in Sources */, DCECDAFC10B9DBDC00AF4E1B /* M6502.cxx in Sources */, DCECDAFE10B9DBDC00AF4E1B /* NullDev.cxx in Sources */, DCECDB0010B9DBDC00AF4E1B /* System.cxx in Sources */, diff --git a/src/macosx/stella_intel.xcodeproj/project.pbxproj b/src/macosx/stella_intel.xcodeproj/project.pbxproj index cd4b55a08..fce9f9515 100644 --- a/src/macosx/stella_intel.xcodeproj/project.pbxproj +++ b/src/macosx/stella_intel.xcodeproj/project.pbxproj @@ -69,7 +69,6 @@ 2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC7084578BF00812C11 /* PopUpWidget.hxx */; }; 2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */; }; 2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */; }; - 2D91741509BA90380026E9FF /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACF084578BF00812C11 /* StringList.hxx */; }; 2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD1084578BF00812C11 /* TabWidget.hxx */; }; 2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD3084578BF00812C11 /* VideoDialog.hxx */; }; 2D91741809BA90380026E9FF /* Widget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD5084578BF00812C11 /* Widget.hxx */; }; @@ -280,6 +279,8 @@ DC6B2BA511037FF200F199A7 /* CartDebug.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA111037FF200F199A7 /* CartDebug.hxx */; }; DC6B2BA611037FF200F199A7 /* DiStella.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC6B2BA211037FF200F199A7 /* DiStella.cxx */; }; DC6B2BA711037FF200F199A7 /* DiStella.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA311037FF200F199A7 /* DiStella.hxx */; }; + DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D69F138D4D7E00F05C5C /* StringList.hxx */; }; + DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */; }; DC8078DB0B4BD5F3005E9305 /* DebuggerExpressions.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */; }; DC8078E80B4BD697005E9305 /* FileSnapDialog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC8078E40B4BD697005E9305 /* FileSnapDialog.cxx */; }; DC8078E90B4BD697005E9305 /* FileSnapDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC8078E50B4BD697005E9305 /* FileSnapDialog.hxx */; }; @@ -543,7 +544,6 @@ 2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ProgressDialog.hxx; path = ../gui/ProgressDialog.hxx; sourceTree = SOURCE_ROOT; }; 2DDBEACA084578BF00812C11 /* ScrollBarWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollBarWidget.cxx; path = ../gui/ScrollBarWidget.cxx; sourceTree = SOURCE_ROOT; }; 2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ScrollBarWidget.hxx; path = ../gui/ScrollBarWidget.hxx; sourceTree = SOURCE_ROOT; }; - 2DDBEACF084578BF00812C11 /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../gui/StringList.hxx; sourceTree = SOURCE_ROOT; }; 2DDBEAD0084578BF00812C11 /* TabWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TabWidget.cxx; path = ../gui/TabWidget.cxx; sourceTree = SOURCE_ROOT; }; 2DDBEAD1084578BF00812C11 /* TabWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = TabWidget.hxx; path = ../gui/TabWidget.hxx; sourceTree = SOURCE_ROOT; }; 2DDBEAD2084578BF00812C11 /* VideoDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDialog.cxx; path = ../gui/VideoDialog.cxx; sourceTree = SOURCE_ROOT; }; @@ -684,6 +684,8 @@ DC6B2BA111037FF200F199A7 /* CartDebug.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CartDebug.hxx; path = ../debugger/CartDebug.hxx; sourceTree = SOURCE_ROOT; }; DC6B2BA211037FF200F199A7 /* DiStella.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiStella.cxx; path = ../debugger/DiStella.cxx; sourceTree = SOURCE_ROOT; }; DC6B2BA311037FF200F199A7 /* DiStella.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DiStella.hxx; path = ../debugger/DiStella.hxx; sourceTree = SOURCE_ROOT; }; + DC74D69F138D4D7E00F05C5C /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../common/StringList.hxx; sourceTree = SOURCE_ROOT; }; + DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringParser.hxx; path = ../common/StringParser.hxx; sourceTree = SOURCE_ROOT; }; DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = DebuggerExpressions.hxx; path = ../debugger/DebuggerExpressions.hxx; sourceTree = SOURCE_ROOT; }; DC8078E40B4BD697005E9305 /* FileSnapDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = FileSnapDialog.cxx; path = ../gui/FileSnapDialog.cxx; sourceTree = SOURCE_ROOT; }; DC8078E50B4BD697005E9305 /* FileSnapDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = FileSnapDialog.hxx; path = ../gui/FileSnapDialog.hxx; sourceTree = SOURCE_ROOT; }; @@ -941,6 +943,8 @@ 2DDA34020665817D00CDD299 /* SoundSDL.cxx */, 2DDA34030665817D00CDD299 /* SoundSDL.hxx */, DC5D1AA6102C6FC900E59AC1 /* Stack.hxx */, + DC74D69F138D4D7E00F05C5C /* StringList.hxx */, + DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */, DCF467BC0F9399F500B25D7A /* Version.hxx */, ); name = common; @@ -1183,7 +1187,6 @@ DC5D2C4F0F117CFD004D1660 /* StellaFont.hxx */, DC5D2C500F117CFD004D1660 /* StellaLargeFont.hxx */, DC5D2C510F117CFD004D1660 /* StellaMediumFont.hxx */, - 2DDBEACF084578BF00812C11 /* StringList.hxx */, 2DEF21FA08BC033500B246B4 /* StringListWidget.cxx */, 2DEF21FB08BC033500B246B4 /* StringListWidget.hxx */, 2DDBEAD0084578BF00812C11 /* TabWidget.cxx */, @@ -1352,7 +1355,6 @@ 2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */, 2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */, 2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */, - 2D91741509BA90380026E9FF /* StringList.hxx in Headers */, 2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */, 2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */, 2D91741809BA90380026E9FF /* Widget.hxx in Headers */, @@ -1469,6 +1471,8 @@ DC69670C1361FD0A0036499D /* pnginfo.h in Headers */, DC69670D1361FD0A0036499D /* pnglibconf.h in Headers */, DC69670E1361FD0A0036499D /* pngstruct.h in Headers */, + DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */, + DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */, ); runOnlyForDeploymentPostprocessing = 0; };