QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
ROperation.h
Go to the documentation of this file.
1
20#ifndef ROPERATION_H
21#define ROPERATION_H
22
23#include "core_global.h"
24
25#include "RDebug.h"
26#include "RNonCopyable.h"
27#include "RRequireHeap.h"
28#include "RS.h"
29#include "RTransaction.h"
30
31class RDocument;
32class RExporter;
33
34
35
46public:
48 bool undoable=true,
49 RS::EntityType entityTypeFilter = RS::EntityAll
50 ) : transactionTypes(RTransaction::Generic),
51 undoable(undoable),
52 recordAffectedObjects(true),
53 spatialIndexDisabled(false),
54 allowInvisible(false),
55 allowAll(false),
56 keepChildren(false),
57 entityTypeFilter(entityTypeFilter),
58 transactionGroup(-1) {
59 RDebug::incCounter("ROperation");
60 }
61
62 virtual ~ROperation() {
63 RDebug::decCounter("ROperation");
64 }
65
73 virtual RTransaction apply(RDocument& document, bool preview = false) = 0;
74
76 return entityTypeFilter;
77 }
78
80 recordAffectedObjects = on;
81 }
82
84 spatialIndexDisabled = on;
85 }
86
87 void setAllowInvisible(bool on) {
88 allowInvisible = on;
89 }
90
91 void setAllowAll(bool on) {
92 allowAll = on;
93 }
94
98 void setKeepChildren(bool on) {
99 keepChildren = on;
100 }
101
103 transactionGroup = g;
104 }
105
107 return transactionGroup;
108 }
109
110 void setText(const QString& t) {
111 text = t;
112 }
113
114 QString getText() const {
115 return text;
116 }
117
118 RTransaction::Types getTransactionTypes() const {
119 return transactionTypes;
120 }
121
122 void setTransactionType(RTransaction::Type t, bool on = true) {
123 if (on) {
124 transactionTypes |= t;
125 } else {
126 transactionTypes &= ~t;
127 }
128 }
129
131 return (transactionTypes & t) == t;
132 }
133
134protected:
135 RTransaction::Types transactionTypes;
144 QString text;
145};
146
148
149#endif
Q_DECLARE_METATYPE(RMath *)
static void incCounter(const QString &id=RDEFAULT_QSTRING)
Definition RDebug.cpp:120
static void decCounter(const QString &id=RDEFAULT_QSTRING)
Definition RDebug.cpp:131
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Abstract base class for exporters.
Definition RExporter.h:78
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RNonCopyable.h:32
This abstract class is an interface for all operation implementations.
Definition ROperation.h:45
RTransaction::Types transactionTypes
Definition ROperation.h:135
void setTransactionGroup(int g)
Definition ROperation.h:102
void setAllowInvisible(bool on)
Definition ROperation.h:87
virtual RTransaction apply(RDocument &document, bool preview=false)=0
Applies this operation to selection in the given document.
ROperation(bool undoable=true, RS::EntityType entityTypeFilter=RS::EntityAll)
Definition ROperation.h:47
bool undoable
Definition ROperation.h:136
void setText(const QString &t)
Definition ROperation.h:110
virtual ~ROperation()
Definition ROperation.h:62
bool allowInvisible
Definition ROperation.h:139
bool recordAffectedObjects
Definition ROperation.h:137
bool allowAll
Definition ROperation.h:140
void setKeepChildren(bool on)
Keep child entities (e.g.
Definition ROperation.h:98
void setRecordAffectedObjects(bool on)
Definition ROperation.h:79
RS::EntityType getEntityTypeFilter() const
Definition ROperation.h:75
bool keepChildren
Definition ROperation.h:141
QString getText() const
Definition ROperation.h:114
bool getTransactionType(RTransaction::Type t) const
Definition ROperation.h:130
int getTransactionGroup() const
Definition ROperation.h:106
QString text
Definition ROperation.h:144
void setSpatialIndexDisabled(bool on)
Definition ROperation.h:83
int transactionGroup
Definition ROperation.h:143
RTransaction::Types getTransactionTypes() const
Definition ROperation.h:118
void setAllowAll(bool on)
Definition ROperation.h:91
RS::EntityType entityTypeFilter
Definition ROperation.h:142
void setTransactionType(RTransaction::Type t, bool on=true)
Definition ROperation.h:122
bool spatialIndexDisabled
Definition ROperation.h:138
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RRequireHeap.h:30
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityAll
All entities (for filters)
Definition RS.h:241
Transaction implementation.
Definition RTransaction.h:73
Type
Transaction type for optimizations.
Definition RTransaction.h:78
#define QCADCORE_EXPORT
Definition core_global.h:10
#define true
Definition opennurbs_system.h:248
#define false
Definition opennurbs_system.h:252