File: DFBrowserPane_TDataStdTreeNodeItem.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 (133 lines) | stat: -rw-r--r-- 5,081 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
// 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 DFBrowserPane_TDataStdTreeNodeItem_H
#define DFBrowserPane_TDataStdTreeNodeItem_H

#include <inspector/TreeModel_ItemBase.hxx>

#include <Standard.hxx>
#include <TDF_Attribute.hxx>

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

class DFBrowserPane_TDataStdTreeNodeItem;
typedef QExplicitlySharedDataPointer<DFBrowserPane_TDataStdTreeNodeItem>
  DFBrowserPane_TDataStdTreeNodeItemPtr;

//! \class DFBrowserPane_TDataStdTreeNodeItem
//! An item connected to TDataStd_TreeNode attribute. Parent is NULL or tree node item.
//! Childrens are items for children of tree node attribute.
class DFBrowserPane_TDataStdTreeNodeItem : 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 DFBrowserPane_TDataStdTreeNodeItemPtr CreateItem(TreeModel_ItemBasePtr theParent,
                                                          const int             theRow,
                                                          const int             theColumn)
  {
    return DFBrowserPane_TDataStdTreeNodeItemPtr(
      new DFBrowserPane_TDataStdTreeNodeItem(theParent, theRow, theColumn));
  }

  //! Destructor
  virtual ~DFBrowserPane_TDataStdTreeNodeItem() Standard_OVERRIDE {}

  //! Store a current attribute
  //! \param theAttribute an attribute
  void SetAttribute(const Handle(TDF_Attribute)& theAttribute) { myAttribute = theAttribute; }

  //! Returns the current attribute
  //! \return an attribute
  Handle(TDF_Attribute) GetAttribute() const
  {
    initItem();
    return myAttribute;
  }

  //! Set state if the attribute is current(corresponds to the selected attribute in tree)
  //! \param theCurrent boolean state
  void setCurrentAttribute(const bool theCurrent)
  {
    Reset();
    myIsCurrentItem = theCurrent;
  }

  //! Returns child attribute of the current attribute
  //! \param theChildRow an index of a child attribute
  //! \returns an attribute
  Standard_EXPORT Handle(TDF_Attribute) getChildAttribute(const int theChildRow) const;

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

  //! Resets the cached item values. Throws down the initialized state of the item.
  Standard_EXPORT virtual void Reset() Standard_OVERRIDE;

protected:
  //! Returns the data stored under the given role for the current item.
  //! \param theRole an enumeration value of role for data obtaining
  virtual QVariant initValue(const int theRole = Qt::DisplayRole) const Standard_OVERRIDE;

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

  //! 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;

protected:
  //! Constructor
  //! \param theParent a parent item
  //! \param theRow the item row position in the parent item
  //! \param theColumn the item column position in the parent item
  DFBrowserPane_TDataStdTreeNodeItem(TreeModel_ItemBasePtr theParent,
                                     const int             theRow,
                                     const int             theColumn)
      : TreeModel_ItemBase(theParent, theRow, theColumn),
        myIsCurrentItem(false)
  {
  }

  //! Initializes the current item. It creates a backup of the specific item information
  virtual void initItem() const Standard_OVERRIDE;

  //! Returns number of children attributes, initializes item is necessary
  int getRowCount() const;

  //! Returns entry of the label of the current attribute tree node
  QString getName() const { return myLabelName; }

private:
  Handle(TDF_Attribute) myAttribute; //! current attribute in tree node hierarchy
  bool myIsCurrentItem; //! state whether this attribute is active in DFBrowser selected attribute
                        //! in tree

  int myRowCount; //! cached value of rows count
  QString
    myLabelName; //! cached value of label name of the label of the current tree node attribute
};

#endif