[Scummvm-git-logs] scummvm master -> 5b0e4650016791ad95dd888548f27be22c843e8b
sev-
sev at scummvm.org
Wed Oct 2 13:39:29 CEST 2019
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a49fd0dd5e GRAPHICS: MACGUI: Read nested submenus from PE exes
6dee083352 GRAPHICS: MACGUI: Added debug printout for MacMenu
5b0e465001 GRAPHICS: MACGUI: Fix debug menu printing
Commit: a49fd0dd5e2c578399858e1687f45dff056dc964
https://github.com/scummvm/scummvm/commit/a49fd0dd5e2c578399858e1687f45dff056dc964
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-02T12:40:57+02:00
Commit Message:
GRAPHICS: MACGUI: Read nested submenus from PE exes
Changed paths:
graphics/macgui/macmenu.cpp
graphics/macgui/macmenu.h
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 522144f..c22e3a0 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -21,6 +21,7 @@
*/
#include "common/system.h"
+#include "common/stack.h"
#include "common/keyboard.h"
#include "common/macresman.h"
@@ -218,6 +219,8 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
MacMenu *menu = wm->addMenu();
+ Common::Stack<MacMenuSubMenu *> menus;
+
int depth = 0;
int curMenuItemId = 0;
int action = 0;
@@ -228,11 +231,19 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
if (flags & kPopUp) {
if (depth == 0) {
menu->addMenuItem(readUnicodeString(menuData));
+
+ MacMenuSubMenu *submenu = menu->addSubMenu(nullptr);
+ menus.push(submenu);
} else {
- // TODO
- // for now skip
- readUnicodeString(menuData);
+ MacMenuSubMenu *submenu = menu->addSubMenu(menus.size() ? menus.top() : nullptr);
+
+ menus.push(submenu);
+
+ Common::U32String name = readUnicodeString(menuData);
+ menu->addSubMenuItem(submenu, name, action);
+ action++;
}
+
if (lastPopUp) {
lastPopUpCopy = lastPopUp;
}
@@ -242,13 +253,15 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
} else {
menuData->readUint16LE(); // menu id
Common::U32String name = readUnicodeString(menuData);
- if (depth == 1) {
- menu->addMenuSubItem(curMenuItemId, name, action);
+ if (depth > 0) {
+ menu->addSubMenuItem(menus.top(), name, action);
}
if (!name.empty()) {
action++;
}
if (flags & kEndMenu) {
+ menus.pop();
+
if (lastPopUp)
depth -= 2;
else
@@ -303,6 +316,14 @@ int MacMenu::addMenuItem(const Common::U32String &name) {
return _items.size() - 1;
}
+MacMenuSubMenu *MacMenu::addSubMenu(MacMenuSubMenu *submenu) {
+ if (submenu == nullptr) {
+ return (_items.back()->submenu = new MacMenuSubMenu());
+ } else {
+ return (submenu->subitems.back()->submenu = new MacMenuSubMenu());
+ }
+}
+
void MacMenu::addMenuSubItem(int id, const Common::String &text, int action, int style, char shortcut, bool enabled) {
if (_items[id]->submenu == nullptr)
_items[id]->submenu = new MacMenuSubMenu();
@@ -321,6 +342,22 @@ void MacMenu::addMenuSubItem(int id, const Common::U32String &text, int action,
calcSubMenuBounds(_items[id]->submenu, _items[id]->bbox.left - 1, _items[id]->bbox.bottom + 1);
}
+void MacMenu::addSubMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int action, int style, char shortcut, bool enabled) {
+ assert(submenu != nullptr);
+
+ submenu->subitems.push_back(new MacMenuSubItem(text, action, style, shortcut, enabled));
+
+ calcSubMenuBounds(submenu, 0, 0); // FIXME
+}
+
+void MacMenu::addSubMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int action, int style, char shortcut, bool enabled) {
+ assert(submenu != nullptr);
+
+ submenu->subitems.push_back(new MacMenuSubItem(text, action, style, shortcut, enabled));
+
+ calcSubMenuBounds(submenu, 0, 0); // FIXME
+}
+
void MacMenu::calcDimensions() {
// Calculate menu dimensions
int y = 1;
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 2ff2bf0..012ea5f 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -59,10 +59,13 @@ public:
void addStaticMenus(const MacMenuData *data);
void calcDimensions();
+ MacMenuSubMenu *addSubMenu(MacMenuSubMenu *submenu);
int addMenuItem(const Common::String &name);
int addMenuItem(const Common::U32String &name);
void addMenuSubItem(int id, const Common::String &text, int action, int style = 0, char shortcut = 0, bool enabled = true);
void addMenuSubItem(int id, const Common::U32String &text, int action, int style = 0, char shortcut = 0, bool enabled = true);
+ void addSubMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int action, int style = 0, char shortcut = 0, bool enabled = true);
+ void addSubMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int action, int style = 0, char shortcut = 0, bool enabled = true);
void loadMenuResource(Common::MacResManager *resFork, uint16 id);
void loadMenuBarResource(Common::MacResManager *resFork, uint16 id);
void createSubMenuFromString(int id, const char *string, int commandId);
Commit: 6dee0833520e06a8e97a85c3c76122d0af38d89f
https://github.com/scummvm/scummvm/commit/6dee0833520e06a8e97a85c3c76122d0af38d89f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-02T12:41:45+02:00
Commit Message:
GRAPHICS: MACGUI: Added debug printout for MacMenu
Changed paths:
graphics/macgui/macmenu.cpp
graphics/macgui/macmenu.h
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index c22e3a0..81208c0 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -276,9 +276,33 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
}
}
delete menuData;
+
+ menu->printMenu();
+
return menu;
}
+void MacMenu::printMenu(int level, MacMenuSubMenu *submenu) {
+ if (!level) {
+ for (int i = 0; i < _items.size(); i++) {
+ debug("%s", _items[i]->unicode ? convertFromU32String(_items[i]->unicodeName).c_str() : _items[i]->name.c_str());
+
+ if (_items[i]->submenu != nullptr)
+ printMenu(level + 1, _items[i]->submenu);
+ }
+ } else {
+ for (int j = 0; j < level; j++)
+ debugN(" ");
+
+ for (int i = 0; i < submenu->subitems.size(); i++) {
+ debug("%s", submenu->subitems[i]->unicode ? convertFromU32String(submenu->subitems[i]->unicodeText).c_str() : submenu->subitems[i]->text.c_str());
+
+ if (submenu->subitems[i]->submenu != nullptr)
+ printMenu(level + 1, submenu->subitems[i]->submenu);
+ }
+ }
+}
+
void MacMenu::addStaticMenus(const MacMenuData *data) {
MacMenuItem *about = new MacMenuItem(_wm->_fontMan->hasBuiltInFonts() ? "\xa9" : "\xf0"); // (c) Symbol as the most resembling apple
_items.push_back(about);
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 012ea5f..1239ceb 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -107,6 +107,8 @@ private:
void drawSubMenuArrow(ManagedSurface *dst, int x, int y, int color);
+ void printMenu(int level = 0, MacMenuSubMenu *submenu = nullptr);
+
Common::Array<MacMenuItem *> _items;
const Font *_font;
Commit: 5b0e4650016791ad95dd888548f27be22c843e8b
https://github.com/scummvm/scummvm/commit/5b0e4650016791ad95dd888548f27be22c843e8b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-02T13:38:28+02:00
Commit Message:
GRAPHICS: MACGUI: Fix debug menu printing
Changed paths:
graphics/macgui/macmenu.cpp
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 81208c0..839404d 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -285,16 +285,17 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
void MacMenu::printMenu(int level, MacMenuSubMenu *submenu) {
if (!level) {
for (int i = 0; i < _items.size(); i++) {
- debug("%s", _items[i]->unicode ? convertFromU32String(_items[i]->unicodeName).c_str() : _items[i]->name.c_str());
+ debug("0. %s", _items[i]->unicode ? convertFromU32String(_items[i]->unicodeName).c_str() : _items[i]->name.c_str());
if (_items[i]->submenu != nullptr)
printMenu(level + 1, _items[i]->submenu);
}
} else {
- for (int j = 0; j < level; j++)
- debugN(" ");
-
for (int i = 0; i < submenu->subitems.size(); i++) {
+ debugN("%d. ", level);
+ for (int j = 0; j < level; j++)
+ debugN(" ");
+
debug("%s", submenu->subitems[i]->unicode ? convertFromU32String(submenu->subitems[i]->unicodeText).c_str() : submenu->subitems[i]->text.c_str());
if (submenu->subitems[i]->submenu != nullptr)
More information about the Scummvm-git-logs
mailing list