Added: #1301 Added filter for list zones in landscape editor.

This commit is contained in:
dnk-88 2011-06-02 23:31:21 +03:00
parent 3ccfad6d6b
commit cd72978299
13 changed files with 827 additions and 352 deletions

View file

@ -12,12 +12,13 @@ SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.
SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_HDR landscape_editor_plugin.h SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_HDR landscape_editor_plugin.h
landscape_editor_window.h landscape_editor_window.h
landscape_scene.h landscape_scene.h
zone_list_model.h list_zones_model.h
zone_list_widget.h list_zones_widget.h
landscape_actions.h
) )
SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_UIS landscape_editor_window.ui SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_UIS landscape_editor_window.ui
zone_list_widget.ui list_zones_widget.ui
) )
SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_RCS landscape_editor.qrc) SET(OVQT_PLUGIN_LANDSCAPE_EDITOR_RCS landscape_editor.qrc)

View file

@ -17,7 +17,7 @@
// Project includes // Project includes
#include "builder_zone.h" #include "builder_zone.h"
#include "zone_list_model.h" #include "list_zones_model.h"
// NeL includes // NeL includes
#include <nel/misc/debug.h> #include <nel/misc/debug.h>
@ -32,7 +32,7 @@ namespace LandscapeEditor
ZoneBuilder::ZoneBuilder() ZoneBuilder::ZoneBuilder()
: m_zoneListModel(0) : m_zoneListModel(0)
{ {
m_zoneListModel = new ZoneListModel(); m_zoneListModel = new ListZonesModel();
m_lastPathName = ""; m_lastPathName = "";
} }
@ -67,7 +67,6 @@ bool ZoneBuilder::init(const QString &pathName, bool makeAZone)
return false; return false;
} }
} }
if ((makeAZone) && (bRet)) if ((makeAZone) && (bRet))
newZone(); newZone();
return bRet; return bRet;
@ -92,7 +91,7 @@ bool ZoneBuilder::initZoneBank (const QString &pathName)
return true; return true;
} }
ZoneListModel *ZoneBuilder::zoneModel() const ListZonesModel *ZoneBuilder::zoneModel() const
{ {
return m_zoneListModel; return m_zoneListModel;
} }

View file

