/
pi_coder
/
ByteMachine
Обзор
Документация
Войти
/
pi_coder
/
ByteMachine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/undo/undo_change_object_prop_value.cpp
77 строк
3 KB
pimenov-and
Перенос функциональности из старого проекта, в основном это описания узлов
19 июл 2026, 20:13
19 июл 2026, 20:13
cb3c51b
Код
Авторство
О чём код?
//////////////////////////////////////////////////////////////// // ByteMachine // Команда отмены значения свойства объекта //////////////////////////////////////////////////////////////// #include "undo_change_object_prop_value.h" #include "nodes/base_node.h" #include "project.h" #include <QObject> //============================================================== // Конструктор с параметрами //============================================================== UndoChangeObjectPropValue::UndoChangeObjectPropValue(QObject *object, const QString &propName, const QVariant &propValue, const QVariant &oldPropValue) { Q_ASSERT(object != nullptr); Q_ASSERT(!propName.isEmpty()); object_ = object; propName_ = propName; propValue_ = propValue; oldPropValue_ = oldPropValue; // Задание наименования отмены if (object != project()) { const auto node = qobject_cast<BaseNode*>(object); Q_ASSERT(node != nullptr); if ((propName == "top") || (propName == "left") || (propName == "topLeft")) { setText(QString{QObject::tr("Move node \"%1\"")}.arg(node->name())); } else if ((propName == "width") || (propName == "height")) { setText(QString{QObject::tr("Resize node \"%1\"")}.arg(node->name())); } else { const QString uiPropName = node->getUiPropertyName(propName); setText(QString{QObject::tr("Change property \"%1\" of node \"%2\"")}. arg(uiPropName, node->name())); } } else { const QString uiPropName = project()->getUiPropertyName(propName); setText(QString{QObject::tr("Change property \"%1\" of Project")}.arg(uiPropName)); } } //============================================================== // Деструктор //============================================================== UndoChangeObjectPropValue::~UndoChangeObjectPropValue() { } //============================================================== // Функция отмены //============================================================== void UndoChangeObjectPropValue::undo() { object_->setProperty("isUndo", true); object_->setProperty(propName_.toStdString().c_str(), oldPropValue_); object_->setProperty("isUndo", false); } //============================================================== // Функция восстановления //============================================================== void UndoChangeObjectPropValue::redo() { object_->setProperty("isUndo", true); object_->setProperty(propName_.toStdString().c_str(), propValue_); object_->setProperty("isUndo", false); }