1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-04 13:13:25 +03:00

0029674: Improvements in Inspector tool

- preferences for dock windows geometry, tree view columns and current view projection;
- ViewControl package for common functionality between plugins;
- processing Location and Orientation for external TopoDS_Shape object
- 'F5' key to update content of each plugin
- visibility column in tree view (used now only in ShapeView)
- properties child item for context (presents tree of current Filters of context)
This commit is contained in:
nds
2018-03-23 16:08:11 +03:00
committed by bugmaster
parent 6dfdbb7ab8
commit 6822a3bef1
135 changed files with 4187 additions and 1603 deletions

5
tools/ViewControl/FILES Normal file
View File

@@ -0,0 +1,5 @@
ViewControl_MessageDialog.cxx
ViewControl_MessageDialog.hxx
ViewControl_Tools.cxx
ViewControl_Tools.hxx
ViewControl_TreeView.hxx

View File

@@ -0,0 +1,127 @@
// 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/ViewControl_MessageDialog.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QCheckBox>
#include <QCursor>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
#include <QWidget>
#include <Standard_WarningsRestore.hxx>
// =======================================================================
// function : Constructor
// purpose :
// =======================================================================
ViewControl_MessageDialog::ViewControl_MessageDialog (QWidget* theParent, const QString& theInformation,
const QString& theQuestion)
: QDialog (theParent), myDoNotShowItAgain (false), myPreviousAnswer (false), myInformation (theInformation),
myQuestion (theQuestion)
{
setWindowTitle ("Information");
QGridLayout* aLayout = new QGridLayout (this);
QString anInformation = theInformation;
if (!theQuestion.isEmpty())
anInformation += QString("\n\n%2").arg (myQuestion);
myInformationLabel = new QLabel (anInformation, this);
myInformationLabel->setWordWrap (true);
aLayout->addWidget (myInformationLabel, 0, 0, 1, 3);
myDoNotShowCheckBox = new QCheckBox ("Don't show this dialog again. Do the same next time.", this);
connect (myDoNotShowCheckBox, SIGNAL (toggled (bool)), this, SLOT (onDonNotShowToggled (bool) ));
aLayout->addWidget (myDoNotShowCheckBox, 1, 0, 1, 3);
myOkButton = new QPushButton ("Ok", this);
myCancelButton = new QPushButton ("Cancel", this);
connect (myOkButton, SIGNAL (clicked()), this, SLOT (onOkClicked() ));
connect (myCancelButton, SIGNAL (clicked()), this, SLOT (onCancelClicked() ));
aLayout->addWidget (myOkButton, 2, 1);
aLayout->addWidget (myCancelButton, 2, 2);
aLayout->setColumnStretch (0, 1);
myCancelButton->setDefault (true);
SetInformation (theInformation);
}
// =======================================================================
// function : Start
// purpose :
// =======================================================================
void ViewControl_MessageDialog::Start()
{
if (!myDoNotShowItAgain)
{
QString anInformation = myInformation;
if (!myQuestion.isEmpty())
anInformation += QString("\n\n%2").arg (myQuestion);
myInformationLabel->setText (anInformation);
exec();
return;
}
if (IsAccepted())
return;
// tool tip information window
QWidget* aWidget = new QWidget (this, Qt::Popup);
QVBoxLayout* aLayout = new QVBoxLayout (aWidget);
aLayout->addWidget (new QLabel(myInformation, aWidget));
aWidget->move(QCursor::pos());
aWidget->show();
}
// =======================================================================
// function : onOkClicked
// purpose :
// =======================================================================
void ViewControl_MessageDialog::onOkClicked()
{
myPreviousAnswer = true;
if (myDoNotShowItAgain)
setToolTipInfoMode();
accept();
}
// =======================================================================
// function : onCancelClicked
// purpose :
// =======================================================================
void ViewControl_MessageDialog::onCancelClicked()
{
myPreviousAnswer = false;
if (myDoNotShowItAgain)
setToolTipInfoMode();
reject();
}
// =======================================================================
// function : setToolTipInfoMode
// purpose :
// =======================================================================
void ViewControl_MessageDialog::setToolTipInfoMode()
{
//setWindowFlags (Qt::FramelessWindowHint);
//myDoNotShowCheckBox->setVisible (false);
//myOkButton->setVisible (false);
//myCancelButton->setVisible (false);
}

View File

