mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0027398: Integrate Qt Browser Widget to Open CASCADE Technology
The following implementation has been made: - CMake procedure is extended to compile Qt tools. This is optional and is handled by USE_QT_TOOLS option(OFF by default) - It is possible to build Qt tools using Qt5 or Qt4, it is settled with USE_QT4 option. - Sample of DFBrowser tool is available in samples/tools/TInspectorEXE. It is build with tools, executable is placed in binaries. To start the sample, use dfbrowser.bat command. - DFBrowser tool may be started from DRAW
This commit is contained in:
116
tools/DFBrowser/DFBrowser_TreeLevelViewModel.cxx
Normal file
116
tools/DFBrowser/DFBrowser_TreeLevelViewModel.cxx
Normal file
@@ -0,0 +1,116 @@
|
||||
// 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 <DFBrowser_TreeLevelViewModel.hxx>
|
||||
|
||||
#include <DFBrowser_Item.hxx>
|
||||
#include <DFBrowser_ItemRole.hxx>
|
||||
#include <DFBrowser_Module.hxx>
|
||||
#include <DFBrowser_Tools.hxx>
|
||||
#include <DFBrowser_TreeLevelView.hxx>
|
||||
|
||||
#include <TDF_AttributeIterator.hxx>
|
||||
#include <TDF_ChildIterator.hxx>
|
||||
#include <TDF_Label.hxx>
|
||||
#include <TreeModel_ModelBase.hxx>
|
||||
|
||||
#include <QIcon>
|
||||
|
||||
// =======================================================================
|
||||
// function : Init
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void DFBrowser_TreeLevelViewModel::Init (const QModelIndex& theTreeIndex)
|
||||
{
|
||||
myIndex = theTreeIndex;
|
||||
TreeModel_ItemBasePtr anItem = TreeModel_ModelBase::GetItemByIndex (theTreeIndex);
|
||||
myRowCount = anItem ? anItem->rowCount() : 0;
|
||||
if (!anItem)
|
||||
return;
|
||||
EmitLayoutChanged();
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : GetTreeViewIndex
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
QModelIndex DFBrowser_TreeLevelViewModel::GetTreeViewIndex (const QModelIndex& theIndex) const
|
||||
{
|
||||
return myIndex.model()->index (theIndex.row(), 0, myIndex);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : headerData
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
QVariant DFBrowser_TreeLevelViewModel::headerData (int theSection, Qt::Orientation theOrientation, int theRole) const
|
||||
{
|
||||
return (theOrientation == Qt::Horizontal && theRole == Qt::DisplayRole && theSection == 1) ? QVariant (tr ("Name")) : QVariant();
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : index
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
QModelIndex DFBrowser_TreeLevelViewModel::index (int theRow, int theColumn, const QModelIndex& theParent) const
|
||||
{
|
||||
if (!hasIndex(theRow, theColumn, theParent))
|
||||
return QModelIndex();
|
||||
return createIndex(theRow, theColumn);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : data
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
QVariant DFBrowser_TreeLevelViewModel::data (const QModelIndex& theIndex, int theRole) const
|
||||
{
|
||||
QModelIndex anIndex = myIndex.model()->index (theIndex.row(), 0, myIndex);
|
||||
|
||||
if ( !anIndex.isValid() )
|
||||
return QVariant ("undefined");
|
||||
|
||||
QVariant aValue;
|
||||
TreeModel_ItemBasePtr anItemBase = TreeModel_ModelBase::GetItemByIndex (anIndex);
|
||||
if (anIndex.column() == 0)
|
||||
{
|
||||
DFBrowser_ItemBasePtr aDBrowserItem = itemDynamicCast<DFBrowser_ItemBase> (anItemBase);
|
||||
bool aPrevValue = aDBrowserItem->SetUseAdditionalInfo (false);
|
||||
aValue = anItemBase->data (anIndex, theRole);
|
||||
aDBrowserItem->SetUseAdditionalInfo (aPrevValue);
|
||||
}
|
||||
else { // column = 1
|
||||
if (theRole == Qt::DisplayRole || theRole == Qt::ToolTipRole)
|
||||
{
|
||||
DFBrowser_ItemPtr anItem = itemDynamicCast<DFBrowser_Item> (anItemBase);
|
||||
if (anItem)
|
||||
aValue = anItem->GetAttributeInfo (DFBrowser_ItemRole_AdditionalInfo);
|
||||
}
|
||||
}
|
||||
return aValue;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : flags
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Qt::ItemFlags DFBrowser_TreeLevelViewModel::flags (const QModelIndex& theIndex) const
|
||||
{
|
||||
if (!theIndex.isValid())
|
||||
return 0;
|
||||
Qt::ItemFlags aFlags = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
|
||||
|
||||
return aFlags;
|
||||
}
|
Reference in New Issue
Block a user