summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/TileUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/widgets/TileUI.cpp')
-rw-r--r--sigmodr/widgets/TileUI.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/sigmodr/widgets/TileUI.cpp b/sigmodr/widgets/TileUI.cpp
index 735e31eb..808cec5b 100644
--- a/sigmodr/widgets/TileUI.cpp
+++ b/sigmodr/widgets/TileUI.cpp
@@ -28,6 +28,7 @@
#include <sigmod/Sprite.h>
// KDE includes
+#include <KComboBox>
#include <KLineEdit>
// Qt includes
@@ -74,17 +75,41 @@ QWidget* TileUI::Private::makeWidgets(ObjectUI* widget)
QWidget *form = openUiFile(":/gui/tile.ui", widget);
ui_name = form->findChild<KLineEdit*>("varName");
ui_walkable = form->findChild<QCheckBox*>("varWalkable");
+ ui_preview = form->findChild<KComboBox*>("varPreview");
ui_script = form->findChild<ScriptWidget*>("varScript");
connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
connect(ui_walkable, SIGNAL(toggled(bool)), this, SLOT(walkableChanged(bool)));
+ connect(ui_preview, SIGNAL(currentIndexChanged(int)), this, SLOT(previewChanged(int)));
connect(ui_script, SIGNAL(valueChanged(Sigcore::Script)), this, SLOT(scriptChanged(Sigcore::Script)));
return form;
}
+void TileUI::Private::refreshGui()
+{
+ int maxHeight = 0;
+ int maxWidth = 0;
+ const bool blockedPreview = ui_preview->blockSignals(true);
+ ui_preview->clear();
+ for (int i = 0; i < m_tile->game()->spriteCount(); ++i)
+ {
+ const Sprite* sprite = m_tile->game()->sprite(i);
+ QPixmap icon;
+ icon.loadFromData(sprite->sprite());
+ maxHeight = qMax(maxHeight, icon.height());
+ maxWidth = qMax(maxWidth, icon.width());
+ ui_preview->addItem(icon, sprite->name());
+ }
+ ui_preview->blockSignals(blockedPreview);
+ const QSize maxSize(maxWidth, maxHeight);
+ ui_preview->setIconSize(maxSize);
+ ObjectUIPrivate::refreshGui();
+}
+
void TileUI::Private::resetGui()
{
ui_name->setText(m_tile->name());
ui_walkable->setChecked(m_tile->walkable());
+ ui_preview->setCurrentIndex(m_tile->preview());
ui_script->setValue(m_tile->script());
}
@@ -100,6 +125,11 @@ void TileUI::Private::walkableChanged(const bool walkable)
m_tile->setWalkable(walkable);
}
+void TileUI::Private::previewChanged(const int preview)
+{
+ m_tile->setPreview(preview);
+}
+
void TileUI::Private::scriptChanged(const Script& script)
{
m_tile->setScript(script);