Mercurial > hg > svcore
diff base/PropertyContainer.cpp @ 46:5364a9d338a2
* Add Insert Instant function in main window
* Ensure selections and window geometry are saved in session file
* Add wait cursor on session file save
* Various improvements to display of texts in pane (clearer readability)
* Use commands for setting properties on layers and panes
(still need to batch up multiple sets on the same property)
* Fix failure of spectrogram to refresh when initial part became visible
* Some fixes & paint optimisations in View &c
* Make curve mode for time value layers work properly when resolution == 1
* Some vague improvements for time value layer vertical scale
author | Chris Cannam |
---|---|
date | Thu, 16 Mar 2006 18:46:00 +0000 |
parents | d86891498eef |
children | bac8b14ab355 |
line wrap: on
line diff
--- a/base/PropertyContainer.cpp Wed Mar 15 18:11:23 2006 +0000 +++ b/base/PropertyContainer.cpp Thu Mar 16 18:46:00 2006 +0000 @@ -8,6 +8,9 @@ */ #include "PropertyContainer.h" +#include "CommandHistory.h" + +#include <iostream> PropertyContainer::PropertyList PropertyContainer::getProperties() const @@ -42,7 +45,47 @@ } void -PropertyContainer::setProperty(const PropertyName &, int) +PropertyContainer::setProperty(const PropertyName &name, int) +{ + std::cerr << "WARNING: PropertyContainer[" << getPropertyContainerName().toStdString() << "]::setProperty(" << name.toStdString() << "): no implementation in subclass!" << std::endl; +} + +void +PropertyContainer::setPropertyWithCommand(const PropertyName &name, int value) +{ + int currentValue = getPropertyRangeAndValue(name, 0, 0); + if (value == currentValue) return; + + CommandHistory::getInstance()->addCommand + (new SetPropertyCommand(this, name, value)); +} + +PropertyContainer::SetPropertyCommand::SetPropertyCommand(PropertyContainer *pc, + const PropertyName &pn, + int value) : + m_pc(pc), + m_pn(pn), + m_value(value), + m_oldValue(0) { } +void +PropertyContainer::SetPropertyCommand::execute() +{ + m_oldValue = m_pc->getPropertyRangeAndValue(m_pn, 0, 0); + m_pc->setProperty(m_pn, m_value); +} + +void +PropertyContainer::SetPropertyCommand::unexecute() +{ + m_pc->setProperty(m_pn, m_oldValue); +} + +QString +PropertyContainer::SetPropertyCommand::getName() const +{ + return m_pc->tr("Set %1 Property").arg(m_pn); +} +