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:
5
tools/ViewControl/FILES
Normal file
5
tools/ViewControl/FILES
Normal file
@@ -0,0 +1,5 @@
|
||||
ViewControl_MessageDialog.cxx
|
||||
ViewControl_MessageDialog.hxx
|
||||
ViewControl_Tools.cxx
|
||||
ViewControl_Tools.hxx
|
||||
ViewControl_TreeView.hxx
|
127
tools/ViewControl/ViewControl_MessageDialog.cxx
Normal file
127
tools/ViewControl/ViewControl_MessageDialog.cxx
Normal 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);
|
||||
}
|
86
tools/ViewControl/ViewControl_MessageDialog.hxx
Normal file
86
tools/ViewControl/ViewControl_MessageDialog.hxx
Normal 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
|
45
tools/ViewControl/ViewControl_Tools.cxx
Normal file
45
tools/ViewControl/ViewControl_Tools.cxx
Normal 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);
|
||||
}
|
51
tools/ViewControl/ViewControl_Tools.hxx
Normal file
51
tools/ViewControl/ViewControl_Tools.hxx
Normal 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
|
51
tools/ViewControl/ViewControl_TreeView.hxx
Normal file
51
tools/ViewControl/ViewControl_TreeView.hxx
Normal 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
|
Reference in New Issue
Block a user