QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RAddObjectsOperation.h
Go to the documentation of this file.
1
20#ifndef RADDOBJECTSOPERATION_H
21#define RADDOBJECTSOPERATION_H
22
23#include "operations_global.h"
24
25#include <QList>
26#include <QSharedPointer>
27
28#include "ROperation.h"
29
30class RDocument;
31class RObject;
32class RTransaction;
33
41public:
42 enum Flag {
43 NoFlags = 0x000,
44 UseAttributes = 0x001,
45 ForceNew = 0x002,
46 GeometryOnly = 0x004,
47 Delete = 0x008
48 };
49 Q_DECLARE_FLAGS(Flags, Flag)
50
52 public:
53 // constructor to mark cycles:
55 : object(QSharedPointer<RObject>()),
56 flags(RAddObjectsOperation::NoFlags) {}
57
58 // constructor to delete object:
59 RModifiedObjects(QSharedPointer<RObject> object)
60 : object(object),
62
63 // constructor to add object:
64 RModifiedObjects(QSharedPointer<RObject> object, bool useCurrentAttributes, bool forceNew)
65 : object(object) {
66
67 setUseAttributes(!useCurrentAttributes);
68 setForceNew(forceNew);
69 }
70
71 // constructor to add object:
72 RModifiedObjects(QSharedPointer<RObject> object, RAddObjectsOperation::Flags flags)
73 : object(object), flags(flags) {}
74
75 void setUseAttributes(bool on) {
77 }
78
79 bool getUseAttributes() const {
81 }
82
83 void setForceNew(bool on) {
85 }
86
87 bool getForceNew() const {
88 return getFlag(RAddObjectsOperation::ForceNew);
89 }
90
91 void setGeometryOnly(bool on) {
93 }
94
95 bool getGeometryOnly() const {
97 }
98
99 void setDelete(bool on) {
100 setFlag(RAddObjectsOperation::Delete, on);
101 }
102
103 bool getDelete() const {
104 return getFlag(RAddObjectsOperation::Delete);
105 }
106
108 if (on) {
109 flags |= flag;
110 } else {
111 flags &= ~flag;
112 }
113 }
114
116 return (flags & flag) == flag;
117 }
118
119 QSharedPointer<RObject> object;
120 RAddObjectsOperation::Flags flags;
121 };
122
123
124public:
125 RAddObjectsOperation(bool undoable = true);
126 RAddObjectsOperation(QList<QSharedPointer<RObject> >& list,
127 bool useCurrentAttributes = true, bool undoable = true);
128 virtual ~RAddObjectsOperation();
129
134 void replaceObject(const QSharedPointer<RObject>& object,
135 bool useCurrentAttributes = true);
136
137 QSharedPointer<RObject> getObject(RObject::Id id);
138
139 void endCycle();
140
141 void addObject(const QSharedPointer<RObject>& object,
142 bool useCurrentAttributes=true, bool forceNew=false);
143
144 void addObject(const QSharedPointer<RObject>& object,
145 RAddObjectsOperation::Flags flags);
146
147 void deleteObject(const QSharedPointer<RObject>& object);
148
149 virtual RTransaction apply(RDocument& document, bool preview = false);
150
151 int getPreviewCounter() const {
152 return previewCounter;
153 }
154
155 void setLimitPreview(bool on) {
156 limitPreview = on;
157 }
158
159 bool isEmpty() {
160 return addedObjects.isEmpty();
161 }
162
163private:
164 QList<RModifiedObjects> addedObjects;
165 //QList<QPair<QSharedPointer<RObject>, bool> > addedObjects;
168};
169
170
174Q_DECLARE_METATYPE(QFlags<RAddObjectsOperation::Flag>)
175Q_DECLARE_METATYPE(QFlags<RAddObjectsOperation::Flag>*)
176
177#endif
Q_DECLARE_METATYPE(RMath *)
Deletes all selected entities of the current document.
Definition Delete.js:11
Definition RAddObjectsOperation.h:51
void setUseAttributes(bool on)
Definition RAddObjectsOperation.h:75
RModifiedObjects(QSharedPointer< RObject > object, bool useCurrentAttributes, bool forceNew)
Definition RAddObjectsOperation.h:64
void setGeometryOnly(bool on)
Definition RAddObjectsOperation.h:91
bool getForceNew() const
Definition RAddObjectsOperation.h:87
void setFlag(RAddObjectsOperation::Flag flag, bool on)
Definition RAddObjectsOperation.h:107
bool getUseAttributes() const
Definition RAddObjectsOperation.h:79
bool getDelete() const
Definition RAddObjectsOperation.h:103
void setDelete(bool on)
Definition RAddObjectsOperation.h:99
RModifiedObjects(QSharedPointer< RObject > object, RAddObjectsOperation::Flags flags)
Definition RAddObjectsOperation.h:72
RModifiedObjects()
Definition RAddObjectsOperation.h:54
QSharedPointer< RObject > object
Definition RAddObjectsOperation.h:119
RModifiedObjects(QSharedPointer< RObject > object)
Definition RAddObjectsOperation.h:59
bool getGeometryOnly() const
Definition RAddObjectsOperation.h:95
bool getFlag(RAddObjectsOperation::Flag flag) const
Definition RAddObjectsOperation.h:115
RAddObjectsOperation::Flags flags
Definition RAddObjectsOperation.h:120
void setForceNew(bool on)
Definition RAddObjectsOperation.h:83
Implementation of an operation that adds entities.
Definition RAddObjectsOperation.h:40
bool isEmpty()
Definition RAddObjectsOperation.h:159
int previewCounter
Definition RAddObjectsOperation.h:166
bool limitPreview
Definition RAddObjectsOperation.h:167
int getPreviewCounter() const
Definition RAddObjectsOperation.h:151
Flag
Definition RAddObjectsOperation.h:42
@ UseAttributes
Use assigned attributes instead of current attributes (color, linetype, width)
Definition RAddObjectsOperation.h:44
@ Delete
Delete object.
Definition RAddObjectsOperation.h:47
@ GeometryOnly
Only geometric properties have changed (e.g.
Definition RAddObjectsOperation.h:46
@ ForceNew
Force adding existing entity as new, duplicate entity.
Definition RAddObjectsOperation.h:45
QList< RModifiedObjects > addedObjects
Definition RAddObjectsOperation.h:164
void setLimitPreview(bool on)
Definition RAddObjectsOperation.h:155
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Abstract base class for all objects.
Definition RObject.h:64
int Id
Definition RObject.h:69
This abstract class is an interface for all operation implementations.
Definition ROperation.h:45
virtual RTransaction apply(RDocument &document, bool preview=false)=0
Applies this operation to selection in the given document.
Transaction implementation.
Definition RTransaction.h:73
void deleteObject(void obj)
Deletes the given RObject from the drawing.
Definition simple_create.js:216
void addObject(void obj)
Adds the given RObject to the drawing.
Definition simple_create.js:97
#define QCADOPERATIONS_EXPORT
Definition operations_global.h:10