Kart and track groups tabs are now dynamically determined at runtime instead of being hardcoded
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@4579 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
d9e77741a2
commit
cd787f9085
@ -22,11 +22,15 @@
|
||||
<ribbon_grid id="karts" proportion="1" square_items="true" width="100%" align="center"
|
||||
child_width="80" child_height="80"/>
|
||||
</box>
|
||||
|
||||
<!-- Groups will be added dynamically at runtime -->
|
||||
<tabs width="100%" height="25" id="kartgroups">
|
||||
<!--
|
||||
<button id="standard" I18N="Kart group" text="Standard"/>
|
||||
<button id="addons" I18N="Kart group" text="Add-Ons"/>
|
||||
<button id="special" I18N="Kart group" text="Special"/>
|
||||
<button id="all" I18N="Kart group" text="All"/>
|
||||
-->
|
||||
</tabs>
|
||||
|
||||
<spacer height="15" width="25"/>
|
||||
|
@ -21,11 +21,8 @@
|
||||
<spacer width="20" height="13" />
|
||||
</box>
|
||||
|
||||
<tabs width="100%" height="25" id="trackgroups">
|
||||
<button id="standard" I18N="track group" text="Standard"/>
|
||||
<button id="addons" I18N="track group" text="Add-Ons"/>
|
||||
<button id="all" I18N="track group" text="All"/>
|
||||
</tabs>
|
||||
<!-- Populated dynamically at runtime -->
|
||||
<tabs width="100%" height="25" id="trackgroups"> </tabs>
|
||||
|
||||
<spacer width="20" height="13" />
|
||||
|
||||
|
@ -101,6 +101,7 @@ void RibbonWidget::add()
|
||||
|
||||
const int widget_x = one_button_space*(i+1) - one_button_space/2;
|
||||
|
||||
// ---- tab ribbons
|
||||
if (getRibbonType() == RIBBON_TABS)
|
||||
{
|
||||
IGUIButton * subbtn = NULL;
|
||||
@ -160,7 +161,7 @@ void RibbonWidget::add()
|
||||
|
||||
m_children[i].m_element = subbtn;
|
||||
}
|
||||
// ---- non-tabs ribbons
|
||||
// ---- icon ribbons
|
||||
else if (m_children[i].m_type == WTYPE_ICON_BUTTON)
|
||||
{
|
||||
// find how much space to keep for the label under the button.
|
||||
|
@ -697,6 +697,24 @@ KartHoverListener* karthoverListener = NULL;
|
||||
KartSelectionScreen::KartSelectionScreen() : Screen("karts.stkgui")
|
||||
{
|
||||
g_dispatcher = new FocusDispatcher(this);
|
||||
|
||||
// Dynamically add tabs
|
||||
// FIXME: it's not very well documented that RibbonWidgets can have dynamically generated contents
|
||||
RibbonWidget* tabs = this->getWidget<RibbonWidget>("kartgroups");
|
||||
assert( tabs != NULL );
|
||||
|
||||
tabs->m_children.clearAndDeleteAll();
|
||||
|
||||
const std::vector<std::string>& groups = kart_properties_manager->getAllGroups();
|
||||
|
||||
const int amount = groups.size();
|
||||
for (int n=0; n<amount; n++)
|
||||
{
|
||||
ButtonWidget* item = new ButtonWidget();
|
||||
item->m_text = groups[n].c_str(); // FIXME: i18n ?
|
||||
item->m_properties[PROP_ID] = groups[n];
|
||||
tabs->m_children.push_back(item);
|
||||
}
|
||||
}
|
||||
// -----------------------------------------------------------------------------
|
||||
void KartSelectionScreen::forgetWhatWasLoaded()
|
||||
|
@ -31,6 +31,23 @@ using namespace irr::video;
|
||||
|
||||
TracksScreen::TracksScreen() : Screen("tracks.stkgui")
|
||||
{
|
||||
// Dynamically add tabs
|
||||
// FIXME: it's not very well documented that RibbonWidgets can have dynamically generated contents
|
||||
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
|
||||
assert( tabs != NULL );
|
||||
|
||||
tabs->m_children.clearAndDeleteAll();
|
||||
|
||||
const std::vector<std::string>& groups = track_manager->getAllGroups();
|
||||
|
||||
const int amount = groups.size();
|
||||
for (int n=0; n<amount; n++)
|
||||
{
|
||||
ButtonWidget* item = new ButtonWidget();
|
||||
item->m_text = groups[n].c_str(); // FIXME: i18n ?
|
||||
item->m_properties[PROP_ID] = groups[n];
|
||||
tabs->m_children.push_back(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -79,6 +96,28 @@ void TracksScreen::init()
|
||||
DynamicRibbonWidget* w = this->getWidget<DynamicRibbonWidget>("tracks");
|
||||
assert( w != NULL );
|
||||
|
||||
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
|
||||
assert( tabs != NULL );
|
||||
|
||||
/*
|
||||
tracks->m_children.clearAndDeleteAll();
|
||||
|
||||
ButtonWidget* item1 = new ButtonWidget();
|
||||
item1->m_text = _("Standard");
|
||||
item1->m_proeprties[PROP_ID] = "stdtracks";
|
||||
tracks->m_children.push_back(item1);
|
||||
|
||||
ButtonWidget* item2 = new ButtonWidget();
|
||||
item2->m_text = _("Add-Ons");
|
||||
item2->m_proeprties[PROP_ID] = "addontracks";
|
||||
tracks->m_children.push_back(item2);
|
||||
*/
|
||||
//tabs->clearItems();
|
||||
//tabs->addItem( _("Standard"), "stdtracks", "" /* image */);
|
||||
//tabs->addItem( _("Add-Ons"), "stdtracks", "" /* image */);
|
||||
//tabs->addItem( _("Special"), "stdtracks", "" /* image */);
|
||||
//tabs->updateItemDisplay();
|
||||
|
||||
// Re-build track list everytime (accounts for locking changes, etc.)
|
||||
w->clearItems();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user