1 #ifndef __XML_HELPER_OBSERVER__
2 #define __XML_HELPER_OBSERVER__
4 #include "node-observer.h"
5 #include "node.h"
6 #include "../sp-object.h"
7 //#include "../sp-object-repr.h"
8 #include <sigc++/sigc++.h>
10 namespace Inkscape {
11 namespace XML {
12 class Node;
14 // Very simple observer that just emits a signal if anything happens to a node
15 class SignalObserver : public NodeObserver
16 {
17 public:
18 SignalObserver();
20 // Add this observer to the SPObject and remove it from any previous object
21 void set(SPObject* o);
22 void notifyChildAdded(Node&, Node&, Node*);
23 void notifyChildRemoved(Node&, Node&, Node*);
24 void notifyChildOrderChanged(Node&, Node&, Node*, Node*);
25 void notifyContentChanged(Node&, Util::ptr_shared<char>, Util::ptr_shared<char>);
26 void notifyAttributeChanged(Node&, GQuark, Util::ptr_shared<char>, Util::ptr_shared<char>);
27 sigc::signal<void>& signal_changed();
28 private:
29 sigc::signal<void> _signal_changed;
30 SPObject* _oldsel;
31 };
32 }
33 }
35 #endif //#ifndef __XML_HELPER_OBSERVER__