From 738a9d1d2f7a9fd0a0122c8cb9b9da3cfc547113 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 6 Apr 2018 20:56:04 +0200 Subject: [PATCH 1/6] replaces controller names with mapping names TODO: handle new values --- src/gui/GameInfoDialog.cxx | 42 ++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 3c736f571..a3241432f 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -176,32 +176,38 @@ GameInfoDialog::GameInfoDialog( tabID = myTab->addTab("Controller"); ypos = vBorder; - pwidth = font.getStringWidth("Paddles_IAxis"); + pwidth = font.getStringWidth("BoosterGrip A"); myP0Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P0 controller "); ctrls.clear(); - VarList::push_back(ctrls, "Joystick", "JOYSTICK" ); - VarList::push_back(ctrls, "Paddles", "PADDLES" ); - VarList::push_back(ctrls, "Paddles_IAxis", "PADDLES_IAXIS"); - VarList::push_back(ctrls, "Paddles_IDir", "PADDLES_IDIR" ); - VarList::push_back(ctrls, "Paddles_IAxDr", "PADDLES_IAXDR"); - VarList::push_back(ctrls, "BoosterGrip", "BOOSTERGRIP" ); - VarList::push_back(ctrls, "Driving", "DRIVING" ); - VarList::push_back(ctrls, "Keyboard", "KEYBOARD" ); - VarList::push_back(ctrls, "AmigaMouse", "AMIGAMOUSE" ); - VarList::push_back(ctrls, "AtariMouse", "ATARIMOUSE" ); - VarList::push_back(ctrls, "Trakball", "TRAKBALL" ); - VarList::push_back(ctrls, "AtariVox", "ATARIVOX" ); - VarList::push_back(ctrls, "SaveKey", "SAVEKEY" ); - VarList::push_back(ctrls, "Sega Genesis", "GENESIS" ); -// VarList::push_back(ctrls, "KidVid", "KIDVID" ); - VarList::push_back(ctrls, "MindLink", "MINDLINK" ); + VarList::push_back(ctrls, "Joystick A", "JOYSTICK_A"); + VarList::push_back(ctrls, "Joystick B", "JOYSTICK_B"); + VarList::push_back(ctrls, "Paddles A", "PADDLES_A"); + VarList::push_back(ctrls, "Paddles B", "PADDLES_B"); + //VarList::push_back(ctrls, "Paddles_IAxis", "PADDLES_IAXIS"); + //VarList::push_back(ctrls, "Paddles_IDir", "PADDLES_IDIR"); + //VarList::push_back(ctrls, "Paddles_IAxDr", "PADDLES_IAXDR"); + VarList::push_back(ctrls, "BoosterGrip A", "BOOSTERGRIP_A"); + VarList::push_back(ctrls, "BoosterGrip B", "BOOSTERGRIP_B"); + VarList::push_back(ctrls, "Driving A", "DRIVING_A"); + VarList::push_back(ctrls, "Driving B", "DRIVING_B"); + VarList::push_back(ctrls, "Keyboard A", "KEYBOARD_A"); + VarList::push_back(ctrls, "Keyboard B", "KEYBOARD_B"); + VarList::push_back(ctrls, "AmigaMouse", "AMIGAMOUSE"); + VarList::push_back(ctrls, "AtariMouse", "ATARIMOUSE"); + VarList::push_back(ctrls, "TrakBall", "TRAKBALL"); + VarList::push_back(ctrls, "AtariVox", "ATARIVOX"); + VarList::push_back(ctrls, "SaveKey", "SAVEKEY"); + VarList::push_back(ctrls, "Sega Genesis A", "GENESIS_A"); + VarList::push_back(ctrls, "Sega Genesis B", "GENESIS_B"); + // VarList::push_back(ctrls, "KidVid", "KIDVID" ); + VarList::push_back(ctrls, "MindLink", "MINDLINK"); myP0Controller = new PopUpWidget(myTab, font, myP0Label->getRight(), myP0Label->getTop()-1, pwidth, lineHeight, ctrls, "", 0, kLeftCChanged); wid.push_back(myP0Controller); ypos += lineHeight + VGAP; - pwidth = font.getStringWidth("Paddles_IAxis"); + pwidth = font.getStringWidth("BoosterGrip A"); myP1Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P1 controller "); myP1Controller = new PopUpWidget(myTab, font, myP1Label->getRight(), myP1Label->getTop()-1, pwidth, lineHeight, ctrls, "", 0, kRightCChanged); From 62464498358873fe496a7ca746bb9933dcfbf170 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 7 Apr 2018 08:51:59 +0200 Subject: [PATCH 2/6] reordered and renamed some controller mappings --- src/gui/GameInfoDialog.cxx | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index a3241432f..c4bc2cfce 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -176,7 +176,7 @@ GameInfoDialog::GameInfoDialog( tabID = myTab->addTab("Controller"); ypos = vBorder; - pwidth = font.getStringWidth("BoosterGrip A"); + pwidth = font.getStringWidth("Booster-Grip A"); myP0Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P0 controller "); ctrls.clear(); VarList::push_back(ctrls, "Joystick A", "JOYSTICK_A"); @@ -186,28 +186,28 @@ GameInfoDialog::GameInfoDialog( //VarList::push_back(ctrls, "Paddles_IAxis", "PADDLES_IAXIS"); //VarList::push_back(ctrls, "Paddles_IDir", "PADDLES_IDIR"); //VarList::push_back(ctrls, "Paddles_IAxDr", "PADDLES_IAXDR"); - VarList::push_back(ctrls, "BoosterGrip A", "BOOSTERGRIP_A"); - VarList::push_back(ctrls, "BoosterGrip B", "BOOSTERGRIP_B"); VarList::push_back(ctrls, "Driving A", "DRIVING_A"); VarList::push_back(ctrls, "Driving B", "DRIVING_B"); VarList::push_back(ctrls, "Keyboard A", "KEYBOARD_A"); VarList::push_back(ctrls, "Keyboard B", "KEYBOARD_B"); - VarList::push_back(ctrls, "AmigaMouse", "AMIGAMOUSE"); - VarList::push_back(ctrls, "AtariMouse", "ATARIMOUSE"); - VarList::push_back(ctrls, "TrakBall", "TRAKBALL"); - VarList::push_back(ctrls, "AtariVox", "ATARIVOX"); - VarList::push_back(ctrls, "SaveKey", "SAVEKEY"); - VarList::push_back(ctrls, "Sega Genesis A", "GENESIS_A"); - VarList::push_back(ctrls, "Sega Genesis B", "GENESIS_B"); // VarList::push_back(ctrls, "KidVid", "KIDVID" ); VarList::push_back(ctrls, "MindLink", "MINDLINK"); + VarList::push_back(ctrls, "Booster-Grip A", "BOOSTERGRIP_A"); + VarList::push_back(ctrls, "Booster-Grip B", "BOOSTERGRIP_B"); + VarList::push_back(ctrls, "Sega Genesis A", "GENESIS_A"); + VarList::push_back(ctrls, "Sega Genesis B", "GENESIS_B"); + VarList::push_back(ctrls, "Trak-Ball", "TRAKBALL"); + VarList::push_back(ctrls, "Atari Mouse", "ATARIMOUSE"); + VarList::push_back(ctrls, "Amiga Mouse", "AMIGAMOUSE"); + VarList::push_back(ctrls, "AtariVox", "ATARIVOX"); + VarList::push_back(ctrls, "SaveKey", "SAVEKEY"); myP0Controller = new PopUpWidget(myTab, font, myP0Label->getRight(), myP0Label->getTop()-1, pwidth, lineHeight, ctrls, "", 0, kLeftCChanged); wid.push_back(myP0Controller); ypos += lineHeight + VGAP; - pwidth = font.getStringWidth("BoosterGrip A"); + pwidth = font.getStringWidth("Booster-Grip A"); myP1Label = new StaticTextWidget(myTab, font, hSpace, ypos+1, "P1 controller "); myP1Controller = new PopUpWidget(myTab, font, myP1Label->getRight(), myP1Label->getTop()-1, pwidth, lineHeight, ctrls, "", 0, kRightCChanged); From 980fd5c025dbace0013f0c71942b6ca09c7bbf1f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 7 Apr 2018 23:06:12 +0200 Subject: [PATCH 3/6] very preliminary InputDialog changes --- src/gui/EventMappingWidget.cxx | 12 +++- src/gui/EventMappingWidget.hxx | 2 + src/gui/InputDialog.cxx | 119 ++++++++++++++++++++++++++++++--- src/gui/InputDialog.hxx | 5 ++ 4 files changed, 125 insertions(+), 13 deletions(-) diff --git a/src/gui/EventMappingWidget.cxx b/src/gui/EventMappingWidget.cxx index 67cfefec1..0631d3da1 100644 --- a/src/gui/EventMappingWidget.cxx +++ b/src/gui/EventMappingWidget.cxx @@ -52,7 +52,8 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font, buttonHeight = font.getLineHeight() + 4; const int HBORDER = 8; const int VBORDER = 8; - int xpos = HBORDER, ypos = VBORDER; + //int xpos = HBORDER, ypos = VBORDER; + int xpos = x, ypos = y; myActionsList = new StringListWidget(boss, font, xpos, ypos, _w - buttonWidth - HBORDER * 2 - 8, _h - 3*lineHeight - VBORDER); @@ -107,7 +108,8 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font, myComboButton = nullptr; // Show message for currently selected event - xpos = HBORDER; ypos = VBORDER + myActionsList->getHeight() + 8; + //xpos = HBORDER; ypos = VBORDER + myActionsList->getHeight() + 8; + xpos = x; ypos = y + myActionsList->getHeight() + 8; StaticTextWidget* t; t = new StaticTextWidget(boss, font, xpos, ypos+2, font.getStringWidth("Action"), fontHeight, "Action", TextAlign::Left); @@ -118,6 +120,12 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font, myKeyMapping->clearFlags(WIDGET_RETAIN_FOCUS); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void EventMappingWidget::setActionList(const StringList& actions) +{ + myActionsList->setList(actions); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EventMappingWidget::loadConfig() { diff --git a/src/gui/EventMappingWidget.hxx b/src/gui/EventMappingWidget.hxx index 7ab299bf2..999def081 100644 --- a/src/gui/EventMappingWidget.hxx +++ b/src/gui/EventMappingWidget.hxx @@ -48,6 +48,8 @@ class EventMappingWidget : public Widget, public CommandSender void setDefaults(); + void setActionList(const StringList& actions); + private: enum { kStartMapCmd = 'map ', diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index f6cd9599b..ed0afcfaa 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -46,7 +46,8 @@ InputDialog::InputDialog(OSystem& osystem, DialogContainer& parent, const int lineHeight = font.getLineHeight(), fontWidth = font.getMaxCharWidth(), buttonHeight = font.getLineHeight() + 4; - const int vBorder = 4; + const int HBORDER = 10; + const int VBORDER = 8; int xpos, ypos, tabID; StringList actions; @@ -55,24 +56,17 @@ InputDialog::InputDialog(OSystem& osystem, DialogContainer& parent, _h = std::min(16 * (lineHeight + 4) + 16 + _th, max_h); // The tab widget - xpos = 2; ypos = vBorder + _th; + xpos = 2; ypos = VBORDER + _th; myTab = new TabWidget(this, font, xpos, ypos, _w - 2*xpos, _h -_th - buttonHeight - 20); addTabWidget(myTab); // 1) Event mapper for emulation actions - tabID = myTab->addTab("Emul. Events"); - actions = instance().eventHandler().getActionList(kEmulationMode); - myEmulEventMapper = new EventMappingWidget(myTab, font, 2, 2, - myTab->getWidth(), - myTab->getHeight() - 4, - actions, kEmulationMode); - myTab->setParentWidget(tabID, myEmulEventMapper); - addToFocusList(myEmulEventMapper->getFocusList(), myTab, tabID); + addEmulMappingTab(font); // 2) Event mapper for UI actions tabID = myTab->addTab("UI Events"); actions = instance().eventHandler().getActionList(kMenuMode); - myMenuEventMapper = new EventMappingWidget(myTab, font, 2, 2, + myMenuEventMapper = new EventMappingWidget(myTab, font, HBORDER, VBORDER, myTab->getWidth(), myTab->getHeight() - 4, actions, kMenuMode); @@ -97,6 +91,60 @@ InputDialog::~InputDialog() { } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void InputDialog::addEmulMappingTab(const GUI::Font& font) +{ + const int lineHeight = font.getLineHeight(), + fontWidth = font.getMaxCharWidth(), + fontHeight = font.getFontHeight(); + int xpos, ypos, lwidth, pwidth, tabID; + WidgetArray wid; + VariantList items; + StringList actions; + const int VGAP = 4; + const int VBORDER = 10; + const int HBORDER = 8; + + tabID = myTab->addTab("Emul. Events"); + + xpos = HBORDER; + ypos = VBORDER; + + //StaticTextWidget* t = new StaticTextWidget(myTab, font, xpos, ypos + 1, 24, lineHeight, ""); + + pwidth = font.getStringWidth("Booster-Grip A"); + items.clear(); + VarList::push_back(items, "Joystick A", "JOYSTICK_A"); + VarList::push_back(items, "Joystick B", "JOYSTICK_B"); + VarList::push_back(items, "Paddles A", "PADDLES_A"); + VarList::push_back(items, "Paddles B", "PADDLES_B"); + VarList::push_back(items, "Driving A", "DRIVING_A"); + VarList::push_back(items, "Driving B", "DRIVING_B"); + VarList::push_back(items, "Keyboard A", "KEYBOARD_A"); + VarList::push_back(items, "Keyboard B", "KEYBOARD_B"); + VarList::push_back(items, "Booster-Grip A", "BOOSTERGRIP_A"); + VarList::push_back(items, "Booster-Grip B", "BOOSTERGRIP_B"); + VarList::push_back(items, "Sega Genesis A", "GENESIS_A"); + VarList::push_back(items, "Sega Genesis B", "GENESIS_B"); + + myMapping = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight, items, + "Mapping ", 0, kMappingChanged); + wid.push_back(myMapping); + ypos += lineHeight + VGAP; + + actions = instance().eventHandler().getActionList(kEmulationMode); + myEmulEventMapper = new EventMappingWidget(myTab, font, xpos, ypos, + myTab->getWidth(), + myTab->getHeight() - 2 - ypos, + actions, kEmulationMode); + + wid.push_back(myEmulEventMapper); + + // Add items for virtual device ports + addToFocusList(wid, myTab, tabID); +} + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void InputDialog::addDevicePortTab(const GUI::Font& font) { @@ -295,6 +343,9 @@ void InputDialog::loadConfig() // Enable/disable control key-combos myCtrlCombo->setState(instance().settings().getBool("ctrlcombo")); + myMapping->setSelectedIndex(0); + mappingChanged(); + myTab->loadConfig(); } @@ -492,6 +543,10 @@ void InputDialog::handleCommand(CommandSender* sender, int cmd, setDefaults(); break; + case kMappingChanged: + mappingChanged(); + break; + case kDeadzoneChanged: myDeadzoneLabel->setValue(3200 + 1000*myDeadzone->getValue()); break; @@ -545,3 +600,45 @@ void InputDialog::handleCommand(CommandSender* sender, int cmd, Dialog::handleCommand(sender, cmd, data, 0); } } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void InputDialog::mappingChanged() +{ + const string& mapping = myMapping->getSelectedTag().toString(); + + if(mapping == "JOYSTICK_A" || mapping == "JOYSTICK_B") + { + StringList actions = { "Left", "Right", "Up", "Down", "Fire" }; + myEmulEventMapper->setActionList(actions); + } + + if(mapping == "BOOSTERGRIP_A" || mapping == "BOOSTERGRIP_B") + { + StringList actions = { "Left", "Right", "Up", "Down", "Fire", "Top Trigger", "Handle Grip" }; + myEmulEventMapper->setActionList(actions); + } + + if(mapping == "GENESIS_A" || mapping == "GENESIS_B") + { + StringList actions = { "Left", "Right", "Up", "Down", "Fire", "Fire 2" }; + myEmulEventMapper->setActionList(actions); + } + + if(mapping == "PADDLES_A" || mapping == "PADDLES_B") + { + StringList actions = { "Clockwise", "Counter-Clockwise", "Fire" }; + myEmulEventMapper->setActionList(actions); + } + + if(mapping == "DRIVING_A" || mapping == "DRIVING_B") + { + StringList actions = { "Clockwise", "Counter-Clockwise", "Fire" }; + myEmulEventMapper->setActionList(actions); + } + + if(mapping == "KEYBOARD_A" || mapping == "KEYBOARD_B") + { + StringList actions = { "1", "2", "3", "4", "5", "6", "7", "8", "9" , "*" , "0" , "#" }; + myEmulEventMapper->setActionList(actions); + } +} \ No newline at end of file diff --git a/src/gui/InputDialog.hxx b/src/gui/InputDialog.hxx index 44ea8c6c9..8b993ef0c 100644 --- a/src/gui/InputDialog.hxx +++ b/src/gui/InputDialog.hxx @@ -53,12 +53,16 @@ class InputDialog : public Dialog void saveConfig() override; void setDefaults() override; + void addEmulMappingTab(const GUI::Font& font); void addDevicePortTab(const GUI::Font& font); + void mappingChanged(); + void eraseEEPROM(); private: enum { + kMappingChanged = 'MPch', kDeadzoneChanged = 'DZch', kDPSpeedChanged = 'PDch', kMPSpeedChanged = 'PMch', @@ -70,6 +74,7 @@ class InputDialog : public Dialog TabWidget* myTab; + PopUpWidget* myMapping; EventMappingWidget* myEmulEventMapper; EventMappingWidget* myMenuEventMapper; From d798a007d04821f0dffc6cc49dd6d5c691881ab0 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 10 Apr 2018 16:45:06 +0200 Subject: [PATCH 4/6] A few more details/ideas --- src/gui/InputDialog.cxx | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index ed0afcfaa..ec77f5d66 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -114,6 +114,10 @@ void InputDialog::addEmulMappingTab(const GUI::Font& font) pwidth = font.getStringWidth("Booster-Grip A"); items.clear(); + VarList::push_back(items, "Emulator", "EMULATOR_A"); // this might be better place in UI Events tab + //VarList::push_back(items, "Emulator B", "EMULATOR_B"); // not sure why this might be useful :) + VarList::push_back(items, "Console A", "CONSOLE_A"); + VarList::push_back(items, "Console B", "CONSOLE_B"); // a separate mapping might make sense e.g. for games which use the switches a lot VarList::push_back(items, "Joystick A", "JOYSTICK_A"); VarList::push_back(items, "Joystick B", "JOYSTICK_B"); VarList::push_back(items, "Paddles A", "PADDLES_A"); @@ -606,37 +610,58 @@ void InputDialog::mappingChanged() { const string& mapping = myMapping->getSelectedTag().toString(); - if(mapping == "JOYSTICK_A" || mapping == "JOYSTICK_B") + if(mapping.rfind("EMULATOR_", 0) == 0) + { + // Note: It seems a good idea to list the current keys in the list too. + StringList actions = { + "Save State F9", + "Change State F10", + "Load State F11", + "Snapshot F12", + "Fry Cartridge Backspace", + "etc." }; + myEmulEventMapper->setActionList(actions); + } + + if(mapping.rfind("CONSOLE_", 0) == 0) + { + StringList actions = { "Select", "Reset", "Color TV", "Black & White TV", "Swap Color / B&W TV", "7800 Pause Key", + "P0 Diffculty A", "P0 Diffculty B", "P0 Swap Diffculty", "P1 Diffculty A", "P1 Diffculty B", "P1 Swap Diffculty"}; + myEmulEventMapper->setActionList(actions); + } + + if(mapping.rfind("JOYSTICK_", 0) == 0) { StringList actions = { "Left", "Right", "Up", "Down", "Fire" }; myEmulEventMapper->setActionList(actions); } - if(mapping == "BOOSTERGRIP_A" || mapping == "BOOSTERGRIP_B") + if(mapping.rfind("BOOSTERGRIP_", 0) == 0) { StringList actions = { "Left", "Right", "Up", "Down", "Fire", "Top Trigger", "Handle Grip" }; + // TODO: align extra button names with doc myEmulEventMapper->setActionList(actions); } - if(mapping == "GENESIS_A" || mapping == "GENESIS_B") + if(mapping.rfind("GENESIS_", 0 ) == 0) { - StringList actions = { "Left", "Right", "Up", "Down", "Fire", "Fire 2" }; + StringList actions = { "Left", "Right", "Up", "Down", "Button B", "Button C" }; myEmulEventMapper->setActionList(actions); } - if(mapping == "PADDLES_A" || mapping == "PADDLES_B") + if(mapping.rfind("PADDLES_", 0) == 0) { StringList actions = { "Clockwise", "Counter-Clockwise", "Fire" }; myEmulEventMapper->setActionList(actions); } - if(mapping == "DRIVING_A" || mapping == "DRIVING_B") + if(mapping.rfind("DRIVING_", 0) == 0) { StringList actions = { "Clockwise", "Counter-Clockwise", "Fire" }; myEmulEventMapper->setActionList(actions); } - if(mapping == "KEYBOARD_A" || mapping == "KEYBOARD_B") + if(mapping.rfind("KEYBOARD_", 0) == 0) { StringList actions = { "1", "2", "3", "4", "5", "6", "7", "8", "9" , "*" , "0" , "#" }; myEmulEventMapper->setActionList(actions); From eb591cb096f101f4dfd530f98d710381c6974275 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 11 Apr 2018 13:04:29 -0230 Subject: [PATCH 5/6] Remove 'combo' events and associated remapping. --- src/emucore/Event.hxx | 3 - src/emucore/EventHandler.cxx | 185 +---------------------------- src/emucore/EventHandler.hxx | 18 +-- src/emucore/Settings.cxx | 1 - src/gui/ComboDialog.cxx | 143 ---------------------- src/gui/ComboDialog.hxx | 59 --------- src/gui/EventMappingWidget.cxx | 31 ----- src/gui/EventMappingWidget.hxx | 7 +- src/gui/module.mk | 1 - src/windows/Stella.vcxproj | 4 +- src/windows/Stella.vcxproj.filters | 8 +- 11 files changed, 5 insertions(+), 455 deletions(-) delete mode 100644 src/gui/ComboDialog.cxx delete mode 100644 src/gui/ComboDialog.hxx diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx index f286acf18..a44de1e44 100644 --- a/src/emucore/Event.hxx +++ b/src/emucore/Event.hxx @@ -61,9 +61,6 @@ class Event KeyboardOne7, KeyboardOne8, KeyboardOne9, KeyboardOneStar, KeyboardOne0, KeyboardOnePound, - Combo1, Combo2, Combo3, Combo4, Combo5, Combo6, Combo7, Combo8, - Combo9, Combo10, Combo11, Combo12, Combo13, Combo14, Combo15, Combo16, - SALeftAxis0Value, SALeftAxis1Value, SARightAxis0Value, SARightAxis1Value, diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index 4b8c5388a..fc6435a9a 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -71,11 +71,6 @@ EventHandler::EventHandler(OSystem& osystem) // Create joystick handler (to handle all physical joystick functionality) myPJoyHandler = make_unique(osystem, *this, myEvent); - - // Erase the 'combo' array - for(int i = 0; i < kComboSize; ++i) - for(int j = 0; j < kEventsPerCombo; ++j) - myComboTable[i][j] = Event::NoType; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -88,7 +83,6 @@ void EventHandler::initialize() { // Make sure the event/action mappings are correctly set, // and fill the ActionList structure with valid values - setComboMap(); setActionMappings(kEmulationMode); setActionMappings(kMenuMode); @@ -403,31 +397,6 @@ void EventHandler::handleEvent(Event::Type event, Int32 state) } return; - //////////////////////////////////////////////////////////////////////// - // A combo event is simply multiple calls to handleEvent, once for - // each event it contains - case Event::Combo1: - case Event::Combo2: - case Event::Combo3: - case Event::Combo4: - case Event::Combo5: - case Event::Combo6: - case Event::Combo7: - case Event::Combo8: - case Event::Combo9: - case Event::Combo10: - case Event::Combo11: - case Event::Combo12: - case Event::Combo13: - case Event::Combo14: - case Event::Combo15: - case Event::Combo16: - for(int i = 0, combo = event - Event::Combo1; i < kEventsPerCombo; ++i) - if(myComboTable[combo][i] != Event::NoType) - handleEvent(myComboTable[combo][i], state); - return; - //////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////// // Events which relate to switches() case Event::ConsoleColor: @@ -712,56 +681,6 @@ void EventHandler::setActionMappings(EventMode mode) } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void EventHandler::setComboMap() -{ - // Since istringstream swallows whitespace, we have to make the - // delimiters be spaces - string list = myOSystem.settings().getString("combomap"); - replace(list.begin(), list.end(), ':', ' '); - istringstream buf(list); - - // Erase the 'combo' array - auto ERASE_ALL = [&]() { - for(int i = 0; i < kComboSize; ++i) - for(int j = 0; j < kEventsPerCombo; ++j) - myComboTable[i][j] = Event::NoType; - }; - - // Get combo count, which should be the first int in the list - // If it isn't, then we treat the entire list as invalid - if(!buf.good()) - ERASE_ALL(); - else - { - string key; - buf >> key; - if(atoi(key.c_str()) == kComboSize) - { - // Fill the combomap table with events for as long as they exist - int combocount = 0; - while(buf >> key && combocount < kComboSize) - { - // Each event in a comboevent is separated by a comma - replace(key.begin(), key.end(), ',', ' '); - istringstream buf2(key); - - int eventcount = 0; - while(buf2 >> key && eventcount < kEventsPerCombo) - { - myComboTable[combocount][eventcount] = Event::Type(atoi(key.c_str())); - ++eventcount; - } - ++combocount; - } - } - else - ERASE_ALL(); - } - - saveComboMapping(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EventHandler::removePhysicalJoystickFromDatabase(const string& name) { @@ -879,23 +798,6 @@ void EventHandler::saveJoyMapping() #endif } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void EventHandler::saveComboMapping() -{ - // Iterate through the combomap table and create a colon-separated list - // For each combo event, create a comma-separated list of its events - // Prepend the event count, so we can check it on next load - ostringstream buf; - buf << kComboSize; - for(int i = 0; i < kComboSize; ++i) - { - buf << ":" << myComboTable[i][0]; - for(int j = 1; j < kEventsPerCombo; ++j) - buf << "," << myComboTable[i][j]; - } - myOSystem.settings().setValue("combomap", buf.str()); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - StringList EventHandler::getActionList(EventMode mode) const { @@ -916,74 +818,6 @@ StringList EventHandler::getActionList(EventMode mode) const return l; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -VariantList EventHandler::getComboList(EventMode /**/) const -{ - // For now, this only works in emulation mode - VariantList l; - ostringstream buf; - - VarList::push_back(l, "None", "-1"); - for(uInt32 i = 0; i < kEmulActionListSize; ++i) - { - if(EventHandler::ourEmulActionList[i].allow_combo) - { - buf << i; - VarList::push_back(l, EventHandler::ourEmulActionList[i].action, buf.str()); - buf.str(""); - } - } - return l; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -StringList EventHandler::getComboListForEvent(Event::Type event) const -{ - StringList l; - ostringstream buf; - if(event >= Event::Combo1 && event <= Event::Combo16) - { - int combo = event - Event::Combo1; - for(uInt32 i = 0; i < kEventsPerCombo; ++i) - { - Event::Type e = myComboTable[combo][i]; - for(uInt32 j = 0; j < kEmulActionListSize; ++j) - { - if(EventHandler::ourEmulActionList[j].event == e && - EventHandler::ourEmulActionList[j].allow_combo) - { - buf << j; - l.push_back(buf.str()); - buf.str(""); - } - } - // Make sure entries are 1-to-1, using '-1' to indicate Event::NoType - if(i == l.size()) - l.push_back("-1"); - } - } - return l; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void EventHandler::setComboListForEvent(Event::Type event, const StringList& events) -{ - if(event >= Event::Combo1 && event <= Event::Combo16) - { - assert(events.size() == 8); - int combo = event - Event::Combo1; - for(int i = 0; i < 8; ++i) - { - int idx = atoi(events[i].c_str()); - if(idx >=0 && idx < kEmulActionListSize) - myComboTable[combo][i] = EventHandler::ourEmulActionList[idx].event; - else - myComboTable[combo][i] = Event::NoType; - } - saveComboMapping(); - } -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Event::Type EventHandler::eventAtIndex(int idx, EventMode mode) const { @@ -1308,24 +1142,7 @@ EventHandler::ActionList EventHandler::ourEmulActionList[kEmulActionListSize] = { Event::KeyboardOne9, "P1 Keyboard 9", "", true }, { Event::KeyboardOneStar, "P1 Keyboard *", "", true }, { Event::KeyboardOne0, "P1 Keyboard 0", "", true }, - { Event::KeyboardOnePound, "P1 Keyboard #", "", true }, - - { Event::Combo1, "Combo 1", "", false }, - { Event::Combo2, "Combo 2", "", false }, - { Event::Combo3, "Combo 3", "", false }, - { Event::Combo4, "Combo 4", "", false }, - { Event::Combo5, "Combo 5", "", false }, - { Event::Combo6, "Combo 6", "", false }, - { Event::Combo7, "Combo 7", "", false }, - { Event::Combo8, "Combo 8", "", false }, - { Event::Combo9, "Combo 9", "", false }, - { Event::Combo10, "Combo 10", "", false }, - { Event::Combo11, "Combo 11", "", false }, - { Event::Combo12, "Combo 12", "", false }, - { Event::Combo13, "Combo 13", "", false }, - { Event::Combo14, "Combo 14", "", false }, - { Event::Combo15, "Combo 15", "", false }, - { Event::Combo16, "Combo 16", "", false } + { Event::KeyboardOnePound, "P1 Keyboard #", "", true } }; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx index a6d32ce98..2be2924d9 100644 --- a/src/emucore/EventHandler.hxx +++ b/src/emucore/EventHandler.hxx @@ -151,11 +151,6 @@ class EventHandler bool frying() const { return myFryingFlag; } StringList getActionList(EventMode mode) const; - VariantList getComboList(EventMode mode) const; - - /** Used to access the list of events assigned to a specific combo event. */ - StringList getComboListForEvent(Event::Type event) const; - void setComboListForEvent(Event::Type event, const StringList& events); /** Convert keys and physical joystick events into Stella events. */ Event::Type eventForKey(StellaKey key, EventMode mode) const { @@ -249,11 +244,6 @@ class EventHandler */ void setDefaultMapping(Event::Type event, EventMode mode); - /** - Sets the combo event mappings to those in the 'combomap' setting - */ - void setComboMap(); - /** Joystick emulates 'impossible' directions (ie, left & right at the same time). @@ -361,9 +351,7 @@ class EventHandler private: enum { - kComboSize = 16, - kEventsPerCombo = 8, - kEmulActionListSize = 80 + kComboSize, + kEmulActionListSize = 80, kMenuActionListSize = 14 }; @@ -375,7 +363,6 @@ class EventHandler void setDefaultJoymap(Event::Type, EventMode mode); void saveKeyMapping(); void saveJoyMapping(); - void saveComboMapping(); private: // Structure used for action menu items @@ -402,9 +389,6 @@ class EventHandler // all possible controller modes unique_ptr myMouseControl; - // The event(s) assigned to each combination event - Event::Type myComboTable[kComboSize][kEventsPerCombo]; - // Indicates the current state of the system (ie, which mode is current) EventHandlerState myState; diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index b54c366ed..04541bd9f 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -77,7 +77,6 @@ Settings::Settings(OSystem& osystem) // Input event options setInternal("keymap", ""); setInternal("joymap", ""); - setInternal("combomap", ""); setInternal("joydeadzone", "13"); setInternal("joyallow4", "false"); setInternal("usemouse", "analog"); diff --git a/src/gui/ComboDialog.cxx b/src/gui/ComboDialog.cxx deleted file mode 100644 index 35b76ddb6..000000000 --- a/src/gui/ComboDialog.cxx +++ /dev/null @@ -1,143 +0,0 @@ -//============================================================================ -// -// 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-2018 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. -//============================================================================ - -#include "bspf.hxx" -#include "Control.hxx" -#include "Dialog.hxx" -#include "EventHandler.hxx" -#include "OSystem.hxx" -#include "EditTextWidget.hxx" -#include "PopUpWidget.hxx" -#include "Widget.hxx" -#include "Font.hxx" -#include "ComboDialog.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ComboDialog::ComboDialog(GuiObject* boss, const GUI::Font& font, - const VariantList& combolist) - : Dialog(boss->instance(), boss->parent(), font, ""), - myComboEvent(Event::NoType) -{ - const int lineHeight = font.getLineHeight(), - fontWidth = font.getMaxCharWidth(); - int xpos, ypos; - WidgetArray wid; - - // Set real dimensions - _w = 35 * fontWidth + 10; - _h = 10 * (lineHeight + 4) + 10 + _th; - xpos = 10; - ypos = 10 + _th; - - // Get maximum width of popupwidget - int pwidth = 0; - for(const auto& s: combolist) - pwidth = std::max(font.getStringWidth(s.first), pwidth); - - // Add event popup for 8 events - auto ADD_EVENT_POPUP = [&](int idx, const string& label) - { - myEvents[idx] = new PopUpWidget(this, font, xpos, ypos, - pwidth, lineHeight, combolist, label); - wid.push_back(myEvents[idx]); - ypos += lineHeight + 4; - }; - - xpos = 10; - myEvents[0] = nullptr; ADD_EVENT_POPUP(0, "Event 1 "); - myEvents[1] = nullptr; ADD_EVENT_POPUP(1, "Event 2 "); - myEvents[2] = nullptr; ADD_EVENT_POPUP(2, "Event 3 "); - myEvents[3] = nullptr; ADD_EVENT_POPUP(3, "Event 4 "); - myEvents[4] = nullptr; ADD_EVENT_POPUP(4, "Event 5 "); - myEvents[5] = nullptr; ADD_EVENT_POPUP(5, "Event 6 "); - myEvents[6] = nullptr; ADD_EVENT_POPUP(6, "Event 7 "); - myEvents[7] = nullptr; ADD_EVENT_POPUP(7, "Event 8 "); - - // Add Defaults, OK and Cancel buttons - addDefaultsOKCancelBGroup(wid, font); - - addToFocusList(wid); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ComboDialog::show(Event::Type event, const string& name) -{ - // Make sure the event is allowed - if(event >= Event::Combo1 && event <= Event::Combo16) - { - myComboEvent = event; - setTitle("Add events for " + name); - open(); - } - else - myComboEvent = Event::NoType; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ComboDialog::loadConfig() -{ - StringList events = instance().eventHandler().getComboListForEvent(myComboEvent); - - uInt32 size = std::min(uInt32(events.size()), 8u); - for(uInt32 i = 0; i < size; ++i) - myEvents[i]->setSelected("", events[i]); - - // Fill any remaining items to 'None' - if(size < 8) - for(uInt32 i = size; i < 8; ++i) - myEvents[i]->setSelected("None", "-1"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ComboDialog::saveConfig() -{ - StringList events; - for(int i = 0; i < 8; ++i) - events.push_back(myEvents[i]->getSelectedTag().toString()); - - instance().eventHandler().setComboListForEvent(myComboEvent, events); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ComboDialog::setDefaults() -{ - for(int i = 0; i < 8; ++i) - myEvents[i]->setSelected("None", "-1"); - - _dirty = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ComboDialog::handleCommand(CommandSender* sender, int cmd, - int data, int id) -{ - switch(cmd) - { - case GuiObject::kOKCmd: - saveConfig(); - close(); - break; - - case GuiObject::kDefaultsCmd: - setDefaults(); - break; - - default: - Dialog::handleCommand(sender, cmd, data, 0); - break; - } -} diff --git a/src/gui/ComboDialog.hxx b/src/gui/ComboDialog.hxx deleted file mode 100644 index f6ad4db57..000000000 --- a/src/gui/ComboDialog.hxx +++ /dev/null @@ -1,59 +0,0 @@ -//============================================================================ -// -// 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-2018 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. -//============================================================================ - -#ifndef COMBO_DIALOG_HXX -#define COMBO_DIALOG_HXX - -class PopUpWidget; -class EditTextWidget; -class StaticTextWidget; -class OSystem; - -#include "Dialog.hxx" -#include "bspf.hxx" - -class ComboDialog : public Dialog -{ - public: - ComboDialog(GuiObject* boss, const GUI::Font& font, const VariantList& combolist); - virtual ~ComboDialog() = default; - - /** Place the dialog onscreen and center it */ - void show(Event::Type event, const string& name); - - private: - void loadConfig() override; - void saveConfig() override; - void setDefaults() override; - - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - private: - Event::Type myComboEvent; - - PopUpWidget* myEvents[8]; - - private: - // Following constructors and assignment operators not supported - ComboDialog() = delete; - ComboDialog(const ComboDialog&) = delete; - ComboDialog(ComboDialog&&) = delete; - ComboDialog& operator=(const ComboDialog&) = delete; - ComboDialog& operator=(ComboDialog&&) = delete; -}; - -#endif diff --git a/src/gui/EventMappingWidget.cxx b/src/gui/EventMappingWidget.cxx index 0631d3da1..f13dddfce 100644 --- a/src/gui/EventMappingWidget.cxx +++ b/src/gui/EventMappingWidget.cxx @@ -26,7 +26,6 @@ #include "StringListWidget.hxx" #include "Widget.hxx" #include "Font.hxx" -#include "ComboDialog.hxx" #include "Variant.hxx" #include "EventMappingWidget.hxx" @@ -36,7 +35,6 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font, const StringList& actions, EventMode mode) : Widget(boss, font, x, y, w, h), CommandSender(boss), - myComboDialog(nullptr), myEventMode(mode), myActionSelected(-1), myRemapStatus(false), @@ -92,21 +90,6 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font, myResetButton->setTarget(this); addFocusWidget(myResetButton); - if(mode == kEmulationMode) - { - ypos += lineHeight + 20; - myComboButton = new ButtonWidget(boss, font, xpos, ypos, - buttonWidth, buttonHeight, - "Combo" + ELLIPSIS, kComboCmd); - myComboButton->setTarget(this); - addFocusWidget(myComboButton); - - VariantList combolist = instance().eventHandler().getComboList(mode); - myComboDialog = new ComboDialog(boss, font, combolist); - } - else - myComboButton = nullptr; - // Show message for currently selected event //xpos = HBORDER; ypos = VBORDER + myActionsList->getHeight() + 8; xpos = x; ypos = y + myActionsList->getHeight() + 8; @@ -244,13 +227,6 @@ void EventMappingWidget::enableButtons(bool state) myCancelMapButton->setEnabled(!state); myEraseButton->setEnabled(state); myResetButton->setEnabled(state); - if(myComboButton) - { - Event::Type e = - instance().eventHandler().eventAtIndex(myActionSelected, myEventMode); - - myComboButton->setEnabled(state && e >= Event::Combo1 && e <= Event::Combo16); - } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -389,12 +365,5 @@ void EventMappingWidget::handleCommand(CommandSender* sender, int cmd, case kResetCmd: resetRemapping(); break; - - case kComboCmd: - if(myComboDialog) - myComboDialog->show( - instance().eventHandler().eventAtIndex(myActionSelected, myEventMode), - instance().eventHandler().actionAtIndex(myActionSelected, myEventMode)); - break; } } diff --git a/src/gui/EventMappingWidget.hxx b/src/gui/EventMappingWidget.hxx index 999def081..dc9b58704 100644 --- a/src/gui/EventMappingWidget.hxx +++ b/src/gui/EventMappingWidget.hxx @@ -26,7 +26,6 @@ class StaticTextWidget; class StringListWidget; class PopUpWidget; class GuiObject; -class ComboDialog; class InputDialog; #include "Widget.hxx" @@ -55,8 +54,7 @@ class EventMappingWidget : public Widget, public CommandSender kStartMapCmd = 'map ', kStopMapCmd = 'smap', kEraseCmd = 'eras', - kResetCmd = 'rest', - kComboCmd = 'cmbo' + kResetCmd = 'rest' }; bool handleKeyDown(StellaKey key, StellaMod mod) override; @@ -82,12 +80,9 @@ class EventMappingWidget : public Widget, public CommandSender ButtonWidget* myCancelMapButton; ButtonWidget* myEraseButton; ButtonWidget* myResetButton; - ButtonWidget* myComboButton; StringListWidget* myActionsList; EditTextWidget* myKeyMapping; - ComboDialog* myComboDialog; - // Since this widget can be used for different collections of events, // we need to specify exactly which group of events we are remapping EventMode myEventMode; diff --git a/src/gui/module.mk b/src/gui/module.mk index b598334c7..9083cb64f 100644 --- a/src/gui/module.mk +++ b/src/gui/module.mk @@ -6,7 +6,6 @@ MODULE_OBJS := \ src/gui/BrowserDialog.o \ src/gui/CheckListWidget.o \ src/gui/ColorWidget.o \ - src/gui/ComboDialog.o \ src/gui/CommandDialog.o \ src/gui/CommandMenu.o \ src/gui/ConfigPathDialog.o \ diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 9f49220f1..ea9094e77 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -445,7 +445,6 @@ - @@ -772,7 +771,6 @@ - @@ -836,4 +834,4 @@ - \ No newline at end of file + diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 511d26624..edaebbdc4 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -342,9 +342,6 @@ Source Files\gui - - Source Files\gui - Source Files\gui @@ -1229,9 +1226,6 @@ Header Files\gui - - Header Files\gui - Header Files\gui @@ -1856,4 +1850,4 @@ Resource Files - \ No newline at end of file + From 6e426955e5052a4648639ef7141b2ba5d20319ed Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 11 Apr 2018 18:05:34 -0230 Subject: [PATCH 6/6] Removed ComboDialog from OSX project file. --- src/macosx/stella.xcodeproj/project.pbxproj | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/macosx/stella.xcodeproj/project.pbxproj b/src/macosx/stella.xcodeproj/project.pbxproj index 4de23d9c1..bfdb84e2a 100644 --- a/src/macosx/stella.xcodeproj/project.pbxproj +++ b/src/macosx/stella.xcodeproj/project.pbxproj @@ -617,8 +617,6 @@ DCFB9FAC1ECA2609004FD69B /* DelayQueueIteratorImpl.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCFB9FAB1ECA2609004FD69B /* DelayQueueIteratorImpl.hxx */; }; DCFF14CD18B0260300A20364 /* EventHandlerSDL2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCFF14CB18B0260300A20364 /* EventHandlerSDL2.cxx */; }; DCFF14CE18B0260300A20364 /* EventHandlerSDL2.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCFF14CC18B0260300A20364 /* EventHandlerSDL2.hxx */; }; - DCFFE59D12100E1400DFA000 /* ComboDialog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCFFE59B12100E1400DFA000 /* ComboDialog.cxx */; }; - DCFFE59E12100E1400DFA000 /* ComboDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCFFE59C12100E1400DFA000 /* ComboDialog.hxx */; }; E0306E0C1F93E916003DDD52 /* YStartDetector.cxx in Sources */ = {isa = PBXBuildFile; fileRef = E0306E061F93E915003DDD52 /* YStartDetector.cxx */; }; E0306E0D1F93E916003DDD52 /* FrameLayoutDetector.hxx in Headers */ = {isa = PBXBuildFile; fileRef = E0306E071F93E915003DDD52 /* FrameLayoutDetector.hxx */; }; E0306E0E1F93E916003DDD52 /* YStartDetector.hxx in Headers */ = {isa = PBXBuildFile; fileRef = E0306E081F93E915003DDD52 /* YStartDetector.hxx */; }; @@ -1293,8 +1291,6 @@ DCFB9FAB1ECA2609004FD69B /* DelayQueueIteratorImpl.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = DelayQueueIteratorImpl.hxx; sourceTree = ""; }; DCFF14CB18B0260300A20364 /* EventHandlerSDL2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventHandlerSDL2.cxx; sourceTree = ""; }; DCFF14CC18B0260300A20364 /* EventHandlerSDL2.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = EventHandlerSDL2.hxx; sourceTree = ""; }; - DCFFE59B12100E1400DFA000 /* ComboDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComboDialog.cxx; sourceTree = ""; }; - DCFFE59C12100E1400DFA000 /* ComboDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ComboDialog.hxx; sourceTree = ""; }; E0306E061F93E915003DDD52 /* YStartDetector.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = YStartDetector.cxx; sourceTree = ""; }; E0306E071F93E915003DDD52 /* FrameLayoutDetector.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = FrameLayoutDetector.hxx; sourceTree = ""; }; E0306E081F93E915003DDD52 /* YStartDetector.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = YStartDetector.hxx; sourceTree = ""; }; @@ -1838,8 +1834,6 @@ 2DEF21F908BC033500B246B4 /* CheckListWidget.hxx */, DC44019C1F1A5D01008C08F6 /* ColorWidget.cxx */, DC44019D1F1A5D01008C08F6 /* ColorWidget.hxx */, - DCFFE59B12100E1400DFA000 /* ComboDialog.cxx */, - DCFFE59C12100E1400DFA000 /* ComboDialog.hxx */, 2DDBEAAA084578BF00812C11 /* Command.hxx */, 2D73959308C3EB4E0060BB99 /* CommandDialog.cxx */, 2D73959408C3EB4E0060BB99 /* CommandDialog.hxx */, @@ -2341,7 +2335,6 @@ CFE3F60C1E84A9A200A8204E /* CartBUSWidget.hxx in Headers */, DCD6FC9411C28C6F005DA767 /* PNGLibrary.hxx in Headers */, DC98F35711F5B56200AA520F /* MessageBox.hxx in Headers */, - DCFFE59E12100E1400DFA000 /* ComboDialog.hxx in Headers */, DCD2839912E39F1200A808DC /* Thumbulator.hxx in Headers */, DC69670B1361FD0A0036499D /* pngdebug.h in Headers */, DC69670C1361FD0A0036499D /* pnginfo.h in Headers */, @@ -2746,7 +2739,6 @@ DCD6FC9311C28C6F005DA767 /* PNGLibrary.cxx in Sources */, DC98F35611F5B56200AA520F /* MessageBox.cxx in Sources */, DC9616301F817830008A2206 /* FlashWidget.cxx in Sources */, - DCFFE59D12100E1400DFA000 /* ComboDialog.cxx in Sources */, DCD2839812E39F1200A808DC /* Thumbulator.cxx in Sources */, DC1BC6662066B4390076F74A /* PKeyboardHandler.cxx in Sources */, DC6C726213CDEA0A008A5975 /* LoggerDialog.cxx in Sources */,