Developer Documentation

BaseObject.hh
Go to the documentation of this file.
1 /*===========================================================================*\
2 * *
3 * OpenFlipper *
4 * Copyright (c) 2001-2015, RWTH-Aachen University *
5 * Department of Computer Graphics and Multimedia *
6 * All rights reserved. *
7 * www.openflipper.org *
8 * *
9 *---------------------------------------------------------------------------*
10 * This file is part of OpenFlipper. *
11 *---------------------------------------------------------------------------*
12 * *
13 * Redistribution and use in source and binary forms, with or without *
14 * modification, are permitted provided that the following conditions *
15 * are met: *
16 * *
17 * 1. Redistributions of source code must retain the above copyright notice, *
18 * this list of conditions and the following disclaimer. *
19 * *
20 * 2. Redistributions in binary form must reproduce the above copyright *
21 * notice, this list of conditions and the following disclaimer in the *
22 * documentation and/or other materials provided with the distribution. *
23 * *
24 * 3. Neither the name of the copyright holder nor the names of its *
25 * contributors may be used to endorse or promote products derived from *
26 * this software without specific prior written permission. *
27 * *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 \*===========================================================================*/
41
42
43 //=============================================================================
44 //
45 // Types
46 //
47 //=============================================================================
48
54 #pragma once
55
56 //== INCLUDES =================================================================
57
58 #include <OpenFlipper/common/GlobalDefines.hh>
59 #include <OpenFlipper/common/DataTypes.hh>
60 #include <OpenFlipper/common/UpdateType.hh>
61
62 #include "perObjectData.hh"
63
64 #include <vector>
65
66 #include <QObject>
67 #include <QString>
68 #include <QList>
69 #include <QStringList>
70 #include <QMap>
71
72
73 //== TYPEDEFS =================================================================
74
75
76 //== CLASS DEFINITION =========================================================
77
82 class DLLEXPORT BaseObject : public QObject {
83
84 Q_OBJECT
85
86 friend class BaseObjectData;
87 friend class Core;
88
89 public :
90
94 BaseObject(const BaseObject& _object);
95
100 explicit BaseObject( BaseObject *_parent = 0);
101
102 virtual ~BaseObject();
103
106 static int NOOBJECT;
107
108 //===========================================================================
111 //===========================================================================
112 public:
116 int id() const;
117
122 int persistentId() const;
123
126 void persistentId( int _id );
127
128 private:
134 int id_;
135
141 int persistentId_;
142
143 //===========================================================================
146 //===========================================================================
147
148 public:
152 bool dataType(DataType _type) const;
153
156 DataType dataType() const;
157
161 void setDataType(DataType _type);
162
163 private:
167 DataType objectType_;
168
171 //===========================================================================
174 //===========================================================================
175
176 public:
180 virtual void cleanup();
181
184 //===========================================================================
187 //===========================================================================
188 public:
190 virtual QString getObjectinfo();
191
193 virtual void printObjectInfo();
194
197 //===========================================================================
200 //===========================================================================
201
202 signals:
203 void objectSelectionChanged(int _objectId);
204
205 public:
211 bool target();
212
215 void target(bool _target);
216
220 bool source();
221
224 void source(bool _source);
225
228 bool flag(QString _flag);
229
232 void setFlag(QString _flag, bool _set);
233
236 QStringList flags();
237
238 private:
239
243 QStringList flags_;
244
245
248 //===========================================================================
251 //===========================================================================
252
253 signals:
259 void visibilityChanged(int _objectId);
260
261
262 public :
264 virtual bool visible();
265
267 virtual void visible(bool _visible);
268
269 protected :
274 bool visible_;
275
278 //===========================================================================
281 //===========================================================================
282
283 public:
284
285
287 void dumpTree();
288
290 virtual BaseObject* copy();
291
292 //===========================================================================
295 //===========================================================================
296
297 protected:
306 virtual void update(UpdateType _type = UPDATE_ALL);
307
311 //===========================================================================
314 //===========================================================================
315
316 public:
317
320 BaseObject* last();
321
324 BaseObject* next();
325
328 int level();
329
330 private:
332 BaseObject *parentItem_;
333
335 QList<BaseObject*> childItems_;
336
337 public:
338 //===========================================================================
341 //===========================================================================
342
343 public:
344
346 int row() const;
347
349 BaseObject *parent();
350 const BaseObject *parent() const;
351
353 void setParent(BaseObject* _parent);
354
357 //===========================================================================
360 //===========================================================================
361
362 public:
363
365 BaseObject* childExists(int _objectId);
366
368 BaseObject* childExists(QString _name);
369
371 void appendChild(BaseObject *child);
372
374 BaseObject *child(int row);
375
377 int childCount() const;
378
380 void removeChild( BaseObject* _item );
381
383 QList< BaseObject* > getLeafs();
384
386 void deleteSubtree();
387
390 //===========================================================================
393 //===========================================================================
394
395 public:
396
402 int group() const;
403
405 bool isGroup() const;
406
411 bool isInGroup( int _id ) const;
412
417 bool isInGroup( QString _name ) const;
418
421 std::vector< int > getGroupIds();
422
425 QStringList getGroupNames();
426
427
430 //===========================================================================
433 //===========================================================================
434
439 void setFromFileName(const QString &_filename);
440
441
443 QString path() const;
444
446 void setPath(const QString &_path);
447
449 QString name( ) const;
450
451
452 /* set the name of the object. ( If you overwrite it, call BaseObject::setName(_name ) it in your funtion first)
453 * this is may not the filename of the given object, because one file can have multiple objects
454 */
455 virtual void setName(QString _name );
456
458 QString filename() const;
459
461 void setFileName(const QString &_filename);
462
463 private:
464
466 QString path_;
467 QString filename_;
468
469 signals:
473 void objectPropertiesChanged(int _objectId);
474
475 private:
476
478 QString name_;
479
480
483 //===========================================================================
487 //===========================================================================
488
489 public:
490
498 void setObjectData( QString _dataName , PerObjectData* _data );
499
501 void clearObjectData( QString _dataName );
502
504 bool hasObjectData( QString _dataName );
505
507 PerObjectData* objectData( QString _dataName );
508
510 void deleteData();
511
514 //===========================================================================
517 //===========================================================================
518
524 QMap<QString, PerObjectData*>& getPerObjectDataMap();
525
526
527 private:
528
529 QMap<QString, PerObjectData* > dataMap_;
530
533 //===========================================================================
536 //===========================================================================
537
538 public:
544 QString &getCommentByKey(const QString &key);
545
551 const QString getCommentByKey(const QString &key) const;
552
554 bool hasCommentForKey(const QString &key) const;
555
557 bool hasComments() const;
558
559 void clearComment(const QString &key);
560
561 void clearAllComments();
562
564 const QMap<QString, QString> &getAllComments() const;
565
567 const QString getAllCommentsFlat() const;
568
569 private:
570 QMap<QString, QString> commentsByKey_;
571
574 };
575
Core::objectPropertiesChanged
void objectPropertiesChanged(int _id)
Tell plugins that object properties such as object names have been changed.
UpdateType
Update type class.
Definition: UpdateType.hh:60
BaseObject::persistentId_
int persistentId_
Persistent ID for this Object.
Definition: BaseObject.hh:141
UPDATE_ALL
const UpdateType UPDATE_ALL(UpdateTypeSet(1))
Identifier for all updates.
BaseObject::childItems_
QList< BaseObject * > childItems_
Children of this node.
Definition: BaseObject.hh:335
GlobalDefines.hh
DataTypes.hh
BaseObject::visible_
bool visible_
Definition: BaseObject.hh:274
Core::visibilityChanged
void visibilityChanged(int _id)
Tell plugins that the visibility of an object has changed.
Core
Definition: Core.hh:132
Core::objectSelectionChanged
void objectSelectionChanged(int)
This signal is emitted if the object has been changed (source/target)
BaseObject::id_
int id_
Unique ID for this Object.
Definition: BaseObject.hh:134
BaseObject::path_
QString path_
path to the file from which the object is loaded ( defaults to "." )
Definition: BaseObject.hh:466
PerObjectData
Object Payload.
Definition: perObjectData.hh:73
BaseObject::commentsByKey_
QMap< QString, QString > commentsByKey_
Get comment for the specified key.
Definition: BaseObject.hh:570
BaseObject::name_
QString name_
Object/FileName ( defaults to NONAME )
Definition: BaseObject.hh:478
BaseObject::flags_
QStringList flags_
Definition: BaseObject.hh:243
BaseObject::NOOBJECT
static int NOOBJECT
Definition: BaseObject.hh:106
DataType
Predefined datatypes.
Definition: DataTypes.hh:83
BaseObject::dataMap_
QMap< QString, PerObjectData *> dataMap_
get reference to map of all perObject Datas
Definition: BaseObject.hh:529
BaseObject
Definition: BaseObject.hh:82
perObjectData.hh
BaseObject::objectType_
DataType objectType_
Definition: BaseObject.hh:167
Core::clearAllComments
void clearAllComments(int objId)
Called when a plugin requests an update in the viewer.
Definition: Core.cc:1831
BaseObjectData
Definition: BaseObjectData.hh:102
DLLEXPORT
#define DLLEXPORT
Definition: GlobalDefines.hh:95
BaseObject::parentItem_
BaseObject * parentItem_
Parent item or 0 if rootnode.
Definition: BaseObject.hh:332
BaseObject::filename_
QString filename_
path to the file from which the object is loaded ( defaults to "." )
Definition: BaseObject.hh:467