# HG changeset patch # User sheepluva # Date 1463305027 -7200 # Node ID fe339879cf7594c4d1c063ce6263300422603a5e # Parent 93621207563bd0d600d5612e897b8e608ad040f7# Parent 7642955690bccd79ae3da5b6b2b706cc79a5256e merge Wuzzy's frontend tweaks diff -r 93621207563b -r fe339879cf75 QTfrontend/hedgewars.qrc --- 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 @@ res/botlevels/3.png res/botlevels/4.png res/botlevels/5.png + res/botlevels/small0.png + res/botlevels/small1.png + res/botlevels/small2.png + res/botlevels/small3.png + res/botlevels/small4.png + res/botlevels/small5.png res/botlevels/net0.png res/botlevels/net1.png res/botlevels/net2.png diff -r 93621207563b -r fe339879cf75 QTfrontend/hwconsts.cpp.in diff -r 93621207563b -r fe339879cf75 QTfrontend/hwconsts.h diff -r 93621207563b -r fe339879cf75 QTfrontend/model/ammoSchemeModel.cpp --- 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 newScheme = defaultScheme; - newScheme[0] = QVariant(tr("new")); + newScheme[0] = QVariant(tr("New")); schemes.insert(schemes.size(), newScheme); } else { QList 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); } diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small0.png Binary file QTfrontend/res/botlevels/small0.png has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small1.png Binary file QTfrontend/res/botlevels/small1.png has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small1.xcf Binary file QTfrontend/res/botlevels/small1.xcf has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small2.png Binary file QTfrontend/res/botlevels/small2.png has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small2.xcf Binary file QTfrontend/res/botlevels/small2.xcf has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small3.png Binary file QTfrontend/res/botlevels/small3.png has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small3.xcf Binary file QTfrontend/res/botlevels/small3.xcf has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small4.png Binary file QTfrontend/res/botlevels/small4.png has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small4.xcf Binary file QTfrontend/res/botlevels/small4.xcf has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small5.png Binary file QTfrontend/res/botlevels/small5.png has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/res/botlevels/small5.xcf Binary file QTfrontend/res/botlevels/small5.xcf has changed diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/AbstractPage.cpp --- 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; } diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/AbstractPage.h --- 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. diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagedata.cpp --- 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); diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pageeditteam.cpp --- 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); diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pageinfo.cpp --- 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; } diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagemain.cpp --- 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; diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagemultiplayer.cpp --- 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; } diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagenet.cpp --- 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; } diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagenetgame.cpp --- 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() diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagenetserver.cpp --- 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; } diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pageplayrecord.cpp --- 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); diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pageplayrecord.h --- 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; diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pageroomslist.cpp --- 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; diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagescheme.cpp --- 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); diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/page/pagescheme.h --- 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; diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/widget/MinesTimeSpinBox.cpp --- /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 + * + * 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); + } +} diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/widget/MinesTimeSpinBox.h --- /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 + * + * 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 +#include + +/** + * SpinBox 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 diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/widget/chatwidget.cpp --- 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); diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/widget/mapContainer.cpp --- 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) diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/widget/mapContainer.h --- 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(); diff -r 93621207563b -r fe339879cf75 QTfrontend/ui/widget/selectWeapon.cpp --- 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); diff -r 93621207563b -r fe339879cf75 share/hedgewars/Data/Locale/hedgewars_en.ts --- 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 @@ + MinesTimeSpinBox + + Random + Random + + + %1 seconds + + %1 second + %1 seconds + + + + GameCFGWidget Edit weapons @@ -1440,14 +1454,6 @@ Your hogs are unable to move, put your artillery skills to the test - Random - Random - - - Seconds - Seconds - - New New