00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef ELEMENTDOCEVENTS_H
00026 #define ELEMENTDOCEVENTS_H
00027
00028
00029 #include "attributedocevents.h"
00030 #include "elementdoccontainers.h"
00031
00032
00033 class MElementDocEvent : public MAttributeDocEvent {
00034 public:
00035 enum Type {
00036 ElementAddPtr = MAttributeDocEvent::User,
00037 ElementRemovePtr,
00038 ElementSetChangeOrder,
00039 User = MAttributeDocEvent::User + 1000
00040 };
00041
00042 MElementDocEvent( Type type )
00043 : MAttributeDocEvent((MAttributeDocEvent::Type)type) {}
00044 };
00045
00046
00047 class MElementEvent : public MElementDocEvent,
00048 public AbstractElementContainer {
00049 public:
00050 MElementEvent( Type type,
00051 AbstractElement* element )
00052 : MElementDocEvent(type),
00053 AbstractElementContainer(element) {}
00054 };
00055
00056
00057 class MElementSetEvent : public MElementDocEvent,
00058 public AbstractElementSetContainer {
00059 public:
00060 MElementSetEvent( Type type,
00061 const AbstractElementSet& elements )
00062 : MElementDocEvent(type),
00063 AbstractElementSetContainer(elements) {}
00064 };
00065
00066
00068 class MElementAddPtrEvent : public MElementEvent {
00069 public:
00070 MElementAddPtrEvent( AbstractElement* element )
00071 : MElementEvent(ElementAddPtr, element) {}
00072 };
00073
00075 class MElementRemovePtrEvent : public MElementEvent {
00076 public:
00077 MElementRemovePtrEvent( AbstractElement* element )
00078 : MElementEvent(ElementRemovePtr, element) {}
00079 };
00080
00081
00082 class MElementSetChangeOrderEvent : public MElementSetEvent,
00083 public ElementOrderActionContainer {
00084 public:
00085 MElementSetChangeOrderEvent( const AbstractElementSet& elements,
00086 Action action )
00087 : MElementSetEvent(ElementSetChangeOrder, elements),
00088 ElementOrderActionContainer(action) {}
00089 };
00090
00091
00092 #endif // ! ELEMENTDOCEVENTS_H