1 #include "helper-observer.h"
3 namespace Inkscape {
4 namespace XML {
6 // Very simple observer that just emits a signal if anything happens to a node
7 SignalObserver::SignalObserver()
8 : _oldsel(0)
9 {}
11 // Add this observer to the SPObject and remove it from any previous object
12 void SignalObserver::set(SPObject* o)
13 {
14 if(_oldsel && _oldsel->repr)
15 _oldsel->repr->removeObserver(*this);
16 if(o && o->repr)
17 o->repr->addObserver(*this);
18 _oldsel = o;
19 }
21 void SignalObserver::notifyChildAdded(XML::Node&, XML::Node&, XML::Node*)
22 { signal_changed()(); }
24 void SignalObserver::notifyChildRemoved(XML::Node&, XML::Node&, XML::Node*)
25 { signal_changed()(); }
27 void SignalObserver::notifyChildOrderChanged(XML::Node&, XML::Node&, XML::Node*, XML::Node*)
28 { signal_changed()(); }
30 void SignalObserver::notifyContentChanged(XML::Node&, Util::ptr_shared<char>, Util::ptr_shared<char>)
31 {}
33 void SignalObserver::notifyAttributeChanged(XML::Node&, GQuark, Util::ptr_shared<char>, Util::ptr_shared<char>)
34 { signal_changed()(); }
36 sigc::signal<void>& SignalObserver::signal_changed()
37 {
38 return _signal_changed;
39 }
41 } //namespace XML
42 } //namespace Inkscape