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
|