--- a/QTfrontend/hedgewars.qrc Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/hedgewars.qrc Sun May 15 11:37:07 2016 +0200
@@ -22,6 +22,12 @@
<file>res/botlevels/3.png</file>
<file>res/botlevels/4.png</file>
<file>res/botlevels/5.png</file>
+ <file>res/botlevels/small0.png</file>
+ <file>res/botlevels/small1.png</file>
+ <file>res/botlevels/small2.png</file>
+ <file>res/botlevels/small3.png</file>
+ <file>res/botlevels/small4.png</file>
+ <file>res/botlevels/small5.png</file>
<file>res/botlevels/net0.png</file>
<file>res/botlevels/net1.png</file>
<file>res/botlevels/net2.png</file>
--- a/QTfrontend/model/ammoSchemeModel.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/model/ammoSchemeModel.cpp Sun May 15 11:37:07 2016 +0200
@@ -755,13 +755,13 @@
if (row == -1)
{
QList<QVariant> newScheme = defaultScheme;
- newScheme[0] = QVariant(tr("new"));
+ newScheme[0] = QVariant(tr("New"));
schemes.insert(schemes.size(), newScheme);
}
else
{
QList<QVariant> newScheme = schemes[row];
- newScheme[0] = QVariant(tr("copy of %1").arg(newScheme[0].toString()));
+ newScheme[0] = QVariant(tr("Copy of %1").arg(newScheme[0].toString()));
schemes.insert(schemes.size(), newScheme);
}
Binary file QTfrontend/res/botlevels/small0.png has changed
Binary file QTfrontend/res/botlevels/small1.png has changed
Binary file QTfrontend/res/botlevels/small1.xcf has changed
Binary file QTfrontend/res/botlevels/small2.png has changed
Binary file QTfrontend/res/botlevels/small2.xcf has changed
Binary file QTfrontend/res/botlevels/small3.png has changed
Binary file QTfrontend/res/botlevels/small3.xcf has changed
Binary file QTfrontend/res/botlevels/small4.png has changed
Binary file QTfrontend/res/botlevels/small4.xcf has changed
Binary file QTfrontend/res/botlevels/small5.png has changed
Binary file QTfrontend/res/botlevels/small5.xcf has changed
--- a/QTfrontend/ui/page/AbstractPage.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/AbstractPage.cpp Sun May 15 11:37:07 2016 +0200
@@ -45,7 +45,7 @@
// stretch grid space for body and footer
pageLayout->setColumnStretch(0,1);
- pageLayout->setColumnStretch(1,2);
+ pageLayout->setColumnStretch(1,8);
pageLayout->setColumnStretch(2,1);
pageLayout->setRowStretch(0,1);
pageLayout->setRowStretch(1,0);
@@ -127,24 +127,24 @@
return btn;
}
-QPushButtonWithSound * AbstractPage::addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan, int columnSpan, bool hasIcon)
+QPushButtonWithSound * AbstractPage::addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan, int columnSpan, bool hasIcon, Qt::Alignment alignment)
{
QPushButtonWithSound * btn = formattedButton(name, hasIcon);
- grid->addWidget(btn, row, column, rowSpan, columnSpan);
+ grid->addWidget(btn, row, column, rowSpan, columnSpan, alignment);
return btn;
}
-QPushButtonWithSound * AbstractPage::addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon)
+QPushButtonWithSound * AbstractPage::addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon, Qt::Alignment alignment)
{
QPushButtonWithSound * btn = formattedButton(name, hasIcon);
- box->addWidget(btn, where);
+ box->addWidget(btn, where, alignment);
return btn;
}
-QPushButton* AbstractPage::addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon)
+QPushButton* AbstractPage::addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon, Qt::Alignment alignment)
{
QPushButton* btn = formattedSoundlessButton(name, hasIcon);
- box->addWidget(btn, where);
+ box->addWidget(btn, where, alignment);
return btn;
}
--- a/QTfrontend/ui/page/AbstractPage.h Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/AbstractPage.h Sun May 15 11:37:07 2016 +0200
@@ -185,10 +185,11 @@
* @param rowSpan how many layout rows the button will span.
* @param columnSpan how many layout columns the button will span.
* @param hasIcon set to true if this is a picture button.
+ * @param alignment alignment of the button in the layout.
*
* @return the button.
*/
- QPushButtonWithSound * addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan = 1, int columnSpan = 1, bool hasIcon = false);
+ QPushButtonWithSound * addButton(const QString & name, QGridLayout * grid, int row, int column, int rowSpan = 1, int columnSpan = 1, bool hasIcon = false, Qt::Alignment alignment = 0);
/**
* @brief Creates a default formatted button and adds it to a
@@ -198,11 +199,12 @@
* @param box pointer of the box layout in which to insert the button.
* @param where layout ndex in which to insert the button.
* @param hasIcon set to true if this is a picture button.
+ * @param alignment alignment of the button in the layout.
*
* @return the button.
*/
- QPushButtonWithSound * addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false);
- QPushButton* addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false);
+ QPushButtonWithSound * addButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false, Qt::Alignment alignment = 0);
+ QPushButton* addSoundlessButton(const QString & name, QBoxLayout * box, int where, bool hasIcon = false, Qt::Alignment alignment = 0);
/**
* @brief Changes visibility of the back-button.
--- a/QTfrontend/ui/page/pagedata.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagedata.cpp Sun May 15 11:37:07 2016 +0200
@@ -54,7 +54,8 @@
QHBoxLayout * bottomLayout = new QHBoxLayout();
bottomLayout->setStretch(0, 1);
- pbOpenDir = addButton(tr("Open packages directory"), bottomLayout, 1, false);
+ pbOpenDir = addButton(tr("Open packages directory"), bottomLayout, 1, false, Qt::AlignBottom);
+ pbOpenDir->setMinimumHeight(50);
bottomLayout->setStretch(2, 1);
--- a/QTfrontend/ui/page/pageeditteam.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pageeditteam.cpp Sun May 15 11:37:07 2016 +0200
@@ -100,7 +100,7 @@
tmpLabel->setText(QLabel::tr("Name"));
GBTLayout->addWidget(tmpLabel, 0, 0);
tmpLabel = new QLabel(GBoxTeam);
- tmpLabel->setText(QLabel::tr("Type"));
+ tmpLabel->setText(QLabel::tr("Player"));
GBTLayout->addWidget(tmpLabel, 1, 0);
tmpLabel = new QLabel(GBoxTeam);
tmpLabel->setText(QLabel::tr("Grave"));
@@ -118,19 +118,21 @@
vbox2->addWidget(GBoxTeam);
CBTeamLvl = new QComboBox(GBoxTeam);
- CBTeamLvl->setIconSize(QSize(48, 48));
- CBTeamLvl->addItem(QIcon(":/res/botlevels/0.png"), QComboBox::tr("Human"));
+ CBTeamLvl->setIconSize(QSize(32, 32));
+ CBTeamLvl->addItem(QIcon(":/res/botlevels/small0.png"), QComboBox::tr("Human"));
for(int i = 5; i > 0; i--)
CBTeamLvl->addItem(
- QIcon(QString(":/res/botlevels/%1.png").arg(6 - i)),
- QString("%1 %2").arg(QComboBox::tr("Level")).arg(i)
+ QIcon(QString(":/res/botlevels/small%1.png").arg(6 - i)),
+ QComboBox::tr("Computer (Level %1)").arg(i)
);
+ CBTeamLvl->setFixedHeight(38);
GBTLayout->addWidget(CBTeamLvl, 1, 1);
CBGrave = new QComboBox(GBoxTeam);
CBGrave->setMaxCount(65535);
CBGrave->setMaxVisibleItems(20);
CBGrave->setIconSize(QSize(32, 32));
+ CBGrave->setFixedHeight(44);
GBTLayout->addWidget(CBGrave, 2, 1);
CBFlag = new QComboBox(GBoxTeam);
@@ -145,6 +147,7 @@
hbox->addWidget(CBVoicepack, 100);
btnTestSound = addSoundlessButton(":/res/PlaySound.png", hbox, 1, true);
+ btnTestSound->setWhatsThis("Play a random example of this voice");
hbox->setStretchFactor(btnTestSound, 1);
GBTLayout->addLayout(hbox, 4, 1);
@@ -153,6 +156,7 @@
GBoxFort->setTitle(QGroupBox::tr("Fort"));
QGridLayout * GBFLayout = new QGridLayout(GBoxFort);
CBFort = new QComboBox(GBoxFort);
+ CBFort->setMaxVisibleItems(25);
CBFort->setMaxCount(65535);
GBFLayout->addWidget(CBFort, 0, 0);
FortPreview = new SquareLabel(GBoxFort);
--- a/QTfrontend/ui/page/pageinfo.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pageinfo.cpp Sun May 15 11:37:07 2016 +0200
@@ -40,9 +40,10 @@
QLayout * PageInfo::footerLayoutDefinition()
{
QHBoxLayout * bottomLayout = new QHBoxLayout();
- BtnSnapshots = addButton(":/res/Star.png", bottomLayout, 0, true);
+ bottomLayout->setContentsMargins(0,0,0,0);
+ BtnSnapshots = addButton(":/res/Star.png", bottomLayout, 0, true, Qt::AlignBottom);
BtnSnapshots->setWhatsThis(tr("Open the snapshot folder"));
- bottomLayout->setAlignment(BtnSnapshots, Qt::AlignRight | Qt::AlignVCenter);
+ BtnSnapshots->setMinimumSize(50,50);
return bottomLayout;
}
--- a/QTfrontend/ui/page/pagemain.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagemain.cpp Sun May 15 11:37:07 2016 +0200
@@ -109,11 +109,11 @@
btnBack->setWhatsThis(tr("Exit game"));
#ifdef VIDEOREC
- BtnVideos = addButton(":/res/Videos.png", bottomLayout, 1, true);
+ BtnVideos = addButton(":/res/Videos.png", bottomLayout, 1, true, Qt::AlignBottom);
BtnVideos->setWhatsThis(tr("Manage videos recorded from game"));
#endif
- BtnSetup = addButton(":/res/Settings.png", bottomLayout, 2, true);
+ BtnSetup = addButton(":/res/Settings.png", bottomLayout, 2, true, Qt::AlignBottom);
BtnSetup->setWhatsThis(tr("Edit game preferences"));
return bottomLayout;
--- a/QTfrontend/ui/page/pagemultiplayer.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagemultiplayer.cpp Sun May 15 11:37:07 2016 +0200
@@ -46,7 +46,7 @@
{
QHBoxLayout * bottomLeftLayout = new QHBoxLayout();
- btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true);
+ btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true, Qt::AlignBottom);
btnSetup->setWhatsThis(tr("Edit game preferences"));
return bottomLeftLayout;
@@ -60,6 +60,7 @@
QSize sz = lp.actualSize(QSize(65535, 65535));
BtnStartMPGame = new QPushButton();
BtnStartMPGame->setText(tr("Start"));
+ BtnStartMPGame->setWhatsThis(tr("Start fighting (requires at least 2 teams)"));
BtnStartMPGame->setMinimumWidth(sz.width() + 60);
BtnStartMPGame->setIcon(lp);
BtnStartMPGame->setFixedHeight(50);
@@ -68,7 +69,7 @@
BtnStartMPGame->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
footerLayout->addStretch();
- footerLayout->addWidget(BtnStartMPGame);
+ footerLayout->addWidget(BtnStartMPGame, 0, Qt::AlignBottom);
return footerLayout;
}
--- a/QTfrontend/ui/page/pagenet.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagenet.cpp Sun May 15 11:37:07 2016 +0200
@@ -71,7 +71,7 @@
QHBoxLayout * footerLayout = new QHBoxLayout();
BtnNetSvrStart = formattedButton(QPushButton::tr("Start server"));
- BtnNetSvrStart->setMinimumWidth(180);
+ BtnNetSvrStart->setMinimumSize(180, 50);
QString serverPath = bindir->absolutePath() + "/hedgewars-server";
#ifdef Q_OS_WIN
serverPath += + ".exe";
@@ -80,7 +80,7 @@
BtnNetSvrStart->setVisible(server.exists());
footerLayout->addStretch();
- footerLayout->addWidget(BtnNetSvrStart);
+ footerLayout->addWidget(BtnNetSvrStart, 0, Qt::AlignBottom);
return footerLayout;
}
--- a/QTfrontend/ui/page/pagenetgame.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagenetgame.cpp Sun May 15 11:37:07 2016 +0200
@@ -49,6 +49,7 @@
roomConfigLayout->setSpacing(0);
leRoomName = new HistoryLineEdit(this, 10);
+ leRoomName->setWhatsThis(tr("Room name"));
leRoomName->setMaxLength(60);
leRoomName->setMinimumWidth(400);
leRoomName->setMaximumWidth(600);
@@ -58,6 +59,7 @@
roomConfigLayout->addWidget(leRoomName, 100);
BtnUpdate = new QPushButton();
+ BtnUpdate->setWhatsThis(tr("Update the room name"));
BtnUpdate->setEnabled(false);
BtnUpdate->setText(tr("Update"));
BtnUpdate->setFixedHeight(leRoomName->height() - 0);
@@ -111,8 +113,9 @@
QLayout * PageNetGame::footerLayoutLeftDefinition()
{
QHBoxLayout * bottomLeftLayout = new QHBoxLayout();
+ bottomLeftLayout->setContentsMargins(0,0,0,0);
- btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true);
+ btnSetup = addButton(":/res/Settings.png", bottomLeftLayout, 0, true, Qt::AlignBottom);
btnSetup->setWhatsThis(tr("Edit game preferences"));
return bottomLeftLayout;
@@ -125,13 +128,14 @@
// Ready button
BtnGo = new QPushButton(this);
- BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
BtnGo->setIconSize(QSize(25, 34));
+ BtnGo->setWhatsThis(tr("Turn on the lightbulb to show the other players when you're ready to fight"));
+ setReadyStatus(false);
BtnGo->setMinimumWidth(50);
BtnGo->setMinimumHeight(50);
bottomLayout->addStretch();
- bottomLayout->addWidget(BtnGo);
+ bottomLayout->addWidget(BtnGo, 0, Qt::AlignBottom);
// Start button
@@ -139,13 +143,14 @@
QSize sz = lp.actualSize(QSize(65535, 65535));
BtnStart = new QPushButton();
BtnStart->setText(tr("Start"));
+ BtnStart->setWhatsThis(tr("Start fighting (requires at least 2 teams)"));
BtnStart->setMinimumWidth(sz.width() + 60);
BtnStart->setIcon(lp);
BtnStart->setFixedHeight(50);
BtnStart->setIconSize(sz);
BtnStart->setFlat(true);
BtnStart->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- bottomLayout->addWidget(BtnStart);
+ bottomLayout->addWidget(BtnStart, 0, Qt::AlignBottom);
return bottomLayout;
}
@@ -217,9 +222,13 @@
void PageNetGame::setReadyStatus(bool isReady)
{
if(isReady)
+ {
BtnGo->setIcon(QIcon(":/res/lightbulb_on.png"));
+ }
else
+ {
BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
+ }
}
void PageNetGame::onRoomNameEdited()
--- a/QTfrontend/ui/page/pagenetserver.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagenetserver.cpp Sun May 15 11:37:07 2016 +0200
@@ -98,10 +98,10 @@
BtnStart = formattedButton(QPushButton::tr("Start"));
BtnStart->setWhatsThis(QPushButton::tr("Start private server"));
- BtnStart->setMinimumWidth(180);
+ BtnStart->setMinimumSize(180, 50);
bottomLayout->addStretch();
- bottomLayout->addWidget(BtnStart);
+ bottomLayout->addWidget(BtnStart, 0, Qt::AlignBottom);
return bottomLayout;
}
--- a/QTfrontend/ui/page/pageplayrecord.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pageplayrecord.cpp Sun May 15 11:37:07 2016 +0200
@@ -40,11 +40,6 @@
pageLayout->setColumnStretch(2, 1);
pageLayout->setRowStretch(2, 100);
- BtnPlayDemo = new QPushButton(this);
- BtnPlayDemo->setFont(*font14);
- BtnPlayDemo->setText(QPushButton::tr("Play demo"));
- pageLayout->addWidget(BtnPlayDemo, 3, 2);
-
BtnRenameRecord = new QPushButton(this);
BtnRenameRecord->setText(QPushButton::tr("Rename"));
pageLayout->addWidget(BtnRenameRecord, 0, 2);
@@ -60,6 +55,23 @@
return pageLayout;
}
+QLayout * PagePlayDemo::footerLayoutDefinition()
+{
+ QHBoxLayout * bottomLayout = new QHBoxLayout();
+
+ BtnPlayDemo = addButton(tr("Play demo"), bottomLayout, 0, false, Qt::AlignBottom);
+ const QIcon& lp = QIcon(":/res/Start.png");
+ QSize sz = lp.actualSize(QSize(65535, 65535));
+ BtnPlayDemo->setMinimumWidth(sz.width());
+ BtnPlayDemo->setIcon(lp);
+ BtnPlayDemo->setFixedHeight(50);
+ BtnPlayDemo->setIconSize(sz);
+ BtnPlayDemo->setFlat(true);
+ BtnPlayDemo->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+
+ return bottomLayout;
+}
+
void PagePlayDemo::connectSignals()
{
connect(BtnRenameRecord, SIGNAL(clicked()), this, SLOT(renameRecord()));
@@ -85,12 +97,14 @@
dir.cd("Demos");
extension = "hwd";
BtnPlayDemo->setText(QPushButton::tr("Play demo"));
+ BtnPlayDemo->setWhatsThis(tr("Play the selected demo"));
}
else
{
dir.cd("Saves");
extension = "hws";
BtnPlayDemo->setText(QPushButton::tr("Load"));
+ BtnPlayDemo->setWhatsThis(tr("Load the selected game"));
}
dir.setFilter(QDir::Files);
--- a/QTfrontend/ui/page/pageplayrecord.h Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pageplayrecord.h Sun May 15 11:37:07 2016 +0200
@@ -52,6 +52,7 @@
private:
QLayout * bodyLayoutDefinition();
+ QLayout * footerLayoutDefinition();
void connectSignals();
RecordType recType;
--- a/QTfrontend/ui/page/pageroomslist.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pageroomslist.cpp Sun May 15 11:37:07 2016 +0200
@@ -174,8 +174,8 @@
{
QHBoxLayout * bottomLayout = new QHBoxLayout();
- BtnAdmin = addButton(tr("Admin features"), bottomLayout, 0);
- BtnAdmin->setStyleSheet("padding: 4px auto;");
+ BtnAdmin = addButton(tr("Admin features"), bottomLayout, 0, false, Qt::AlignBottom);
+ BtnAdmin->setMinimumSize(180, 50);
BtnAdmin->setWhatsThis(tr("Open server administration page"));
return bottomLayout;
--- a/QTfrontend/ui/page/pagescheme.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagescheme.cpp Sun May 15 11:37:07 2016 +0200
@@ -30,6 +30,7 @@
#include "ammoSchemeModel.h"
#include "pagescheme.h"
#include "FreqSpinBox.h"
+#include "MinesTimeSpinBox.h"
QLayout * PageScheme::bodyLayoutDefinition()
@@ -170,15 +171,37 @@
// Right
QLabel * l;
+ QString wtDamageModifier = tr("Overall damage and knockback in percent");
+ QString wtTurnTime = tr("Turn time in seconds");
+ QString wtInitHealth = tr("Initial health of hedgehogs");
+ QString wtSuddenDeath = tr("How many rounds have to be played before Sudden Death begins");
+ QString wtWaterRise = tr("How much the water rises per turn while in Sudden Death. Set to 0 along with Sudden Death Health Decrease to disable Sudden Death.");
+ QString wtHealthDecrease = tr("How much health hedgehogs lose per turn while in Sudden Death, down to 1 health. Set to 0 along with Sudden Death Water Rise to disable Sudden Death.");
+ QString wtRopeModifier = tr("Maximum rope length in percent");
+ QString wtHealthCrates = tr("Likelihood of a dropped crate being a health crate. All other crates will be weapon or utility crates.");
+ QString wtCaseProb = tr("Likelihood of a crate dropping before a turn");
+ QString wtCrateHealth= tr("Health bonus for collecting a health crate");
+ QString wtMinesTime = tr("Detonation timer of mines. The random timer lies between 0 and 5 seconds. The timer of air mines will be a quarter of the mines timer.");
+ QString wtMines = tr("Average number of mines to be placed a medium-sized island map. This number will be scaled for other maps.");
+ QString wtMineDuds = tr("Likelihood of a mine being a dud. Does not affect mines placed by hedgehogs.");
+ QString wtExplosives = tr("Average number of barrels to be placed a medium-sized island map. This number will be scaled for other maps.");
+ QString wtAirMines = tr("Average number of air mines to be placed a medium-sized island map. This number will be scaled for other maps.");
+ QString wtWorldEdge = tr("Affects the left and right boundaries of the map");
+ QString wtGetAwayTime = tr("Time you get after an attack");
+ QString wtScriptParam = tr("Additional parameter to configure game styles. The meaning depends on the used style, refer to the documentation. When in doubt, leave it empty.");
+
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Damage Modifier"));
+ l->setWhatsThis(wtDamageModifier);
l->setWordWrap(true);
glBSLayout->addWidget(l,0,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtDamageModifier);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconDamage.png"));
glBSLayout->addWidget(l,0,1,1,1);
SB_DamageModifier = new QSpinBox(gbBasicSettings);
+ SB_DamageModifier->setWhatsThis(wtDamageModifier);
SB_DamageModifier->setRange(10, 300);
SB_DamageModifier->setValue(100);
SB_DamageModifier->setSingleStep(25);
@@ -186,13 +209,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Turn Time"));
+ l->setWhatsThis(wtTurnTime);
l->setWordWrap(true);
glBSLayout->addWidget(l,1,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtTurnTime);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconTime.png"));
glBSLayout->addWidget(l,1,1,1,1);
SB_TurnTime = new QSpinBox(gbBasicSettings);
+ SB_TurnTime->setWhatsThis(wtTurnTime);
SB_TurnTime->setRange(1, 9999);
SB_TurnTime->setValue(45);
SB_TurnTime->setSingleStep(15);
@@ -200,13 +226,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Initial Health"));
+ l->setWhatsThis(wtInitHealth);
l->setWordWrap(true);
glBSLayout->addWidget(l,2,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtInitHealth);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconHealth.png"));
glBSLayout->addWidget(l,2,1,1,1);
SB_InitHealth = new QSpinBox(gbBasicSettings);
+ SB_InitHealth->setWhatsThis(wtInitHealth);
SB_InitHealth->setRange(50, 200);
SB_InitHealth->setValue(100);
SB_InitHealth->setSingleStep(25);
@@ -214,13 +243,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Sudden Death Timeout"));
+ l->setWhatsThis(wtSuddenDeath);
l->setWordWrap(true);
glBSLayout->addWidget(l,3,0,1,1);
l = new QLabel(gbBasicSettings);
l->setFixedSize(32,32);
+ l->setWhatsThis(wtSuddenDeath);
l->setPixmap(QPixmap(":/res/iconSuddenDeathTime.png"));
glBSLayout->addWidget(l,3,1,1,1);
SB_SuddenDeath = new QSpinBox(gbBasicSettings);
+ SB_SuddenDeath->setWhatsThis(wtSuddenDeath);
SB_SuddenDeath->setRange(0, 50);
SB_SuddenDeath->setValue(15);
SB_SuddenDeath->setSingleStep(3);
@@ -228,13 +260,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Sudden Death Water Rise"));
+ l->setWhatsThis(wtWaterRise);
l->setWordWrap(true);
glBSLayout->addWidget(l,4,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtWaterRise);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconSuddenDeathWater.png"));
glBSLayout->addWidget(l,4,1,1,1);
SB_WaterRise = new QSpinBox(gbBasicSettings);
+ SB_WaterRise->setWhatsThis(wtWaterRise);
SB_WaterRise->setRange(0, 100);
SB_WaterRise->setValue(47);
SB_WaterRise->setSingleStep(5);
@@ -242,13 +277,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Sudden Death Health Decrease"));
+ l->setWhatsThis(wtHealthDecrease);
l->setWordWrap(true);
glBSLayout->addWidget(l,5,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtHealthDecrease);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconSuddenDeath.png"));
glBSLayout->addWidget(l,5,1,1,1);
SB_HealthDecrease = new QSpinBox(gbBasicSettings);
+ SB_HealthDecrease->setWhatsThis(wtHealthDecrease);
SB_HealthDecrease->setRange(0, 100);
SB_HealthDecrease->setValue(5);
SB_HealthDecrease->setSingleStep(1);
@@ -256,13 +294,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("% Rope Length"));
+ l->setWhatsThis(wtRopeModifier);
l->setWordWrap(true);
glBSLayout->addWidget(l,6,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtRopeModifier);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconRope.png"));
glBSLayout->addWidget(l,6,1,1,1);
SB_RopeModifier = new QSpinBox(gbBasicSettings);
+ SB_RopeModifier->setWhatsThis(wtRopeModifier);
SB_RopeModifier->setRange(25, 999);
SB_RopeModifier->setValue(100);
SB_RopeModifier->setSingleStep(25);
@@ -270,26 +311,32 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Crate Drops"));
+ l->setWhatsThis(wtCaseProb);
l->setWordWrap(true);
glBSLayout->addWidget(l,7,0,1,1);
l = new QLabel(gbBasicSettings);
l->setFixedSize(32,32);
+ l->setWhatsThis(wtCaseProb);
l->setPixmap(QPixmap(":/res/iconBox.png"));
glBSLayout->addWidget(l,7,1,1,1);
SB_CaseProb = new FreqSpinBox(gbBasicSettings);
+ SB_CaseProb->setWhatsThis(wtCaseProb);
SB_CaseProb->setRange(0, 9);
SB_CaseProb->setValue(5);
glBSLayout->addWidget(SB_CaseProb,7,2,1,1);
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("% Health Crates"));
+ l->setWhatsThis(wtHealthCrates);
l->setWordWrap(true);
glBSLayout->addWidget(l,8,0,1,1);
l = new QLabel(gbBasicSettings);
l->setFixedSize(32,32);
+ l->setWhatsThis(wtHealthCrates);
l->setPixmap(QPixmap(":/res/iconHealthPercent.png"));
glBSLayout->addWidget(l,8,1,1,1);
SB_HealthCrates = new QSpinBox(gbBasicSettings);
+ SB_HealthCrates->setWhatsThis(wtHealthCrates);
SB_HealthCrates->setRange(0, 100);
SB_HealthCrates->setValue(35);
SB_HealthCrates->setSingleStep(5);
@@ -297,13 +344,16 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Health in Crates"));
+ l->setWhatsThis(wtCrateHealth);
l->setWordWrap(true);
glBSLayout->addWidget(l,9,0,1,1);
l = new QLabel(gbBasicSettings);
l->setFixedSize(32,32);
+ l->setWhatsThis(wtCrateHealth);
l->setPixmap(QPixmap(":/res/iconHealth.png"));
glBSLayout->addWidget(l,9,1,1,1);
SB_CrateHealth = new QSpinBox(gbBasicSettings);
+ SB_CrateHealth->setWhatsThis(wtCrateHealth);
SB_CrateHealth->setRange(0, 200);
SB_CrateHealth->setValue(25);
SB_CrateHealth->setSingleStep(5);
@@ -311,29 +361,33 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Mines Time"));
+ l->setWhatsThis(wtMinesTime);
l->setWordWrap(true);
glBSLayout->addWidget(l,10,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtMinesTime);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconMineTime.png"));
glBSLayout->addWidget(l,10,1,1,1);
- SB_MinesTime = new QSpinBox(gbBasicSettings);
+ SB_MinesTime = new MinesTimeSpinBox(gbBasicSettings);
+ SB_MinesTime->setWhatsThis(wtMinesTime);
SB_MinesTime->setRange(-1, 5);
SB_MinesTime->setValue(3);
SB_MinesTime->setSingleStep(1);
- SB_MinesTime->setSpecialValueText(tr("Random"));
- SB_MinesTime->setSuffix(" "+ tr("Seconds"));
glBSLayout->addWidget(SB_MinesTime,10,2,1,1);
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Mines"));
+ l->setWhatsThis(wtMines);
l->setWordWrap(true);
glBSLayout->addWidget(l,11,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtMines);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconMine.png"));
glBSLayout->addWidget(l,11,1,1,1);
SB_Mines = new QSpinBox(gbBasicSettings);
+ SB_Mines->setWhatsThis(wtMines);
SB_Mines->setRange(0, 200);
SB_Mines->setValue(0);
SB_Mines->setSingleStep(5);
@@ -341,27 +395,33 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("% Dud Mines"));
+ l->setWhatsThis(wtMineDuds);
l->setWordWrap(true);
glBSLayout->addWidget(l,12,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtMineDuds);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconDud.png"));
glBSLayout->addWidget(l,12,1,1,1);
SB_MineDuds = new QSpinBox(gbBasicSettings);
+ SB_MineDuds->setWhatsThis(wtMineDuds);
SB_MineDuds->setRange(0, 100);
SB_MineDuds->setValue(0);
SB_MineDuds->setSingleStep(5);
glBSLayout->addWidget(SB_MineDuds,12,2,1,1);
l = new QLabel(gbBasicSettings);
- l->setText(QLabel::tr("Explosives"));
+ l->setText(QLabel::tr("Barrels"));
+ l->setWhatsThis(wtExplosives);
l->setWordWrap(true);
glBSLayout->addWidget(l,13,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtExplosives);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconExplosive.png"));
glBSLayout->addWidget(l,13,1,1,1);
SB_Explosives = new QSpinBox(gbBasicSettings);
+ SB_Explosives->setWhatsThis(wtExplosives);
SB_Explosives->setRange(0, 200);
SB_Explosives->setValue(0);
SB_Explosives->setSingleStep(3);
@@ -369,27 +429,33 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Air Mines"));
+ l->setWhatsThis(wtAirMines);
l->setWordWrap(true);
glBSLayout->addWidget(l,14,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtAirMines);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconAirMine.png"));
glBSLayout->addWidget(l,14,1,1,1);
SB_AirMines = new QSpinBox(gbBasicSettings);
+ SB_AirMines->setWhatsThis(wtAirMines);
SB_AirMines->setRange(0, 200);
SB_AirMines->setValue(0);
SB_AirMines->setSingleStep(5);
glBSLayout->addWidget(SB_AirMines,14,2,1,1);
l = new QLabel(gbBasicSettings);
- l->setText(QLabel::tr("% Get Away Time"));
+ l->setText(QLabel::tr("% Retreat Time"));
+ l->setWhatsThis(wtGetAwayTime);
l->setWordWrap(true);
glBSLayout->addWidget(l,15,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtGetAwayTime);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconTime.png"));
glBSLayout->addWidget(l,15,1,1,1);
SB_GetAwayTime = new QSpinBox(gbBasicSettings);
+ SB_GetAwayTime->setWhatsThis(wtGetAwayTime);
SB_GetAwayTime->setRange(0, 999);
SB_GetAwayTime->setValue(100);
SB_GetAwayTime->setSingleStep(25);
@@ -397,14 +463,17 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("World Edge"));
+ l->setWhatsThis(wtWorldEdge);
l->setWordWrap(true);
glBSLayout->addWidget(l,16,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtWorldEdge);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconEarth.png"));
glBSLayout->addWidget(l,16,1,1,1);
CB_WorldEdge = new QComboBox(gbBasicSettings);
+ CB_WorldEdge->setWhatsThis(wtWorldEdge);
CB_WorldEdge->insertItem(0, tr("None (Default)"));
CB_WorldEdge->insertItem(1, tr("Wrap (World wraps)"));
CB_WorldEdge->insertItem(2, tr("Bounce (Edges reflect)"));
@@ -415,14 +484,17 @@
l = new QLabel(gbBasicSettings);
l->setText(QLabel::tr("Script parameter"));
+ l->setWhatsThis(wtScriptParam);
l->setWordWrap(true);
glBSLayout->addWidget(l,17,0,1,1);
l = new QLabel(gbBasicSettings);
+ l->setWhatsThis(wtScriptParam);
l->setFixedSize(32,32);
l->setPixmap(QPixmap(":/res/iconScript.png"));
glBSLayout->addWidget(l,17,1,1,1);
LE_ScriptParam = new QLineEdit(gbBasicSettings);
+ LE_ScriptParam->setWhatsThis(wtScriptParam);
LE_ScriptParam->setMaxLength(240);
glBSLayout->addWidget(LE_ScriptParam,17,2,1,1);
@@ -431,6 +503,7 @@
l->setText(QLabel::tr("Scheme Name:"));
LE_name = new QLineEdit(this);
+ LE_name->setWhatsThis("Name of this scheme");
gl->addWidget(LE_name,15,1,1,5);
gl->addWidget(l,15,0,1,1);
--- a/QTfrontend/ui/page/pagescheme.h Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/page/pagescheme.h Sun May 15 11:37:07 2016 +0200
@@ -23,6 +23,7 @@
#include "togglebutton.h"
class FreqSpinBox;
+class MinesTimeSpinBox;
class PageScheme : public AbstractPage
{
@@ -85,7 +86,7 @@
FreqSpinBox * SB_CaseProb;
QSpinBox * SB_HealthCrates;
QSpinBox * SB_CrateHealth;
- QSpinBox * SB_MinesTime;
+ MinesTimeSpinBox * SB_MinesTime;
QSpinBox * SB_Mines;
QSpinBox * SB_AirMines;
QSpinBox * SB_MineDuds;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/ui/widget/MinesTimeSpinBox.cpp Sun May 15 11:37:07 2016 +0200
@@ -0,0 +1,40 @@
+/*
+ * Hedgewars, a free turn based strategy game
+ * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * @brief MinesTimeSpinBox class implementation
+ */
+
+#include "MinesTimeSpinBox.h"
+
+
+MinesTimeSpinBox::MinesTimeSpinBox(QWidget* parent) : QSpinBox(parent)
+{
+ // do nothing
+};
+
+
+QString MinesTimeSpinBox::textFromValue(int value) const
+{
+ switch (value)
+ {
+ case -1: return tr("Random");
+ default: return tr("%1 seconds", "", value).arg(value);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/QTfrontend/ui/widget/MinesTimeSpinBox.h Sun May 15 11:37:07 2016 +0200
@@ -0,0 +1,55 @@
+/*
+ * Hedgewars, a free turn based strategy game
+ * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * @brief MinesTimeSpinBox class definition
+ */
+
+#ifndef HEDGEWARS_MINESTIMESPINBOX_H
+#define HEDGEWARS_MINESTIMESPINBOX_H
+
+#include <QObject>
+#include <QSpinBox>
+
+/**
+ * <code>SpinBox</code> that returns its value as localized mines time.
+ * @since 0.9.23
+ */
+class MinesTimeSpinBox : public QSpinBox
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * @brief Class constructor.
+ * @param parent parent widget.
+ */
+ MinesTimeSpinBox(QWidget * parent);
+
+ protected:
+ /**
+ * Returns it's value localized.
+ * @param value integer value to be representing as string.
+ * @return string representation
+ */
+ QString textFromValue(int value) const;
+};
+
+
+#endif // HEDGEWARS_MINESTIMESPINBOX_H
--- a/QTfrontend/ui/widget/chatwidget.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/widget/chatwidget.cpp Sun May 15 11:37:07 2016 +0200
@@ -210,6 +210,7 @@
// Chat view
chatText = new QTextBrowser(this);
+ chatText->setWhatsThis(tr("Chat log"));
chatText->document()->setDefaultStyleSheet(styleSheet());
chatText->setMinimumHeight(20);
chatText->setMinimumWidth(10);
@@ -226,6 +227,7 @@
// Hover: rgb(13, 5, 68)
chatEditLine = new SmartLineEdit();
+ chatEditLine->setWhatsThis(tr("Enter chat messages here and send them with [Enter]"));
chatEditLine->setMaxLength(300);
chatEditLine->setStyleSheet("SmartLineEdit { background-color: rgb(23, 11, 54); padding: 2px 8px; border-width: 0px; border-radius: 7px; } SmartLineEdit:hover, SmartLineEdit:focus { background-color: rgb(13, 5, 68); }");
chatEditLine->setFixedHeight(24);
@@ -237,6 +239,7 @@
// Nickname list
chatNicks = new QListView(this);
+ chatNicks->setWhatsThis(tr("List of players"));
chatNicks->setIconSize(QSize(24, 16));
chatNicks->setSelectionMode(QAbstractItemView::SingleSelection);
chatNicks->setEditTriggers(QAbstractItemView::NoEditTriggers);
--- a/QTfrontend/ui/widget/mapContainer.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/widget/mapContainer.cpp Sun May 15 11:37:07 2016 +0200
@@ -137,6 +137,7 @@
btnSeed = new QPushButton(parentWidget()->parentWidget());
btnSeed->setText(tr("Seed"));
+ btnSeed->setWhatsThis(tr("View and edit the seed, the source of randomness in the game"));
btnSeed->setStyleSheet("padding: 5px;");
btnSeed->setFixedHeight(cType->height());
connect(btnSeed, SIGNAL(clicked()), this, SLOT(showSeedPrompt()));
@@ -255,6 +256,7 @@
QHBoxLayout * themeHBox = new QHBoxLayout(this);
btnRandTheme = new QPushButton();
+ btnRandTheme->setWhatsThis(tr("Randomize the theme"));
btnRandTheme->setIcon(lp);
btnRandTheme->setIconSize(QSize(24, 24));
btnRandTheme->setFixedHeight(30);
@@ -264,6 +266,7 @@
themeHBox->addWidget(btnRandTheme, 0);
btnTheme = new QPushButton(this);
+ btnTheme->setWhatsThis(tr("Choose a theme"));
btnTheme->setFlat(true);
btnTheme->setIconSize(QSize(30, 30));
btnTheme->setFixedHeight(30);
@@ -794,6 +797,44 @@
changeMapType((MapModel::MapType)cType->itemData(index).toInt());
}
+void HWMapContainer::updateHelpTexts(MapModel::MapType type)
+{
+ QString randomAll = tr("Randomize the map, theme and seed");
+ QString randomNoMap = tr("Randomize the theme and seed");
+ QString randomSeed = tr("Randomize the seed");
+ QString randomAllPrev = tr("Click to randomize the map, theme and seed");
+ QString randomNoMapPrev = tr("Click to randomize the theme and seed");
+ QString mfsComplex = QString(tr("Adjust the complexity of the generated map"));
+ QString mfsFortsDistance = QString(tr("Adjust the distance between forts"));
+ switch (type)
+ {
+ case MapModel::GeneratedMap:
+ case MapModel::GeneratedPerlin:
+ case MapModel::GeneratedMaze:
+ mapPreview->setWhatsThis(randomAllPrev);
+ mapFeatureSize->setWhatsThis(mfsComplex);
+ btnRandomize->setWhatsThis(randomAll);
+ break;
+ case MapModel::MissionMap:
+ case MapModel::StaticMap:
+ mapPreview->setWhatsThis(randomAllPrev);
+ btnRandomize->setWhatsThis(randomAll);
+ break;
+ case MapModel::HandDrawnMap:
+ mapPreview->setWhatsThis(tr("Click to edit"));
+ btnRandomize->setWhatsThis(randomSeed);
+ break;
+ case MapModel::FortsMap:
+ mapPreview->setWhatsThis(randomNoMapPrev);
+ mapFeatureSize->setWhatsThis(mfsFortsDistance);
+ btnRandomize->setWhatsThis(randomNoMap);
+ break;
+ default:
+ break;
+ }
+}
+
+
void HWMapContainer::changeMapType(MapModel::MapType type, const QModelIndex & newMap)
{
staticMapList->hide();
@@ -870,6 +911,9 @@
// Update theme button size
updateThemeButtonSize();
+ // Update “What's This?” help texts
+ updateHelpTexts(type);
+
// Update cType combobox
for (int i = 0; i < cType->count(); i++)
{
@@ -888,6 +932,7 @@
void HWMapContainer::intSetFeatureSize(int val)
{
mapFeatureSize->setValue(val);
+ updateHelpTexts((MapModel::MapType)cType->itemData(cType->currentIndex()).toInt());
emit mapFeatureSizeChanged(val);
}
void HWMapContainer::setFeatureSize(int val)
--- a/QTfrontend/ui/widget/mapContainer.h Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/widget/mapContainer.h Sun May 15 11:37:07 2016 +0200
@@ -175,6 +175,7 @@
void mapChanged(const QModelIndex & map, int type, const QModelIndex & old = QModelIndex());
void setMapInfo(MapModel::MapInfo mapInfo);
void changeMapType(MapModel::MapType type, const QModelIndex & newMap = QModelIndex());
+ void updateHelpTexts(MapModel::MapType type);
void updatePreview();
void updateThemeButtonSize();
void setupMissionMapsView();
--- a/QTfrontend/ui/widget/selectWeapon.cpp Sun May 15 10:43:18 2016 +0200
+++ b/QTfrontend/ui/widget/selectWeapon.cpp Sun May 15 11:37:07 2016 +0200
@@ -286,12 +286,12 @@
void SelWeaponWidget::newWeaponsName()
{
- QString newName = tr("new");
+ QString newName = tr("New");
if(wconf->contains(newName))
{
//name already used -> look for an appropriate name:
int i=2;
- while(wconf->contains(newName = tr("new")+QString::number(i++))) ;
+ while(wconf->contains(newName = tr("New (%1)").arg(i++))) ;
}
setWeaponsName(newName);
}
@@ -322,12 +322,12 @@
if(wconf->contains(curWeaponsName))
{
QString ammo = getWeaponsString(curWeaponsName);
- QString newName = tr("copy of %1").arg(curWeaponsName);
+ QString newName = tr("Copy of %1").arg(curWeaponsName);
if(wconf->contains(newName))
{
//name already used -> look for an appropriate name:
int i=2;
- while(wconf->contains(newName = tr("copy of %1").arg(curWeaponsName+QString::number(i++))));
+ while(wconf->contains(newName = tr("Copy of %1 (%2)").arg(curWeaponsName, i++)));
}
setWeaponsName(newName);
setWeapons(ammo);
--- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sun May 15 10:43:18 2016 +0200
+++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Sun May 15 11:37:07 2016 +0200
@@ -138,6 +138,20 @@
</message>
</context>
<context>
+ <name>MinesTimeSpinBox</name>
+ <message>
+ <source>Random</source>
+ <translation>Random</translation>
+ </message>
+ <message numerus="yes">
+ <source>%1 seconds</source>
+ <translation>
+ <numerusform>%1 second</numerusform>
+ <numerusform>%1 seconds</numerusform>
+ </translation>
+ </message>
+</context>
+<context>
<name>GameCFGWidget</name>
<message>
<source>Edit weapons</source>
@@ -1440,14 +1454,6 @@
<translation>Your hogs are unable to move, put your artillery skills to the test</translation>
</message>
<message>
- <source>Random</source>
- <translation>Random</translation>
- </message>
- <message>
- <source>Seconds</source>
- <translation>Seconds</translation>
- </message>
- <message>
<source>New</source>
<translation>New</translation>
</message>