mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-26 06:18:23 +00:00
GRAPHICS: MACGUI: add functions for setting member checkMark and Enable of menuItem
This commit is contained in:
parent
c57c7b11b2
commit
53fd14b283
@ -486,6 +486,61 @@ void MacMenu::loadMenuBarResource(Common::MacResManager *resFork, uint16 id) {
|
||||
}
|
||||
}
|
||||
|
||||
void MacMenu::setCheckMark(const Common::String &menuId, const Common::String &itemId, bool checkMark) {
|
||||
MacMenuItem *item = findMenuItem(menuId, itemId);
|
||||
|
||||
if (item) {
|
||||
item->checked = checkMark;
|
||||
_contentIsDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
void MacMenu::setEnabled(const Common::String &menuId, const Common::String &itemId, bool enabled) {
|
||||
MacMenuItem *item = findMenuItem(menuId, itemId);
|
||||
|
||||
if (item) {
|
||||
item->enabled = enabled;
|
||||
_contentIsDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
MacMenuItem *MacMenu::findMenuItem(const Common::String &menuId, const Common::String &itemId) {
|
||||
// TODO: support arbitrary level menu item finding
|
||||
// only support 2 level finding now.
|
||||
|
||||
MacMenuItem *menu = nullptr;
|
||||
for (uint i = 0; i < _items.size(); i++) {
|
||||
// TODO: support unicode text menu
|
||||
// didn't support unicode item finding yet
|
||||
if (!_items[i]->unicode) {
|
||||
if (_items[i]->text.equalsIgnoreCase(menuId)) {
|
||||
menu = _items[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!menu) {
|
||||
warning("MacMenu::findMenuItem: can not find menu with id %s", menuId.c_str());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!menu->submenu) {
|
||||
warning("MacMenu::findMenuItem: menu %s doesn't have submenu", menuId.c_str());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
for (uint i = 0; i < menu->submenu->items.size(); i++) {
|
||||
if (!menu->submenu->items[i]->unicode) {
|
||||
if (menu->submenu->items[i]->text.equalsIgnoreCase(itemId))
|
||||
return menu->submenu->items[i];
|
||||
}
|
||||
}
|
||||
|
||||
warning("MacMenu::findMenuItem: menu %s doesn't have item with id %s", menuId.c_str(), itemId.c_str());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void MacMenu::clearSubMenu(int id) {
|
||||
MacMenuItem *menu = _items[id];
|
||||
|
||||
|
@ -97,6 +97,9 @@ 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);
|
||||
|
||||
Common::Rect _bbox;
|
||||
|
||||
private:
|
||||
@ -130,6 +133,8 @@ private:
|
||||
|
||||
void eventLoop();
|
||||
|
||||
MacMenuItem *findMenuItem(const Common::String &menuId, const Common::String &itemId);
|
||||
|
||||
ItemArray _items;
|
||||
|
||||
const Font *_font;
|
||||
|
@ -426,6 +426,22 @@ void MacWindowManager::disableScreenCopy() {
|
||||
g_system->copyRectToScreen(_screenCopy->getBasePtr(0, 0), _screenCopy->pitch, 0, 0, _screenCopy->w, _screenCopy->h);
|
||||
}
|
||||
|
||||
void MacWindowManager::setMenuItemCheckMark(const Common::String &menuId, const Common::String &itemId, bool checkMark) {
|
||||
if (_menu) {
|
||||
_menu->setCheckMark(menuId, itemId, checkMark);
|
||||
} else {
|
||||
warning("MacWindowManager::setMenuItemCheckMark: wm doesn't have menu");
|
||||
}
|
||||
}
|
||||
|
||||
void MacWindowManager::setMenuItemEnabled(const Common::String &menuId, const Common::String &itemId, bool enabled) {
|
||||
if (_menu) {
|
||||
_menu->setEnabled(menuId, itemId, enabled);
|
||||
} else {
|
||||
warning("MacWindowManager::setMenuItemEnabled: 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) {
|
||||
|
@ -334,6 +334,9 @@ public:
|
||||
*/
|
||||
void clearHandlingWidgets();
|
||||
|
||||
void setMenuItemCheckMark(const Common::String &menuId, const Common::String &itemId, bool checkMark);
|
||||
void setMenuItemEnabled(const Common::String &menuId, const Common::String &itemId, bool enabled);
|
||||
|
||||
public:
|
||||
MacFontManager *_fontMan;
|
||||
uint32 _mode;
|
||||
|
Loading…
x
Reference in New Issue
Block a user