[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