@ -32,7 +32,7 @@
namespace LandscapeEditor namespace LandscapeEditor
{ {
class ZoneListModel; class ListZonesModel;
/** /**
@class ZoneBuilder @class ZoneBuilder
@ -56,7 +56,7 @@ public:
{ {
return m_zoneBank; return m_zoneBank;
} }
ZoneListModel *zoneModel() const; ListZonesModel *zoneModel() const;
private: private:
// Scan ./zoneligos dir and add all *.ligozone files to zoneBank // Scan ./zoneligos dir and add all *.ligozone files to zoneBank
@ -65,7 +65,7 @@ private:
sint32 m_minX, m_maxX, m_minY, m_maxY; sint32 m_minX, m_maxX, m_minY, m_maxY;
QString m_lastPathName; QString m_lastPathName;
ZoneListModel *m_zoneListModel; ListZonesModel *m_zoneListModel;
NLLIGO::CZoneBank m_zoneBank; NLLIGO::CZoneBank m_zoneBank;
std::vector<NLLIGO::CZoneBankElement*> m_currentSelection; std::vector<NLLIGO::CZoneBankElement*> m_currentSelection;
}; };

View file

@ -16,7 +16,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// Project includes // Project includes
#include "zone_list_widget.h" #include "landscape_actions.h"
// NeL includes // NeL includes
#include <nel/misc/debug.h> #include <nel/misc/debug.h>
@ -25,20 +25,4 @@
namespace LandscapeEditor namespace LandscapeEditor
{ {
ZoneListWidget::ZoneListWidget(QWidget *parent)
: QWidget(parent)
{
m_ui.setupUi(this);
}
ZoneListWidget::~ZoneListWidget()
{
}
void ZoneListWidget::setModel(QAbstractItemModel *model)
{
m_ui.listView->setModel(model);
}
} /* namespace LandscapeEditor */ } /* namespace LandscapeEditor */

View file

@ -15,11 +15,10 @@
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef ZONE_LIST_WIDGET_H #ifndef LANDSCAPE_ACTIONS_H
#define ZONE_LIST_WIDGET_H #define LANDSCAPE_ACTIONS_H
// Project includes // Project includes
#include "ui_zone_list_widget.h"
// NeL includes // NeL includes
@ -27,28 +26,7 @@
namespace LandscapeEditor namespace LandscapeEditor
{ {
/**
@class ZoneListWidget
@brief ZoneListWidget
@details
*/
class ZoneListWidget: public QWidget
{
Q_OBJECT
public:
ZoneListWidget(QWidget *parent = 0);
~ZoneListWidget();
void setModel(QAbstractItemModel *model);
Q_SIGNALS:
public Q_SLOTS:
private Q_SLOTS:
private:
Ui::ZoneListWidget m_ui;
}; /* ZoneListWidget */
} /* namespace LandscapeEditor */ } /* namespace LandscapeEditor */
#endif // ZONE_LIST_WIDGET_H #endif // LANDSCAPE_ACTIONS_H

View file

@ -18,7 +18,7 @@
// Project includes // Project includes
#include "landscape_editor_window.h" #include "landscape_editor_window.h"
#include "landscape_editor_constants.h" #include "landscape_editor_constants.h"
#include "zone_list_model.h" #include "list_zones_model.h"
#include "../core/icore.h" #include "../core/icore.h"
#include "../core/imenu_manager.h" #include "../core/imenu_manager.h"
@ -41,11 +41,11 @@ LandscapeEditorWindow::LandscapeEditorWindow(QWidget *parent)
m_ui.setupUi(this); m_ui.setupUi(this);
m_undoStack = new QUndoStack(this); m_undoStack = new QUndoStack(this);
/* m_zoneBuilder = new ZoneBuilder();
m_zoneBuilder = new ZoneBuilder(); m_zoneBuilder->init("e:/-nel-/install/continents/newbieland", false);
m_zoneBuilder->init("e:/-nel-/install/continents/newbieland", false); m_ui.zoneListWidget->setModel(m_zoneBuilder->zoneModel());
m_ui.zoneListWidget->setModel(m_zoneBuilder->zoneModel()); m_ui.zoneListWidget->setZoneBuilder(m_zoneBuilder);
*/ m_ui.zoneListWidget->updateUi();
createMenus(); createMenus();
readSettings(); readSettings();
} }

View file

@ -42,14 +42,14 @@
<attribute name="dockWidgetArea"> <attribute name="dockWidgetArea">
<number>2</number> <number>2</number>
</attribute> </attribute>
<widget class="LandscapeEditor::ZoneListWidget" name="zoneListWidget"/> <widget class="LandscapeEditor::ListZonesWidget" name="zoneListWidget"/>
</widget> </widget>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
<class>LandscapeEditor::ZoneListWidget</class> <class>LandscapeEditor::ListZonesWidget</class>
<extends>QWidget</extends> <extends>QWidget</extends>
<header>zone_list_widget.h</header> <header>list_zones_widget.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
</customwidgets> </customwidgets>

View file

