mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-05 18:16:23 +03:00
- Convert package creation. It is used to prepare some auxiliary presentations/methods to prepare variables for inspector based on occt classes. - ViewControl package improvement: Classes for property view, table, table model are implemented to visualize view of properties. This view is filled by selection in tree if the selected object has implemented DumpJson functionality. - TreeModel package improvements: Method InitColumn is implemented in TreeModel_TreeModel to fill default columns in base model. The default columns are: Name, Visibility, Rows. Additional columns should be added in successors. Container of root items is moved into the base class - View package imrovements: Store preferences: display mode, fit all checked state and type of external context View_DisplayPreview is added to process preview for selected in tree view objects hide actions Clear, Multi, Single by default (as selection in tree view or Visibility state of item define which presentations should be displayed or erased) - ShapeView plugin improvements: Property View content based on DumpJson (columns in tree view for properties are removed), Properties for TopoDS_Shape are displayed Explode shape action in tree view to see content of shape by selected shape type. Type of displayed shapes is only preview, it is not used in export action. Export shape into BREP. The previous implementation about BREP files in some directory and default view is removed. - VInspector plugin imrovements: Property View content based on DumpJson (columns in tree view for properties are removed), Properties for AIS_InteractiveContext and AIS_InteractiveObject are displayed obsolete classes to provide properties are removed. - DFBrowser plugin improvements: Property View content based on DumpJson is not used yet. But there is the USE_DUMPJSON macro. It's switch off by default. If switch ON, it creates a Property View filled with DumpJson. It's a way of DFBrowser moving on this property view. Init uses static variable CDF_Session::CurrentSession()->CurrentApplication to fill plugin if application in plugin is not set but OCAF application exists - OCC_VERSION_HEX variable used for previous OCCT versions support (before 6.9.0 or 7.2.0) is removed
162 lines
6.3 KiB
C++
162 lines
6.3 KiB
C++
// Created on: 2020-01-25
|
|
// Created by: Natalia ERMOLAEVA
|
|
// Copyright (c) 2020 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 TreeModel_ItemProperties_H
|
|
#define TreeModel_ItemProperties_H
|
|
|
|
#include <Standard.hxx>
|
|
#include <Standard_Dump.hxx>
|
|
#include <Standard_Handle.hxx>
|
|
#include <Standard_Macro.hxx>
|
|
#include <Standard_Type.hxx>
|
|
#include <Standard_Transient.hxx>
|
|
|
|
#include <NCollection_IndexedDataMap.hxx>
|
|
#include <NCollection_IndexedMap.hxx>
|
|
#include <NCollection_List.hxx>
|
|
|
|
#include <TCollection_AsciiString.hxx>
|
|
|
|
#include <inspector/TreeModel_ItemBase.hxx>
|
|
#include <inspector/ViewControl_EditType.hxx>
|
|
|
|
#include <Standard_WarningsDisable.hxx>
|
|
#include <QAbstractTableModel>
|
|
#include <QColor>
|
|
#include <QList>
|
|
#include <QModelIndexList>
|
|
#include <QVariant>
|
|
#include <Standard_WarningsRestore.hxx>
|
|
|
|
//! \class TreeModel_ItemProperties
|
|
//! Class to manipulate properties of tree item. The properties are organized in table structure
|
|
class TreeModel_ItemProperties : public Standard_Transient
|
|
{
|
|
//! enum defined the dimension type
|
|
enum TreeModel_DimType
|
|
{
|
|
TreeModel_DimType_Rows, //!< defines number of rows
|
|
TreeModel_DimType_Columns //!< defines number of columns
|
|
};
|
|
|
|
//! container of values in a row of property table
|
|
struct TreeModel_RowValue
|
|
{
|
|
TreeModel_RowValue (const Standard_Integer theValueStartPosition, const QVariant& theKey, QVariant theValue)
|
|
: ValueStartPosition (theValueStartPosition), Key (theKey), Value (theValue) {}
|
|
|
|
Standard_Integer ValueStartPosition; //!< start position of the key
|
|
QVariant Key; //!< value in the first column
|
|
QVariant Value; //!< value in the second column
|
|
QMap<int, QVariant> CustomValues; //!< custom values, e.g. key is Background, value is a defined color
|
|
};
|
|
|
|
public:
|
|
//! Constructor
|
|
TreeModel_ItemProperties() {}
|
|
|
|
//! Destructor
|
|
~TreeModel_ItemProperties() {}
|
|
|
|
//! Sets the current item
|
|
void SetItem (const TreeModel_ItemBasePtr& theItem) { myItem = theItem; }
|
|
|
|
//! Returns the current item
|
|
TreeModel_ItemBasePtr Item() const { return myItem; }
|
|
|
|
//! Fills internal containers by item stream values
|
|
Standard_EXPORT void Init();
|
|
|
|
//! If the item has internal values, there should be reseted here.
|
|
Standard_EXPORT virtual void Reset();
|
|
|
|
//! Returns number of table rows
|
|
//! \return an integer value
|
|
Standard_EXPORT int RowCount() const;
|
|
|
|
//! Returns number of table columns
|
|
//! \return an integer value
|
|
int ColumnCount() const { return 2; }
|
|
|
|
//! Returns content of the model index for the given role, it is obtained from internal container of values
|
|
//! \param theRow a model index row
|
|
//! \param theColumn a model index column
|
|
//! \param theRole a view role
|
|
//! \return value interpreted depending on the given role
|
|
Standard_EXPORT QVariant Data (const int theRow, const int theColumn, int theRole = Qt::DisplayRole) const;
|
|
|
|
//! Returns type of edit control for the model index. By default, it is an empty control
|
|
//! \param theRow a model index row
|
|
//! \param theColumn a model index column
|
|
//! \return edit type
|
|
Standard_EXPORT ViewControl_EditType EditType (const int theRow, const int theColumn) const;
|
|
|
|
//! Sets content of the model index for the given role, it is applied to internal container of values
|
|
//! \param theRow a model index row
|
|
//! \param theColumn a model index column
|
|
//! \param theRole a view role
|
|
//! \return true if the value is changed
|
|
Standard_EXPORT virtual bool SetData (const int theRow, const int theColumn, const QVariant& theValue,
|
|
int theRole = Qt::DisplayRole);
|
|
|
|
//! Returns presentation of the attribute to be visualized in the view
|
|
//! \thePresentations [out] container of presentation handles to be visualized
|
|
Standard_EXPORT virtual void Presentations (NCollection_List<Handle(Standard_Transient)>& thePresentations);
|
|
|
|
//! Returns flags for the item: ItemIsEnabled | Qt::ItemIsSelectable.
|
|
//! Additional flag for the column 1 is Qt::ItemIsEditable.
|
|
//! \param theIndex a model index
|
|
//! \return flags
|
|
Standard_EXPORT virtual Qt::ItemFlags TableFlags (const int theRow, const int theColumn) const;
|
|
|
|
//! Returns stream value of the item to fulfill property panel.
|
|
//! \return stream value or dummy
|
|
Standard_EXPORT void ChildStream (const int theRowId,
|
|
TCollection_AsciiString& theKey,
|
|
Standard_DumpValue& theValue) const;
|
|
|
|
//! Returns data object of the item.
|
|
//! \return object key
|
|
const TCollection_AsciiString& Key() const { return myKey; }
|
|
|
|
//! Returns stream value of the item.
|
|
//! \return value
|
|
const TCollection_AsciiString& StreamValue() const { return myStreamValue.myValue; }
|
|
|
|
//! Returns children stream values
|
|
//const NCollection_IndexedDataMap<TCollection_AsciiString, Standard_DumpValue>& Values() const { initItem(); return myValues; }
|
|
|
|
//! Returns children stream values
|
|
const NCollection_IndexedDataMap<Standard_Integer, TreeModel_RowValue>& RowValues() const { initItem(); return myRowValues; }
|
|
|
|
//! Returns children stream values
|
|
const NCollection_IndexedDataMap<TCollection_AsciiString, Standard_DumpValue>& Children() const { initItem(); return myChildren; }
|
|
|
|
DEFINE_STANDARD_RTTIEXT (TreeModel_ItemProperties, Standard_Transient)
|
|
|
|
protected:
|
|
//! Initializes the current item. It creates a backup of the specific item information
|
|
Standard_EXPORT void initItem() const;
|
|
|
|
private:
|
|
TreeModel_ItemBasePtr myItem; //!< current item
|
|
|
|
TCollection_AsciiString myKey; //!< the item key
|
|
Standard_DumpValue myStreamValue; //!< the stream value
|
|
NCollection_IndexedDataMap<TCollection_AsciiString, Standard_DumpValue> myChildren; //!< the children
|
|
NCollection_IndexedDataMap<Standard_Integer, TreeModel_RowValue> myRowValues; //!< the values
|
|
};
|
|
|
|
#endif |