1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-04 18:06:22 +03:00
occt/tools/DFBrowserPaneXDE/DFBrowserPaneXDE_XCAFDocShapeMapTool.cxx
nds d2c909178e 0029018: Documentation - Provide user guide for Qt browser
Documentation is added in a new "Inspector" page of "User Guides".
Inspector plugins has some improvements by the documentation needs.
New DRAW scripts are implemented for 'tinspector' command.
2017-08-31 15:47:56 +03:00

162 lines
6.2 KiB
C++

// 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.
#include <inspector/DFBrowserPaneXDE_XCAFDocShapeMapTool.hxx>
#include <inspector/DFBrowserPane_AttributePaneModel.hxx>
#include <inspector/DFBrowserPane_HelperExport.hxx>
#include <inspector/DFBrowserPane_ItemDelegateButton.hxx>
#include <inspector/DFBrowserPane_TableView.hxx>
#include <inspector/DFBrowserPane_Tools.hxx>
#include <AIS_Shape.hxx>
#include <BRepTools.hxx>
#include <BRep_Builder.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Compound.hxx>
#include <XCAFDoc_ShapeMapTool.hxx>
#include <QEvent>
#include <QFileDialog>
#include <QGridLayout>
#include <QHeaderView>
#include <QIcon>
#include <QMap>
#include <QPainter>
#include <QStyledItemDelegate>
#include <QTableView>
#include <QVariant>
#include <QWidget>
const int COLUMN_EXPORT_WIDTH = 20;
const int COLUMN_TYPE_WIDTH = 70;
const int COLUMN_POINTER_WIDTH = 110;
// =======================================================================
// function : Constructor
// purpose :
// =======================================================================
DFBrowserPaneXDE_XCAFDocShapeMapTool::DFBrowserPaneXDE_XCAFDocShapeMapTool()
: DFBrowserPane_AttributePane(), myHelperExport (0)
{
QList<QVariant> aHeaderValues;
aHeaderValues << "TShape"<< "Type" << "";
getPaneModel()->SetHeaderValues (aHeaderValues, Qt::Horizontal);
getPaneModel()->SetColumnCount (aHeaderValues.count());
getPaneModel()->SetItalicColumns (QList<int>());
}
// =======================================================================
// function : CreateWidget
// purpose :
// =======================================================================
QWidget* DFBrowserPaneXDE_XCAFDocShapeMapTool::CreateWidget (QWidget* theParent)
{
QWidget* aMainWidget = new QWidget (theParent);
aMainWidget->setVisible (false);
myTableView = new DFBrowserPane_TableView (aMainWidget);
myTableView->SetModel (myPaneModel);
QTableView* aTableView = myTableView->GetTableView();
aTableView->setSelectionModel (mySelectionModels.front());
aTableView->horizontalHeader()->setStretchLastSection (false);
aTableView->setColumnWidth (0, COLUMN_POINTER_WIDTH);
aTableView->setColumnWidth (1, COLUMN_TYPE_WIDTH);
aTableView->setColumnWidth (2, COLUMN_EXPORT_WIDTH);
aTableView->verticalHeader()->setVisible (true);
DFBrowserPane_ItemDelegateButton* anItemDelegate = new DFBrowserPane_ItemDelegateButton (aTableView,
":/icons/export_shape.png");
QObject::connect (anItemDelegate, SIGNAL (buttonPressed (const QModelIndex&)),
&myHelperExport, SLOT (OnButtonPressed (const QModelIndex&)));
aTableView->setItemDelegateForColumn (2, anItemDelegate);
QGridLayout* aLay = new QGridLayout (aMainWidget);
aLay->setContentsMargins (0, 0, 0, 0);
aLay->addWidget (myTableView, 0, 0);
return aMainWidget;
}
// =======================================================================
// function : Init
// purpose :
// =======================================================================
void DFBrowserPaneXDE_XCAFDocShapeMapTool::Init (const Handle(TDF_Attribute)& theAttribute)
{
DFBrowserPane_AttributePaneAPI::Init (theAttribute);
}
// =======================================================================
// function : GetValues
// purpose :
// =======================================================================
void DFBrowserPaneXDE_XCAFDocShapeMapTool::GetValues (const Handle(TDF_Attribute)& theAttribute, QList<QVariant>& theValues)
{
Handle(XCAFDoc_ShapeMapTool) anAttr = Handle(XCAFDoc_ShapeMapTool)::DownCast (theAttribute);
const TopTools_IndexedMapOfShape& aShapeMap = anAttr->GetMap();
for (int aShapeValueId = 1, aNbShapes = aShapeMap.Extent(); aShapeValueId <= aNbShapes; aShapeValueId++)
{
const TopoDS_Shape& aShape = aShapeMap(aShapeValueId);
if (!aShape.IsNull())
theValues << DFBrowserPane_Tools::GetPointerInfo (aShape.TShape()->This()).ToCString()
<< DFBrowserPane_Tools::ShapeTypeInfo (aShape)
<< "";
else
theValues << "" << "" << "";
}
}
// =======================================================================
// function : GetShortAttributeInfo
// purpose :
// =======================================================================
void DFBrowserPaneXDE_XCAFDocShapeMapTool::GetShortAttributeInfo (const Handle(TDF_Attribute)& theAttribute,
QList<QVariant>& theValues)
{
Handle(XCAFDoc_ShapeMapTool) anAttr = Handle(XCAFDoc_ShapeMapTool)::DownCast (theAttribute);
theValues.append (QString ("[%1]").arg (anAttr->GetMap().Extent()));
}
// =======================================================================
// function : GetPresentation
// purpose :
// =======================================================================
Handle(Standard_Transient) DFBrowserPaneXDE_XCAFDocShapeMapTool::GetPresentation (const Handle(TDF_Attribute)& theAttribute)
{
Handle(AIS_InteractiveObject) aPresentation;
Handle(XCAFDoc_ShapeMapTool) anAttr = Handle(XCAFDoc_ShapeMapTool)::DownCast (theAttribute);
if (anAttr.IsNull())
return aPresentation;
BRep_Builder aBuilder;
TopoDS_Compound aComp;
aBuilder.MakeCompound (aComp);
const TopTools_IndexedMapOfShape& aShapeMap = anAttr->GetMap();
for (int aShapeValueId = 1, aNbShapes = aShapeMap.Extent(); aShapeValueId <= aNbShapes; aShapeValueId++)
{
const TopoDS_Shape& aShape = aShapeMap(aShapeValueId);
if (!aShape.IsNull())
aBuilder.Add (aComp, aShape);
}
aPresentation = new AIS_Shape (aComp);
return aPresentation;
}