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