diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-30 01:49:29 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-30 01:49:29 -0400 |
| commit | cde459950d325ca9023c22eba34bbf9bd88e2369 (patch) | |
| tree | bf5485ed1c4c5108df6d408db0aabe0bf9f996af | |
| parent | 02e8bb808528656b6a6464298e076061999eb9d8 (diff) | |
Add preview editing to TileUI
| -rw-r--r-- | sigmodr/widgets/TileUI.cpp | 30 | ||||
| -rw-r--r-- | sigmodr/widgets/TileUI_p.h | 4 | ||||
| -rw-r--r-- | sigmodr/widgets/gui/tile.ui | 34 |
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/> |
