mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-08-12 01:24:41 +02:00
Update to v094r40 release.
byuu says: Changelog: - updated to newest hiro API - SFC performance profile builds once again - hiro: Qt port completed Errata 1: the hiro/Qt target won't run tomoko just yet. Starts by crashing inside InputSettings because hiro/Qt isn't forcefully selecting the first item added to a ComboButton just yet. Even with a monkey patch to get around that, the UI is incredibly unstable. Lots of geometry calculation bugs, and a crash when you try and access certain folders in the browser dialog. Lots of work left to be done there, sadly. Errata 2: the hiro/Windows port has black backgrounds on all ListView items. It's because I need to test for unassigned colors and grab the default Windows brush colors in those cases. Note: alternating row colors on multi-column ListView widgets is gone now. Not a bug. May add it back later, but I'm not sure. It doesn't interact nicely with per-cell background colors. Things left to do: First, I have to fix the Windows and Qt target bugs. Next, I need to go through and revise the hiro API even more (nothing too major.) Next, I need to update icarus to use the new hiro API, and add support for the SFC games database. Next, I have to rewrite my TSV->BML cheat code tool. Next, I need to post a final WIP of higan+icarus publicly and wait a few days. Next, I need to fix any bugs reported from the final WIP that I can. Finally, I should be able to release v095.
This commit is contained in:
@@ -1,56 +1,60 @@
|
||||
namespace phoenix {
|
||||
#if defined(Hiro_Menu)
|
||||
|
||||
void pMenu::append(Action& action) {
|
||||
if(dynamic_cast<Menu*>(&action)) {
|
||||
qtMenu->addMenu(((Menu&)action).p.qtMenu);
|
||||
} else if(dynamic_cast<Separator*>(&action)) {
|
||||
qtMenu->addAction(((Separator&)action).p.qtAction);
|
||||
} else if(dynamic_cast<Item*>(&action)) {
|
||||
qtMenu->addAction(((Item&)action).p.qtAction);
|
||||
} else if(dynamic_cast<CheckItem*>(&action)) {
|
||||
qtMenu->addAction(((CheckItem&)action).p.qtAction);
|
||||
} else if(dynamic_cast<RadioItem*>(&action)) {
|
||||
qtMenu->addAction(((RadioItem&)action).p.qtAction);
|
||||
}
|
||||
}
|
||||
namespace hiro {
|
||||
|
||||
void pMenu::remove(Action& action) {
|
||||
if(dynamic_cast<Menu*>(&action)) {
|
||||
//QMenu::removeMenu() does not exist
|
||||
qtMenu->clear();
|
||||
for(auto& action : menu.state.action) append(action);
|
||||
} else if(dynamic_cast<Separator*>(&action)) {
|
||||
qtMenu->removeAction(((Separator&)action).p.qtAction);
|
||||
} else if(dynamic_cast<Item*>(&action)) {
|
||||
qtMenu->removeAction(((Item&)action).p.qtAction);
|
||||
} else if(dynamic_cast<CheckItem*>(&action)) {
|
||||
qtMenu->removeAction(((CheckItem&)action).p.qtAction);
|
||||
} else if(dynamic_cast<RadioItem*>(&action)) {
|
||||
qtMenu->removeAction(((CheckItem&)action).p.qtAction);
|
||||
}
|
||||
}
|
||||
|
||||
void pMenu::setFont(string font) {
|
||||
qtMenu->setFont(pFont::create(font));
|
||||
for(auto &item : menu.state.action) item.p.setFont(font);
|
||||
}
|
||||
|
||||
void pMenu::setImage(const image& image) {
|
||||
qtMenu->setIcon(CreateIcon(image));
|
||||
}
|
||||
|
||||
void pMenu::setText(string text) {
|
||||
qtMenu->setTitle(QString::fromUtf8(text));
|
||||
}
|
||||
|
||||
void pMenu::constructor() {
|
||||
auto pMenu::construct() -> void {
|
||||
qtMenu = new QMenu;
|
||||
|
||||
if(auto parent = _parentMenu()) {
|
||||
parent->qtMenu->addMenu(qtMenu);
|
||||
}
|
||||
|
||||
if(auto parent = _parentMenuBar()) {
|
||||
if(auto window = parent->_parent()) {
|
||||
window->qtMenuBar->addMenu(qtMenu);
|
||||
}
|
||||
}
|
||||
|
||||
if(auto parent = _parentPopupMenu()) {
|
||||
parent->qtPopupMenu->addMenu(qtMenu);
|
||||
}
|
||||
|
||||
_setState();
|
||||
}
|
||||
|
||||
void pMenu::destructor() {
|
||||
if(action.state.menu) action.state.menu->remove(menu);
|
||||
auto pMenu::destruct() -> void {
|
||||
delete qtMenu;
|
||||
qtMenu = nullptr;
|
||||
}
|
||||
|
||||
auto pMenu::append(sAction action) -> void {
|
||||
}
|
||||
|
||||
auto pMenu::remove(sAction action) -> void {
|
||||
}
|
||||
|
||||
auto pMenu::setFont(const string& font) -> void {
|
||||
_setState();
|
||||
}
|
||||
|
||||
auto pMenu::setIcon(const image& icon) -> void {
|
||||
_setState();
|
||||
}
|
||||
|
||||
auto pMenu::setText(const string& text) -> void {
|
||||
_setState();
|
||||
}
|
||||
|
||||
auto pMenu::_setState() -> void {
|
||||
qtMenu->setFont(pFont::create(self().font(true)));
|
||||
qtMenu->setIcon(CreateIcon(state().icon));
|
||||
qtMenu->setTitle(QString::fromUtf8(state().text));
|
||||
|
||||
for(auto& action : state().actions) {
|
||||
if(auto self = action->self()) self->setFont(action->font(true));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user