exploit the new setWhatsThis feature in our desktop frontend
authorkoda
Fri, 17 Feb 2012 17:43:59 +0100
changeset 6699 83dd3447a212
parent 6698 804e9076d136
child 6700 e04da46ee43c
exploit the new setWhatsThis feature in our desktop frontend
QTfrontend/ui/page/AbstractPage.cpp
QTfrontend/ui/page/pageinfo.cpp
QTfrontend/ui/page/pagemain.cpp
QTfrontend/ui/page/pagenettype.cpp
QTfrontend/ui/page/pageoptions.cpp
QTfrontend/ui/page/pageroomslist.cpp
QTfrontend/ui/page/pagescheme.cpp
QTfrontend/ui/page/pagesingleplayer.cpp
QTfrontend/ui/page/pagetraining.cpp
--- a/QTfrontend/ui/page/AbstractPage.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/AbstractPage.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -48,6 +48,7 @@
 
     // add back/exit button
     btnBack = formattedButton(":/res/Exit.png", true);
+    btnBack->setWhatsThis(tr("Go back"));
     pageLayout->addWidget(btnBack, 1, 0, 1, 1, Qt::AlignLeft | Qt::AlignBottom);
 
     // add body layout as defined by the subclass
--- a/QTfrontend/ui/page/pageinfo.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pageinfo.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -41,6 +41,7 @@
 {
     QHBoxLayout * bottomLayout = new QHBoxLayout();
     BtnSnapshots = addButton(":/res/Star.png", bottomLayout, 0, true);
+    BtnSnapshots->setWhatsThis(tr("Open the snapshot folder"));
     bottomLayout->setAlignment(BtnSnapshots, Qt::AlignRight | Qt::AlignVCenter);
     return bottomLayout;
 }
--- a/QTfrontend/ui/page/pagemain.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pagemain.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -84,7 +84,10 @@
     bottomLayout->addWidget(mainNote, 0);
     bottomLayout->setStretch(0,1);
 
+    btnBack->setWhatsThis(tr("Exit game"));
+    
     BtnSetup = addButton(":/res/Settings.png", bottomLayout, 1, true);
+    BtnSetup->setWhatsThis(tr("Edit game preferences"));
     return bottomLayout;
 }
 
--- a/QTfrontend/ui/page/pagenettype.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pagenettype.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -33,7 +33,9 @@
     pageLayout->setColumnStretch(3, 10);
 
     BtnLAN = addButton(tr("LAN game"), pageLayout, 1, 2);
+    BtnLAN->setWhatsThis(tr("Hoin or host your own game server in a Local Area Network."));
     BtnOfficialServer = addButton(tr("Official server"), pageLayout, 2, 2);
+    BtnOfficialServer->setWhatsThis(tr("Join hundreds of players online!"));
 
     // hack: temporary deactivated - requires server modifications that aren't backward compatible (yet)
     //BtnOfficialServer->setEnabled(false);
--- a/QTfrontend/ui/page/pageoptions.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pageoptions.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -123,21 +123,21 @@
         WeaponsLayout->addWidget(SchemesName, 1, 1);
 
         SchemeNew = new QPushButton(groupWeapons);
-        SchemeNew->setToolTip(tr("New scheme"));
+        SchemeNew->setWhatsThis(tr("New scheme"));
         SchemeNew->setIconSize(pmNew.size());
         SchemeNew->setIcon(pmNew);
         SchemeNew->setMaximumWidth(pmNew.width() + 6);
         WeaponsLayout->addWidget(SchemeNew, 1, 2);
 
         SchemeEdit = new QPushButton(groupWeapons);
-        SchemeEdit->setToolTip(tr("Edit scheme"));
+        SchemeEdit->setWhatsThis(tr("Edit scheme"));
         SchemeEdit->setIconSize(pmEdit.size());
         SchemeEdit->setIcon(pmEdit);
         SchemeEdit->setMaximumWidth(pmEdit.width() + 6);
         WeaponsLayout->addWidget(SchemeEdit, 1, 3);
 
         SchemeDelete = new QPushButton(groupWeapons);
