Can now change theme for static and mission maps.
Fixed mission map descriptions that had commas which broke them. Now, you must escape commas in map descriptions.
Made bgwidget repaint on animation tick to avoid buffer-not-clearing issue with widgets that change overtop the background leaving a ghost image of the widget's previous state.
Generated map is now the default map in the mapconfig widget.
--- a/QTfrontend/model/MapModel.cpp Tue Jan 15 00:52:29 2013 -0500
+++ b/QTfrontend/model/MapModel.cpp Wed Jan 16 18:34:43 2013 -0500
@@ -90,7 +90,7 @@
QString locale = HWApplication::keyboardInputLocale().name();
QSettings descSettings(QString("physfs://Maps/%1/desc.txt").arg(map), QSettings::IniFormat);
- desc = descSettings.value(locale, QString()).toString().replace("|", "\n");
+ desc = descSettings.value(locale, QString()).toString().replace("|", "\n").replace("\\,", ",");
}
// let's use some semi-sane hedgehog limit, rather than none
--- a/QTfrontend/res/css/qt.css Tue Jan 15 00:52:29 2013 -0500
+++ b/QTfrontend/res/css/qt.css Wed Jan 16 18:34:43 2013 -0500
@@ -73,6 +73,10 @@
border-radius: 10px;
}
+#mapPreview {
+background-color: #0d0544;
+}
+
QLineEdit, QLabel, QHeaderView, QListWidget, QListView, QTableView,
QSpinBox, QToolBox::tab, QComboBox, QComboBox QAbstractItemView,
IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget,
--- a/QTfrontend/ui/widget/bgwidget.cpp Tue Jan 15 00:52:29 2013 -0500
+++ b/QTfrontend/ui/widget/bgwidget.cpp Wed Jan 16 18:34:43 2013 -0500
@@ -176,6 +176,8 @@
int ydiff = newPos.y() - oldPos.y();
update(oldPos.x(), oldPos.y(), xdiff+sprite.width(), ydiff+sprite.height());
}
+
+ repaint(); // Repaint every frame. Prevents ghosting of widgets if widgets resize in runtime.
}
void BGWidget::startAnimation()
--- a/QTfrontend/ui/widget/mapContainer.cpp Tue Jan 15 00:52:29 2013 -0500
+++ b/QTfrontend/ui/widget/mapContainer.cpp Wed Jan 16 18:34:43 2013 -0500
@@ -228,9 +228,10 @@
lblDesc->setWordWrap(true);
lblDesc->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
lblDesc->setAlignment(Qt::AlignTop | Qt::AlignLeft);
- bottomLeftLayout->addWidget(lblDesc, 100);
+ lblDesc->setStyleSheet("font: 10px;");
+ bottomLeftLayout->addWidget(lblDesc, 1);
- /* Spacing above theme chooser */
+ /* Add stretch above theme button */
bottomLeftLayout->addStretch(1);
@@ -239,7 +240,7 @@
btnTheme = new QPushButton();
connect(btnTheme, SIGNAL(clicked()), this, SLOT(showThemePrompt()));
m_childWidgets << btnTheme;
- bottomLeftLayout->addWidget(btnTheme, 1);
+ bottomLeftLayout->addWidget(btnTheme, 0);
/* Add everything to main layout */
@@ -254,7 +255,7 @@
staticMapChanged(m_staticMapModel->index(0, 0));
missionMapChanged(m_missionMapModel->index(0, 0));
updateTheme(m_themeModel->index(0, 0));
- mapTypeChanged(0);
+ changeMapType(MapModel::GeneratedMap);
}
void HWMapContainer::setImage(const QImage newImage)
@@ -434,6 +435,8 @@
if(mdl.size())
updateTheme(mdl.at(0));
+ else
+ intSetIconlessTheme(theme);
}
void HWMapContainer::setRandomMap()
@@ -456,7 +459,6 @@
}
}
-
void HWMapContainer::setRandomSeed()
{
setSeed(QUuid::createUuid().toString());
@@ -668,7 +670,6 @@
generationStyles->hide();
mazeStyles->hide();
lblDesc->hide();
- btnTheme->hide();
btnLoadMap->hide();
btnEditMap->hide();
btnRandomize->hide();
@@ -682,7 +683,6 @@
lblMapList->show();
generationStyles->show();
btnRandomize->show();
- btnTheme->show();
break;
case MapModel::GeneratedMaze:
mapgen = MAPGEN_MAZE;
@@ -691,12 +691,10 @@
lblMapList->show();
mazeStyles->show();
btnRandomize->show();
- btnTheme->show();
break;
case MapModel::HandDrawnMap:
mapgen = MAPGEN_DRAWN;
setMapInfo(MapModel::MapInfoDrawn);
- btnTheme->show();
btnLoadMap->show();
btnEditMap->show();
break;
@@ -724,6 +722,9 @@
break;
}
+ // Update theme button size
+ updateThemeButtonSize();
+
// Update cType combobox
for (int i = 0; i < cType->count(); i++)
{
@@ -737,6 +738,21 @@
emit mapgenChanged(mapgen);
}
+void HWMapContainer::updateThemeButtonSize()
+{
+ if (m_mapInfo.type == MapModel::MissionMap)
+ {
+ btnTheme->setIconSize(QSize(30, 30));
+ btnTheme->setFixedHeight(30);
+ }
+ else
+ {
+ QSize iconSize = btnTheme->icon().actualSize(QSize(65535, 65535));
+ btnTheme->setIconSize(iconSize);
+ btnTheme->setFixedHeight(64);
+ }
+}
+
void HWMapContainer::showThemePrompt()
{
ThemePrompt prompt(this);
@@ -745,7 +761,6 @@
QModelIndex current = m_themeModel->index(theme, 0);
updateTheme(current);
-
emit themeChanged(m_theme);
}
@@ -754,11 +769,11 @@
m_theme = selectedTheme = current.data().toString();
QIcon icon = qVariantValue<QIcon>(current.data(Qt::UserRole));
QSize iconSize = icon.actualSize(QSize(65535, 65535));
- btnTheme->setFixedHeight(iconSize.height());
+ btnTheme->setFixedHeight(64);
btnTheme->setIconSize(iconSize);
btnTheme->setIcon(icon);
btnTheme->setText(tr("Theme: ") + current.data(Qt::DisplayRole).toString());
- emit themeChanged(m_theme);
+ updateThemeButtonSize();
}
void HWMapContainer::staticMapChanged(const QModelIndex & map, const QModelIndex & old)
@@ -815,13 +830,20 @@
{
m_mapInfo = mapInfo;
m_curMap = m_mapInfo.name;
- m_theme = m_mapInfo.theme;
// the map has no pre-defined theme, so let's use the selected one
if (m_mapInfo.theme.isEmpty())
{
- m_theme = selectedTheme;
- emit themeChanged(m_theme);
+ if (!selectedTheme.isEmpty())
+ {
+ setTheme(selectedTheme);
+ emit themeChanged(selectedTheme);
+ }
+ }
+ else
+ {
+ setTheme(m_mapInfo.theme);
+ emit themeChanged(m_mapInfo.theme);
}
lblDesc->setText(mapInfo.desc);
@@ -832,14 +854,10 @@
void HWMapContainer::loadDrawing()
{
-
-
QString fileName = QFileDialog::getOpenFileName(NULL, tr("Load drawn map"), ".", tr("Drawn Maps") + " (*.hwmap);;" + tr("All files") + " (*)");
if(fileName.isEmpty()) return;
-
-
QFile f(fileName);
if(!f.open(QIODevice::ReadOnly))
@@ -878,3 +896,12 @@
foreach (QWidget *widget, m_childWidgets)
widget->setEnabled(master);
}
+
+void HWMapContainer::intSetIconlessTheme(const QString & name)
+{
+ if (name.isEmpty()) return;
+
+ m_theme = name;
+ btnTheme->setIcon(QIcon());
+ btnTheme->setText(tr("Theme: ") + name);
+}
\ No newline at end of file
--- a/QTfrontend/ui/widget/mapContainer.h Tue Jan 15 00:52:29 2013 -0500
+++ b/QTfrontend/ui/widget/mapContainer.h Wed Jan 16 18:34:43 2013 -0500
@@ -154,10 +154,12 @@
void intSetMapgen(MapGenerator m);
void intSetTemplateFilter(int);
void intSetMazeSize(int size);
+ void intSetIconlessTheme(const QString & name);
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 updatePreview();
+ void updateThemeButtonSize();
MapModel::MapInfo m_mapInfo;
QString m_theme;
--- a/share/hedgewars/Data/Maps/CTF_Blizzard/desc.txt Tue Jan 15 00:52:29 2013 -0500
+++ b/share/hedgewars/Data/Maps/CTF_Blizzard/desc.txt Wed Jan 16 18:34:43 2013 -0500
@@ -1,1 +1,1 @@
-en_US=Capture the Flag, blizzard style!
+en_US=Capture the Flag\, blizzard style!
--- a/share/hedgewars/Data/Maps/Control/desc.txt Tue Jan 15 00:52:29 2013 -0500
+++ b/share/hedgewars/Data/Maps/Control/desc.txt Wed Jan 16 18:34:43 2013 -0500
@@ -1,1 +1,1 @@
-en_US=Islands scattered everywhere, full set of|weapons.
+en_US=Islands scattered everywhere\, full set of|weapons.
--- a/share/hedgewars/Data/Maps/TrophyRace/desc.txt Tue Jan 15 00:52:29 2013 -0500
+++ b/share/hedgewars/Data/Maps/TrophyRace/desc.txt Wed Jan 16 18:34:43 2013 -0500
@@ -1,1 +1,1 @@
-en_US=Ready, set, go! Who is going to|be the first in this|crazy race?
+en_US=Ready\, set\, go! Who is going to|be the first in this|crazy race?
\ No newline at end of file