@ -16,7 +16,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
// Project includes // Project includes
#include "zone_list_model.h" #include "list_zones_model.h"
// NeL includes // NeL includes
#include <nel/misc/debug.h> #include <nel/misc/debug.h>
@ -33,28 +33,28 @@
namespace LandscapeEditor namespace LandscapeEditor
{ {
ZoneListModel::ZoneListModel(int pixmapSize, QObject *parent) ListZonesModel::ListZonesModel(int pixmapSize, QObject *parent)
: QAbstractListModel(parent), : QAbstractListModel(parent),
m_pixmapSize(pixmapSize) m_pixmapSize(pixmapSize)
{ {
} }
ZoneListModel::~ZoneListModel() ListZonesModel::~ListZonesModel()
{ {
resetModel(); resetModel();
} }
int ZoneListModel::rowCount(const QModelIndex & /* parent */) const int ListZonesModel::rowCount(const QModelIndex & /* parent */) const
{ {
return m_pixmapMap.count(); return m_pixmapNameList.count();
} }
int ZoneListModel::columnCount(const QModelIndex & /* parent */) const int ListZonesModel::columnCount(const QModelIndex & /* parent */) const
{ {
return 1; return 1;
} }
QVariant ZoneListModel::data(const QModelIndex &index, int role) const QVariant ListZonesModel::data(const QModelIndex &index, int role) const
{ {
if (!index.isValid()) if (!index.isValid())
return QVariant(); return QVariant();
@ -75,21 +75,29 @@ QVariant ZoneListModel::data(const QModelIndex &index, int role) const
return QVariant(); return QVariant();
} }
QVariant ZoneListModel::headerData(int section, QVariant ListZonesModel::headerData(int section,
Qt::Orientation /* orientation */, Qt::Orientation /* orientation */,
int role) const int role) const
{ {
if (role != Qt::DisplayRole) if (role != Qt::DisplayRole)
return QVariant(); return QVariant();
return QVariant(); return QVariant();
} }
void ZoneListModel::setSmallPixmapSize(int pixmapSize) void ListZonesModel::setSmallPixmapSize(int pixmapSize)
{ {
m_pixmapSize = pixmapSize; m_pixmapSize = pixmapSize;
} }
void ZoneListModel::resetModel() void ListZonesModel::setListZones(QStringList &listZones)
{
beginResetModel();
m_pixmapNameList.clear();
m_pixmapNameList = listZones;
endResetModel();
}
void ListZonesModel::resetModel()
{ {
beginResetModel(); beginResetModel();
Q_FOREACH(QString name, m_pixmapNameList) Q_FOREACH(QString name, m_pixmapNameList)
@ -105,12 +113,13 @@ void ZoneListModel::resetModel()
endResetModel(); endResetModel();
} }
bool ZoneListModel::rebuildModel(const QString &zonePath, NLLIGO::CZoneBank &zoneBank) bool ListZonesModel::rebuildModel(const QString &zonePath, NLLIGO::CZoneBank &zoneBank)
{ {
beginResetModel(); beginResetModel();
m_zonePath = zonePath; m_zonePath = zonePath;
QProgressDialog *progressDialog = new QProgressDialog(); QProgressDialog *progressDialog = new QProgressDialog();
progressDialog->show();
std::vector<std::string> zoneNames; std::vector<std::string> zoneNames;
zoneBank.getCategoryValues ("zone", zoneNames); zoneBank.getCategoryValues ("zone", zoneNames);
@ -129,19 +138,22 @@ bool ZoneListModel::rebuildModel(const QString &zonePath, NLLIGO::CZoneBank &zon
const std::vector<bool> &rMask = zoneBankItem->getMask(); const std::vector<bool> &rMask = zoneBankItem->getMask();
QPixmap *pixmap = new QPixmap(zonePath + zonePixmapName + ".png"); QPixmap *pixmap = new QPixmap(zonePath + zonePixmapName + ".png");
if (pixmap->isNull())
{
// Generate filled pixmap
}
QPixmap *smallPixmap = new QPixmap(pixmap->scaled(m_pixmapSize * sizeX, m_pixmapSize * sizeY)); QPixmap *smallPixmap = new QPixmap(pixmap->scaled(m_pixmapSize * sizeX, m_pixmapSize * sizeY));
m_pixmapMap.insert(zonePixmapName, pixmap); m_pixmapMap.insert(zonePixmapName, pixmap);
m_smallPixmapMap.insert(zonePixmapName, smallPixmap); m_smallPixmapMap.insert(zonePixmapName, smallPixmap);
} }
m_pixmapNameList = m_pixmapMap.keys();
endResetModel(); endResetModel();
delete progressDialog; delete progressDialog;
return false; return true;
} }
QPixmap *ZoneListModel::getPixmap(const QString &zoneName) const QPixmap *ListZonesModel::getPixmap(const QString &zoneName) const
{ {
QPixmap *result = 0; QPixmap *result = 0;
if (!m_pixmapMap.contains(zoneName)) if (!m_pixmapMap.contains(zoneName))
@ -151,7 +163,7 @@ QPixmap *ZoneListModel::getPixmap(const QString &zoneName) const
return result; return result;
} }
QPixmap *ZoneListModel::getSmallPixmap(const QString &zoneName) const QPixmap *ListZonesModel::getSmallPixmap(const QString &zoneName) const
{ {
QPixmap *result = 0; QPixmap *result = 0;
if (!m_pixmapMap.contains(zoneName)) if (!m_pixmapMap.contains(zoneName))

View file

@ -15,8 +15,8 @@
// You should have received a copy of the GNU Affero General Public License // You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef ZONE_LIST_MODEL_H #ifndef LIST_ZONES_MODEL_H
#define ZONE_LIST_MODEL_H #define LIST_ZONES_MODEL_H
// Project includes // Project includes
@ -33,17 +33,17 @@ namespace LandscapeEditor
{ {
/** /**
@class ZoneListModel @class ListZonesModel
@brief ZoneListModel contains the image database for QGraphicsScene and @brief ListZonesModel contains the image database for QGraphicsScene and
small images for QListView small images for QListView
@details @details
*/ */
class ZoneListModel : public QAbstractListModel class ListZonesModel : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT
public: public:
ZoneListModel(int pixmapSize = 64, QObject *parent = 0); ListZonesModel(int pixmapSize = 64, QObject *parent = 0);
~ZoneListModel(); ~ListZonesModel();
int rowCount(const QModelIndex &parent) const; int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const;
@ -58,6 +58,8 @@ public:
/// Unload all images and reset model /// Unload all images and reset model
void resetModel(); void resetModel();
void setListZones(QStringList &listZones);
/// Load all images(png) from zonePath, list images gets from zoneBank /// Load all images(png) from zonePath, list images gets from zoneBank
bool rebuildModel(const QString &zonePath, NLLIGO::CZoneBank &zoneBank); bool rebuildModel(const QString &zonePath, NLLIGO::CZoneBank &zoneBank);
@ -79,4 +81,4 @@ private:
} /* namespace LandscapeEditor */ } /* namespace LandscapeEditor */
#endif // ZONE_LIST_MODEL_H #endif // LIST_ZONES_MODEL_H

View file

@ -0,0 +1,219 @@
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Project includes
#include "list_zones_widget.h"
#include "builder_zone.h"
#include "list_zones_model.h"
// NeL includes
#include <nel/misc/debug.h>
#include <nel/ligo/zone_bank.h>
#include <nel/ligo/zone_region.h>
// STL includes
#include <vector>
#include <string>
// Qt includes
#include <QtGui/QIcon>
namespace LandscapeEditor
{
ListZonesWidget::ListZonesWidget(QWidget *parent)
: QWidget(parent),
m_zoneBuilder(0)
{
m_ui.setupUi(this);
m_ui.addFilterButton_1->setChecked(false);
m_ui.addFilterButton_2->setChecked(false);
m_ui.addFilterButton_3->setChecked(false);
connect(m_ui.categoryTypeComboBox_1, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateFilters_1(QString)));
connect(m_ui.categoryTypeComboBox_2, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateFilters_2(QString)));
connect(m_ui.categoryTypeComboBox_3, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateFilters_3(QString)));
connect(m_ui.categoryTypeComboBox_4, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateFilters_4(QString)));
connect(m_ui.categoryValueComboBox_1, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
connect(m_ui.categoryValueComboBox_2, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
connect(m_ui.categoryValueComboBox_3, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
connect(m_ui.categoryValueComboBox_4, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
connect(m_ui.logicComboBox_2, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
connect(m_ui.logicComboBox_3, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
connect(m_ui.logicComboBox_4, SIGNAL(currentIndexChanged(int)), this, SLOT(updateListZones()));
}
ListZonesWidget::~ListZonesWidget()
{
}
void ListZonesWidget::updateUi()
{
if (m_zoneBuilder == 0)
return;
disableSignals(true);
std::vector<std::string> listCategoryType;
m_zoneBuilder->getZoneBank().getCategoriesType(listCategoryType);
QStringList listCategories;
listCategories << STRING_UNUSED;
for (size_t i = 0; i < listCategoryType.size(); ++i)
listCategories << QString(listCategoryType[i].c_str());
m_ui.categoryTypeComboBox_1->clear();
m_ui.categoryTypeComboBox_2->clear();
m_ui.categoryTypeComboBox_3->clear();
m_ui.categoryTypeComboBox_4->clear();
m_ui.categoryTypeComboBox_1->addItems(listCategories);
m_ui.categoryTypeComboBox_2->addItems(listCategories);
m_ui.categoryTypeComboBox_3->addItems(listCategories);
m_ui.categoryTypeComboBox_4->addItems(listCategories);
disableSignals(false);
}
void ListZonesWidget::setModel(QAbstractItemModel *model)
{
m_ui.listView->setModel(model);
}
void ListZonesWidget::setZoneBuilder(ZoneBuilder *zoneBuilder)
{
m_zoneBuilder = zoneBuilder;
}
void ListZonesWidget::updateFilters_1(const QString &value)
{
disableSignals(true);
std::vector<std::string> allCategoryValues;
m_zoneBuilder->getZoneBank().getCategoryValues(value.toStdString(), allCategoryValues);
m_ui.categoryValueComboBox_1->clear();
for(size_t i = 0; i < allCategoryValues.size(); ++i)
m_ui.categoryValueComboBox_1->addItem(QString(allCategoryValues[i].c_str()));
disableSignals(false);
updateListZones();
}
void ListZonesWidget::updateFilters_2(const QString &value)
{
disableSignals(true);
std::vector<std::string> allCategoryValues;
m_zoneBuilder->getZoneBank().getCategoryValues(value.toStdString(), allCategoryValues);
m_ui.categoryValueComboBox_2->clear();
for(size_t i = 0; i < allCategoryValues.size(); ++i)
m_ui.categoryValueComboBox_2->addItem(QString(allCategoryValues[i].c_str()));
disableSignals(false);
updateListZones();
}
void ListZonesWidget::updateFilters_3(const QString &value)
{
disableSignals(true);
std::vector<std::string> allCategoryValues;
m_zoneBuilder->getZoneBank().getCategoryValues(value.toStdString(), allCategoryValues);
m_ui.categoryValueComboBox_3->clear();
for(size_t i = 0; i < allCategoryValues.size(); ++i)
m_ui.categoryValueComboBox_3->addItem(QString(allCategoryValues[i].c_str()));
disableSignals(false);
updateListZones();
}
void ListZonesWidget::updateFilters_4(const QString &value)
{
disableSignals(true);
std::vector<std::string> allCategoryValues;
m_zoneBuilder->getZoneBank().getCategoryValues(value.toStdString(), allCategoryValues);
m_ui.categoryValueComboBox_4->clear();
for(size_t i = 0; i < allCategoryValues.size(); ++i)
m_ui.categoryValueComboBox_4->addItem(QString(allCategoryValues[i].c_str()));
disableSignals(false);
updateListZones();
}
void ListZonesWidget::updateListZones()
{
// Execute the filter
NLLIGO::CZoneBank &zoneBank = m_zoneBuilder->getZoneBank();
zoneBank.resetSelection ();
if(m_ui.categoryTypeComboBox_1->currentIndex() > 0 )
zoneBank.addOrSwitch (m_ui.categoryTypeComboBox_1->currentText().toStdString()
, m_ui.categoryValueComboBox_1->currentText().toStdString());
if(m_ui.categoryTypeComboBox_2->currentIndex() > 0 )
{
if (m_ui.logicComboBox_2->currentIndex() == 0) // AND switch wanted
zoneBank.addAndSwitch(m_ui.categoryTypeComboBox_2->currentText().toStdString()
,m_ui.categoryValueComboBox_2->currentText().toStdString());
else // OR switch wanted
zoneBank.addOrSwitch(m_ui.categoryTypeComboBox_2->currentText().toStdString()
,m_ui.categoryValueComboBox_2->currentText().toStdString());
}
if(m_ui.categoryTypeComboBox_3->currentIndex() > 0 )
{
if (m_ui.logicComboBox_3->currentIndex() == 0) // AND switch wanted
zoneBank.addAndSwitch(m_ui.categoryTypeComboBox_3->currentText().toStdString()
,m_ui.categoryValueComboBox_3->currentText().toStdString());
else // OR switch wanted
zoneBank.addOrSwitch(m_ui.categoryTypeComboBox_3->currentText().toStdString()
,m_ui.categoryValueComboBox_3->currentText().toStdString());
}
if(m_ui.categoryTypeComboBox_4->currentIndex() > 0 )
{
if (m_ui.logicComboBox_4->currentIndex() == 0) // AND switch wanted
zoneBank.addAndSwitch(m_ui.categoryTypeComboBox_4->currentText().toStdString()
,m_ui.categoryValueComboBox_4->currentText().toStdString());
else // OR switch wanted
zoneBank.addOrSwitch(m_ui.categoryTypeComboBox_4->currentText().toStdString()
,m_ui.categoryValueComboBox_4->currentText().toStdString());
}
std::vector<NLLIGO::CZoneBankElement *> currentSelection;
zoneBank.getSelection (currentSelection);
QStringList listSelection;
for (size_t i = 0; i < currentSelection.size(); ++i)
listSelection << currentSelection[i]->getName().c_str();
m_zoneBuilder->zoneModel()->setListZones(listSelection);
}
void ListZonesWidget::disableSignals(bool block)
{
m_ui.categoryTypeComboBox_1->blockSignals(block);
m_ui.categoryTypeComboBox_2->blockSignals(block);
m_ui.categoryTypeComboBox_3->blockSignals(block);
m_ui.categoryTypeComboBox_4->blockSignals(block);
m_ui.categoryValueComboBox_1->blockSignals(block);
m_ui.categoryValueComboBox_2->blockSignals(block);
m_ui.categoryValueComboBox_3->blockSignals(block);
m_ui.categoryValueComboBox_4->blockSignals(block);
}
} /* namespace LandscapeEditor */

View file

@ -0,0 +1,68 @@
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef LIST_ZONES_WIDGET_H
#define LIST_ZONES_WIDGET_H
// Project includes
#include "ui_list_zones_widget.h"
// NeL includes
// Qt includes
namespace LandscapeEditor
{
class ZoneBuilder;
/**
@class ZoneListWidget
@brief ZoneListWidget
@details
*/
class ListZonesWidget: public QWidget
{
Q_OBJECT
public:
ListZonesWidget(QWidget *parent = 0);
~ListZonesWidget();
void updateUi();
void setZoneBuilder(ZoneBuilder *zoneBuilder);
void setModel(QAbstractItemModel *model);
Q_SIGNALS:
public Q_SLOTS:
void updateFilters_1(const QString &value);
void updateFilters_2(const QString &value);
void updateFilters_3(const QString &value);
void updateFilters_4(const QString &value);
private Q_SLOTS:
void updateListZones();
private:
void disableSignals(bool block);
ZoneBuilder *m_zoneBuilder;
Ui::ListZonesWidget m_ui;
}; /* ZoneListWidget */
} /* namespace LandscapeEditor */
#endif // LIST_ZONES_WIDGET_H

View file

@ -0,0 +1,478 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ListZonesWidget</class>
<widget class="QWidget" name="ListZonesWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>359</width>
<height>579</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="margin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Filter</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="1">
<widget class="QComboBox" name="categoryTypeComboBox_1"/>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="categoryValueComboBox_1"/>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="comboBox_11">
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Fyll cycle</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="categoryTypeComboBox_2">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="categoryValueComboBox_2">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QComboBox" name="logicComboBox_2">
<property name="enabled">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>And</string>
</property>
</item>
<item>
<property name="text">
<string>Or</string>
</property>
</item>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="categoryTypeComboBox_3">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QComboBox" name="categoryValueComboBox_3">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QComboBox" name="logicComboBox_3">
<property name="enabled">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>And</string>
</property>
</item>
<item>
<property name="text">
<string>Or</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="categoryTypeComboBox_4">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QComboBox" name="categoryValueComboBox_4">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QComboBox" name="logicComboBox_4">
<property name="enabled">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>And</string>
</property>
</item>
<item>
<property name="text">
<string>Or</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QToolButton" name="addFilterButton_1">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../core/core.qrc">
<normaloff>:/core/icons/ic_nel_add_item.png</normaloff>
<normalon>:/core/icons/ic_nel_delete_item.png</normalon>:/core/icons/ic_nel_add_item.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="addFilterButton_2">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../core/core.qrc">
<normaloff>:/core/icons/ic_nel_add_item.png</normaloff>
<normalon>:/core/icons/ic_nel_delete_item.png</normalon>:/core/icons/ic_nel_add_item.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QToolButton" name="addFilterButton_3">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../core/core.qrc">
<normaloff>:/core/icons/ic_nel_add_item.png</normaloff>
<normalon>:/core/icons/ic_nel_delete_item.png</normalon>:/core/icons/ic_nel_add_item.png</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Placement</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QComboBox" name="comboBox">
<item>
<property name="text">
<string>0°</string>
</property>
</item>
<item>
<property name="text">
<string>90°</string>
</property>
</item>
<item>
<property name="text">
<string>180°</string>
</property>
</item>
<item>
<property name="text">
<string>170°</string>
</property>
</item>
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Full cycle</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_2">
<item>
<property name="text">
<string>NoFlip</string>
</property>
</item>
<item>
<property name="text">
<string>Flip</string>
</property>
</item>
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Fyll cycle</string>
</property>
</item>
</widget>
</item>
<item row="0" column="2">
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Force</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QCheckBox" name="checkBox_2">
<property name="text">
<string>Not propogate</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QListView" name="listView"/>
</item>
</layout>
</widget>
<resources>
<include location="../core/core.qrc"/>
</resources>
<connections>
<connection>
<sender>addFilterButton_1</sender>
<signal>toggled(bool)</signal>
<receiver>categoryTypeComboBox_2</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>36</y>
</hint>
<hint type="destinationlabel">
<x>81</x>
<y>53</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_1</sender>
<signal>toggled(bool)</signal>
<receiver>categoryValueComboBox_2</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>24</x>
<y>32</y>
</hint>
<hint type="destinationlabel">
<x>181</x>
<y>50</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_1</sender>
<signal>toggled(bool)</signal>
<receiver>logicComboBox_2</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>31</y>
</hint>
<hint type="destinationlabel">
<x>301</x>
<y>55</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_2</sender>
<signal>toggled(bool)</signal>
<receiver>categoryTypeComboBox_3</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>27</x>
<y>62</y>
</hint>
<hint type="destinationlabel">
<x>57</x>
<y>75</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_2</sender>
<signal>toggled(bool)</signal>
<receiver>categoryValueComboBox_3</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>23</x>
<y>58</y>
</hint>
<hint type="destinationlabel">
<x>156</x>
<y>76</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_2</sender>
<signal>toggled(bool)</signal>
<receiver>logicComboBox_3</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>23</x>
<y>53</y>
</hint>
<hint type="destinationlabel">
<x>255</x>
<y>77</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_3</sender>
<signal>toggled(bool)</signal>
<receiver>categoryTypeComboBox_4</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>32</x>
<y>94</y>
</hint>
<hint type="destinationlabel">
<x>44</x>
<y>104</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_3</sender>
<signal>toggled(bool)</signal>
<receiver>categoryValueComboBox_4</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>32</x>
<y>94</y>
</hint>
<hint type="destinationlabel">
<x>207</x>
<y>103</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_3</sender>
<signal>toggled(bool)</signal>
<receiver>logicComboBox_4</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>21</x>
<y>81</y>
</hint>
<hint type="destinationlabel">
<x>278</x>
<y>104</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_2</sender>
<signal>toggled(bool)</signal>
<receiver>addFilterButton_3</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>15</x>
<y>59</y>
</hint>
<hint type="destinationlabel">
<x>16</x>
<y>80</y>
</hint>
</hints>
</connection>
<connection>
<sender>addFilterButton_1</sender>
<signal>toggled(bool)</signal>
<receiver>addFilterButton_2</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>13</x>
<y>35</y>
</hint>
<hint type="destinationlabel">
<x>17</x>
<y>60</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View file

@ -1,266 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ZoneListWidget</class>
<widget class="QWidget" name="ZoneListWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>359</width>
<height>579</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<property name="margin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Filter</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QComboBox" name="comboBox_3">
<item>
<property name="text">
<string>&lt;Unused&gt;</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_7"/>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboBox_11">
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Fyll cycle</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QComboBox" name="comboBox_6">
<property name="enabled">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>&lt;Unused&gt;</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_8">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="comboBox_12">
<property name="enabled">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>And</string>
</property>
</item>
<item>
<property name="text">
<string>Or</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QComboBox" name="comboBox_4">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>&lt;Unused&gt;</string>
</property>
</item>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBox_9">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QComboBox" name="comboBox_13">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>And</string>
</property>
</item>
<item>
<property name="text">
<string>Or</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QComboBox" name="comboBox_5">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>&lt;Unused&gt;</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="comboBox_10">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QComboBox" name="comboBox_14">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>And</string>
</property>
</item>
<item>
<property name="text">
<string>Or</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Placement</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<number>6</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QComboBox" name="comboBox">
<item>
<property name="text">
<string>0°</string>
</property>
</item>
<item>
<property name="text">
<string>90°</string>
</property>
</item>
<item>
<property name="text">
<string>180°</string>
</property>
</item>
<item>
<property name="text">
<string>170°</string>
</property>
</item>
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Full cycle</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_2">
<item>
<property name="text">
<string>NoFlip</string>
</property>
</item>
<item>
<property name="text">
<string>Flip</string>
</property>
</item>
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Fyll cycle</string>
</property>
</item>
</widget>
</item>
<item row="0" column="2">
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Force</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QCheckBox" name="checkBox_2">
<property name="text">
<string>Not propogate</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QListView" name="listView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>