Can now change theme for static and mission maps.
authordag10 <gottlieb.drew@gmail.com>
Wed, 16 Jan 2013 18:34:43 -0500
changeset 8393 85bd6c7b2641
parent 8391 9f2527848ffd
child 8394 26f0d7ab5adf
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.
QTfrontend/model/MapModel.cpp
QTfrontend/res/css/qt.css
QTfrontend/ui/widget/bgwidget.cpp
QTfrontend/ui/widget/mapContainer.cpp
QTfrontend/ui/widget/mapContainer.h
share/hedgewars/Data/Maps/CTF_Blizzard/desc.txt
share/hedgewars/Data/Maps/Control/desc.txt
share/hedgewars/Data/Maps/TrophyRace/desc.txt
--- 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