-        SchemeDelete->setToolTip(tr("Delete scheme"));
+        SchemeDelete->setWhatsThis(tr("Delete scheme"));
         SchemeDelete->setIconSize(pmDelete.size());
         SchemeDelete->setIcon(pmDelete);
         SchemeDelete->setMaximumWidth(pmDelete.width() + 6);
@@ -151,21 +151,21 @@
         WeaponsLayout->addWidget(WeaponsName, 2, 1);
 
         WeaponNew = new QPushButton(groupWeapons);
-        WeaponNew->setToolTip(tr("New weapon set"));
+        WeaponNew->setWhatsThis(tr("New weapon set"));
         WeaponNew->setIconSize(pmNew.size());
         WeaponNew->setIcon(pmNew);
         WeaponNew->setMaximumWidth(pmNew.width() + 6);
         WeaponsLayout->addWidget(WeaponNew, 2, 2);
 
         WeaponEdit = new QPushButton(groupWeapons);
-        WeaponEdit->setToolTip(tr("Edit weapon set"));
+        WeaponEdit->setWhatsThis(tr("Edit weapon set"));
         WeaponEdit->setIconSize(pmEdit.size());
         WeaponEdit->setIcon(pmEdit);
         WeaponEdit->setMaximumWidth(pmEdit.width() + 6);
         WeaponsLayout->addWidget(WeaponEdit, 2, 3);
 
         WeaponDelete = new QPushButton(groupWeapons);
-        WeaponDelete->setToolTip(tr("Delete weapon set"));
+        WeaponDelete->setWhatsThis(tr("Delete weapon set"));
         WeaponDelete->setIconSize(pmDelete.size());
         WeaponDelete->setIcon(pmDelete);
         WeaponDelete->setMaximumWidth(pmDelete.width() + 6);
--- a/QTfrontend/ui/page/pageroomslist.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pageroomslist.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -306,12 +306,14 @@
         if(list[i].compare("True"))
         {
             item->setIcon(QIcon(":/res/iconTime.png"));// game is in lobby
-            item->setToolTip(tr("This game is in lobby.\nYou may join and start playing once the game starts."));
+            item->setToolTip(tr("Waiting..."));
+            item->setWhatsThis(tr("This game is in lobby: you may join and start playing once the game starts."));
         }
         else
         {
             item->setIcon(QIcon(":/res/iconDamage.png"));// game has started
-            item->setToolTip(tr("This game is in progress.\nYou may join and spectate now but you'll have to wait for the game to end to start playing."));
+            item->setToolTip(tr("In progress..."));
+            item->setWhatsThis(tr("This game is in progress: you may join and spectate now but you'll have to wait for the game to end to start playing."));
         }
 
         roomsList->setItem(r, 0, item);
@@ -319,13 +321,13 @@
         item = new QTableWidgetItem(list[i + 2]); // number of clients
         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
         item->setTextAlignment(Qt::AlignCenter);
-        item->setToolTip(tr("There are %1 clients connected to this room.", "", list[i + 2].toInt()).arg(list[i + 2]));
+        item->setWhatsThis(tr("There are %1 clients connected to this room.", "", list[i + 2].toInt()).arg(list[i + 2]));
         roomsList->setItem(r, 1, item);
 
         item = new QTableWidgetItem(list[i + 3]); // number of teams
         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
         item->setTextAlignment(Qt::AlignCenter);
-        item->setToolTip(tr("There are %1 teams participating in this room.", "", list[i + 3].toInt()).arg(list[i + 3]));
+        item->setWhatsThis(tr("There are %1 teams participating in this room.", "", list[i + 3].toInt()).arg(list[i + 3]));
         //Should we highlight "full" games? Might get misinterpreted
         //if(list[i + 3].toInt() >= cMaxTeams)
         //    item->setForeground(red);
@@ -333,7 +335,7 @@
 
         item = new QTableWidgetItem(list[i + 4].left(15)); // name of host
         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-        item->setToolTip(tr("%1 is the host. He may adjust settings and start the game.").arg(list[i + 4]));
