2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 18:24:55 +00:00

Initial space selection menu

This commit is contained in:
Jack Andersen
2016-01-16 18:14:13 -10:00
parent e248379d76
commit 51e295e311
4 changed files with 93 additions and 3 deletions

View File

@@ -6,6 +6,10 @@ namespace URDE
{
static LogVisor::LogModule Log("URDE::Space");
Space::Space(ViewManager& vm, Class cls, Space* parent)
: m_spaceMenuNode(*this), m_spaceSelectBind(*this),
m_vm(vm), m_class(cls), m_parent(parent) {}
Specter::View* Space::buildSpaceView(Specter::ViewResources& res)
{
if (usesToolbar())
@@ -13,7 +17,12 @@ Specter::View* Space::buildSpaceView(Specter::ViewResources& res)
m_spaceView.reset(new Specter::Space(res, m_vm.rootView(), *this, Specter::Toolbar::Position::Bottom));
Specter::View* sview = buildContentView(res);
m_spaceView->setContentView(sview);
buildToolbarView(res, *m_spaceView->toolbar());
Specter::Toolbar& tb = *m_spaceView->toolbar();
const std::string* classStr = SpaceMenuNode::lookupClassString(m_class);
m_spaceSelectButton.reset(new Specter::Button(res, tb, &m_spaceSelectBind,
classStr?*classStr:"Unknown Class"));
tb.push_back(m_spaceSelectButton.get());
buildToolbarView(res, tb);
return m_spaceView.get();
}
else
@@ -25,6 +34,25 @@ Specter::View* Space::buildSpaceView(Specter::ViewResources& res)
}
}
std::vector<Space::SpaceMenuNode::SubNodeData> Space::SpaceMenuNode::s_subNodeDats =
{
{Class::ResourceBrowser, "resource_browser", "Resource Browser"}
};
std::string Space::SpaceMenuNode::s_text = "Space Types";
void Space::SpaceMenuNode::initializeStrings(ViewManager& vm)
{
s_text = vm.translateOr("space_types", s_text.c_str());
for (SubNodeData& sn : s_subNodeDats)
sn.m_text = vm.translateOr(sn.m_key, sn.m_text.c_str());
}
std::unique_ptr<Specter::View> Space::SpaceSelectBind::buildMenu(const Specter::Button* button)
{
return std::unique_ptr<Specter::View>(new Specter::Menu(m_space.m_vm.rootView().viewRes(),
*m_space.m_spaceView, &m_space.m_spaceMenuNode));
}
Specter::View* RootSpace::buildSpaceView(Specter::ViewResources& res)
{
Specter::View* newRoot = buildContentView(res);