[Scummvm-git-logs] scummvm master -> 727ea4368bcdade6c739c2ca6470a90cc2359bbc
ysj1173886760
42030331+ysj1173886760 at users.noreply.github.com
Thu Jul 29 11:49:15 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
66fb967d56 GRAPHICS: MACGUI: support setting action id for macmenuItem
727ea4368b DIRECTOR: implement setting script for menu item.
Commit: 66fb967d563bc0b37c8deb6b426ca5028c4293df
https://github.com/scummvm/scummvm/commit/66fb967d563bc0b37c8deb6b426ca5028c4293df
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-07-29T19:48:42+08:00
Commit Message:
GRAPHICS: MACGUI: support setting action id for macmenuItem
Changed paths:
graphics/macgui/macmenu.cpp
graphics/macgui/macmenu.h
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 2377058c9e..65a9e2f09f 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -540,6 +540,22 @@ void MacMenu::setName(int menuId, int itemId, const Common::String &name) {
}
}
+void MacMenu::setAction(const Common::String &menuId, const Common::String &itemId, int actionId) {
+ MacMenuItem *item = findMenuItem(menuId, itemId);
+
+ if (item) {
+ item->action = actionId;
+ }
+}
+
+void MacMenu::setAction(int menuId, int itemId, int actionId) {
+ MacMenuItem *item = findMenuItem(menuId, itemId);
+
+ if (item) {
+ item->action = actionId;
+ }
+}
+
MacMenuItem *MacMenu::findMenuItem(const Common::String &menuId, const Common::String &itemId) {
// TODO: support arbitrary level menu item finding
// only support 2 level finding now.
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index f3852442f9..16900fc605 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -98,11 +98,13 @@ public:
bool checkIntersects(Common::Rect &rect);
void setCheckMark(const Common::String &menuId, const Common::String &itemId, bool checkMark);
- void setEnabled(const Common::String &menuId, const Common::String &itemId, bool enabled);
- void setName(const Common::String &menuId, const Common::String &itemId, const Common::String &name);
void setCheckMark(int menuId, int itemId, bool checkMark);
+ void setEnabled(const Common::String &menuId, const Common::String &itemId, bool enabled);
void setEnabled(int menuId, int itemId, bool enabled);
+ void setName(const Common::String &menuId, const Common::String &itemId, const Common::String &name);
void setName(int menuId, int itemId, const Common::String &name);
+ void setAction(const Common::String &menuId, const Common::String &itemId, int actionId);
+ void setAction(int menuId, int itemId, int actionId);
Common::Rect _bbox;
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index e2b393f5a2..fc26839637 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -474,6 +474,22 @@ void MacWindowManager::setMenuItemName(int menuId, int itemId, const Common::Str
}
}
+void MacWindowManager::setMenuItemAction(const Common::String &menuId, const Common::String &itemId, int actionId) {
+ if (_menu) {
+ _menu->setAction(menuId, itemId, actionId);
+ } else {
+ warning("MacWindowManager::setMenuItemAction: wm doesn't have menu");
+ }
+}
+
+void MacWindowManager::setMenuItemAction(int menuId, int itemId, int actionId) {
+ if (_menu) {
+ _menu->setAction(menuId, itemId, actionId);
+ } else {
+ warning("MacWindowManager::setMenuItemAction: wm doesn't have menu");
+ }
+}
+
// this is refer to how we deal U32String in splitString in mactext
// maybe we can optimize this specifically
Common::U32String stripFormat(const Common::U32String &str) {
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index c74339e916..9eaac3d0be 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -340,6 +340,8 @@ public:
void setMenuItemCheckMark(int menuId, int itemId, bool checkMark);
void setMenuItemEnabled(int menuId, int itemId, bool enabled);
void setMenuItemName(int menuId, int itemId, const Common::String &name);
+ void setMenuItemAction(const Common::String &menuId, const Common::String &itemId, int actionId);
+ void setMenuItemAction(int menuId, int itemId, int actionId);
public:
MacFontManager *_fontMan;
Commit: 727ea4368bcdade6c739c2ca6470a90cc2359bbc
https://github.com/scummvm/scummvm/commit/727ea4368bcdade6c739c2ca6470a90cc2359bbc
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-07-29T19:48:42+08:00
Commit Message:
DIRECTOR: implement setting script for menu item.
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 291ef3775c..5e2994938c 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1107,6 +1107,10 @@ Datum Lingo::getTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &m
}
void Lingo::setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d) {
+ // only used in kTheScript
+ LingoArchive *mainArchive = g_director->getCurrentMovie()->getMainLingoArch();
+ int commandId = 100;
+
switch(field) {
case kTheCheckMark:
if (menuId.type == STRING && menuItemId.type == STRING)
@@ -1133,7 +1137,16 @@ void Lingo::setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &me
warning("Lingo::setTheMenuItemEntity(): Unprocessed setting field \"%s\" of entity %s", field2str(field), entity2str(entity));
break;
case kTheScript:
- warning("Lingo::setTheMenuItemEntity(): Unprocessed setting field \"%s\" of entity %s", field2str(field), entity2str(entity));
+ while (mainArchive->getScriptContext(kEventScript, commandId))
+ commandId++;
+ mainArchive->addCode(d.asString(), kEventScript, commandId);
+
+ if (menuId.type == STRING && menuItemId.type == STRING)
+ g_director->_wm->setMenuItemAction(menuId.asString(), menuItemId.asString(), commandId);
+ else if (menuId.type == INT && menuItemId.type == INT)
+ g_director->_wm->setMenuItemAction(menuId.asInt() - 1, menuItemId.asInt() - 1, commandId);
+ else
+ warning("Lingo::setTheMenuItemEntity(): Unprocessed setting field \"%s\" of entity %s", field2str(field), entity2str(entity));
break;
default:
warning("Lingo::setTheMenuItemEntity(): Unprocessed setting field \"%s\" of entity %s", field2str(field), entity2str(entity));
More information about the Scummvm-git-logs
mailing list