Allow track groups to be changed at runtime

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@8656 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria
2011-05-22 01:30:11 +00:00
parent e8161f092d
commit 0dbed4b737
2 changed files with 53 additions and 43 deletions

View File

@@ -49,48 +49,6 @@ TracksScreen::TracksScreen() : Screen("tracks.stkgui")
void TracksScreen::loadedFromFile()
{
// Dynamically add tabs
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
assert( tabs != NULL );
tabs->clearAllChildren();
const std::vector<std::string>& groups = track_manager->getAllTrackGroups();
const int group_amount = groups.size();
// add standard group first
for (int n=0; n<group_amount; n++)
{
if (groups[n] == DEFAULT_GROUP_NAME)
{
// FIXME: group name is not translated
tabs->addTextChild( stringw(groups[n].c_str()).c_str(), groups[n] );
break;
}
}
// Make group names being picked up by gettext
#define FOR_GETTEXT_ONLY(x)
//I18N: kart group name
FOR_GETTEXT_ONLY( _("standard") )
//I18N: kart group name
FOR_GETTEXT_ONLY( _("Add-Ons") )
// add others after
for (int n=0; n<group_amount; n++)
{
if (groups[n] != DEFAULT_GROUP_NAME)
{
// try to translate the group name
tabs->addTextChild( _(groups[n].c_str()), groups[n] );
}
}
if (group_amount > 1)
{
//I18N: name of the tab that will show tracks from all groups
tabs->addTextChild(_("All"), ALL_TRACK_GROUPS_ID );
}
}
// -----------------------------------------------------------------------------------------------
@@ -207,9 +165,57 @@ printf("back in tracks_screen\n");
// -----------------------------------------------------------------------------------------------
void TracksScreen::init()
void TracksScreen::beforeAddingWidget()
{
Screen::init();
// Dynamically add tabs
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
assert( tabs != NULL );
tabs->clearAllChildren();
const std::vector<std::string>& groups = track_manager->getAllTrackGroups();
const int group_amount = groups.size();
// add standard group first
for (int n=0; n<group_amount; n++)
{
if (groups[n] == DEFAULT_GROUP_NAME)
{
// FIXME: group name is not translated
tabs->addTextChild( stringw(groups[n].c_str()).c_str(), groups[n] );
break;
}
}
// Make group names being picked up by gettext
#define FOR_GETTEXT_ONLY(x)
//I18N: kart group name
FOR_GETTEXT_ONLY( _("standard") )
//I18N: kart group name
FOR_GETTEXT_ONLY( _("Add-Ons") )
// add others after
for (int n=0; n<group_amount; n++)
{
if (groups[n] != DEFAULT_GROUP_NAME)
{
// try to translate the group name
tabs->addTextChild( _(groups[n].c_str()), groups[n] );
}
}
if (group_amount > 1)
{
//I18N: name of the tab that will show tracks from all groups
tabs->addTextChild(_("All"), ALL_TRACK_GROUPS_ID );
}
}
// -----------------------------------------------------------------------------------------------
void TracksScreen::init()
{
DynamicRibbonWidget* gps_widget = this->getWidget<DynamicRibbonWidget>("gps");
assert( gps_widget != NULL );

View File

@@ -49,6 +49,10 @@ public:
/** \brief implement callback from parent class GUIEngine::Screen */
virtual void init();
/** \brief implement callback from parent class GUIEngine::Screen */
virtual void beforeAddingWidget();
void setFocusOnTrack(const std::string& trackName);
void setFocusOnGP(const std::string& gpName);