@@ -0,0 +1,86 @@
// 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.
#ifndef ViewControl_MessageDialog_H
#define ViewControl_MessageDialog_H
#include <Standard.hxx>
#include <Standard_Macro.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QCheckBox>
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QString>
#include <Standard_WarningsRestore.hxx>
class QWidget;
//! \class ViewControl_MessageDialog
//! Dialog providing information and a question.
//! It has a check box to do not the dialog again. In this case the previous value will be used as a result
class ViewControl_MessageDialog : public QDialog
{
Q_OBJECT
public:
//! Constructor
Standard_EXPORT ViewControl_MessageDialog (QWidget* theParent, const QString& theInformation, const QString& theQuestion);
//! Destructor
virtual ~ViewControl_MessageDialog() {}
//! Fills message dialog with the information
//! \param theInformation text
void SetInformation (const QString& theInformation) { myInformation = theInformation; }
//! Returns result of the dialog
//! \bool true if the dialog was accepted
bool IsAccepted() { return myPreviousAnswer; }
//! Either perform exec() for the dialog or show tool tip information depending do not be shown again state
Standard_EXPORT void Start();
private slots:
//! Processing this checkbox, store result in the dialog field to use by the next dialog start
//! \param theState current changed state of the check box
void onDonNotShowToggled (bool theState) { myDoNotShowItAgain = theState; }
//! Processing action button. Stores accept choice, change dialog state if do not show it again is on
void onOkClicked();
//! Processing action button. Stores reject choice, change dialog state if do not show it again is on
void onCancelClicked();
private:
//! Change state of the dialog to message tool tip. Only information control will be shown in the dialog
void setToolTipInfoMode();
private:
bool myDoNotShowItAgain; //! state if the dialog should not be shown again, the latest result is used as answer
bool myPreviousAnswer; //! the previous cached result of the dialog
QString myInformation; //! the information text
QString myQuestion; //! the question text
QLabel* myInformationLabel; //! message control
QCheckBox* myDoNotShowCheckBox; //! choice whether the dialog will be shown again
QPushButton* myOkButton; //! accept button
QPushButton* myCancelButton; //! reject button
};
#endif

View File

@@ -0,0 +1,45 @@
// 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/ViewControl_Tools.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QAction>
#include <QObject>
#include <QPalette>
#include <QWidget>
#include <Standard_WarningsRestore.hxx>
// =======================================================================
// function : CreateAction
// purpose :
// =======================================================================
QAction* ViewControl_Tools::CreateAction (const QString& theText, const char* theSlot, QObject* theParent, QObject* theContext)
{
QAction* anAction = new QAction (theText, theParent);
QObject::connect (anAction, SIGNAL (triggered (bool)), theContext, theSlot);
return anAction;
}
// =======================================================================
// function : SetWhiteBackground
// purpose :
// =======================================================================
void ViewControl_Tools::SetWhiteBackground (QWidget* theControl)
{
QPalette aPalette = theControl->palette();
aPalette.setColor (QPalette::All, QPalette::Foreground, Qt::white);
theControl->setPalette (aPalette);
}

View File

@@ -0,0 +1,51 @@
// 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.
#ifndef ViewControl_Tools_H
#define ViewControl_Tools_H
#include <Standard.hxx>
#include <Standard_Macro.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QString>
#include <Standard_WarningsRestore.hxx>
class QAction;
class QObject;
class QWidget;
//! \class ViewControl_Tools
//! \brief The tool that gives auxiliary methods for qt elements manipulation
class ViewControl_Tools
{
public:
//! Creates an action with the given text connected to the slot
//! \param theText an action text value
//! \param theSlot a listener of triggered signal of the new action
//! \param theParent a parent object
//! \param theContext listener of the action toggle
//! \return a new action
Standard_EXPORT static QAction* CreateAction (const QString& theText, const char* theSlot,
QObject* theParent, QObject* theContext);
//! Change palette of the widget to have white foreground
//! \param theControl a widget to be modified
Standard_EXPORT static void SetWhiteBackground (QWidget* theControl);
};
#endif

View File

@@ -0,0 +1,51 @@
// 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.
#ifndef ViewControl_TreeView_H
#define ViewControl_TreeView_H
#include <Standard.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QSize>
#include <QTreeView>
#include <Standard_WarningsRestore.hxx>
class QWidget;
//! \class ViewControl_TreeView
//! Extended tree view control with possibility to set predefined size.
class ViewControl_TreeView : public QTreeView
{
public:
//! Constructor
ViewControl_TreeView (QWidget* theParent) : QTreeView (theParent) {}
//! Destructor
virtual ~ViewControl_TreeView() {}
//! 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 : QTreeView::sizeHint(); }
private:
QSize myDefaultSize; //! default size, empty isze if it should not be used
};
#endif