mirror of https://github.com/stella-emu/stella.git
initial commit before refactoring
This commit is contained in:
parent
7d17a74f62
commit
e3f1a0f49f
|
@ -53,6 +53,7 @@
|
||||||
#ifdef GUI_SUPPORT
|
#ifdef GUI_SUPPORT
|
||||||
#include "Menu.hxx"
|
#include "Menu.hxx"
|
||||||
#include "CommandMenu.hxx"
|
#include "CommandMenu.hxx"
|
||||||
|
#include "MessageMenu.hxx"
|
||||||
#include "DialogContainer.hxx"
|
#include "DialogContainer.hxx"
|
||||||
#include "Launcher.hxx"
|
#include "Launcher.hxx"
|
||||||
#include "TimeMachine.hxx"
|
#include "TimeMachine.hxx"
|
||||||
|
@ -730,17 +731,35 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// this event is called when exiting a ROM from the debugger, so it acts like pressing ESC in emulation
|
// this event is called when exiting a ROM from the debugger, so it acts like pressing ESC in emulation
|
||||||
case EventHandlerState::DEBUGGER:
|
|
||||||
case EventHandlerState::EMULATION:
|
case EventHandlerState::EMULATION:
|
||||||
|
case EventHandlerState::DEBUGGER:
|
||||||
if (pressed && !repeated)
|
if (pressed && !repeated)
|
||||||
{
|
{
|
||||||
exitEmulation();
|
if (myState == EventHandlerState::EMULATION)
|
||||||
// Go back to the launcher, or immediately quit
|
{
|
||||||
if (myOSystem.settings().getBool("exitlauncher") ||
|
if (myOSystem.settings().getBool("confirmexit"))
|
||||||
myOSystem.launcherUsed())
|
{
|
||||||
myOSystem.createLauncher();
|
StringList msg;
|
||||||
|
|
||||||
|
msg.push_back("Do you really want to exit emulation?");
|
||||||
|
msg.push_back("");
|
||||||
|
msg.push_back("You will lose all your progress.");
|
||||||
|
|
||||||
|
myOSystem.messageMenu().setMessage("Exit Emulation", msg, true);
|
||||||
|
enterMenuMode(EventHandlerState::MESSAGEMENU);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
handleEvent(Event::Quit);
|
exitEmulation(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
|
||||||
|
case EventHandlerState::MESSAGEMENU:
|
||||||
|
if (pressed && !repeated)
|
||||||
|
{
|
||||||
|
leaveMenuMode();
|
||||||
|
if (myOSystem.messageMenu().confirmed())
|
||||||
|
exitEmulation(true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -978,7 +997,7 @@ bool EventHandler::changeStateByEvent(Event::Type type)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Event::OptionsMenuMode:
|
case Event::OptionsMenuMode:
|
||||||
if(myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE)
|
if (myState == EventHandlerState::EMULATION || myState == EventHandlerState::PAUSE)
|
||||||
enterMenuMode(EventHandlerState::OPTIONSMENU);
|
enterMenuMode(EventHandlerState::OPTIONSMENU);
|
||||||
else
|
else
|
||||||
handled = false;
|
handled = false;
|
||||||
|
@ -1696,6 +1715,11 @@ void EventHandler::setState(EventHandlerState state)
|
||||||
enableTextEvents(true);
|
enableTextEvents(true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EventHandlerState::MESSAGEMENU:
|
||||||
|
myOverlay = &myOSystem.messageMenu();
|
||||||
|
enableTextEvents(true);
|
||||||
|
break;
|
||||||
|
|
||||||
case EventHandlerState::TIMEMACHINE:
|
case EventHandlerState::TIMEMACHINE:
|
||||||
myOSystem.timeMachine().requestResize();
|
myOSystem.timeMachine().requestResize();
|
||||||
myOverlay = &myOSystem.timeMachine();
|
myOverlay = &myOSystem.timeMachine();
|
||||||
|
@ -1737,15 +1761,24 @@ void EventHandler::setState(EventHandlerState state)
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void EventHandler::exitEmulation()
|
void EventHandler::exitEmulation(bool checkLauncher)
|
||||||
{
|
{
|
||||||
// TODO: confirm message
|
|
||||||
string saveOnExit = myOSystem.settings().getString("saveonexit");
|
string saveOnExit = myOSystem.settings().getString("saveonexit");
|
||||||
|
|
||||||
if (saveOnExit == "all")
|
if (saveOnExit == "all")
|
||||||
handleEvent(Event::SaveAllStates);
|
handleEvent(Event::SaveAllStates);
|
||||||
else if (saveOnExit == "current")
|
else if (saveOnExit == "current")
|
||||||
handleEvent(Event::SaveState);
|
handleEvent(Event::SaveState);
|
||||||
|
|
||||||
|
if (checkLauncher)
|
||||||
|
{
|
||||||
|
// Go back to the launcher, or immediately quit
|
||||||
|
if (myOSystem.settings().getBool("exitlauncher") ||
|
||||||
|
myOSystem.launcherUsed())
|
||||||
|
myOSystem.createLauncher();
|
||||||
|
else
|
||||||
|
handleEvent(Event::Quit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -26,6 +26,10 @@ class MouseControl;
|
||||||
class DialogContainer;
|
class DialogContainer;
|
||||||
class PhysicalJoystick;
|
class PhysicalJoystick;
|
||||||
|
|
||||||
|
namespace GUI {
|
||||||
|
class Font;
|
||||||
|
}
|
||||||
|
|
||||||
#include "Event.hxx"
|
#include "Event.hxx"
|
||||||
#include "EventHandlerConstants.hxx"
|
#include "EventHandlerConstants.hxx"
|
||||||
#include "Control.hxx"
|
#include "Control.hxx"
|
||||||
|
@ -329,7 +333,7 @@ class EventHandler
|
||||||
void saveKeyMapping();
|
void saveKeyMapping();
|
||||||
void saveJoyMapping();
|
void saveJoyMapping();
|
||||||
|
|
||||||
void exitEmulation();
|
void exitEmulation(bool checkLauncher = false);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Global OSystem object
|
// Global OSystem object
|
||||||
|
|
|
@ -26,6 +26,7 @@ enum class EventHandlerState {
|
||||||
LAUNCHER,
|
LAUNCHER,
|
||||||
OPTIONSMENU,
|
OPTIONSMENU,
|
||||||
CMDMENU,
|
CMDMENU,
|
||||||
|
MESSAGEMENU,
|
||||||
DEBUGGER,
|
DEBUGGER,
|
||||||
NONE
|
NONE
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#include "Launcher.hxx"
|
#include "Launcher.hxx"
|
||||||
#include "Menu.hxx"
|
#include "Menu.hxx"
|
||||||
#include "CommandMenu.hxx"
|
#include "CommandMenu.hxx"
|
||||||
|
#include "MessageMenu.hxx"
|
||||||
#include "TimeMachine.hxx"
|
#include "TimeMachine.hxx"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -331,6 +332,18 @@ void FrameBuffer::update(bool force)
|
||||||
break; // EventHandlerState::CMDMENU
|
break; // EventHandlerState::CMDMENU
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case EventHandlerState::MESSAGEMENU:
|
||||||
|
{
|
||||||
|
force = force || myOSystem.messageMenu().needsRedraw();
|
||||||
|
if (force)
|
||||||
|
{
|
||||||
|
clear();
|
||||||
|
myTIASurface->render();
|
||||||
|
myOSystem.messageMenu().draw(force);
|
||||||
|
}
|
||||||
|
break; // EventHandlerState::MESSAGEMENU
|
||||||
|
}
|
||||||
|
|
||||||
case EventHandlerState::TIMEMACHINE:
|
case EventHandlerState::TIMEMACHINE:
|
||||||
{
|
{
|
||||||
force = force || myOSystem.timeMachine().needsRedraw();
|
force = force || myOSystem.timeMachine().needsRedraw();
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#ifdef GUI_SUPPORT
|
#ifdef GUI_SUPPORT
|
||||||
#include "Menu.hxx"
|
#include "Menu.hxx"
|
||||||
#include "CommandMenu.hxx"
|
#include "CommandMenu.hxx"
|
||||||
|
#include "MessageMenu.hxx"
|
||||||
#include "Launcher.hxx"
|
#include "Launcher.hxx"
|
||||||
#include "TimeMachine.hxx"
|
#include "TimeMachine.hxx"
|
||||||
#include "Widget.hxx"
|
#include "Widget.hxx"
|
||||||
|
@ -171,6 +172,7 @@ bool OSystem::create()
|
||||||
// Create various subsystems (menu and launcher GUI objects, etc)
|
// Create various subsystems (menu and launcher GUI objects, etc)
|
||||||
myMenu = make_unique<Menu>(*this);
|
myMenu = make_unique<Menu>(*this);
|
||||||
myCommandMenu = make_unique<CommandMenu>(*this);
|
myCommandMenu = make_unique<CommandMenu>(*this);
|
||||||
|
myMessageMenu = make_unique<MessageMenu>(*this);
|
||||||
myTimeMachine = make_unique<TimeMachine>(*this);
|
myTimeMachine = make_unique<TimeMachine>(*this);
|
||||||
myLauncher = make_unique<Launcher>(*this);
|
myLauncher = make_unique<Launcher>(*this);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,6 +39,7 @@ class AudioSettings;
|
||||||
class CommandMenu;
|
class CommandMenu;
|
||||||
class Launcher;
|
class Launcher;
|
||||||
class Menu;
|
class Menu;
|
||||||
|
class MessageMenu;
|
||||||
class TimeMachine;
|
class TimeMachine;
|
||||||
class VideoDialog;
|
class VideoDialog;
|
||||||
#endif
|
#endif
|
||||||
|
@ -208,6 +209,13 @@ class OSystem
|
||||||
*/
|
*/
|
||||||
CommandMenu& commandMenu() const { return *myCommandMenu; }
|
CommandMenu& commandMenu() const { return *myCommandMenu; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the message menu of the system.
|
||||||
|
|
||||||
|
@return The message menu object
|
||||||
|
*/
|
||||||
|
MessageMenu& messageMenu() const { return *myMessageMenu; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Get the ROM launcher of the system.
|
Get the ROM launcher of the system.
|
||||||
|
|
||||||
|
@ -483,6 +491,9 @@ class OSystem
|
||||||
// Pointer to the CommandMenu object
|
// Pointer to the CommandMenu object
|
||||||
unique_ptr<CommandMenu> myCommandMenu;
|
unique_ptr<CommandMenu> myCommandMenu;
|
||||||
|
|
||||||
|
// Pointer to the CommandMenu object
|
||||||
|
unique_ptr<MessageMenu> myMessageMenu;
|
||||||
|
|
||||||
// Pointer to the Launcher object
|
// Pointer to the Launcher object
|
||||||
unique_ptr<Launcher> myLauncher;
|
unique_ptr<Launcher> myLauncher;
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,7 @@ Settings::Settings()
|
||||||
setPermanent("ctrlrate", "20");
|
setPermanent("ctrlrate", "20");
|
||||||
setPermanent("basic_settings", false);
|
setPermanent("basic_settings", false);
|
||||||
setPermanent("dialogpos", 0);
|
setPermanent("dialogpos", 0);
|
||||||
|
setPermanent("confirmexit", false);
|
||||||
|
|
||||||
// Misc options
|
// Misc options
|
||||||
setPermanent("loglevel", int(Logger::Level::INFO));
|
setPermanent("loglevel", int(Logger::Level::INFO));
|
||||||
|
@ -488,6 +489,7 @@ void Settings::usage() const
|
||||||
<< " classic|light>\n"
|
<< " classic|light>\n"
|
||||||
<< " -hidpi <0|1> Enable HiDPI mode\n"
|
<< " -hidpi <0|1> Enable HiDPI mode\n"
|
||||||
<< " -dialogpos <0..4> Display all dialogs at given positions\n"
|
<< " -dialogpos <0..4> Display all dialogs at given positions\n"
|
||||||
|
<< " -confirmexit <0|1> Display a confirm dialog when exiting emulation\n"
|
||||||
<< " -listdelay <delay> Time to wait between keypresses in list widgets\n"
|
<< " -listdelay <delay> Time to wait between keypresses in list widgets\n"
|
||||||
<< " (300-1000)\n"
|
<< " (300-1000)\n"
|
||||||
<< " -mwheel <lines> Number of lines the mouse wheel will scroll in\n"
|
<< " -mwheel <lines> Number of lines the mouse wheel will scroll in\n"
|
||||||
|
|
|
@ -27,13 +27,14 @@ namespace GUI {
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||||
const StringList& text, int max_w, int max_h, int cmd,
|
const StringList& text, int max_w, int max_h, int okCmd, int cancelCmd,
|
||||||
const string& okText, const string& cancelText,
|
const string& okText, const string& cancelText,
|
||||||
const string& title,
|
const string& title,
|
||||||
bool focusOKButton)
|
bool focusOKButton)
|
||||||
: Dialog(boss->instance(), boss->parent(), font, title, 0, 0, max_w, max_h),
|
: Dialog(boss->instance(), boss->parent(), font, title, 0, 0, max_w, max_h),
|
||||||
CommandSender(boss),
|
CommandSender(boss),
|
||||||
myCmd(cmd)
|
myOkCmd(okCmd),
|
||||||
|
myCancelCmd(cancelCmd)
|
||||||
{
|
{
|
||||||
addText(font, text);
|
addText(font, text);
|
||||||
|
|
||||||
|
@ -44,12 +45,34 @@ MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||||
const string& text, int max_w, int max_h, int cmd,
|
const StringList& text, int max_w, int max_h, int okCmd,
|
||||||
|
const string& okText, const string& cancelText,
|
||||||
|
const string& title,
|
||||||
|
bool focusOKButton)
|
||||||
|
: MessageBox(boss, font, text, max_w, max_h,
|
||||||
|
okCmd, 0, okText, cancelText, title, focusOKButton)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||||
|
const string& text, int max_w, int max_h, int okCmd,
|
||||||
const string& okText, const string& cancelText,
|
const string& okText, const string& cancelText,
|
||||||
const string& title,
|
const string& title,
|
||||||
bool focusOKButton)
|
bool focusOKButton)
|
||||||
: MessageBox(boss, font, StringParser(text).stringList(), max_w, max_h,
|
: MessageBox(boss, font, StringParser(text).stringList(), max_w, max_h,
|
||||||
cmd, okText, cancelText, title, focusOKButton)
|
okCmd, okText, cancelText, title, focusOKButton)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||||
|
const string& text, int max_w, int max_h, int okCmd, int cancelCmd,
|
||||||
|
const string& okText, const string& cancelText,
|
||||||
|
const string& title,
|
||||||
|
bool focusOKButton)
|
||||||
|
: MessageBox(boss, font, StringParser(text).stringList(), max_w, max_h,
|
||||||
|
okCmd, cancelCmd, okText, cancelText, title, focusOKButton)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,8 +108,16 @@ void MessageBox::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
||||||
|
|
||||||
// Send a signal to the calling class that 'OK' has been selected
|
// Send a signal to the calling class that 'OK' has been selected
|
||||||
// Since we aren't derived from a widget, we don't have a 'data' or 'id'
|
// Since we aren't derived from a widget, we don't have a 'data' or 'id'
|
||||||
if(myCmd)
|
if(myOkCmd)
|
||||||
sendCommand(myCmd, 0, 0);
|
sendCommand(myOkCmd, 0, 0);
|
||||||
|
}
|
||||||
|
else if (cmd == GuiObject::kCloseCmd)
|
||||||
|
{
|
||||||
|
close();
|
||||||
|
|
||||||
|
// Send a signal to the calling class that 'Cancel' has been selected
|
||||||
|
if (myCancelCmd)
|
||||||
|
sendCommand(myCancelCmd, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Dialog::handleCommand(sender, cmd, data, id);
|
Dialog::handleCommand(sender, cmd, data, id);
|
||||||
|
|
|
@ -29,18 +29,28 @@ namespace GUI {
|
||||||
/**
|
/**
|
||||||
* Show a simple message box containing the given text, with buttons
|
* Show a simple message box containing the given text, with buttons
|
||||||
* prompting the user to accept or reject. If the user selects 'OK',
|
* prompting the user to accept or reject. If the user selects 'OK',
|
||||||
* the value of 'cmd' is returned.
|
* the value of 'okCmd' is returned.
|
||||||
*/
|
*/
|
||||||
class MessageBox : public Dialog, public CommandSender
|
class MessageBox : public Dialog, public CommandSender
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MessageBox(GuiObject* boss, const GUI::Font& font, const StringList& text,
|
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 okCmd = 0, int cancelCmd = 0,
|
||||||
|
const string& okText = "OK", const string& cancelText = "Cancel",
|
||||||
|
const string& title = "",
|
||||||
|
bool focusOKButton = true);
|
||||||
|
MessageBox(GuiObject* boss, const GUI::Font& font, const StringList& text,
|
||||||
|
int max_w, int max_h, int okCmd = 0,
|
||||||
const string& okText = "OK", const string& cancelText = "Cancel",
|
const string& okText = "OK", const string& cancelText = "Cancel",
|
||||||
const string& title = "",
|
const string& title = "",
|
||||||
bool focusOKButton = true);
|
bool focusOKButton = true);
|
||||||
MessageBox(GuiObject* boss, const GUI::Font& font, const string& text,
|
MessageBox(GuiObject* boss, const GUI::Font& font, const string& text,
|
||||||
int max_w, int max_h, int cmd = 0,
|
int max_w, int max_h, int okCmd = 0,
|
||||||
|
const string& okText = "OK", const string& cancelText = "Cancel",
|
||||||
|
const string& title = "",
|
||||||
|
bool focusOKButton = true);
|
||||||
|
MessageBox(GuiObject* boss, const GUI::Font& font, const string& text,
|
||||||
|
int max_w, int max_h, int okCmd, int cancelCmd,
|
||||||
const string& okText = "OK", const string& cancelText = "Cancel",
|
const string& okText = "OK", const string& cancelText = "Cancel",
|
||||||
const string& title = "",
|
const string& title = "",
|
||||||
bool focusOKButton = true);
|
bool focusOKButton = true);
|
||||||
|
@ -54,7 +64,8 @@ class MessageBox : public Dialog, public CommandSender
|
||||||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int myCmd{0};
|
int myOkCmd{0};
|
||||||
|
int myCancelCmd{0};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Following constructors and assignment operators not supported
|
// Following constructors and assignment operators not supported
|
||||||
|
|
|
@ -106,6 +106,22 @@ void RomAuditDialog::loadConfig()
|
||||||
myRomPath->setText(path);
|
myRomPath->setText(path);
|
||||||
myResults1->setText("");
|
myResults1->setText("");
|
||||||
myResults2->setText("");
|
myResults2->setText("");
|
||||||
|
|
||||||
|
if (!myConfirmMsg)
|
||||||
|
{
|
||||||
|
StringList msg;
|
||||||
|
msg.push_back("This operation cannot be undone. Your ROMs");
|
||||||
|
msg.push_back("will be modified, and as such there is a chance");
|
||||||
|
msg.push_back("that files may be lost. You are recommended");
|
||||||
|
msg.push_back("to back up your files before proceeding.");
|
||||||
|
msg.push_back("");
|
||||||
|
msg.push_back("If you're sure you want to proceed with the");
|
||||||
|
msg.push_back("audit, click 'OK', otherwise click 'Cancel'.");
|
||||||
|
myConfirmMsg = make_unique<GUI::MessageBox>
|
||||||
|
(this, myFont, msg, myMaxWidth, myMaxHeight, kConfirmAuditCmd,
|
||||||
|
"OK", "Cancel", "ROM Audit", false);
|
||||||
|
}
|
||||||
|
myConfirmMsg->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -85,6 +85,11 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent,
|
||||||
myPalettePopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
myPalettePopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
||||||
items, "Theme ", lwidth);
|
items, "Theme ", lwidth);
|
||||||
wid.push_back(myPalettePopup);
|
wid.push_back(myPalettePopup);
|
||||||
|
|
||||||
|
// Enable HiDPI mode
|
||||||
|
myHidpiWidget = new CheckboxWidget(myTab, font, myPalettePopup->getRight() + 40,
|
||||||
|
ypos, "HiDPI mode (*)");
|
||||||
|
wid.push_back(myHidpiWidget);
|
||||||
ypos += lineHeight + V_GAP;
|
ypos += lineHeight + V_GAP;
|
||||||
|
|
||||||
// Dialog position
|
// Dialog position
|
||||||
|
@ -97,12 +102,12 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent,
|
||||||
myPositionPopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
myPositionPopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
||||||
items, "Dialogs position ", lwidth);
|
items, "Dialogs position ", lwidth);
|
||||||
wid.push_back(myPositionPopup);
|
wid.push_back(myPositionPopup);
|
||||||
ypos += lineHeight + V_GAP;
|
ypos += lineHeight + V_GAP * 2;
|
||||||
|
|
||||||
// Enable HiDPI mode
|
// Confirm dialog when exiting emulation
|
||||||
myHidpiWidget = new CheckboxWidget(myTab, font, xpos, ypos, "HiDPI mode (*)");
|
myConfirmExitWidget = new CheckboxWidget(myTab, font, xpos, ypos, "Confirm exiting emulation");
|
||||||
wid.push_back(myHidpiWidget);
|
wid.push_back(myConfirmExitWidget);
|
||||||
ypos += lineHeight + V_GAP * 4;
|
ypos += lineHeight + V_GAP * 3;
|
||||||
|
|
||||||
// Delay between quick-selecting characters in ListWidget
|
// Delay between quick-selecting characters in ListWidget
|
||||||
int swidth = myPalettePopup->getWidth() - lwidth;
|
int swidth = myPalettePopup->getWidth() - lwidth;
|
||||||
|
@ -329,6 +334,9 @@ void UIDialog::loadConfig()
|
||||||
myHidpiWidget->setState(settings.getBool("hidpi"));
|
myHidpiWidget->setState(settings.getBool("hidpi"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Confirm dialog when exiting emulation
|
||||||
|
myConfirmExitWidget->setState(settings.getBool("confirmexit"));
|
||||||
|
|
||||||
// Dialog position
|
// Dialog position
|
||||||
myPositionPopup->setSelected(settings.getString("dialogpos"), "0");
|
myPositionPopup->setSelected(settings.getString("dialogpos"), "0");
|
||||||
|
|
||||||
|
@ -395,6 +403,9 @@ void UIDialog::saveConfig()
|
||||||
// Dialog position
|
// Dialog position
|
||||||
settings.setValue("dialogpos", myPositionPopup->getSelectedTag().toString());
|
settings.setValue("dialogpos", myPositionPopup->getSelectedTag().toString());
|
||||||
|
|
||||||
|
// Confirm dialog when exiting emulation
|
||||||
|
settings.setValue("confirmexit", myConfirmExitWidget->getState());
|
||||||
|
|
||||||
// Listwidget quick delay
|
// Listwidget quick delay
|
||||||
settings.setValue("listdelay", myListDelaySlider->getValue());
|
settings.setValue("listdelay", myListDelaySlider->getValue());
|
||||||
FileListWidget::setQuickSelectDelay(myListDelaySlider->getValue());
|
FileListWidget::setQuickSelectDelay(myListDelaySlider->getValue());
|
||||||
|
@ -429,6 +440,7 @@ void UIDialog::setDefaults()
|
||||||
myPalettePopup->setSelected("standard");
|
myPalettePopup->setSelected("standard");
|
||||||
myHidpiWidget->setState(false);
|
myHidpiWidget->setState(false);
|
||||||
myPositionPopup->setSelected("0");
|
myPositionPopup->setSelected("0");
|
||||||
|
myConfirmExitWidget->setState(false);
|
||||||
myListDelaySlider->setValue(300);
|
myListDelaySlider->setValue(300);
|
||||||
myWheelLinesSlider->setValue(4);
|
myWheelLinesSlider->setValue(4);
|
||||||
myDoubleClickSlider->setValue(500);
|
myDoubleClickSlider->setValue(500);
|
||||||
|
|
|
@ -66,6 +66,7 @@ class UIDialog : public Dialog, public CommandSender
|
||||||
PopUpWidget* myPalettePopup{nullptr};
|
PopUpWidget* myPalettePopup{nullptr};
|
||||||
CheckboxWidget* myHidpiWidget{nullptr};
|
CheckboxWidget* myHidpiWidget{nullptr};
|
||||||
PopUpWidget* myPositionPopup{nullptr};
|
PopUpWidget* myPositionPopup{nullptr};
|
||||||
|
CheckboxWidget* myConfirmExitWidget{nullptr};
|
||||||
SliderWidget* myListDelaySlider{nullptr};
|
SliderWidget* myListDelaySlider{nullptr};
|
||||||
SliderWidget* myWheelLinesSlider{nullptr};
|
SliderWidget* myWheelLinesSlider{nullptr};
|
||||||
SliderWidget* myControllerRateSlider{nullptr};
|
SliderWidget* myControllerRateSlider{nullptr};
|
||||||
|
|
|
@ -518,6 +518,8 @@
|
||||||
<ClCompile Include="..\gui\FileListWidget.cxx" />
|
<ClCompile Include="..\gui\FileListWidget.cxx" />
|
||||||
<ClCompile Include="..\gui\JoystickDialog.cxx" />
|
<ClCompile Include="..\gui\JoystickDialog.cxx" />
|
||||||
<ClCompile Include="..\gui\LoggerDialog.cxx" />
|
<ClCompile Include="..\gui\LoggerDialog.cxx" />
|
||||||
|
<ClCompile Include="..\gui\MessageDialog.cxx" />
|
||||||
|
<ClCompile Include="..\gui\MessageMenu.cxx" />
|
||||||
<ClCompile Include="..\gui\MinUICommandDialog.cxx" />
|
<ClCompile Include="..\gui\MinUICommandDialog.cxx" />
|
||||||
<ClCompile Include="..\gui\R77HelpDialog.cxx" />
|
<ClCompile Include="..\gui\R77HelpDialog.cxx" />
|
||||||
<ClCompile Include="..\gui\RadioButtonWidget.cxx" />
|
<ClCompile Include="..\gui\RadioButtonWidget.cxx" />
|
||||||
|
@ -1252,6 +1254,8 @@
|
||||||
<ClInclude Include="..\gui\FileListWidget.hxx" />
|
<ClInclude Include="..\gui\FileListWidget.hxx" />
|
||||||
<ClInclude Include="..\gui\JoystickDialog.hxx" />
|
<ClInclude Include="..\gui\JoystickDialog.hxx" />
|
||||||
<ClInclude Include="..\gui\LoggerDialog.hxx" />
|
<ClInclude Include="..\gui\LoggerDialog.hxx" />
|
||||||
|
<ClInclude Include="..\gui\MessageDialog.hxx" />
|
||||||
|
<ClInclude Include="..\gui\MessageMenu.hxx" />
|
||||||
<ClInclude Include="..\gui\MinUICommandDialog.hxx" />
|
<ClInclude Include="..\gui\MinUICommandDialog.hxx" />
|
||||||
<ClInclude Include="..\gui\R77HelpDialog.hxx" />
|
<ClInclude Include="..\gui\R77HelpDialog.hxx" />
|
||||||
<ClInclude Include="..\gui\RadioButtonWidget.hxx" />
|
<ClInclude Include="..\gui\RadioButtonWidget.hxx" />
|
||||||
|
|
|
@ -999,6 +999,12 @@
|
||||||
<ClCompile Include="..\emucore\Lightgun.cxx">
|
<ClCompile Include="..\emucore\Lightgun.cxx">
|
||||||
<Filter>Source Files\emucore</Filter>
|
<Filter>Source Files\emucore</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\gui\MessageMenu.cxx">
|
||||||
|
<Filter>Source Files\gui</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\gui\MessageDialog.cxx">
|
||||||
|
<Filter>Source Files\gui</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="..\common\bspf.hxx">
|
<ClInclude Include="..\common\bspf.hxx">
|
||||||
|
@ -2042,6 +2048,12 @@
|
||||||
<ClInclude Include="..\emucore\Lightgun.hxx">
|
<ClInclude Include="..\emucore\Lightgun.hxx">
|
||||||
<Filter>Header Files\emucore</Filter>
|
<Filter>Header Files\emucore</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\gui\MessageMenu.hxx">
|
||||||
|
<Filter>Header Files\gui</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\gui\MessageDialog.hxx">
|
||||||
|
<Filter>Header Files\gui</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="stella.ico">
|
<None Include="stella.ico">
|
||||||
|
|
Loading…
Reference in New Issue