Dynamically update list of tabs in arenas screen, to better handle when addons arenas are first installed
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@10142 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
36c979471f
commit
c577e285c4
@ -49,12 +49,19 @@ ArenasScreen::ArenasScreen() : Screen("arenas.stkgui")
|
|||||||
|
|
||||||
void ArenasScreen::loadedFromFile()
|
void ArenasScreen::loadedFromFile()
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ArenasScreen::beforeAddingWidget()
|
||||||
|
{
|
||||||
|
|
||||||
// Dynamically add tabs
|
// Dynamically add tabs
|
||||||
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
|
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
|
||||||
assert( tabs != NULL );
|
assert( tabs != NULL );
|
||||||
|
|
||||||
tabs->clearAllChildren();
|
tabs->clearAllChildren();
|
||||||
|
|
||||||
const std::vector<std::string>& groups = track_manager->getAllArenaGroups();
|
const std::vector<std::string>& groups = track_manager->getAllArenaGroups();
|
||||||
const int group_amount = groups.size();
|
const int group_amount = groups.size();
|
||||||
|
|
||||||
@ -77,21 +84,20 @@ void ArenasScreen::loadedFromFile()
|
|||||||
// try to translate the group name
|
// try to translate the group name
|
||||||
tabs->addTextChild( _(groups[n].c_str()), groups[n] );
|
tabs->addTextChild( _(groups[n].c_str()), groups[n] );
|
||||||
}
|
}
|
||||||
|
|
||||||
int num_of_arenas=0;
|
int num_of_arenas=0;
|
||||||
for (unsigned int n=0; n<track_manager->getNumberOfTracks(); n++) //iterate through tracks to find how many are arenas
|
for (unsigned int n=0; n<track_manager->getNumberOfTracks(); n++) //iterate through tracks to find how many are arenas
|
||||||
{
|
{
|
||||||
Track* temp = track_manager->getTrack(n);
|
Track* temp = track_manager->getTrack(n);
|
||||||
if (temp->isArena()){
|
if (temp->isArena()){
|
||||||
num_of_arenas++;
|
num_of_arenas++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicRibbonWidget* tracks_widget = this->getWidget<DynamicRibbonWidget>("tracks");
|
DynamicRibbonWidget* tracks_widget = this->getWidget<DynamicRibbonWidget>("tracks");
|
||||||
assert( tracks_widget != NULL );
|
assert( tracks_widget != NULL );
|
||||||
tracks_widget->setItemCountHint(num_of_arenas); //set the item hint to that number to prevent weird formatting
|
tracks_widget->setItemCountHint(num_of_arenas); //set the item hint to that number to prevent weird formatting
|
||||||
|
}
|
||||||
} // ArenasScreen
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -36,6 +36,9 @@ class ArenasScreen : public GUIEngine::Screen, public GUIEngine::ScreenSingleton
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||||
|
virtual void beforeAddingWidget();
|
||||||
|
|
||||||
/** \brief implement callback from parent class GUIEngine::Screen */
|
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||||
virtual void loadedFromFile();
|
virtual void loadedFromFile();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user