mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
Update empty method guards to new style with regex (see PR). Used clang-format 18.1.8. New actions to validate code formatting is added. Update .clang-format with disabling of include sorting. It is temporary changes, then include will be sorted. Apply formatting for /src and /tools folder. The files with .hxx,.cxx,.lxx,.h,.pxx,.hpp,*.cpp extensions.
168 lines
6.4 KiB
C++
168 lines
6.4 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/DFBrowser_TreeLevelView.hxx>
|
|
|
|
#include <inspector/DFBrowser_Item.hxx>
|
|
#include <inspector/DFBrowser_TreeLevelViewModel.hxx>
|
|
#include <inspector/DFBrowser_Window.hxx>
|
|
#include <inspector/DFBrowserPane_Tools.hxx>
|
|
#include <inspector/TreeModel_ModelBase.hxx>
|
|
|
|
#include <inspector/ViewControl_Tools.hxx>
|
|
#include <Standard_WarningsDisable.hxx>
|
|
#include <QItemSelectionModel>
|
|
#include <QGridLayout>
|
|
#include <QHeaderView>
|
|
#include <QTableView>
|
|
#include <QWidget>
|
|
#include <Standard_WarningsRestore.hxx>
|
|
|
|
const int LABEL_OR_ATTRIBUTECOLUMN_WIDTH = 160;
|
|
|
|
// =======================================================================
|
|
// function : Constructor
|
|
// purpose :
|
|
// =======================================================================
|
|
DFBrowser_TreeLevelView::DFBrowser_TreeLevelView(QWidget* theParent)
|
|
: QObject(theParent)
|
|
{
|
|
myMainWindow = new QWidget(theParent);
|
|
QGridLayout* aLayout = new QGridLayout(myMainWindow);
|
|
aLayout->setContentsMargins(0, 0, 0, 0);
|
|
|
|
myTableView = new QTableView(myMainWindow);
|
|
myTableView->setModel(new DFBrowser_TreeLevelViewModel(myTableView));
|
|
myTableView->setColumnWidth(0, LABEL_OR_ATTRIBUTECOLUMN_WIDTH);
|
|
myTableView->setEditTriggers(QAbstractItemView::DoubleClicked);
|
|
myTableView->horizontalHeader()->setVisible(false);
|
|
QHeaderView* aVHeader = myTableView->verticalHeader();
|
|
aVHeader->setVisible(false);
|
|
aVHeader->setDefaultSectionSize(aVHeader->minimumSectionSize());
|
|
myTableView->horizontalHeader()->setStretchLastSection(true);
|
|
aLayout->addWidget(myTableView);
|
|
|
|
QItemSelectionModel* aSelectionModel = new QItemSelectionModel(myTableView->model());
|
|
myTableView->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
myTableView->setSelectionModel(aSelectionModel);
|
|
myTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
|
connect(aSelectionModel,
|
|
SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
|
|
this,
|
|
SLOT(onTableSelectionChanged(const QItemSelection&, const QItemSelection&)));
|
|
connect(myTableView,
|
|
SIGNAL(doubleClicked(const QModelIndex&)),
|
|
this,
|
|
SLOT(onTableDoubleClicked(const QModelIndex&)));
|
|
|
|
ViewControl_Tools::SetWhiteBackground(myTableView);
|
|
myTableView->setGridStyle(Qt::NoPen);
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : clearSelection
|
|
// purpose :
|
|
// =======================================================================
|
|
void DFBrowser_TreeLevelView::ClearSelection()
|
|
{
|
|
myTableView->selectionModel()->clearSelection();
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : ProcessItem
|
|
// purpose :
|
|
// =======================================================================
|
|
bool DFBrowser_TreeLevelView::ProcessItem(const QModelIndex& theIndex)
|
|
{
|
|
bool aResult = false;
|
|
TreeModel_ItemBasePtr anItemBase = TreeModel_ModelBase::GetItemByIndex(theIndex);
|
|
if (anItemBase)
|
|
{
|
|
// use this view for attribute/document/label items
|
|
DFBrowser_ItemPtr anItem = itemDynamicCast<DFBrowser_Item>(anItemBase);
|
|
if (anItem)
|
|
aResult = anItem && !anItem->HasAttribute();
|
|
else
|
|
aResult = true; // attribute or document item
|
|
}
|
|
return aResult;
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : UpdateByTreeSelectionChanged
|
|
// purpose :
|
|
// =======================================================================
|
|
void DFBrowser_TreeLevelView::UpdateByTreeSelectionChanged(const QItemSelection& theSelected,
|
|
const QItemSelection&)
|
|
{
|
|
QModelIndexList aSelectedIndices = theSelected.indexes();
|
|
QModelIndexList aFirstColumnSelectedIndices;
|
|
for (QModelIndexList::const_iterator aSelIt = aSelectedIndices.begin();
|
|
aSelIt != aSelectedIndices.end();
|
|
aSelIt++)
|
|
{
|
|
QModelIndex anIndex = *aSelIt;
|
|
if (anIndex.column() == 0)
|
|
aFirstColumnSelectedIndices.append(anIndex);
|
|
}
|
|
|
|
if (aFirstColumnSelectedIndices.size() != 1)
|
|
return;
|
|
|
|
DFBrowser_TreeLevelViewModel* aModel =
|
|
dynamic_cast<DFBrowser_TreeLevelViewModel*>(myTableView->model());
|
|
const QModelIndex& anIndex = aFirstColumnSelectedIndices.first();
|
|
if (DFBrowser_TreeLevelView::ProcessItem(anIndex)) // to Init
|
|
aModel->Init(anIndex);
|
|
else
|
|
aModel->Reset();
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : onTableSelectionChanged
|
|
// purpose :
|
|
// =======================================================================
|
|
void DFBrowser_TreeLevelView::onTableSelectionChanged(const QItemSelection& theSelected,
|
|
const QItemSelection&)
|
|
{
|
|
QModelIndexList aSelectedIndices = theSelected.indexes();
|
|
QModelIndex aSelectedIndex = TreeModel_ModelBase::SingleSelected(aSelectedIndices, 0);
|
|
|
|
DFBrowser_TreeLevelViewModel* aTableModel =
|
|
dynamic_cast<DFBrowser_TreeLevelViewModel*>(myTableView->model());
|
|
if (aTableModel && aTableModel->IsInitialized())
|
|
{
|
|
const QModelIndex& aTreeViewIndex = aTableModel->GetTreeViewIndex(aSelectedIndex);
|
|
if (aTreeViewIndex.isValid())
|
|
emit indexSelected(aTreeViewIndex);
|
|
}
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : onTableDoubleClicked
|
|
// purpose :
|
|
// =======================================================================
|
|
void DFBrowser_TreeLevelView::onTableDoubleClicked(const QModelIndex& theIndex)
|
|
{
|
|
DFBrowser_TreeLevelViewModel* aTableModel =
|
|
dynamic_cast<DFBrowser_TreeLevelViewModel*>(myTableView->model());
|
|
if (!aTableModel)
|
|
return;
|
|
|
|
const QModelIndex& aTreeViewIndex = aTableModel->GetTreeViewIndex(theIndex);
|
|
if (aTreeViewIndex.isValid())
|
|
emit indexDoubleClicked(aTreeViewIndex);
|
|
}
|