# HG changeset patch # User dag10 # Date 1358379283 18000 # Node ID 85bd6c7b26410f602e49f23a76e85f15e851ba99 # Parent 9f2527848ffd4559aa18c3c5276338f8b2c37905 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. diff -r 9f2527848ffd -r 85bd6c7b2641 QTfrontend/model/MapModel.cpp --- 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 diff -r 9f2527848ffd -r 85bd6c7b2641 QTfrontend/res/css/qt.css --- 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, diff -r 9f2527848ffd -r 85bd6c7b2641 QTfrontend/ui/widget/bgwidget.cpp --- 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() diff -r 9f2527848ffd -r 85bd6c7b2641 QTfrontend/ui/widget/mapContainer.cpp --- 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(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 diff -r 9f2527848ffd -r 85bd6c7b2641 QTfrontend/ui/widget/mapContainer.h --- 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; diff -r 9f2527848ffd -r 85bd6c7b2641 share/hedgewars/Data/Maps/CTF_Blizzard/desc.txt --- 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! diff -r 9f2527848ffd -r 85bd6c7b2641 share/hedgewars/Data/Maps/Control/desc.txt --- 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. diff -r 9f2527848ffd -r 85bd6c7b2641 share/hedgewars/Data/Maps/TrophyRace/desc.txt --- 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