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.
221 lines
7.9 KiB
C++
221 lines
7.9 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.
|
|
|
|
#include <inspector/ViewControl_PropertyView.hxx>
|
|
#include <inspector/ViewControl_Table.hxx>
|
|
#include <inspector/ViewControl_TableModel.hxx>
|
|
#include <inspector/ViewControl_TableModelValues.hxx>
|
|
#include <inspector/ViewControl_Tools.hxx>
|
|
|
|
#include <Standard_WarningsDisable.hxx>
|
|
#include <QAbstractTableModel>
|
|
#include <QHeaderView>
|
|
#include <QStackedWidget>
|
|
#include <QScrollArea>
|
|
#include <QTableView>
|
|
#include <QVBoxLayout>
|
|
#include <QWidget>
|
|
#include <Standard_WarningsRestore.hxx>
|
|
|
|
//! Class that uses parameter size as recommended size for the widget.
|
|
//! If the control is placed in a dock widget of the main window, it will not be resized on free
|
|
//! size by resizing the main window.
|
|
class ViewControl_PredefinedSizeWidget : public QWidget
|
|
{
|
|
public:
|
|
//! Constructor
|
|
ViewControl_PredefinedSizeWidget(QWidget* theParent, const QSize& theSize)
|
|
: QWidget(theParent)
|
|
{
|
|
SetPredefinedSize(theSize);
|
|
}
|
|
|
|
//! Destructor
|
|
virtual ~ViewControl_PredefinedSizeWidget() {}
|
|
|
|
//! Sets default size of control, that is used by the first control show
|
|
//! \param theDefaultWidth the width value
|
|
//! \param theDefaultHeight the height value
|
|
void SetPredefinedSize(const QSize& theSize) { myDefaultSize = theSize; }
|
|
|
|
//! Returns predefined size if both values are positive, otherwise parent size hint
|
|
virtual QSize sizeHint() const Standard_OVERRIDE
|
|
{
|
|
return myDefaultSize.isValid() ? myDefaultSize : QWidget::sizeHint();
|
|
}
|
|
|
|
private:
|
|
QSize myDefaultSize; //!< default size, empty size if it should not be used
|
|
};
|
|
|
|
// =======================================================================
|
|
// function : Constructor
|
|
// purpose :
|
|
// =======================================================================
|
|
ViewControl_PropertyView::ViewControl_PropertyView(QWidget* theParent,
|
|
const QSize& thePredefinedSize)
|
|
: QObject(theParent),
|
|
myOwnSelectionChangeBlocked(false)
|
|
{
|
|
myMainWidget = new ViewControl_PredefinedSizeWidget(theParent, QSize(1, 100));
|
|
if (!thePredefinedSize.isEmpty())
|
|
((ViewControl_PredefinedSizeWidget*)myMainWidget)->SetPredefinedSize(thePredefinedSize);
|
|
|
|
QVBoxLayout* aLayout = new QVBoxLayout(myMainWidget);
|
|
aLayout->setContentsMargins(0, 0, 0, 0);
|
|
|
|
QScrollArea* anArea = new QScrollArea(myMainWidget);
|
|
|
|
myAttributesStack = new QStackedWidget(myMainWidget);
|
|
anArea->setWidget(myAttributesStack);
|
|
anArea->setWidgetResizable(true);
|
|
aLayout->addWidget(anArea);
|
|
|
|
myEmptyWidget = new QWidget(myAttributesStack);
|
|
myAttributesStack->addWidget(myEmptyWidget);
|
|
|
|
myTableWidget = new QWidget(myAttributesStack);
|
|
myTableWidgetLayout = new QVBoxLayout(myTableWidget);
|
|
myTableWidgetLayout->setContentsMargins(0, 0, 0, 0);
|
|
myAttributesStack->addWidget(myTableWidget);
|
|
|
|
myAttributesStack->setCurrentWidget(myEmptyWidget);
|
|
|
|
// create table
|
|
ViewControl_Table* aTable = new ViewControl_Table(myMainWidget);
|
|
ViewControl_TableModel* aModel = new ViewControl_TableModel(aTable->TableView());
|
|
aTable->SetModel(aModel);
|
|
|
|
connect(aTable->TableView()->selectionModel(),
|
|
SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
|
|
this,
|
|
SLOT(onTableSelectionChanged(const QItemSelection&, const QItemSelection&)));
|
|
|
|
connect(aModel,
|
|
SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)),
|
|
this,
|
|
SIGNAL(propertyViewDataChanged()));
|
|
|
|
myTableWidgetLayout->addWidget(aTable->GetControl());
|
|
myTable = aTable;
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : Init
|
|
// purpose :
|
|
// =======================================================================
|
|
void ViewControl_PropertyView::Init(ViewControl_TableModelValues* theTableValues)
|
|
{
|
|
ViewControl_Table* aTable = Table();
|
|
if (theTableValues)
|
|
{
|
|
aTable->Init(theTableValues);
|
|
ViewControl_Tools::SetDefaultHeaderSections(aTable->TableView(), Qt::Horizontal);
|
|
}
|
|
aTable->SetActive(theTableValues != 0);
|
|
|
|
if (theTableValues)
|
|
myAttributesStack->setCurrentWidget(myTableWidget);
|
|
else
|
|
myAttributesStack->setCurrentWidget(myEmptyWidget);
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : Init
|
|
// purpose :
|
|
// =======================================================================
|
|
void ViewControl_PropertyView::Init(QWidget*) {}
|
|
|
|
// =======================================================================
|
|
// function : ClearActiveTablesSelection
|
|
// purpose :
|
|
// =======================================================================
|
|
void ViewControl_PropertyView::ClearActiveTablesSelection()
|
|
{
|
|
bool aWasBlocked = myOwnSelectionChangeBlocked;
|
|
myOwnSelectionChangeBlocked = true;
|
|
|
|
QList<ViewControl_Table*> aTables;
|
|
ViewControl_Table* aTable = Table();
|
|
if (aTable->IsActive())
|
|
aTable->TableView()->selectionModel()->clearSelection();
|
|
|
|
myOwnSelectionChangeBlocked = aWasBlocked;
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : Clear
|
|
// purpose :
|
|
// =======================================================================
|
|
void ViewControl_PropertyView::Clear()
|
|
{
|
|
ViewControl_Table* aTable = Table();
|
|
if (aTable->IsActive())
|
|
{
|
|
ViewControl_TableModel* aModel =
|
|
dynamic_cast<ViewControl_TableModel*>(aTable->TableView()->model());
|
|
aModel->SetModelValues(0);
|
|
|
|
aTable->SetActive(true);
|
|
}
|
|
myAttributesStack->setCurrentWidget(myEmptyWidget);
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : SaveState
|
|
// purpose :
|
|
// =======================================================================
|
|
void ViewControl_PropertyView::SaveState(ViewControl_PropertyView* thePropertyView,
|
|
QMap<QString, QString>& theItems,
|
|
const QString& thePrefix)
|
|
{
|
|
ViewControl_Table* aTable = thePropertyView->Table();
|
|
int aColumnWidth = aTable->TableView()->columnWidth(0);
|
|
theItems[thePrefix + "column_width_0"] = QString::number(aColumnWidth);
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : RestoreState
|
|
// purpose :
|
|
// =======================================================================
|
|
bool ViewControl_PropertyView::RestoreState(ViewControl_PropertyView* thePropertyView,
|
|
const QString& theKey,
|
|
const QString& theValue,
|
|
const QString& thePrefix)
|
|
{
|
|
if (theKey == thePrefix + "column_width_0")
|
|
{
|
|
bool isOk;
|
|
int aWidth = theValue.toInt(&isOk);
|
|
if (isOk)
|
|
thePropertyView->Table()->TableView()->horizontalHeader()->setDefaultSectionSize(aWidth);
|
|
}
|
|
else
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
// =======================================================================
|
|
// function : onTableSelectionChanged
|
|
// purpose :
|
|
// =======================================================================
|
|
void ViewControl_PropertyView::onTableSelectionChanged(const QItemSelection&, const QItemSelection&)
|
|
{
|
|
if (myOwnSelectionChangeBlocked)
|
|
return;
|
|
|
|
emit propertyViewSelectionChanged();
|
|
}
|