diff options
-rw-r--r-- | libs/ardour/ardour/audioregion.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/region.h | 1 | ||||
-rw-r--r-- | libs/ardour/audioregion.cc | 48 | ||||
-rw-r--r-- | libs/ardour/region.cc | 103 | ||||
-rw-r--r-- | libs/pbd/pbd/properties.h | 6 | ||||
-rw-r--r-- | libs/pbd/pbd/property_basics.h | 3 | ||||
-rw-r--r-- | libs/pbd/pbd/sequence_property.h | 5 | ||||
-rw-r--r-- | libs/pbd/pbd/stateful.h | 5 | ||||
-rw-r--r-- | libs/pbd/stateful.cc | 12 |
9 files changed, 27 insertions, 157 deletions
diff --git a/libs/ardour/ardour/audioregion.h b/libs/ardour/ardour/audioregion.h index 59876d6e56..f9c13b2bbe 100644 --- a/libs/ardour/ardour/audioregion.h +++ b/libs/ardour/ardour/audioregion.h @@ -199,7 +199,6 @@ class AudioRegion : public Region PBD::Property<gain_t> _scale_amplitude; void register_properties (); - bool set_property (const PBD::PropertyBase& prop); void post_set (); void init (); diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index 09dd8f203c..a44b3fcb46 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -344,7 +344,6 @@ class Region virtual int _set_state (const XMLNode&, int version, PBD::PropertyChange& what_changed, bool send_signal); - bool set_property (const PBD::PropertyBase&); void register_properties (); private: diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index 3430eb5128..be6cce251a 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -691,54 +691,6 @@ AudioRegion::_set_state (const XMLNode& node, int version, PropertyChange& what_ return 0; } -bool -AudioRegion::set_property (const PropertyBase& prop) -{ - DEBUG_TRACE (DEBUG::Properties, string_compose ("audio region %1 set property %2\n", _name.val(), prop.property_name())); - - if (prop == Properties::envelope_active.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _envelope_active) { - _envelope_active = val; - return true; - } - } else if (prop == Properties::default_fade_in.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _default_fade_in) { - _default_fade_in = val; - return true; - } - } else if (prop == Properties::default_fade_out.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _default_fade_out) { - _default_fade_out = val; - return true; - } - } else if (prop == Properties::fade_in_active.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _fade_in_active) { - _fade_in_active = val; - return true; - } - } else if (prop == Properties::fade_out_active.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _fade_out_active) { - _fade_out_active = val; - return true; - } - } else if (prop == Properties::scale_amplitude.property_id) { - gain_t val = dynamic_cast<const PropertyTemplate<gain_t>*>(&prop)->val(); - if (val != _scale_amplitude) { - _scale_amplitude = val; - return true; - } - } else { - return Region::set_property (prop); - } - - return false; -} - int AudioRegion::set_state (const XMLNode& node, int version) { diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index bb9338d98d..8625b17a8a 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -1498,109 +1498,6 @@ Region::use_sources (SourceList const & s) } } - -bool -Region::set_property (const PropertyBase& prop) -{ - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 set property %2\n", _name.val(), prop.property_name())); - - if (prop == Properties::muted.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _muted) { - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 muted changed from %2 to %3", - _name.val(), _muted.val(), val)); - _muted = val; - return true; - } - } else if (prop == Properties::opaque.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _opaque) { - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 opaque changed from %2 to %3", - _name.val(), _opaque.val(), val)); - _opaque = val; - return true; - } - } else if (prop == Properties::locked.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _locked) { - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 locked changed from %2 to %3", - _name.val(), _locked.val(), val)); - _locked = val; - return true; - } - } else if (prop == Properties::automatic.property_id) { - _automatic = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::whole_file.property_id) { - _whole_file = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::import.property_id) { - _import = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::external.property_id) { - _external = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::sync_marked.property_id) { - _sync_marked = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::left_of_split.property_id) { - _left_of_split = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::right_of_split.property_id) { - _right_of_split = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::hidden.property_id) { - bool val = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - if (val != _hidden) { - _hidden = val; - return true; - } - } else if (prop == Properties::position_locked.property_id) { - _position_locked = dynamic_cast<const PropertyTemplate<bool>*>(&prop)->val(); - } else if (prop == Properties::start.property_id) { - framepos_t val = dynamic_cast<const PropertyTemplate<framepos_t>*>(&prop)->val(); - if (val != _start) { - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 start changed from %2 to %3", - _name.val(), _start, val)); - _start = val; - return true; - } - } else if (prop == Properties::length.property_id) { - framecnt_t val = dynamic_cast<const PropertyTemplate<framecnt_t>* > (&prop)->val(); - if (val != _length) { - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 length changed from %2 to %3", - _name.val(), _length, val)); - _length = val; - return true; - } - } else if (prop == Properties::position.property_id) { - framepos_t val = dynamic_cast<const PropertyTemplate<framepos_t>*>(&prop)->val(); - if (val != _position) { - DEBUG_TRACE (DEBUG::Properties, string_compose ("region %1 position changed from %2 to %3", - _name.val(), _position, val)); - _position = val; - return true; - } - } else if (prop == Properties::sync_position.property_id) { - framepos_t val = dynamic_cast<const PropertyTemplate<framepos_t>*>(&prop)->val(); - if (val != _sync_position) { - _sync_position = val; - return true; - } - } else if (prop == Properties::layer.property_id) { - layer_t val = dynamic_cast<const PropertyTemplate<layer_t>*>(&prop)->val(); - if (val != _layer) { - _layer = val; - return true; - } - } else if (prop == Properties::ancestral_start.property_id) { - _ancestral_start = dynamic_cast<const PropertyTemplate<framepos_t>*>(&prop)->val(); - } else if (prop == Properties::ancestral_length.property_id) { - _ancestral_length = dynamic_cast<const PropertyTemplate<framecnt_t>*>(&prop)->val(); - } else if (prop == Properties::stretch.property_id) { - _stretch = dynamic_cast<const PropertyTemplate<float>*>(&prop)->val(); - } else if (prop == Properties::shift.property_id) { - _shift = dynamic_cast<const PropertyTemplate<float>*>(&prop)->val(); - } else { - return SessionObject::set_property (prop); - } - - return false; -} - PropertyList* Region::property_factory (const XMLNode& history_node) const { diff --git a/libs/pbd/pbd/properties.h b/libs/pbd/pbd/properties.h index 691ab9c4ad..31197030f9 100644 --- a/libs/pbd/pbd/properties.h +++ b/libs/pbd/pbd/properties.h @@ -118,6 +118,12 @@ public: } bool changed () const { return _have_old; } + void set_state_from_property (PropertyBase const * p) { + T v = dynamic_cast<const PropertyTemplate<T>* > (p)->val (); + if (v != _current) { + set (v); + } + } protected: /** Constructs a PropertyTemplate with a default diff --git a/libs/pbd/pbd/property_basics.h b/libs/pbd/pbd/property_basics.h index 251d71dc66..1baa14ac64 100644 --- a/libs/pbd/pbd/property_basics.h +++ b/libs/pbd/pbd/property_basics.h @@ -91,6 +91,9 @@ public: virtual void add_state_to_owner_state (XMLNode&) const = 0; virtual bool changed() const = 0; + /** Set the value of this property from another */ + virtual void set_state_from_property (PropertyBase const *) = 0; + const gchar*property_name () const { return g_quark_to_string (_property_id); } PropertyID property_id () const { return _property_id; } diff --git a/libs/pbd/pbd/sequence_property.h b/libs/pbd/pbd/sequence_property.h index 8bbc7c77d2..d9ef6255d2 100644 --- a/libs/pbd/pbd/sequence_property.h +++ b/libs/pbd/pbd/sequence_property.h @@ -123,6 +123,11 @@ class SequenceProperty : public PropertyBase _change.removed.clear (); } + void set_state_from_property (PropertyBase const * p) { + const ChangeRecord& change (dynamic_cast<const SequenceProperty*> (p)->change ()); + update (change); + } + /** Given a record of changes to this property, pass it to a callback that will * update the property in some appropriate way. * diff --git a/libs/pbd/pbd/stateful.h b/libs/pbd/pbd/stateful.h index 5585b5c13b..4352e88201 100644 --- a/libs/pbd/pbd/stateful.h +++ b/libs/pbd/pbd/stateful.h @@ -48,10 +48,7 @@ class Stateful { virtual XMLNode& get_state (void) = 0; virtual int set_state (const XMLNode&, int version) = 0; - /* derived types do not have to implement this, but probably should - give it serious attention. - */ - virtual bool set_property (const PropertyBase&) { return false; } + virtual bool set_property (const PropertyBase&); PropertyChange set_properties (const PropertyList&); const OwnedPropertyList& properties() const { return *_properties; } diff --git a/libs/pbd/stateful.cc b/libs/pbd/stateful.cc index 89b22edd24..36a0d74778 100644 --- a/libs/pbd/stateful.cc +++ b/libs/pbd/stateful.cc @@ -299,4 +299,16 @@ Stateful::changed() const return false; } +bool +Stateful::set_property (const PropertyBase& prop) +{ + OwnedPropertyList::iterator i = _properties->find (prop.property_id()); + if (i == _properties->end()) { + return false; + } + + i->second->set_state_from_property (&prop); + return true; +} + } // namespace PBD |