summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-30 01:49:29 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-30 01:49:29 -0400
commitcde459950d325ca9023c22eba34bbf9bd88e2369 (patch)
treebf5485ed1c4c5108df6d408db0aabe0bf9f996af
parent02e8bb808528656b6a6464298e076061999eb9d8 (diff)
Add preview editing to TileUI
-rw-r--r--sigmodr/widgets/TileUI.cpp30
-rw-r--r--sigmodr/widgets/TileUI_p.h4
-rw-r--r--sigmodr/widgets/gui/tile.ui34
3 files changed, 67 insertions, 1 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);
diff --git a/sigmodr/widgets/TileUI_p.h b/sigmodr/widgets/TileUI_p.h
index 1ec47fa3..c4d17086 100644
--- a/sigmodr/widgets/TileUI_p.h
+++ b/sigmodr/widgets/TileUI_p.h
@@ -25,6 +25,7 @@
#include "ObjectUIPrivate.h"
// Forward declarations
+class KComboBox;
class KLineEdit;
class QCheckBox;
namespace Sigcore
@@ -53,14 +54,17 @@ class SIGMODRWIDGETS_NO_EXPORT TileUI::Private : public ObjectUIPrivate
Sigmod::Tile* m_tile;
public slots:
+ void refreshGui();
void resetGui();
protected slots:
void nameChanged(const QString& name);
void walkableChanged(const bool walkable);
+ void previewChanged(const int preview);
void scriptChanged(const Sigcore::Script& script);
private:
KLineEdit* ui_name;
QCheckBox* ui_walkable;
+ KComboBox* ui_preview;
CoreWidgets::ScriptWidget* ui_script;
};
}
diff --git a/sigmodr/widgets/gui/tile.ui b/sigmodr/widgets/gui/tile.ui
index a4cc7aca..cb1c22cc 100644
--- a/sigmodr/widgets/gui/tile.ui
+++ b/sigmodr/widgets/gui/tile.ui
@@ -60,7 +60,33 @@
</property>
</widget>
</item>
- <item row="2" column="0" colspan="2" >
+ <item row="2" column="0" >
+ <widget class="QLabel" name="labelPreview" >
+ <property name="text" >
+ <string>Preview sprite:</string>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignRight|Qt::AlignVCenter</set>
+ </property>
+ <property name="buddy" >
+ <cstring>varPreview</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" >
+ <widget class="KComboBox" name="varPreview" >
+ <property name="toolTip" >
+ <string>The sprite used to preview the tile</string>
+ </property>
+ <property name="statusTip" >
+ <string>The sprite used to preview the tile</string>
+ </property>
+ <property name="whatsThis" >
+ <string>The sprite used to preview the tile</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2" >
<widget class="QGroupBox" name="boxScript" >
<property name="title" >
<string>Script</string>
@@ -86,6 +112,11 @@
</widget>
<customwidgets>
<customwidget>
+ <class>KComboBox</class>
+ <extends>QComboBox</extends>
+ <header location="global" >KComboBox</header>
+ </customwidget>
+ <customwidget>
<class>KLineEdit</class>
<extends>QLineEdit</extends>
<header location="global" >KLineEdit</header>
@@ -99,6 +130,7 @@
<tabstops>
<tabstop>varName</tabstop>
<tabstop>varWalkable</tabstop>
+ <tabstop>varPreview</tabstop>
<tabstop>varScript</tabstop>
</tabstops>
<resources/>