File: ShapeView_ItemShape.hxx

package info (click to toggle)
opencascade 7.9.2%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 301,924 kB
  • sloc: cpp: 1,523,264; tcl: 10,159; cs: 5,173; java: 1,554; sh: 1,342; ansic: 827; xml: 699; makefile: 30; javascript: 22
file content (137 lines) | stat: -rw-r--r-- 4,861 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// Created on: 2017-06-16
// Created by: Natalia ERMOLAEVA
// Copyright (c) 2017 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.

#ifndef ShapeView_ItemShape_H
#define ShapeView_ItemShape_H

#include <inspector/TreeModel_ItemBase.hxx>

#include <TopTools_IndexedMapOfShape.hxx>

#include <Standard.hxx>
#include <TCollection_AsciiString.hxx>
#include <TopAbs_ShapeEnum.hxx>
#include <TopoDS_Shape.hxx>

#include <Standard_WarningsDisable.hxx>
#include <QMap>
#include <QVariant>
#include <Standard_WarningsRestore.hxx>

class ShapeView_ItemShape;
typedef QExplicitlySharedDataPointer<ShapeView_ItemShape> ShapeView_ItemShapePtr;

//! \class ShapeView_ItemShape
//! This item is connected to TopoDS_Shape.
//! Parent is either ShapeView_ItemRoot or ShapeView_ItemShape, children are ShapeView_ItemShape or
//! no children
class ShapeView_ItemShape : public TreeModel_ItemBase
{
public:
  //! Creates an item wrapped by a shared pointer
  //! \param theRow the item row position in the parent item
  //! \param theColumn the item column position in the parent item
  //! \return the pointer to the created item
  static ShapeView_ItemShapePtr CreateItem(TreeModel_ItemBasePtr theParent,
                                           const int             theRow,
                                           const int             theColumn)
  {
    return ShapeView_ItemShapePtr(new ShapeView_ItemShape(theParent, theRow, theColumn));
  }

  //! Destructor
  virtual ~ShapeView_ItemShape() {}

  //! Returns explode type of the item
  TopAbs_ShapeEnum ExplodeType() const { return myExplodeType; }

  //! Sets explore type
  //! \param theType type of item explode. If TopAbs_SHAPE, no explode, only iteration by shape
  void SetExplodeType(const TopAbs_ShapeEnum theType) { myExplodeType = theType; }

  //! Returns the current shape
  const TopoDS_Shape& GetItemShape() const
  {
    initItem();
    return myShape;
  }

  //! Returns child(extracted) shape for the current shape by the index
  //! \param theRowId an index of child shape
  //! \returns shape instance or NULL
  Standard_EXPORT TopoDS_Shape Shape(const int theRowId) const;

  //! Returns name of BREP file for the shape if exists
  //! \return string value
  QString GetFileName() const { return myFileName; }

  //! Sets name of BREP file for the shape if exists
  //! \return string value
  void SetFileName(const QString& theFileName) { myFileName = theFileName; }

  //! Inits the item, fills internal containers
  Standard_EXPORT virtual void Init() Standard_OVERRIDE;

  //! Resets cached values
  Standard_EXPORT virtual void Reset() Standard_OVERRIDE;

  //! Returns data value for the role.
  //! \param theRole a value role
  //! \return the value
  Standard_EXPORT virtual QVariant initValue(const int theRole) const Standard_OVERRIDE;

  //! \return number of children.
  Standard_EXPORT virtual int initRowCount() const Standard_OVERRIDE;

  //! Returns stream value of the item to fulfill property panel.
  //! \return stream value or dummy
  Standard_EXPORT virtual void initStream(Standard_OStream& theOStream) const Standard_OVERRIDE;

protected:
  //! Initializes the current item. It is empty because Reset() is also empty.
  virtual void initItem() const Standard_OVERRIDE;

  //! Creates a child item in the given position.
  //! \param theRow the child row position
  //! \param theColumn the child column position
  //! \return the created item
  virtual TreeModel_ItemBasePtr createChild(int theRow, int theColumn) Standard_OVERRIDE;

  //! Returns number of child shapes. Init item if it is not initialized
  //! \return integer value
  int getRowCount() const;

  //! Returns current shape, initialized item if it has not been initialized yet
  //! \return shape value
  TopoDS_Shape getShape() const;

private:
  //! Constructor
  ShapeView_ItemShape(TreeModel_ItemBasePtr theParent, const int theRow, const int theColumn)
      : TreeModel_ItemBase(theParent, theRow, theColumn),
        myExplodeType(TopAbs_SHAPE)
  {
  }

private:
  TopAbs_ShapeEnum myExplodeType; //!< type of explore own shape and get children

  TopoDS_Shape myShape;    //!< current shape
  QString      myFileName; //!< BREP file name

  TopTools_IndexedMapOfShape myChildShapes; //!< cached container of child shapes
};

#endif