mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
1. Added specific header files to disable and restore compiler warnings: Standard_WarningsDisable.hxx, Standard_WarningsRestore.hxx. (Currently only MSVC compiler is handled.) 2. Inspector: compiler warnings are disabled for all includes of Qt headers. 3. Inspector: minor code correction to avoid warning due to use of floating point values in integer calculations.
157 lines
6.3 KiB
C++
157 lines
6.3 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 <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&)));
|
|
|
|
DFBrowser_Window::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 = DFBrowser_Window::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);
|
|
}
|