+        item->setWhatsThis(tr("%1 is the host. He may adjust settings and start the game.").arg(list[i + 4]));
         roomsList->setItem(r, 3, item);
 
         if(list[i + 5] == "+rnd+")
@@ -368,17 +370,17 @@
         }
 
         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-        item->setToolTip(tr("Games may be played on precreated or randomized maps."));
+        item->setWhatsThis(tr("Games may be played on precreated or randomized maps."));
         roomsList->setItem(r, 4, item);
 
         item = new QTableWidgetItem(list[i + 6].left(24)); // selected game scheme
         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-        item->setToolTip(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism."));
+        item->setWhatsThis(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism."));
         roomsList->setItem(r, 5, item);
 
         item = new QTableWidgetItem(list[i + 7].left(24)); // selected weapon scheme
         item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-        item->setToolTip(tr("The Weapon Scheme defines available weapons and their ammunition count."));
+        item->setWhatsThis(tr("The Weapon Scheme defines available weapons and their ammunition count."));
         roomsList->setItem(r, 6, item);
 
         if(!list[i + 1].compare(selection) && !selection.isEmpty())
--- a/QTfrontend/ui/page/pagescheme.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pagescheme.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -68,103 +68,128 @@
     // Left
 
     TBW_mode_Forts = new ToggleButtonWidget(gbGameModes, ":/res/btnForts@2x.png");
-    TBW_mode_Forts->setToolTip("<b>" + ToggleButtonWidget::tr("Fort Mode") + "</b>:<br />" + tr("Defend your fort and destroy the opponents, two team colours max!"));
+    TBW_mode_Forts->setToolTip("<b>" + ToggleButtonWidget::tr("Fort Mode") + "</b>");
+    TBW_mode_Forts->setWhatsThis(tr("Defend your fort and destroy the opponents, two team colours max!"));
     glGMLayout->addWidget(TBW_mode_Forts,0,0,1,1);
 
     TBW_teamsDivide = new ToggleButtonWidget(gbGameModes, ":/res/btnTeamsDivide@2x.png");
-    TBW_teamsDivide->setToolTip("<b>" + ToggleButtonWidget::tr("Divide Teams") + "</b>:<br />" + tr("Teams will start on opposite sides of the terrain, two team colours max!"));
+    TBW_teamsDivide->setToolTip("<b>" + ToggleButtonWidget::tr("Divide Teams") + "</b>");
+    TBW_teamsDivide->setWhatsThis(tr("Teams will start on opposite sides of the terrain, two team colours max!"));
     glGMLayout->addWidget(TBW_teamsDivide,0,1,1,1);
 
     TBW_solid = new ToggleButtonWidget(gbGameModes, ":/res/btnSolid@2x.png");
-    TBW_solid->setToolTip("<b>" + ToggleButtonWidget::tr("Solid Land") + "</b>:<br />" + tr("Land can not be destroyed!"));
+    TBW_solid->setToolTip("<b>" + ToggleButtonWidget::tr("Solid Land") + "</b>");
+    TBW_solid->setWhatsThis(tr("Land can not be destroyed!"));
     glGMLayout->addWidget(TBW_solid,0,2,1,1);
 
     TBW_border = new ToggleButtonWidget(gbGameModes, ":/res/btnBorder@2x.png");
-    TBW_border->setToolTip("<b>" + ToggleButtonWidget::tr("Add Border") + "</b>:<br />" + tr("Add an indestructible border around the terrain"));
+    TBW_border->setToolTip("<b>" + ToggleButtonWidget::tr("Add Border") + "</b>");
+    TBW_border->setWhatsThis(tr("Add an indestructible border around the terrain"));
     glGMLayout->addWidget(TBW_border,0,3,1,1);
 
     TBW_lowGravity = new ToggleButtonWidget(gbGameModes, ":/res/btnLowGravity@2x.png");
-    TBW_lowGravity->setToolTip("<b>" + ToggleButtonWidget::tr("Low Gravity") + "</b>:<br />" + tr("Lower gravity"));
+    TBW_lowGravity->setToolTip("<b>" + ToggleButtonWidget::tr("Low Gravity") + "</b>");
+    TBW_lowGravity->setWhatsThis(tr("Lower gravity"));
     glGMLayout->addWidget(TBW_lowGravity,0,4,1,1);
 
     TBW_laserSight = new ToggleButtonWidget(gbGameModes, ":/res/btnLaserSight@2x.png");
-    TBW_laserSight->setToolTip("<b>" + ToggleButtonWidget::tr("Laser Sight") + "</b>:<br />" + tr("Assisted aiming with laser sight"));
+    TBW_laserSight->setToolTip("<b>" + ToggleButtonWidget::tr("Laser Sight") + "</b>");
+    TBW_laserSight->setWhatsThis(tr("Assisted aiming with laser sight"));
     glGMLayout->addWidget(TBW_laserSight,1,0,1,1);
 
     TBW_invulnerable = new ToggleButtonWidget(gbGameModes, ":/res/btnInvulnerable@2x.png");
-    TBW_invulnerable->setToolTip("<b>" + ToggleButtonWidget::tr("Invulnerable") + "</b>:<br />" + tr("All hogs have a personal forcefield"));
+    TBW_invulnerable->setToolTip("<b>" + ToggleButtonWidget::tr("Invulnerable") + "</b>");
+    TBW_invulnerable->setWhatsThis(tr("All hogs have a personal forcefield"));
     glGMLayout->addWidget(TBW_invulnerable,1,1,1,1);
 
     TBW_resethealth = new ToggleButtonWidget(gbGameModes, ":/res/btnResetHealth@2x.png");
-    TBW_resethealth->setToolTip("<b>" + ToggleButtonWidget::tr("Reset Health") + "</b>:<br />" + tr("All (living) hedgehogs are fully restored at the end of turn"));
+    TBW_resethealth->setToolTip("<b>" + ToggleButtonWidget::tr("Reset Health") + "</b>");
+    TBW_resethealth->setWhatsThis(tr("All (living) hedgehogs are fully restored at the end of turn"));
     glGMLayout->addWidget(TBW_resethealth,1,2,1,1);
 
     TBW_vampiric = new ToggleButtonWidget(gbGameModes, ":/res/btnVampiric@2x.png");
-    TBW_vampiric->setToolTip("<b>" + ToggleButtonWidget::tr("Vampirism") + "</b>:<br />" + tr("Gain 80% of the damage you do back in health"));
+    TBW_vampiric->setToolTip("<b>" + ToggleButtonWidget::tr("Vampirism") + "</b>");
+    TBW_vampiric->setWhatsThis(tr("Gain 80% of the damage you do back in health"));
     glGMLayout->addWidget(TBW_vampiric,1,3,1,1);
 
     TBW_karma = new ToggleButtonWidget(gbGameModes, ":/res/btnKarma@2x.png");
-    TBW_karma->setToolTip("<b>" + ToggleButtonWidget::tr("Karma") + "</b>:<br />" + tr("Share your opponents pain, share their damage"));
+    TBW_karma->setToolTip("<b>" + ToggleButtonWidget::tr("Karma") + "</b>");
+    TBW_karma->setWhatsThis(tr("Share your opponents pain, share their damage"));
     glGMLayout->addWidget(TBW_karma,1,4,1,1);
 
     TBW_artillery = new ToggleButtonWidget(gbGameModes, ":/res/btnArtillery@2x.png");
-    TBW_artillery->setToolTip("<b>" + ToggleButtonWidget::tr("Artillery") + "</b>:<br />" + tr("Your hogs are unable to move, put your artillery skills to the test"));
+    TBW_artillery->setToolTip("<b>" + ToggleButtonWidget::tr("Artillery") + "</b>");
+    TBW_artillery->setWhatsThis(tr("Your hogs are unable to move, put your artillery skills to the test"));
     glGMLayout->addWidget(TBW_artillery,2,0,1,1);
 
     TBW_randomorder = new ToggleButtonWidget(gbGameModes, ":/res/btnRandomOrder@2x.png");
-    TBW_randomorder->setToolTip("<b>" + ToggleButtonWidget::tr("Random Order") + "</b>:<br />" + tr("Order of play is random instead of in room order."));
+    TBW_randomorder->setToolTip("<b>" + ToggleButtonWidget::tr("Random Order") + "</b>");
+    TBW_randomorder->setWhatsThis(tr("Order of play is random instead of in room order."));
     glGMLayout->addWidget(TBW_randomorder,2,1,1,1);
 
     TBW_king = new ToggleButtonWidget(gbGameModes, ":/res/btnKing@2x.png");
-    TBW_king->setToolTip("<b>" + ToggleButtonWidget::tr("King") + "</b>:<br />" + tr("Play with a King. If he dies, your side dies."));
+    TBW_king->setToolTip("<b>" + ToggleButtonWidget::tr("King") + "</b>");
+    TBW_king->setWhatsThis(tr("Play with a King. If he dies, your side dies."));
     glGMLayout->addWidget(TBW_king,2,2,1,1);
 
     TBW_placehog = new ToggleButtonWidget(gbGameModes, ":/res/btnPlaceHog@2x.png");
-    TBW_placehog->setToolTip("<b>" + ToggleButtonWidget::tr("Place Hedgehogs") + "</b>:<br />" + tr("Take turns placing your hedgehogs before the start of play."));
+    TBW_placehog->setToolTip("<b>" + ToggleButtonWidget::tr("Place Hedgehogs") + "</b>");
+    TBW_placehog->setWhatsThis(tr("Take turns placing your hedgehogs before the start of play."));
     glGMLayout->addWidget(TBW_placehog,2,3,1,1);
 
     TBW_sharedammo = new ToggleButtonWidget(gbGameModes, ":/res/btnSharedAmmo@2x.png");
-    TBW_sharedammo->setToolTip("<b>" + ToggleButtonWidget::tr("Clan Shares Ammo") + "</b>:<br />" + tr("Ammo is shared between all teams that share a colour."));
+    TBW_sharedammo->setToolTip("<b>" + ToggleButtonWidget::tr("Clan Shares Ammo") + "</b>");
+    TBW_sharedammo->setWhatsThis(tr("Ammo is shared between all teams that share a colour."));
     glGMLayout->addWidget(TBW_sharedammo,2,4,1,1);
 
     TBW_disablegirders = new ToggleButtonWidget(gbGameModes, ":/res/btnDisableGirders@2x.png");
-    TBW_disablegirders->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Girders") + "</b>:<br />" + tr("Disable girders when generating random maps."));
+    TBW_disablegirders->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Girders") + "</b>");
+    TBW_disablegirders->setWhatsThis(tr("Disable girders when generating random maps."));
     glGMLayout->addWidget(TBW_disablegirders,3,0,1,1);
 
     TBW_disablelandobjects = new ToggleButtonWidget(gbGameModes, ":/res/btnDisableLandObjects@2x.png");
-    TBW_disablelandobjects->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Land Objects") + "</b>:<br />" + tr("Disable land objects when generating random maps."));
+    TBW_disablelandobjects->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Land Objects") + "</b>");
+    TBW_disablelandobjects->setWhatsThis(tr("Disable land objects when generating random maps."));
     glGMLayout->addWidget(TBW_disablelandobjects,3,1,1,1);
 
     TBW_aisurvival = new ToggleButtonWidget(gbGameModes, ":/res/btnAISurvival@2x.png");
-    TBW_aisurvival->setToolTip("<b>" + ToggleButtonWidget::tr("AI Survival Mode") + "</b>:<br />" + tr("AI respawns on death."));
+    TBW_aisurvival->setToolTip("<b>" + ToggleButtonWidget::tr("AI Survival Mode") + "</b>");
+    TBW_aisurvival->setWhatsThis(tr("AI respawns on death."));
     glGMLayout->addWidget(TBW_aisurvival,3,2,1,1);
 
     TBW_infattack = new ToggleButtonWidget(gbGameModes, ":/res/btnInfAttack@2x.png");
-    TBW_infattack->setToolTip("<b>" + ToggleButtonWidget::tr("Unlimited Attacks") + "</b>:<br />" + tr("Attacking does not end your turn."));
+    TBW_infattack->setToolTip("<b>" + ToggleButtonWidget::tr("Unlimited Attacks") + "</b>");
+    TBW_infattack->setWhatsThis(tr("Attacking does not end your turn."));
     glGMLayout->addWidget(TBW_infattack,3,3,1,1);
 
     TBW_resetweps = new ToggleButtonWidget(gbGameModes, ":/res/btnResetWeps@2x.png");
-    TBW_resetweps->setToolTip("<b>" + ToggleButtonWidget::tr("Reset Weapons") + "</b>:<br />" + tr("Weapons are reset to starting values each turn."));
+    TBW_resetweps->setToolTip("<b>" + ToggleButtonWidget::tr("Reset Weapons") + "</b>");
+    TBW_resetweps->setWhatsThis(tr("Weapons are reset to starting values each turn."));
     glGMLayout->addWidget(TBW_resetweps,3,4,1,1);
 
     TBW_perhogammo = new ToggleButtonWidget(gbGameModes, ":/res/btnPerHogAmmo@2x.png");
-    TBW_perhogammo->setToolTip("<b>" + ToggleButtonWidget::tr("Per Hedgehog Ammo") + "</b>:<br />" + tr("Each hedgehog has its own ammo. It does not share with the team."));
+    TBW_perhogammo->setToolTip("<b>" + ToggleButtonWidget::tr("Per Hedgehog Ammo") + "</b>");
+    TBW_perhogammo->setWhatsThis(tr("Each hedgehog has its own ammo. It does not share with the team."));
     glGMLayout->addWidget(TBW_perhogammo,4,0,1,1);
 
     TBW_nowind = new ToggleButtonWidget(gbGameModes, ":/res/btnNoWind@2x.png");
-    TBW_nowind->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Wind") + "</b>:<br />" + tr("You will not have to worry about wind anymore."));
+    TBW_nowind->setToolTip("<b>" + ToggleButtonWidget::tr("Disable Wind") + "</b>");
+    TBW_nowind->setWhatsThis(tr("You will not have to worry about wind anymore."));
     glGMLayout->addWidget(TBW_nowind,4,1,1,1);
 
     TBW_morewind = new ToggleButtonWidget(gbGameModes, ":/res/btnMoreWind@2x.png");
-    TBW_morewind->setToolTip("<b>" + ToggleButtonWidget::tr("More Wind") + "</b>:<br />" + tr("Wind will affect almost everything."));
+    TBW_morewind->setToolTip("<b>" + ToggleButtonWidget::tr("More Wind") + "</b>");
+    TBW_morewind->setWhatsThis(tr("Wind will affect almost everything."));
     glGMLayout->addWidget(TBW_morewind,4,2,1,1);
 
     TBW_tagteam = new ToggleButtonWidget(gbGameModes, ":/res/btnTagTeam@2x.png");
-    TBW_tagteam->setToolTip("<b>" + ToggleButtonWidget::tr("Tag Team") + "</b>:<br />" + tr("Teams in each clan take successive turns sharing their turn time."));
+    TBW_tagteam->setToolTip("<b>" + ToggleButtonWidget::tr("Tag Team") + "</b>");
+    TBW_tagteam->setWhatsThis(tr("Teams in each clan take successive turns sharing their turn time."));
     glGMLayout->addWidget(TBW_tagteam,4,3,1,1);
 
     TBW_bottomborder = new ToggleButtonWidget(gbGameModes, ":/res/btnBottomBorder@2x.png");
-    TBW_bottomborder->setToolTip("<b>" + ToggleButtonWidget::tr("Add Bottom Border") + "</b>:<br />" + tr("Add an indestructible border along the bottom"));
+    TBW_bottomborder->setToolTip("<b>" + ToggleButtonWidget::tr("Add Bottom Border") + "</b>");
+    TBW_bottomborder->setWhatsThis(tr("Add an indestructible border along the bottom"));
     glGMLayout->addWidget(TBW_bottomborder,4,4,1,1);
 
 
--- a/QTfrontend/ui/page/pagesingleplayer.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pagesingleplayer.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -36,19 +36,23 @@
 
     topLine->addStretch();
     BtnSimpleGamePage = addButton(":/res/SimpleGame.png", topLine, 0, true);
-    BtnSimpleGamePage->setToolTip(tr("Simple Game (a quick game against the computer, settings are chosen for you)"));
+    BtnSimpleGamePage->setToolTip(tr("Simple Game"));
+    BtnSimpleGamePage->setWhatsThis(tr("Play a quick game against the computer with random settings"));
     topLine->addSpacing(60);
     BtnMultiplayer = addButton(":/res/Multiplayer.png", topLine, 1, true);
-    BtnMultiplayer->setToolTip(tr("Multiplayer (play a hotseat game against your friends, or AI teams)"));
+    BtnMultiplayer->setToolTip(tr("Multiplayer"));
+    BtnMultiplayer->setWhatsThis(tr("Play a hotseat game against your friends, or AI teams"));
     topLine->addStretch();
 
 
     BtnCampaignPage = addButton(":/res/Campaign.png", middleLine, 0, true);
-    BtnCampaignPage->setToolTip(tr("Campaign Mode (...)"));
+    BtnCampaignPage->setToolTip(tr("Campaign Mode"));
+    BtnCampaignPage->setWhatsThis(tr("Campaign Mode"));
     BtnCampaignPage->setVisible(false);
 
     BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 1, true);
-    BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions)"));
+    BtnTrainPage->setToolTip(tr("Training Mode"));
+    BtnTrainPage->setWhatsThis(tr("Practice your skills in a range of training missions"));
 
     return vLayout;
 }
