[Scummvm-git-logs] scummvm master -> fea19c69af3e27bd0ee73889fcd30a043f1ce677
sev-
sev at scummvm.org
Wed Aug 18 20:34:07 UTC 2021
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6a68d8b7e5 ENGINES: Do not assume that MessageDialog accept is 1 and cancel is 0
1c5c366649 GUI: Swap OK/Alt values in MessageDialog
0d17d142e4 GUI: Wrap very long lines in MessageDialog
fea19c69af GUI: Support multiple alt buttons in MessageDialog
Commit: 6a68d8b7e52d2ad17e2c4d14321dac6b6dcb477d
https://github.com/scummvm/scummvm/commit/6a68d8b7e52d2ad17e2c4d14321dac6b6dcb477d
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-08-18T22:34:02+02:00
Commit Message:
ENGINES: Do not assume that MessageDialog accept is 1 and cancel is 0
Use the enum everywhere.
A follow-up commit will change the order.
Also reduce the use of kMessageCancel to minimum.
Changed paths:
engines/drascula/saveload.cpp
engines/grim/grim.cpp
engines/kyra/gui/saveload_eob.cpp
engines/mohawk/myst_stacks/menu.cpp
engines/mohawk/riven_stacks/aspit.cpp
engines/parallaction/saveload.cpp
engines/sword1/control.cpp
diff --git a/engines/drascula/saveload.cpp b/engines/drascula/saveload.cpp
index 17b467e4a0..7305f92197 100644
--- a/engines/drascula/saveload.cpp
+++ b/engines/drascula/saveload.cpp
@@ -49,7 +49,7 @@ void DrasculaEngine::checkForOldSaveGames() {
"Press OK to convert them now, otherwise you will be asked again the next time you start the game.\n"), _("OK"), _("Cancel"));
int choice = dialog0.runModal();
- if (choice == GUI::kMessageCancel)
+ if (choice != GUI::kMessageOK)
return;
// Convert every save slot we find in the index file to the new format
diff --git a/engines/grim/grim.cpp b/engines/grim/grim.cpp
index 64292583b1..de14235f86 100644
--- a/engines/grim/grim.cpp
+++ b/engines/grim/grim.cpp
@@ -348,7 +348,7 @@ Common::Error GrimEngine::run() {
GType_MONKEY4 == getGameType() ? "Escape From Monkey Island" : "Grim Fandango"
);
GUI::MessageDialog msg(confirmString, _("Yes"), _("No"));
- if (!msg.runModal()) {
+ if (msg.runModal() != GUI::kMessageOK) {
return Common::kUserCanceled;
}
}
diff --git a/engines/kyra/gui/saveload_eob.cpp b/engines/kyra/gui/saveload_eob.cpp
index b4fdfb73c1..ea25438f6d 100644
--- a/engines/kyra/gui/saveload_eob.cpp
+++ b/engines/kyra/gui/saveload_eob.cpp
@@ -594,7 +594,7 @@ bool EoBCoreEngine::importOriginalSaveFile(int destSlot, const char *sourceFile)
delete fs;
::GUI::MessageDialog dialog(Common::U32String::format(_("The following original saved game file has been found in your game path:\n\n%s %s\n\nDo you wish to use this saved game file with ScummVM?\n\n"), temp.c_str(), dsc.c_str()), _("Yes"), _("No"));
- if (dialog.runModal())
+ if (dialog.runModal() == ::GUI::kMessageOK)
origFiles.push_back(temp);
}
}
@@ -627,7 +627,7 @@ bool EoBCoreEngine::importOriginalSaveFile(int destSlot, const char *sourceFile)
if (destSlot != -1) {
if (Common::find(_gui->_saveSlots.begin(), _gui->_saveSlots.end(), destSlot) != _gui->_saveSlots.end()) {
::GUI::MessageDialog dialog(Common::U32String::format(_("A saved game file was found in the specified slot %d. Overwrite?\n\n"), destSlot), _("Yes"), _("No"));
- if (!dialog.runModal())
+ if (dialog.runModal() != ::GUI::kMessageOK)
return false;
}
}
diff --git a/engines/mohawk/myst_stacks/menu.cpp b/engines/mohawk/myst_stacks/menu.cpp
index 77429ac823..2f665d43d3 100644
--- a/engines/mohawk/myst_stacks/menu.cpp
+++ b/engines/mohawk/myst_stacks/menu.cpp
@@ -375,7 +375,7 @@ bool Menu::showConfirmationDialog(const Common::U32String &message, const Common
GUI::MessageDialog dialog(message, confirmButton, cancelButton);
- return dialog.runModal() !=0;
+ return dialog.runModal() == GUI::kMessageOK;
}
void Menu::resetButtons() {
diff --git a/engines/mohawk/riven_stacks/aspit.cpp b/engines/mohawk/riven_stacks/aspit.cpp
index 5bed1abd3a..e49334138b 100644
--- a/engines/mohawk/riven_stacks/aspit.cpp
+++ b/engines/mohawk/riven_stacks/aspit.cpp
@@ -394,7 +394,7 @@ bool ASpit::showConfirmationDialog(const Common::U32String &message, const Commo
GUI::MessageDialog dialog(message, confirmButton, cancelButton);
- return dialog.runModal() != 0;
+ return dialog.runModal() == GUI::kMessageOK;
}
void ASpit::xadisablemenureturn(const ArgumentArray &args) {
diff --git a/engines/parallaction/saveload.cpp b/engines/parallaction/saveload.cpp
index 57a9aa7798..5e2ea106f6 100644
--- a/engines/parallaction/saveload.cpp
+++ b/engines/parallaction/saveload.cpp
@@ -270,7 +270,7 @@ static bool askRenameOldSavefiles() {
"The old names are no longer supported, so you will not be able to load your games if you don't convert them.\n\n"
"Press OK to convert them now, otherwise you will be asked next time.\n"), _("OK"), _("Cancel"));
- return (dialog0.runModal() != 0);
+ return (dialog0.runModal() == GUI::kMessageOK);
}
void SaveLoad_ns::renameOldSavefiles() {
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp
index 2b8f533428..e804fdfdd6 100644
--- a/engines/sword1/control.cpp
+++ b/engines/sword1/control.cpp
@@ -889,7 +889,7 @@ void Control::checkForOldSaveGames() {
"Press OK to convert them now, otherwise you will be asked again the next time you start the game.\n"), _("OK"), _("Cancel"));
int choice = dialog0.runModal();
- if (choice == GUI::kMessageCancel) {
+ if (choice != GUI::kMessageOK) {
// user pressed cancel
return;
}
Commit: 1c5c366649621ea74916bc61fe40966f4584642c
https://github.com/scummvm/scummvm/commit/1c5c366649621ea74916bc61fe40966f4584642c
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-08-18T22:34:02+02:00
Commit Message:
GUI: Swap OK/Alt values in MessageDialog
A follow-up commit adds support for multiple alternatives, so OK has to
come first.
Changed paths:
engines/sword1/control.cpp
engines/testbed/testsuite.h
gui/message.cpp
gui/message.h
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp
index e804fdfdd6..19772190d0 100644
--- a/engines/sword1/control.cpp
+++ b/engines/sword1/control.cpp
@@ -1264,7 +1264,7 @@ bool Control::convertSaveGame(uint8 slot, char *desc) {
GUI::MessageDialog dialog0(msg, _("Keep the old one"), _("Keep the new one"));
int choice = dialog0.runModal();
- if (choice == GUI::kMessageCancel) {
+ if (choice == GUI::kMessageAlt) {
// User chose to keep the new game, so delete the old one
_saveFileMan->removeSavefile(oldFileName);
return true;
diff --git a/engines/testbed/testsuite.h b/engines/testbed/testsuite.h
index a2c34928fe..26844dcfeb 100644
--- a/engines/testbed/testsuite.h
+++ b/engines/testbed/testsuite.h
@@ -44,8 +44,8 @@ enum {
};
enum OptionSelected {
- kOptionLeft = 1,
- kOptionRight = 0
+ kOptionLeft = 0,
+ kOptionRight = 1
};
enum {
diff --git a/gui/message.cpp b/gui/message.cpp
index dbbac8bd5d..ea85111085 100644
--- a/gui/message.cpp
+++ b/gui/message.cpp
@@ -31,8 +31,8 @@
namespace GUI {
enum {
- kOkCmd = 'OK ',
- kCancelCmd = 'CNCL'
+ kDefaultCmd = 'DFLT',
+ kAltCmd = 'ALTC'
};
@@ -92,12 +92,12 @@ void MessageDialog::init(const Common::U32String &message, const Common::U32Stri
if (!defaultButton.empty()) {
// Confirm dialog
- new ButtonWidget(this, okButtonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, defaultButton, Common::U32String(), kOkCmd, Common::ASCII_RETURN);
+ new ButtonWidget(this, okButtonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, defaultButton, Common::U32String(), kDefaultCmd, Common::ASCII_RETURN);
}
if (!altButton.empty()) {
// Cancel dialog
- new ButtonWidget(this, cancelButtonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, altButton, Common::U32String(), kCancelCmd, Common::ASCII_ESCAPE);
+ new ButtonWidget(this, cancelButtonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, altButton, Common::U32String(), kAltCmd, Common::ASCII_ESCAPE);
}
}
@@ -115,17 +115,17 @@ MessageDialog::MessageDialog(const Common::String &message, const Common::String
void MessageDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
// FIXME: It's a really bad thing that we use two arbitrary constants
- if (cmd == kOkCmd) {
+ if (cmd == kDefaultCmd) {
setResult(kMessageOK);
close();
- } else if (cmd == kCancelCmd) {
+ } else if (cmd == kAltCmd) {
if (_url) {
if (g_system->hasFeature(OSystem::kFeatureOpenUrl))
g_system->openUrl(_url);
setResult(kMessageOK);
} else {
- setResult(kMessageCancel);
+ setResult(kMessageAlt);
}
close();
} else {
diff --git a/gui/message.h b/gui/message.h
index cff9b86f43..4a534f1a7a 100644
--- a/gui/message.h
+++ b/gui/message.h
@@ -31,8 +31,8 @@ namespace GUI {
class CommandSender;
enum {
- kMessageOK = 1,
- kMessageCancel = 0
+ kMessageOK = 0,
+ kMessageAlt = 1
};
Commit: 0d17d142e4b9e1c23a9a79c02544e788a74fe022
https://github.com/scummvm/scummvm/commit/0d17d142e4b9e1c23a9a79c02544e788a74fe022
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-08-18T22:34:02+02:00
Commit Message:
GUI: Wrap very long lines in MessageDialog
Changed paths:
gui/message.cpp
gui/message.h
diff --git a/gui/message.cpp b/gui/message.cpp
index ea85111085..656c271bbc 100644
--- a/gui/message.cpp
+++ b/gui/message.cpp
@@ -39,7 +39,11 @@ enum {
// TODO: The default button should be visibly distinct from the alternate button
-void MessageDialog::init(const Common::U32String &message, const Common::U32String &defaultButton, const Common::U32String &altButton, Graphics::TextAlign alignment, const char *url) {
+void MessageDialog::init(const Common::U32String &message,
+ const Common::U32String &defaultButton,
+ const Common::U32String &altButton,
+ Graphics::TextAlign alignment,
+ const char *url) {
_url = url;
const int screenW = g_system->getOverlayWidth();
@@ -101,13 +105,21 @@ void MessageDialog::init(const Common::U32String &message, const Common::U32Stri
}
}
-MessageDialog::MessageDialog(const Common::U32String &message, const Common::U32String &defaultButton, const Common::U32String &altButton, Graphics::TextAlign alignment, const char *url)
+MessageDialog::MessageDialog(const Common::U32String &message,
+ const Common::U32String &defaultButton,
+ const Common::U32String &altButton,
+ Graphics::TextAlign alignment,
+ const char *url)
: Dialog(30, 20, 260, 124) {
init(message, defaultButton, altButton, alignment, url);
}
-MessageDialog::MessageDialog(const Common::String &message, const Common::String &defaultButton, const Common::String &altButton, Graphics::TextAlign alignment, const char *url)
+MessageDialog::MessageDialog(const Common::String &message,
+ const Common::String &defaultButton,
+ const Common::String &altButton,
+ Graphics::TextAlign alignment,
+ const char *url)
: Dialog(30, 20, 260, 124) {
init(Common::U32String(message), Common::U32String(defaultButton), Common::U32String(altButton), alignment, url);
diff --git a/gui/message.h b/gui/message.h
index 4a534f1a7a..87c22cd0dd 100644
--- a/gui/message.h
+++ b/gui/message.h
@@ -41,13 +41,25 @@ enum {
*/
class MessageDialog : public Dialog {
public:
- MessageDialog(const Common::U32String &message, const Common::U32String &defaultButton = Common::U32String("OK"), const Common::U32String &altButton = Common::U32String(), Graphics::TextAlign alignment = Graphics::kTextAlignCenter, const char *url = nullptr);
- MessageDialog(const Common::String &message, const Common::String &defaultButton = "OK", const Common::String &altButton = "", Graphics::TextAlign alignment = Graphics::kTextAlignCenter, const char *url = nullptr);
+ MessageDialog(const Common::U32String &message,
+ const Common::U32String &defaultButton = Common::U32String("OK"),
+ const Common::U32String &altButton = Common::U32String(),
+ Graphics::TextAlign alignment = Graphics::kTextAlignCenter,
+ const char *url = nullptr);
+ MessageDialog(const Common::String &message,
+ const Common::String &defaultButton = "OK",
+ const Common::String &altButton = Common::String(),
+ Graphics::TextAlign alignment = Graphics::kTextAlignCenter,
+ const char *url = nullptr);
void handleCommand(CommandSender *sender, uint32 cmd, uint32 data) override;
private:
const char *_url;
- void init(const Common::U32String &message, const Common::U32String &defaultButton, const Common::U32String &altButton, Graphics::TextAlign alignment, const char *url);
+ void init(const Common::U32String &message,
+ const Common::U32String &defaultButton,
+ const Common::U32String &altButton,
+ Graphics::TextAlign alignment,
+ const char *url);
};
/**
Commit: fea19c69af3e27bd0ee73889fcd30a043f1ce677
https://github.com/scummvm/scummvm/commit/fea19c69af3e27bd0ee73889fcd30a043f1ce677
Author: Orgad Shaneh (orgads at gmail.com)
Date: 2021-08-18T22:34:02+02:00
Commit Message:
GUI: Support multiple alt buttons in MessageDialog
Changed paths:
gui/message.cpp
gui/message.h
diff --git a/gui/message.cpp b/gui/message.cpp
index 656c271bbc..eb4abaabf3 100644
--- a/gui/message.cpp
+++ b/gui/message.cpp
@@ -41,7 +41,7 @@ enum {
void MessageDialog::init(const Common::U32String &message,
const Common::U32String &defaultButton,
- const Common::U32String &altButton,
+ const Common::U32StringArray &altButtons,
Graphics::TextAlign alignment,
const char *url) {
_url = url;
@@ -57,19 +57,19 @@ void MessageDialog::init(const Common::U32String &message,
// Using this, and accounting for the space the button(s) need, we can set
// the real size of the dialog
Common::Array<Common::U32String> lines;
- int lineCount, okButtonPos, cancelButtonPos;
+ int lineCount;
int maxlineWidth = g_gui.getFont().wordWrapText(message, screenW - 2 * 20, lines);
+ const int buttonCount = altButtons.size() + 1;
+ const int buttonSpacing = 10;
+ const int buttonsTotalWidth = buttonCount * buttonWidth + (buttonCount - 1) * buttonSpacing;
// Calculate the desired dialog size (maxing out at 300*180 for now)
- if (!altButton.empty())
- _w = MAX(maxlineWidth, (2 * buttonWidth) + 10) + 20;
- else
- _w = MAX(maxlineWidth, buttonWidth) + 20;
+ _w = MAX(maxlineWidth, buttonsTotalWidth + 20);
lineCount = lines.size();
_h = 16;
- if (!defaultButton.empty() || !altButton.empty())
+ if (!defaultButton.empty() || !altButtons.empty())
_h += buttonHeight + 8;
// Limit the number of lines so that the dialog still fits on the screen.
@@ -87,21 +87,20 @@ void MessageDialog::init(const Common::U32String &message,
new StaticTextWidget(this, 10, 10 + i * kLineHeight, maxlineWidth, kLineHeight, lines[i], alignment);
}
- if (!defaultButton.empty() && !altButton.empty()) {
- okButtonPos = (_w - (buttonWidth * 2)) / 2;
- cancelButtonPos = ((_w - (buttonWidth * 2)) / 2) + buttonWidth + 10;
- } else {
- okButtonPos = cancelButtonPos = (_w - buttonWidth) / 2;
- }
+ // Assume defaultButton is always given
+ int buttonPos = (_w - buttonsTotalWidth) / 2;
if (!defaultButton.empty()) {
// Confirm dialog
- new ButtonWidget(this, okButtonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, defaultButton, Common::U32String(), kDefaultCmd, Common::ASCII_RETURN);
+ new ButtonWidget(this, buttonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, defaultButton, Common::U32String(), kDefaultCmd, Common::ASCII_RETURN);
+ buttonPos += buttonWidth + buttonSpacing;
}
- if (!altButton.empty()) {
- // Cancel dialog
- new ButtonWidget(this, cancelButtonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, altButton, Common::U32String(), kAltCmd, Common::ASCII_ESCAPE);
+ int buttonHotKey = altButtons.size() == 1 ? Common::ASCII_ESCAPE : 0;
+ for (size_t i = 0, total = altButtons.size(); i < total; ++i) {
+ new ButtonWidget(this, buttonPos, _h - buttonHeight - 8, buttonWidth, buttonHeight, altButtons[i], Common::U32String(), kAltCmd + i, buttonHotKey);
+ buttonHotKey = 0;
+ buttonPos += buttonWidth + buttonSpacing;
}
}
@@ -112,7 +111,9 @@ MessageDialog::MessageDialog(const Common::U32String &message,
const char *url)
: Dialog(30, 20, 260, 124) {
- init(message, defaultButton, altButton, alignment, url);
+ init(message, defaultButton,
+ altButton.empty() ? Common::U32StringArray() : Common::U32StringArray(1, altButton),
+ alignment, url);
}
MessageDialog::MessageDialog(const Common::String &message,
@@ -122,22 +123,34 @@ MessageDialog::MessageDialog(const Common::String &message,
const char *url)
: Dialog(30, 20, 260, 124) {
- init(Common::U32String(message), Common::U32String(defaultButton), Common::U32String(altButton), alignment, url);
+ init(Common::U32String(message), Common::U32String(defaultButton),
+ altButton.empty() ? Common::U32StringArray() : Common::U32StringArray(1, Common::U32String(altButton)),
+ alignment, url);
+}
+
+MessageDialog::MessageDialog(const Common::U32String &message,
+ const Common::U32String &defaultButton,
+ const Common::U32StringArray &altButtons,
+ Graphics::TextAlign alignment)
+ : Dialog(30, 20, 260, 124) {
+
+ init(message, defaultButton, altButtons, alignment, nullptr);
}
void MessageDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
- // FIXME: It's a really bad thing that we use two arbitrary constants
if (cmd == kDefaultCmd) {
setResult(kMessageOK);
close();
- } else if (cmd == kAltCmd) {
+ return;
+ }
+ if (cmd >= kAltCmd) {
if (_url) {
if (g_system->hasFeature(OSystem::kFeatureOpenUrl))
g_system->openUrl(_url);
setResult(kMessageOK);
} else {
- setResult(kMessageAlt);
+ setResult(kMessageAlt + cmd - kAltCmd);
}
close();
} else {
diff --git a/gui/message.h b/gui/message.h
index 87c22cd0dd..db5e1b1b29 100644
--- a/gui/message.h
+++ b/gui/message.h
@@ -25,6 +25,7 @@
#include "gui/dialog.h"
#include "common/str.h"
+#include "common/str-array.h"
namespace GUI {
@@ -51,13 +52,17 @@ public:
const Common::String &altButton = Common::String(),
Graphics::TextAlign alignment = Graphics::kTextAlignCenter,
const char *url = nullptr);
+ MessageDialog(const Common::U32String &message,
+ const Common::U32String &defaultButton,
+ const Common::U32StringArray &altButtons,
+ Graphics::TextAlign alignment = Graphics::kTextAlignCenter);
void handleCommand(CommandSender *sender, uint32 cmd, uint32 data) override;
private:
const char *_url;
void init(const Common::U32String &message,
const Common::U32String &defaultButton,
- const Common::U32String &altButton,
+ const Common::U32StringArray &altButtons,
Graphics::TextAlign alignment,
const char *url);
};
More information about the Scummvm-git-logs
mailing list