Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions engine/includes/editor/asseteditor.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,21 @@ class ENGINE_EXPORT AssetEditor : public QWidget {

virtual StringList componentGroups() const;

virtual QMenu *objectContextMenu(Object *object);
virtual QMenu *hierarchyContextMenu(Object *object);

virtual QWidget *propertiesWidget(QWidget *parent);
virtual QWidget *propertiesWidget();

UndoStack *undoRedo() const;
virtual std::list<QWidget *> propertiesActionWidgets(Object *object, QWidget *parent) const;

virtual std::list<QWidget *> createActionWidgets(Object *object, QWidget *parent) const;
virtual QMenu *propertyContextMenu(Object *object, const TString &property);

virtual VariantMap saveState();
virtual void restoreState(const VariantMap &data);

bool checkSave();

UndoStack *undoRedo() const;

virtual bool allowSaveAs() const;

signals:
Expand Down
4 changes: 1 addition & 3 deletions engine/includes/editor/propertyedit.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class ENGINE_EXPORT PropertyEdit : public QWidget {

virtual void setEditorHint(const TString &hint);

virtual void setObject(Object *object, const TString &);
virtual void setObject(Object *object, const TString &property);

static void registerEditorFactory(UserTypeCallback callback);

Expand All @@ -35,8 +35,6 @@ class ENGINE_EXPORT PropertyEdit : public QWidget {
protected:
static std::list<UserTypeCallback> m_userCallbacks;



Object *m_object;

};
Expand Down
24 changes: 17 additions & 7 deletions engine/src/editor/asseteditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ void AssetEditor::onSaveAs() {
}

StringList filter;
for(auto it : dictionary) {
for(auto &it : dictionary) {
TString item = it.first + " (";
for(auto &suffix : it.second) {
item += TString("*.") + suffix;
Expand Down Expand Up @@ -186,24 +186,34 @@ void AssetEditor::onObjectsChanged(const Object::ObjectList &objects, const TStr
A_UNUSED(value);
}

QMenu *AssetEditor::objectContextMenu(Object *object) {
QMenu *AssetEditor::hierarchyContextMenu(Object *object) {
A_UNUSED(object);

return nullptr;
}

QWidget *AssetEditor::propertiesWidget(QWidget *parent) {
QWidget *AssetEditor::propertiesWidget() {
return nullptr;
}

UndoStack *AssetEditor::undoRedo() const {
return m_undoRedo;
}
std::list<QWidget *> AssetEditor::propertiesActionWidgets(Object *object, QWidget *parent) const {
A_UNUSED(object);
A_UNUSED(parent);

std::list<QWidget *> AssetEditor::createActionWidgets(Object *object, QWidget *parent) const {
return std::list<QWidget *>();
}

QMenu *AssetEditor::propertyContextMenu(Object *object, const TString &property) {
A_UNUSED(object);
A_UNUSED(property);

return nullptr;
}

UndoStack *AssetEditor::undoRedo() const {
return m_undoRedo;
}

VariantMap AssetEditor::saveState() {
return VariantMap();
}
Expand Down
3 changes: 2 additions & 1 deletion engine/src/editor/propertyedit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ void PropertyEdit::setEditorHint(const TString &hint) {
A_UNUSED(hint);
}

void PropertyEdit::setObject(Object *object, const TString &) {
void PropertyEdit::setObject(Object *object, const TString &property) {
A_UNUSED(property);
m_object = object;
}

Expand Down
6 changes: 3 additions & 3 deletions modules/editor/particletools/editor/particleedit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ void ParticleEdit::onObjectsChanged(const Object::ObjectList &objects, const TSt
ui->graph->onObjectsChanged(objects, property, value);
}

std::list<QWidget *> ParticleEdit::createActionWidgets(Object *object, QWidget *parent) const {
std::list<QWidget *> ParticleEdit::propertiesActionWidgets(Object *object, QWidget *parent) const {
std::list<QWidget *> result;

if(dynamic_cast<EffectModule *>(object)) {
Expand All @@ -207,9 +207,9 @@ std::list<QWidget *> ParticleEdit::createActionWidgets(Object *object, QWidget *
return result;
}

QWidget *ParticleEdit::propertiesWidget(QWidget *parent) {
QWidget *ParticleEdit::propertiesWidget() {
if(m_moduleButton == nullptr) {
m_moduleButton = new QToolButton(parent);
m_moduleButton = new QToolButton;

m_moduleButton->setProperty("blue", true);
m_moduleButton->setPopupMode(QToolButton::InstantPopup);
Expand Down
5 changes: 2 additions & 3 deletions modules/editor/particletools/editor/particleedit.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#ifndef PARTICLEEDIT_H
#define PARTICLEEDIT_H

#include <stdint.h>

#include <editor/asseteditor.h>

Expand Down Expand Up @@ -52,9 +51,9 @@ private slots:
void readSettings();
void writeSettings();

std::list<QWidget *> createActionWidgets(Object *object, QWidget *parent) const override;
std::list<QWidget *> propertiesActionWidgets(Object *object, QWidget *parent) const override;

QWidget *propertiesWidget(QWidget *parent) override;
QWidget *propertiesWidget() override;

void loadAsset(AssetConverterSettings *settings) override;
void saveAsset(const TString &path) override;
Expand Down
2 changes: 1 addition & 1 deletion modules/uikit/includes/editor/uiedit.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private slots:

void changeEvent(QEvent *event) override;

QMenu *objectContextMenu(Object *object) override;
QMenu *hierarchyContextMenu(Object *object) override;

bool isCopyActionAvailable() const override;
bool isPasteActionAvailable() const override;
Expand Down
4 changes: 2 additions & 2 deletions modules/uikit/src/editor/uiedit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ void UiEdit::saveElementHelper(pugi::xml_node &parent, Widget *widget) {
}

TString classes;
for(TString classIt : it->classes()) {
for(const TString &classIt : it->classes()) {
classes += classIt + ' ';
}

Expand Down Expand Up @@ -360,7 +360,7 @@ void UiEdit::changeEvent(QEvent *event) {
}
}

QMenu *UiEdit::objectContextMenu(Object *object) {
QMenu *UiEdit::hierarchyContextMenu(Object *object) {
return &m_widgetMenu;
}

Expand Down
52 changes: 22 additions & 30 deletions worldeditor/src/screens/objecthierarchy/hierarchybrowser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -333,15 +333,15 @@ void HierarchyBrowser::onDrop(QDropEvent *e) {
}

void HierarchyBrowser::onDragStarted(Qt::DropActions supportedActions) {
ObjectHierarchyModel *model = static_cast<ObjectHierarchyModel *>(m_filter->sourceModel());

QMimeData *mimeData = new QMimeData;
QStringList list;
foreach(const QModelIndex &it, ui->treeView->selectionModel()->selectedIndexes()) {
QModelIndex index = m_filter->mapToSource(it);
if(index.column() == 0) {
Object *object = Engine::findObject(index.internalId());
list.push_back(QString::number(object->uuid()) + ":" + object->name().data());
if(object) {
list.push_back(QString::number(object->uuid()) + ":" + object->name().data());
}
}
}
mimeData->setData(gMimeObject, qPrintable(list.join(";")));
Expand All @@ -358,22 +358,20 @@ void HierarchyBrowser::onSelectionChanged(const QItemSelection &selected, const
}

void HierarchyBrowser::on_treeView_clicked(const QModelIndex &index) {
ObjectHierarchyModel *model = static_cast<ObjectHierarchyModel *>(m_filter->sourceModel());

Object *object = Engine::findObject(m_filter->mapToSource(index).internalId());
Actor *actor = dynamic_cast<Actor *>(object);
Actor *actor = dynamic_cast<Actor *>(Engine::findObject(m_filter->mapToSource(index).internalId()));
if(actor) {
if(index.column() == 0) {
QSet<Object *> set;
std::set<Object *> set;

QItemSelectionModel *selectionModel = ui->treeView->selectionModel();
for(auto it : selectionModel->selectedIndexes()) {
Object *object = Engine::findObject(m_filter->mapToSource(it).internalId());

set.insert(object);
if(object) {
set.insert(object);
}
}

emit objectsSelected(std::list<Object *>(set.begin(), set.end()), false);
emit objectsSelected(Object::ObjectList(set.begin(), set.end()), false);
} else if(index.column() == 2) {
actor->setFlags(actor->flags() ^ Actor::Enable);
onUpdated();
Expand All @@ -385,20 +383,17 @@ void HierarchyBrowser::on_treeView_clicked(const QModelIndex &index) {
}

void HierarchyBrowser::on_treeView_doubleClicked(const QModelIndex &index) {
ObjectHierarchyModel *model = static_cast<ObjectHierarchyModel *>(m_filter->sourceModel());

Object *object = Engine::findObject(m_filter->mapToSource(index).internalId());

emit objectsSelected({object}, true);
if(object) {
emit objectsSelected({object}, true);
}
}

void HierarchyBrowser::on_lineEdit_textChanged(const QString &arg1) {
m_filter->setFilterFixedString(arg1);
}

void HierarchyBrowser::on_treeView_customContextMenuRequested(const QPoint &pos) {
ObjectHierarchyModel *model = static_cast<ObjectHierarchyModel *>(m_filter->sourceModel());

QItemSelectionModel *select = ui->treeView->selectionModel();

std::list<Object *> list;
Expand All @@ -413,21 +408,19 @@ void HierarchyBrowser::on_treeView_customContextMenuRequested(const QPoint &pos)
emit objectsSelected(list, false);
}

QPoint point = static_cast<QWidget*>(QObject::sender())->mapToGlobal(pos);

QModelIndex index = ui->treeView->indexAt(pos);
Object *object = Engine::findObject(m_filter->mapToSource(index).internalId());

if(m_currentEditor) {
QMenu *menu = m_currentEditor->objectContextMenu(object);
if(m_currentEditor && object) {
QMenu *menu = m_currentEditor->hierarchyContextMenu(object);
if(menu) {
foreach(QAction *action, menu->actions()) {
if(action->shortcut() == QKeySequence(Qt::Key_F2)) {
connect(action, &QAction::triggered, this, &HierarchyBrowser::onItemRename, Qt::UniqueConnection);
}
}

menu->exec(point);
menu->exec(static_cast<QWidget*>(QObject::sender())->mapToGlobal(pos));
}
}
}
Expand All @@ -451,12 +444,13 @@ bool HierarchyBrowser::eventFilter(QObject *obj, QEvent *event) {
switch(keyEvent->key()) {
case Qt::Key_Delete: {
if(m_currentEditor) {
ObjectHierarchyModel *model = static_cast<ObjectHierarchyModel *>(m_filter->sourceModel());

std::list<Object *> list;
Object::ObjectList list;
QItemSelectionModel *select = ui->treeView->selectionModel();
foreach(QModelIndex it, select->selectedRows()) {
list.push_back(Engine::findObject(m_filter->mapToSource(it).internalId()));
Object *object = Engine::findObject(m_filter->mapToSource(it).internalId());
if(object) {
list.push_back(object);
}
}

m_currentEditor->onObjectsDeleted(list);
Expand Down Expand Up @@ -485,10 +479,8 @@ void ParentingObjects::undo() {
auto ref = m_dump.begin();
for(auto it : m_objects) {
Object *object = Engine::findObject(it);
if(object) {
if(object->uuid() == ref->first) {
object->setParent(Engine::findObject(ref->second));
}
if(object && object->uuid() == ref->first) {
object->setParent(Engine::findObject(ref->second));
}
++ref;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

#include "../../propertyeditor.h"

#include <editor/asseteditor.h>

Actions::Actions(QWidget *parent) :
PropertyEdit(parent),
ui(new Ui::Actions),
Expand Down Expand Up @@ -30,8 +32,11 @@ void Actions::setObject(Object *object, const TString &name) {

PropertyEditor *editor = findEditor(parentWidget());
if(editor) {
for(auto it : editor->getActions(m_object, this)) {
ui->horizontalLayout->addWidget(it);
AssetEditor *assetEditor = editor->currentEditor();
if(assetEditor) {
for(auto it : assetEditor->propertiesActionWidgets(m_object, this)) {
ui->horizontalLayout->addWidget(it);
}
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions worldeditor/src/screens/propertyedit/nextmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ void NextModel::updateDynamicProperties(Property *parent, Object *propertyObject

StringList dynamicPropertiesFiltered;
// Remove invalid properites and those we don't want to add
for(auto it : dynamicProperties) {
for(auto &it : dynamicProperties) {
// Skip user defined hidden properties starting with _
if(it.front() != '_') {
dynamicPropertiesFiltered.push_back(it);
Expand Down Expand Up @@ -135,7 +135,7 @@ QVariant NextModel::data(const QModelIndex &index, int role) const {
if(!index.isValid()) {
return QVariant();
}
Property *item = static_cast<Property* >(index.internalPointer());
Property *item = static_cast<Property *>(index.internalPointer());
switch(role) {
case Qt::ToolTipRole:
case Qt::DisplayRole:
Expand Down
18 changes: 3 additions & 15 deletions worldeditor/src/screens/propertyedit/propertydelegate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
#include "property.h"

PropertyDelegate::PropertyDelegate(QObject *parent) :
QStyledItemDelegate(parent) {
QStyledItemDelegate(parent),
m_finishedMapper(new QSignalMapper(this)) {

m_finishedMapper = new QSignalMapper(this);
}

PropertyDelegate::~PropertyDelegate() {
Expand Down Expand Up @@ -44,18 +44,6 @@ void PropertyDelegate::setEditorData(QWidget *editor, const QModelIndex &index)
m_finishedMapper->blockSignals(false);
}

void PropertyDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const {
// const QSortFilterProxyModel *filter = static_cast<const QSortFilterProxyModel *>(model);
// QModelIndex origin = filter->mapToSource(index);
// QVariant data = static_cast<Property *>(origin.internalPointer())->editorData(editor);
// if(data.isValid()) {
// filter->sourceModel()->setData(origin, data, Qt::EditRole);
// } else {
// QStyledItemDelegate::setModelData(editor, model, index);
// }
QStyledItemDelegate::setModelData(editor, model, index);
}

QSize PropertyDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const {
QModelIndex origin = static_cast<const QSortFilterProxyModel *>(index.model())->mapToSource(index);
QSize result = QStyledItemDelegate::sizeHint(option, index);
Expand All @@ -70,7 +58,7 @@ void PropertyDelegate::parseEditorHints(QWidget *editor, const QString &editorHi
if(editor && !editorHints.isEmpty()) {
editor->blockSignals(true);
// Parse for property values
QRegularExpression rx("(.*)(=\\s*)(.*)(;{1})", QRegularExpression::InvertedGreedinessOption);
static QRegularExpression rx("(.*)(=\\s*)(.*)(;{1})", QRegularExpression::InvertedGreedinessOption);
auto it = rx.globalMatch(editorHints);
while(it.hasNext()) {
QRegularExpressionMatch match = it.next();
Expand Down
2 changes: 0 additions & 2 deletions worldeditor/src/screens/propertyedit/propertydelegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ class PropertyDelegate : public QStyledItemDelegate {

void setEditorData(QWidget *editor, const QModelIndex &index) const override;

void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;

QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;

private:
Expand Down
Loading
Loading