@@ -59,10 +63,12 @@
     bottomLine->addStretch();
 
     BtnDemos = addButton(":/res/Record.png", bottomLine, 1, true);
-    BtnDemos->setToolTip(tr("Demos (Watch recorded demos)"));
+    BtnDemos->setToolTip(tr("Demos"));
+    BtnDemos->setWhatsThis(tr("Watch recorded demos"));
     BtnLoad = addButton(":/res/Load.png", bottomLine, 2, true);
     BtnLoad->setStyleSheet("QPushButton{margin: 24px 0 0 0;}");
-    BtnLoad->setToolTip(tr("Load (Load a previously saved game)"));
+    BtnLoad->setToolTip(tr("Load"));
+    BtnLoad->setWhatsThis(tr("Load a previously saved game"));
 
     bottomLine->setStretch(1,0);
     bottomLine->setStretch(2,0);
--- a/QTfrontend/ui/page/pagetraining.cpp	Fri Feb 17 15:55:31 2012 +0100
+++ b/QTfrontend/ui/page/pagetraining.cpp	Fri Feb 17 17:43:59 2012 +0100
@@ -40,7 +40,6 @@
 
     // declare start button, caption and description
     btnPreview = formattedButton(":/res/Trainings.png", true);
-    btnPreview->setToolTip(QPushButton::tr("Go!"));
 
     // make both rows equal height
     pageLayout->setRowStretch(0, 1);
@@ -76,6 +75,7 @@
 
     // mission list
     lstMissions = new QListWidget(this);
+    lstMissions->setWhatsThis(tr("Pick the mission or training to play"));
     pageLayout->addWidget(lstMissions, 1, 0, 1, 2); // span 2 columns
 
     // let's not make the list use more space than needed
@@ -90,6 +90,7 @@
     QBoxLayout * bottomLayout = new QVBoxLayout();
 
     btnStart = formattedButton(QPushButton::tr("Go!"));
+    btnStart->setWhatsThis(tr("Start fighting"));
     btnStart->setFixedWidth(140);
 
     bottomLayout->addWidget(btnStart);