From 6def90fa98becdb962bda108c63d5da42c2d564a Mon Sep 17 00:00:00 2001 From: ouv Date: Wed, 21 Aug 2013 07:55:34 +0000 Subject: [PATCH] 1) CurveCreator_NewSection.h is replaced with CurveCreator_NewSectionDlg.h in Makefile.am 2) Some files are converted to UNIX format 3) CURVECREATOR_EXPORT macro is added to definiton of CurveCreator_Widget class (required for compilation on Windows) --- src/CurveCreator/CurveCreator_NewPointDlg.cxx | 322 ++--- src/CurveCreator/CurveCreator_NewPointDlg.h | 92 +- .../CurveCreator_NewSectionDlg.cxx | 258 ++-- src/CurveCreator/CurveCreator_NewSectionDlg.h | 98 +- src/CurveCreator/CurveCreator_TreeView.cxx | 902 ++++++------ src/CurveCreator/CurveCreator_TreeView.h | 150 +- src/CurveCreator/CurveCreator_Widget.cxx | 1222 ++++++++--------- src/CurveCreator/CurveCreator_Widget.h | 150 +- src/CurveCreator/Makefile.am | 8 +- 9 files changed, 1602 insertions(+), 1600 deletions(-) diff --git a/src/CurveCreator/CurveCreator_NewPointDlg.cxx b/src/CurveCreator/CurveCreator_NewPointDlg.cxx index 82af1fa67..eddf28225 100755 --- a/src/CurveCreator/CurveCreator_NewPointDlg.cxx +++ b/src/CurveCreator/CurveCreator_NewPointDlg.cxx @@ -1,161 +1,161 @@ -#include "CurveCreator_NewPointDlg.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -CurveCreator_NewPointDlg::CurveCreator_NewPointDlg(CurveCreator::Dimension theDim, QWidget *parent) : - QDialog(parent), myX(NULL), myY(NULL), myZ(NULL), myIsEdit(false) -{ - QGridLayout* aCoordLay = new QGridLayout(); - - QString aTitle = QString(tr("ADD_NEW_POINT")); - setWindowTitle(aTitle); - - QLabel* aLbl = new QLabel( tr("X_COORD"), this); - myX = new QDoubleSpinBox(this); - aCoordLay->addWidget(aLbl, 0, 0); - aCoordLay->addWidget(myX, 0, 1 ); - - aLbl = new QLabel( tr("Y_COORD"), this); - myY = new QDoubleSpinBox(this); - aCoordLay->addWidget(aLbl, 1, 0 ); - aCoordLay->addWidget(myY, 1, 1 ); - - myZLabel = new QLabel( tr("Z_COORD"), this); - myZ = new QDoubleSpinBox(this); - aCoordLay->addWidget(myZLabel, 2,0 ); - aCoordLay->addWidget(myZ, 2,1 ); - - if( theDim != CurveCreator::Dim3d ){ - myZ->hide(); - myZLabel->hide(); - } - - myBtnBox = new QDialogButtonBox(this); - myAddBtn = myBtnBox->addButton(tr("ADD_BTN"), QDialogButtonBox::AcceptRole ); - myContBtn = myBtnBox->addButton(tr("ADD_CONTINUE_BTN"), QDialogButtonBox::ResetRole ); - myBtnBox->addButton(tr("CANCEL"), QDialogButtonBox::RejectRole ); - - connect( myBtnBox, SIGNAL(accepted()), this, SLOT(accept())); - connect( myBtnBox, SIGNAL(rejected()), this, SLOT(reject())); - connect( myBtnBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(onBtnClicked(QAbstractButton*) )); - QVBoxLayout* aMainLay = new QVBoxLayout(); - aMainLay->addLayout(aCoordLay); - aMainLay->addWidget(myBtnBox); - setLayout(aMainLay); - clear(); - updateTitle(); -} - -void CurveCreator_NewPointDlg::setSectionName( const QString& theName ) -{ - mySectionName = theName; - updateTitle(); -} - -void CurveCreator_NewPointDlg::setEditMode( bool isEdit ) -{ - myIsEdit = isEdit; - if( myIsEdit ){ - myContBtn->hide(); - myAddBtn->setText(tr("OK")); - } - else{ - myContBtn->show(); - myAddBtn->setText(tr("ADD_BTN")); - } - updateTitle(); -} - -void CurveCreator_NewPointDlg::updateTitle() -{ - QString aTitle; - if( !myIsEdit ){ - if( mySectionName.isEmpty() ){ - aTitle = tr("ADD_NEW_POINT"); - } - else{ - aTitle = QString(tr("ADD_NEW_POINT_TO_%1")).arg(mySectionName); - } - } - else{ - aTitle = tr("SET_POINT_COORDINATES"); - } - setWindowTitle(aTitle); -} - -CurveCreator::Coordinates CurveCreator_NewPointDlg::getCoordinates() const -{ - CurveCreator::Coordinates aCoords; - double anX = myX->value(); - aCoords.push_back(anX); - double anY = myY->value(); - aCoords.push_back(anY); - if( myZ->isVisible() ){ - double aZ = myZ->value(); - aCoords.push_back(aZ); - } - return aCoords; -} - -void CurveCreator_NewPointDlg::onBtnClicked(QAbstractButton* theBtn ) -{ - if( myBtnBox->buttonRole(theBtn) == QDialogButtonBox::ResetRole ){ - emit addPoint(); - } -} - -void CurveCreator_NewPointDlg::clear() -{ - initSpinBox(myX); - initSpinBox(myY); - initSpinBox(myZ); -} - -void CurveCreator_NewPointDlg::setDimension(CurveCreator::Dimension theDim) -{ - if( theDim == CurveCreator::Dim2d ){ - myZ->hide(); - myZLabel->hide(); - } - else{ - myZ->show(); - myZLabel->show(); - } -} - -void CurveCreator_NewPointDlg::setCoordinates( const CurveCreator::Coordinates& theCoords ) -{ - double anX = theCoords[0]; - myX->setValue(anX); - double anY = theCoords[1]; - myY->setValue(anY); - if( theCoords.size() == 3 ){ - double aZ = theCoords[2]; - myZ->setValue(aZ); - } -} - -//======================================================================= -// function: initSpinBox -// purpose: -//======================================================================= -void CurveCreator_NewPointDlg::initSpinBox(QDoubleSpinBox *theSpinBox) -{ - const double aCoordMin = -1.e+15; - const double aCoordMax = 1.e+15; - const double aStep = 10; - const int aPrecision = 6; - - theSpinBox->setDecimals( qAbs( aPrecision ) ); - theSpinBox->setRange(aCoordMin, aCoordMax); - theSpinBox->setSingleStep(aStep); - theSpinBox->setValue(0.0); -} +#include "CurveCreator_NewPointDlg.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +CurveCreator_NewPointDlg::CurveCreator_NewPointDlg(CurveCreator::Dimension theDim, QWidget *parent) : + QDialog(parent), myX(NULL), myY(NULL), myZ(NULL), myIsEdit(false) +{ + QGridLayout* aCoordLay = new QGridLayout(); + + QString aTitle = QString(tr("ADD_NEW_POINT")); + setWindowTitle(aTitle); + + QLabel* aLbl = new QLabel( tr("X_COORD"), this); + myX = new QDoubleSpinBox(this); + aCoordLay->addWidget(aLbl, 0, 0); + aCoordLay->addWidget(myX, 0, 1 ); + + aLbl = new QLabel( tr("Y_COORD"), this); + myY = new QDoubleSpinBox(this); + aCoordLay->addWidget(aLbl, 1, 0 ); + aCoordLay->addWidget(myY, 1, 1 ); + + myZLabel = new QLabel( tr("Z_COORD"), this); + myZ = new QDoubleSpinBox(this); + aCoordLay->addWidget(myZLabel, 2,0 ); + aCoordLay->addWidget(myZ, 2,1 ); + + if( theDim != CurveCreator::Dim3d ){ + myZ->hide(); + myZLabel->hide(); + } + + myBtnBox = new QDialogButtonBox(this); + myAddBtn = myBtnBox->addButton(tr("ADD_BTN"), QDialogButtonBox::AcceptRole ); + myContBtn = myBtnBox->addButton(tr("ADD_CONTINUE_BTN"), QDialogButtonBox::ResetRole ); + myBtnBox->addButton(tr("CANCEL"), QDialogButtonBox::RejectRole ); + + connect( myBtnBox, SIGNAL(accepted()), this, SLOT(accept())); + connect( myBtnBox, SIGNAL(rejected()), this, SLOT(reject())); + connect( myBtnBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(onBtnClicked(QAbstractButton*) )); + QVBoxLayout* aMainLay = new QVBoxLayout(); + aMainLay->addLayout(aCoordLay); + aMainLay->addWidget(myBtnBox); + setLayout(aMainLay); + clear(); + updateTitle(); +} + +void CurveCreator_NewPointDlg::setSectionName( const QString& theName ) +{ + mySectionName = theName; + updateTitle(); +} + +void CurveCreator_NewPointDlg::setEditMode( bool isEdit ) +{ + myIsEdit = isEdit; + if( myIsEdit ){ + myContBtn->hide(); + myAddBtn->setText(tr("OK")); + } + else{ + myContBtn->show(); + myAddBtn->setText(tr("ADD_BTN")); + } + updateTitle(); +} + +void CurveCreator_NewPointDlg::updateTitle() +{ + QString aTitle; + if( !myIsEdit ){ + if( mySectionName.isEmpty() ){ + aTitle = tr("ADD_NEW_POINT"); + } + else{ + aTitle = QString(tr("ADD_NEW_POINT_TO_%1")).arg(mySectionName); + } + } + else{ + aTitle = tr("SET_POINT_COORDINATES"); + } + setWindowTitle(aTitle); +} + +CurveCreator::Coordinates CurveCreator_NewPointDlg::getCoordinates() const +{ + CurveCreator::Coordinates aCoords; + double anX = myX->value(); + aCoords.push_back(anX); + double anY = myY->value(); + aCoords.push_back(anY); + if( myZ->isVisible() ){ + double aZ = myZ->value(); + aCoords.push_back(aZ); + } + return aCoords; +} + +void CurveCreator_NewPointDlg::onBtnClicked(QAbstractButton* theBtn ) +{ + if( myBtnBox->buttonRole(theBtn) == QDialogButtonBox::ResetRole ){ + emit addPoint(); + } +} + +void CurveCreator_NewPointDlg::clear() +{ + initSpinBox(myX); + initSpinBox(myY); + initSpinBox(myZ); +} + +void CurveCreator_NewPointDlg::setDimension(CurveCreator::Dimension theDim) +{ + if( theDim == CurveCreator::Dim2d ){ + myZ->hide(); + myZLabel->hide(); + } + else{ + myZ->show(); + myZLabel->show(); + } +} + +void CurveCreator_NewPointDlg::setCoordinates( const CurveCreator::Coordinates& theCoords ) +{ + double anX = theCoords[0]; + myX->setValue(anX); + double anY = theCoords[1]; + myY->setValue(anY); + if( theCoords.size() == 3 ){ + double aZ = theCoords[2]; + myZ->setValue(aZ); + } +} + +//======================================================================= +// function: initSpinBox +// purpose: +//======================================================================= +void CurveCreator_NewPointDlg::initSpinBox(QDoubleSpinBox *theSpinBox) +{ + const double aCoordMin = -1.e+15; + const double aCoordMax = 1.e+15; + const double aStep = 10; + const int aPrecision = 6; + + theSpinBox->setDecimals( qAbs( aPrecision ) ); + theSpinBox->setRange(aCoordMin, aCoordMax); + theSpinBox->setSingleStep(aStep); + theSpinBox->setValue(0.0); +} diff --git a/src/CurveCreator/CurveCreator_NewPointDlg.h b/src/CurveCreator/CurveCreator_NewPointDlg.h index 883297e5c..71dc2e819 100755 --- a/src/CurveCreator/CurveCreator_NewPointDlg.h +++ b/src/CurveCreator/CurveCreator_NewPointDlg.h @@ -1,46 +1,46 @@ -#ifndef CURVECREATOR_NEWPOINTDLG_H -#define CURVECREATOR_NEWPOINTDLG_H - -#include "CurveCreator.hxx" - -#include - -class QDoubleSpinBox; -class QDialogButtonBox; -class QAbstractButton; -class QPushButton; -class QLabel; - -class CurveCreator_NewPointDlg : public QDialog -{ - Q_OBJECT -public: - explicit CurveCreator_NewPointDlg(CurveCreator::Dimension theDim, QWidget *parent = 0); - CurveCreator::Coordinates getCoordinates() const; - void clear(); - void setSectionName( const QString& theName ); - void setEditMode( bool isEdit ); - void setCoordinates( const CurveCreator::Coordinates& theCoords ); - void setDimension(CurveCreator::Dimension theDim); -signals: - void addPoint(); -public slots: -protected slots: - void onBtnClicked(QAbstractButton* theBtn ); -protected: - void updateTitle(); - void initSpinBox(QDoubleSpinBox *theSpinBox); -private: - QDialogButtonBox* myBtnBox; - CurveCreator::Dimension myDim; - QDoubleSpinBox* myX; - QDoubleSpinBox* myY; - QDoubleSpinBox* myZ; - QLabel* myZLabel; - QPushButton* myContBtn; - QPushButton* myAddBtn; - bool myIsEdit; - QString mySectionName; -}; - -#endif // CURVECREATOR_NEWPOINTDLG_H +#ifndef CURVECREATOR_NEWPOINTDLG_H +#define CURVECREATOR_NEWPOINTDLG_H + +#include "CurveCreator.hxx" + +#include + +class QDoubleSpinBox; +class QDialogButtonBox; +class QAbstractButton; +class QPushButton; +class QLabel; + +class CurveCreator_NewPointDlg : public QDialog +{ + Q_OBJECT +public: + explicit CurveCreator_NewPointDlg(CurveCreator::Dimension theDim, QWidget *parent = 0); + CurveCreator::Coordinates getCoordinates() const; + void clear(); + void setSectionName( const QString& theName ); + void setEditMode( bool isEdit ); + void setCoordinates( const CurveCreator::Coordinates& theCoords ); + void setDimension(CurveCreator::Dimension theDim); +signals: + void addPoint(); +public slots: +protected slots: + void onBtnClicked(QAbstractButton* theBtn ); +protected: + void updateTitle(); + void initSpinBox(QDoubleSpinBox *theSpinBox); +private: + QDialogButtonBox* myBtnBox; + CurveCreator::Dimension myDim; + QDoubleSpinBox* myX; + QDoubleSpinBox* myY; + QDoubleSpinBox* myZ; + QLabel* myZLabel; + QPushButton* myContBtn; + QPushButton* myAddBtn; + bool myIsEdit; + QString mySectionName; +}; + +#endif // CURVECREATOR_NEWPOINTDLG_H diff --git a/src/CurveCreator/CurveCreator_NewSectionDlg.cxx b/src/CurveCreator/CurveCreator_NewSectionDlg.cxx index 59a1465ee..497bef2a6 100755 --- a/src/CurveCreator/CurveCreator_NewSectionDlg.cxx +++ b/src/CurveCreator/CurveCreator_NewSectionDlg.cxx @@ -1,129 +1,129 @@ -#include "CurveCreator_NewSectionDlg.h" -#include "CurveCreator_Curve.hxx" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -CurveCreator_NewSectionDlg::CurveCreator_NewSectionDlg( QWidget *parent ) : - QDialog(parent) -{ - std::string aNameStr; - QGridLayout* aLay = new QGridLayout(); - QLabel* aLbl = new QLabel(tr("NAME"), this); - myName = new QLineEdit(this); - aLay->addWidget(aLbl, 0, 0); - aLay->addWidget(myName, 0 , 1); - - aLbl = new QLabel(tr("LINE_TYPE")); - myLineType = new QComboBox(this); - - SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - QPixmap aPolylinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE"))); - QPixmap aSplinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE"))); - -// QPixmap aPolylinePixmap = QPixmap(tr(":images/ICON_POLYLINE")); -// QPixmap aSplinePixmap = QPixmap(tr(":images/ICON_SPLINE")); - myLineType->addItem(aPolylinePixmap, tr("POLYLINE_TYPE")); - myLineType->addItem(aSplinePixmap, tr("SPLINE_TYPE")); - myLineType->setCurrentIndex(0); - aLay->addWidget(aLbl, 1, 0); - aLay->addWidget(myLineType, 1 , 1); - - aLbl = new QLabel(tr("LINE_CLOSED")); - myIsClosed = new QCheckBox(this); - aLay->addWidget(aLbl, 2, 0); - aLay->addWidget(myIsClosed, 2, 1); - - myBtnBox = new QDialogButtonBox(this); - myAddBtn = myBtnBox->addButton(tr("ADD_BTN"), QDialogButtonBox::AcceptRole ); - myContBtn = myBtnBox->addButton(tr("ADD_CONTINUE_BTN"), QDialogButtonBox::ResetRole ); - myBtnBox->addButton(tr("CANCEL"), QDialogButtonBox::RejectRole ); - - connect( myBtnBox, SIGNAL(accepted()), this, SLOT(accept())); - connect( myBtnBox, SIGNAL(rejected()), this, SLOT(reject())); - connect( myBtnBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(onBtnClicked(QAbstractButton*) )); - - QVBoxLayout* aMainLay = new QVBoxLayout(); - aMainLay->addLayout(aLay); - aMainLay->addWidget(myBtnBox); - setLayout(aMainLay); -} - -void CurveCreator_NewSectionDlg::setSectionParameters( const QString& theName, bool isClosed, CurveCreator::Type theType ) -{ - myName->setText(theName); - myIsClosed->setChecked(isClosed); - if( theType == CurveCreator::Polyline ) - myLineType->setCurrentIndex(0); - else - myLineType->setCurrentIndex(1); -} - -void CurveCreator_NewSectionDlg::clear() -{ - myName->setText(""); - myIsClosed->setChecked(true); - myLineType->setCurrentIndex(0); -} - -void CurveCreator_NewSectionDlg::setEditMode( bool isEdit ) -{ - myIsEdit = isEdit; - if( myIsEdit ){ - myContBtn->hide(); - myAddBtn->setText(tr("OK")); - } - else{ - myContBtn->show(); - myAddBtn->setText(tr("ADD_BTN")); - } - updateTitle(); -} - -QString CurveCreator_NewSectionDlg::getName() const -{ - return myName->text(); -} - -bool CurveCreator_NewSectionDlg::isClosed() const -{ - return myIsClosed->isChecked(); -} - -CurveCreator::Type CurveCreator_NewSectionDlg::getSectionType() const -{ - if( myLineType->currentIndex() == 0 ) - return CurveCreator::Polyline; - else - return CurveCreator::BSpline; -} - -void CurveCreator_NewSectionDlg::updateTitle() -{ - QString aTitle; - if( !myIsEdit ) - aTitle = tr("ADD_NEW_SECTION"); - else - aTitle = QString(tr("SET_SECTION_PARAMETERS")); - setWindowTitle(aTitle); -} - -void CurveCreator_NewSectionDlg::setSectionName( const QString& theName ) -{ - myName->setText(theName); -} - -void CurveCreator_NewSectionDlg::onBtnClicked(QAbstractButton* theBtn ) -{ - if( myBtnBox->buttonRole(theBtn) == QDialogButtonBox::ResetRole ){ - emit addSection(); - } -} +#include "CurveCreator_NewSectionDlg.h" +#include "CurveCreator_Curve.hxx" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +CurveCreator_NewSectionDlg::CurveCreator_NewSectionDlg( QWidget *parent ) : + QDialog(parent) +{ + std::string aNameStr; + QGridLayout* aLay = new QGridLayout(); + QLabel* aLbl = new QLabel(tr("NAME"), this); + myName = new QLineEdit(this); + aLay->addWidget(aLbl, 0, 0); + aLay->addWidget(myName, 0 , 1); + + aLbl = new QLabel(tr("LINE_TYPE")); + myLineType = new QComboBox(this); + + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + QPixmap aPolylinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE"))); + QPixmap aSplinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE"))); + +// QPixmap aPolylinePixmap = QPixmap(tr(":images/ICON_POLYLINE")); +// QPixmap aSplinePixmap = QPixmap(tr(":images/ICON_SPLINE")); + myLineType->addItem(aPolylinePixmap, tr("POLYLINE_TYPE")); + myLineType->addItem(aSplinePixmap, tr("SPLINE_TYPE")); + myLineType->setCurrentIndex(0); + aLay->addWidget(aLbl, 1, 0); + aLay->addWidget(myLineType, 1 , 1); + + aLbl = new QLabel(tr("LINE_CLOSED")); + myIsClosed = new QCheckBox(this); + aLay->addWidget(aLbl, 2, 0); + aLay->addWidget(myIsClosed, 2, 1); + + myBtnBox = new QDialogButtonBox(this); + myAddBtn = myBtnBox->addButton(tr("ADD_BTN"), QDialogButtonBox::AcceptRole ); + myContBtn = myBtnBox->addButton(tr("ADD_CONTINUE_BTN"), QDialogButtonBox::ResetRole ); + myBtnBox->addButton(tr("CANCEL"), QDialogButtonBox::RejectRole ); + + connect( myBtnBox, SIGNAL(accepted()), this, SLOT(accept())); + connect( myBtnBox, SIGNAL(rejected()), this, SLOT(reject())); + connect( myBtnBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(onBtnClicked(QAbstractButton*) )); + + QVBoxLayout* aMainLay = new QVBoxLayout(); + aMainLay->addLayout(aLay); + aMainLay->addWidget(myBtnBox); + setLayout(aMainLay); +} + +void CurveCreator_NewSectionDlg::setSectionParameters( const QString& theName, bool isClosed, CurveCreator::Type theType ) +{ + myName->setText(theName); + myIsClosed->setChecked(isClosed); + if( theType == CurveCreator::Polyline ) + myLineType->setCurrentIndex(0); + else + myLineType->setCurrentIndex(1); +} + +void CurveCreator_NewSectionDlg::clear() +{ + myName->setText(""); + myIsClosed->setChecked(true); + myLineType->setCurrentIndex(0); +} + +void CurveCreator_NewSectionDlg::setEditMode( bool isEdit ) +{ + myIsEdit = isEdit; + if( myIsEdit ){ + myContBtn->hide(); + myAddBtn->setText(tr("OK")); + } + else{ + myContBtn->show(); + myAddBtn->setText(tr("ADD_BTN")); + } + updateTitle(); +} + +QString CurveCreator_NewSectionDlg::getName() const +{ + return myName->text(); +} + +bool CurveCreator_NewSectionDlg::isClosed() const +{ + return myIsClosed->isChecked(); +} + +CurveCreator::Type CurveCreator_NewSectionDlg::getSectionType() const +{ + if( myLineType->currentIndex() == 0 ) + return CurveCreator::Polyline; + else + return CurveCreator::BSpline; +} + +void CurveCreator_NewSectionDlg::updateTitle() +{ + QString aTitle; + if( !myIsEdit ) + aTitle = tr("ADD_NEW_SECTION"); + else + aTitle = QString(tr("SET_SECTION_PARAMETERS")); + setWindowTitle(aTitle); +} + +void CurveCreator_NewSectionDlg::setSectionName( const QString& theName ) +{ + myName->setText(theName); +} + +void CurveCreator_NewSectionDlg::onBtnClicked(QAbstractButton* theBtn ) +{ + if( myBtnBox->buttonRole(theBtn) == QDialogButtonBox::ResetRole ){ + emit addSection(); + } +} diff --git a/src/CurveCreator/CurveCreator_NewSectionDlg.h b/src/CurveCreator/CurveCreator_NewSectionDlg.h index cc590ed2d..d7568fb27 100755 --- a/src/CurveCreator/CurveCreator_NewSectionDlg.h +++ b/src/CurveCreator/CurveCreator_NewSectionDlg.h @@ -1,49 +1,49 @@ -#ifndef CURVECREATOR_NEWSECTION_H -#define CURVECREATOR_NEWSECTION_H - -#include "CurveCreator.hxx" - -#include - -class CurveCreator_Curve; - -class QLineEdit; -class QComboBox; -class QCheckBox; -class QPushButton; -class QAbstractButton; -class QDialogButtonBox; - -class CurveCreator_NewSectionDlg : public QDialog -{ - Q_OBJECT -public: - explicit CurveCreator_NewSectionDlg(QWidget *parent = 0); - - QString getName() const; - bool isClosed() const; - CurveCreator::Type getSectionType() const; - - void setSectionParameters( const QString& theName, bool isClosed, CurveCreator::Type theType ); - void setSectionName(const QString& theName ); - void clear(); - void setEditMode( bool isEdit ); - -signals: - void addSection(); -public slots: -protected slots: - void onBtnClicked(QAbstractButton* theBtn ); -protected: - void updateTitle(); -private: - QLineEdit* myName; - QComboBox* myLineType; - QCheckBox* myIsClosed; - bool myIsEdit; - QPushButton* myContBtn; - QPushButton* myAddBtn; - QDialogButtonBox* myBtnBox; -}; - -#endif // CURVECREATOR_NEWSECTION_H +#ifndef CURVECREATOR_NEWSECTION_H +#define CURVECREATOR_NEWSECTION_H + +#include "CurveCreator.hxx" + +#include + +class CurveCreator_Curve; + +class QLineEdit; +class QComboBox; +class QCheckBox; +class QPushButton; +class QAbstractButton; +class QDialogButtonBox; + +class CurveCreator_NewSectionDlg : public QDialog +{ + Q_OBJECT +public: + explicit CurveCreator_NewSectionDlg(QWidget *parent = 0); + + QString getName() const; + bool isClosed() const; + CurveCreator::Type getSectionType() const; + + void setSectionParameters( const QString& theName, bool isClosed, CurveCreator::Type theType ); + void setSectionName(const QString& theName ); + void clear(); + void setEditMode( bool isEdit ); + +signals: + void addSection(); +public slots: +protected slots: + void onBtnClicked(QAbstractButton* theBtn ); +protected: + void updateTitle(); +private: + QLineEdit* myName; + QComboBox* myLineType; + QCheckBox* myIsClosed; + bool myIsEdit; + QPushButton* myContBtn; + QPushButton* myAddBtn; + QDialogButtonBox* myBtnBox; +}; + +#endif // CURVECREATOR_NEWSECTION_H diff --git a/src/CurveCreator/CurveCreator_TreeView.cxx b/src/CurveCreator/CurveCreator_TreeView.cxx index c7ff6f929..a6eaaaa04 100755 --- a/src/CurveCreator/CurveCreator_TreeView.cxx +++ b/src/CurveCreator/CurveCreator_TreeView.cxx @@ -1,451 +1,451 @@ -#include "CurveCreator_TreeView.h" -#include "CurveCreator_Curve.hxx" - -#include -#include - -#include -#include - -#define ID_SECTION -1 - -CurveCreator_TreeViewModel::CurveCreator_TreeViewModel( CurveCreator_Curve* theCurve, QObject* parent ) : - QAbstractItemModel(parent), myCurve(theCurve) -{ - SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - QPixmap aSplineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE"))); - QPixmap aPolylineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE"))); - QPixmap aClosedSplineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_CLOSED_SPLINE"))); - QPixmap aClosedPolylineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_CLOSED_POLYLINE"))); - QPixmap aPointIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POINT"))); - -/* QPixmap aSplineIcon(tr(":images/ICON_SPLINE")); - QPixmap aPolylineIcon(tr(":images/ICON_POLYLINE")); - QPixmap aClosedPolylineIcon(tr(":images/ICON_CLOSED_POLYLINE")); - QPixmap aClosedSplineIcon(tr(":images/ICON_CLOSED_SPLINE")); - QPixmap aPointIcon(tr(":images/ICON_POINT")); */ - - if( !aSplineIcon.isNull() ) - myCachedIcons[ICON_SPLINE] = aSplineIcon; - - if( !aPolylineIcon.isNull() ) - myCachedIcons[ICON_POLYLINE] = aPolylineIcon; - - if( !aPolylineIcon.isNull() ) - myCachedIcons[ICON_CLOSED_POLYLINE] = aClosedPolylineIcon; - - if( !aPolylineIcon.isNull() ) - myCachedIcons[ICON_CLOSED_SPLINE] = aClosedSplineIcon; - - if( !aPointIcon.isNull() ) - myCachedIcons[ICON_POINT] = aPointIcon; - -} - -int CurveCreator_TreeViewModel::columnCount(const QModelIndex & parent ) const -{ - if( parent.internalId() == ID_SECTION ) - return 1; - else - return 1; -} - -QVariant CurveCreator_TreeViewModel::data(const QModelIndex & index, int role ) const -{ - int aRow = index.row(); - int aColumn = index.column(); - if( myCurve ){ - if( index.internalId() == ID_SECTION ){ - if( role == Qt::DisplayRole ){ - if( aColumn == 0 ) - return QString::fromStdString(myCurve->getSectionName(aRow)); - return QVariant(); - } - else if( role == Qt::DecorationRole ){ - if( aColumn == 0 ){ - CurveCreator::Type aSectionType = myCurve->getType(aRow); - if( aSectionType == CurveCreator::Polyline ){ - if( myCurve->isClosed(aRow) ){ - return myCachedIcons[ICON_CLOSED_POLYLINE]; - } - else{ - return myCachedIcons[ICON_POLYLINE]; - } - } - else{ - if( myCurve->isClosed(aRow) ){ - return myCachedIcons[ICON_CLOSED_SPLINE]; - } - else{ - return myCachedIcons[ICON_SPLINE]; - } - } - } - } - } - else{ - if( role == Qt::DisplayRole ){ - if( aColumn == 1 ) - return QVariant(); - // return "Point"; - else if( aColumn == 0 ){ - CurveCreator::Coordinates aCoords = myCurve->getCoordinates(index.internalId(),index.row() ); - QString anOut; - if( myCurve->getDimension() == CurveCreator::Dim2d ){ - anOut = QString(tr("X=%1, Y=%2")).arg(aCoords[0]).arg(aCoords[1]); - } - else{ - anOut = QString(tr("X=%1, Y=%2, Z=%3")).arg(aCoords[0]).arg(aCoords[1]).arg(aCoords[2]); - } - return anOut; - } - } - else if( role == Qt::DecorationRole ){ - if( aColumn == 0 ){ - return myCachedIcons[ICON_POINT]; - } - } - } - } - return QVariant(); -} - -QModelIndex CurveCreator_TreeViewModel::index(int row, int column, const QModelIndex & parent ) const -{ - if( parent.isValid() ){ - return createIndex(row, column, parent.row() ); - } - else{ - QModelIndex aParent = createIndex(row, column, ID_SECTION ); - return aParent; - } - return QModelIndex(); -} - -QModelIndex CurveCreator_TreeViewModel::parent(const QModelIndex & theIndex) const -{ - if( !theIndex.isValid() ) - return QModelIndex(); - - if( theIndex.internalId() == ID_SECTION ){ - return QModelIndex(); - } - return createIndex( theIndex.internalId(), 0, ID_SECTION ); -} - -int CurveCreator_TreeViewModel::rowCount(const QModelIndex & parent ) const -{ - int aRowCnt = 0; - if( myCurve != NULL ){ - if( !parent.isValid() ){ - //Points level - aRowCnt = myCurve->getNbSections(); - } - else{ - //Section level - if( parent.internalId() == ID_SECTION ){ - aRowCnt = myCurve->getNbPoints(parent.row()); - } - } - } - return aRowCnt; -} - -QModelIndex CurveCreator_TreeViewModel::sectionIndex( int theSection ) const -{ - return createIndex( theSection, 0, ID_SECTION ); -} - -QModelIndex CurveCreator_TreeViewModel::pointIndex( int theSection, int thePoint ) const -{ - return createIndex( thePoint, 0, theSection ); -} - -bool CurveCreator_TreeViewModel::isSection( const QModelIndex& theIndx ) const -{ - if( theIndx.internalId() == ID_SECTION ) - return true; - return false; -} - -int CurveCreator_TreeViewModel::getSection( const QModelIndex& theIndx ) const -{ - if( theIndx.internalId() == ID_SECTION ) - return theIndx.row(); - return theIndx.internalId(); -} - -int CurveCreator_TreeViewModel::getPoint( const QModelIndex& theIndx ) const -{ - if( theIndx.internalId() == ID_SECTION ) - return -1; - return theIndx.row(); -} - -void CurveCreator_TreeViewModel::setCurve( CurveCreator_Curve* theCurve ) -{ - myCurve = theCurve; - reset(); -} - -/*****************************************************************************************/ -CurveCreator_TreeView::CurveCreator_TreeView( CurveCreator_Curve* theCurve, QWidget *parent) : - QTreeView(parent) -{ - header()->hide(); - setUniformRowHeights(true); - setContextMenuPolicy( Qt::CustomContextMenu ); - CurveCreator_TreeViewModel* aModel = new CurveCreator_TreeViewModel(theCurve, this); - setModel(aModel); - setSelectionBehavior(SelectRows); - setSelectionMode(ExtendedSelection); - setExpandsOnDoubleClick(false); - connect( selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SIGNAL(selectionChanged()) ); - connect( this, SIGNAL(activated(QModelIndex)), this, SLOT(onActivated(QModelIndex))); -} - -QList CurveCreator_TreeView::getSelectedSections() const -{ - QList aSect; - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( !aModel ) - return aSect; - QModelIndexList anIndxs = selectionModel()->selectedIndexes(); - for( int i = 0 ; i < anIndxs.size() ; i++ ){ - if( aModel->isSection(anIndxs[i]) ){ - aSect << aModel->getSection( anIndxs[i] ); - } - } - qSort(aSect.begin(), aSect.end()); - return aSect; -} - -void CurveCreator_TreeView::pointsAdded( int theSection, int thePoint, int thePointsCnt ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - QModelIndex aSectIndx = aModel->sectionIndex( theSection ); - rowsInserted(aSectIndx, thePoint, thePoint + thePointsCnt - 1 ); - } -} - -void CurveCreator_TreeView::pointDataChanged( int theSection, int thePoint ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - QModelIndex aPointIndx = aModel->pointIndex( theSection, thePoint ); - dataChanged( aPointIndx, aPointIndx ); - } -} - -void CurveCreator_TreeView::pointsRemoved( int theSection, int thePoint, int thePointsCnt ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - for( int i = 0 ; i < thePointsCnt ; i++ ){ - QModelIndex aSectIndx = aModel->pointIndex(theSection, thePoint + i); - selectionModel()->select(aSectIndx,QItemSelectionModel::Deselect); - } - QModelIndex aSectIndx = aModel->sectionIndex( theSection ); - rowsRemoved(aSectIndx, thePoint, thePoint + thePointsCnt - 1 ); - } -} - -void CurveCreator_TreeView::sectionAdded( int theSection ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - rowsInserted(QModelIndex(), theSection, theSection ); - } -} - -void CurveCreator_TreeView::sectionChanged( int theSection, int aSectCnt ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - QModelIndex aFirstSectIndx = aModel->sectionIndex( theSection ); - QModelIndex aLastSectIndx = aModel->sectionIndex( theSection + aSectCnt - 1); - dataChanged( aFirstSectIndx, aLastSectIndx ); - } -} - -void CurveCreator_TreeView::sectionsRemoved( int theSection, int theSectionCnt ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - for( int i = 0 ; i < theSectionCnt ; i++ ){ - QModelIndex aSectIndx = aModel->sectionIndex(theSection + i); - this->selectionModel()->select(aSectIndx,QItemSelectionModel::Deselect); - } - rowsRemoved( QModelIndex(), theSection, theSection+theSectionCnt-1 ); - } -} - -void CurveCreator_TreeView::setIndexState( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent ) -{ - setExpanded( theIndx, isExpanded ); - QItemSelectionModel::SelectionFlags aFlag = QItemSelectionModel::Select; - if( !isSelected ){ - aFlag = QItemSelectionModel::Deselect; - } - selectionModel()->select( theIndx, aFlag ); -} - -void CurveCreator_TreeView::getIndexInfo( const QModelIndex& theIndx, bool& isExpand, bool& isSelected, bool& isCurrent ) -{ - isExpand = isExpanded(theIndx); - isSelected = selectionModel()->isSelected(theIndx); - isCurrent = (theIndx == selectionModel()->currentIndex()); -} - -void CurveCreator_TreeView::swapIndexes( const QModelIndex& theFirst, const QModelIndex& theSecond ) -{ - bool isFirstSelected; - bool isFirstExpanded; - bool isFirstCurrent; - getIndexInfo( theFirst, isFirstExpanded, isFirstSelected, isFirstCurrent ); - - bool isSecondSelected; - bool isSecondExpanded; - bool isSecondCurrent; - getIndexInfo( theSecond, isSecondExpanded, isSecondSelected, isSecondCurrent ); - - setIndexState( theFirst, isSecondExpanded, isSecondSelected, isSecondCurrent ); - setIndexState( theSecond, isFirstExpanded, isFirstSelected, isFirstCurrent ); - dataChanged(theFirst,theFirst); - dataChanged(theSecond,theSecond); -} - -void CurveCreator_TreeView::sectionsSwapped( int theSection, int theOffset ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - QModelIndex aFirstIndex = aModel->sectionIndex( theSection ); - QModelIndex aSecondIndex = aModel->sectionIndex( theSection + theOffset ); - swapIndexes( aFirstIndex, aSecondIndex ); - } -} - -void CurveCreator_TreeView::pointsSwapped( int theSection, int thePointNum, int theOffset ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - QModelIndex aFirstIndex = aModel->pointIndex( theSection, thePointNum ); - QModelIndex aSecondIndex = aModel->pointIndex( theSection, thePointNum + theOffset ); - swapIndexes( aFirstIndex, aSecondIndex ); - } -} - -void CurveCreator_TreeView::setSelectedSections( const QList& theList ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - selectionModel()->clearSelection(); - for( int i = 0 ; i < theList.size() ; i++ ){ - QModelIndex aSectIndx = aModel->sectionIndex(theList[i]); - selectionModel()->select(aSectIndx, QItemSelectionModel::Select ); - } - } -} - -void CurveCreator_TreeView::setSelectedPoints( const QList< QPair >& thePointsList ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ){ - selectionModel()->clearSelection(); - for( int i = 0 ; i < thePointsList.size() ; i++ ){ - QModelIndex aSectIndx = aModel->pointIndex( thePointsList[i].first, thePointsList[i].second ); - selectionModel()->select(aSectIndx, QItemSelectionModel::Select ); - } - } -} - -bool pointLessThan(const QPair &s1, const QPair &s2) -{ - if( s1.first < s2.first ) - return true; - if( s1.first > s2.first ) - return false; - return s1.second < s2.second; -} - -QList< QPair< int, int > > CurveCreator_TreeView::getSelectedPoints() const -{ - QList< QPair< int, int > > aPoints; - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( !aModel ) - return aPoints; - QModelIndexList anIndxs = selectionModel()->selectedIndexes(); - for( int i = 0 ; i < anIndxs.size() ; i++ ){ - if( !aModel->isSection( anIndxs[i] ) ){ - int aSect = aModel->getSection(anIndxs[i]); - int aPointNum = aModel->getPoint(anIndxs[i]); - QPair< int, int > aPoint = QPair( aSect, aPointNum ); - aPoints.push_back( aPoint ); - } - } - qSort( aPoints.begin(), aPoints.end(), pointLessThan ); - return aPoints; -} - -CurveCreator_TreeView::SelectionType CurveCreator_TreeView::getSelectionType() const -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( !aModel ) - return ST_NOSEL; - bool isPointSel = false; - bool isSectSel = false; - bool isOneSection = true; - int aSectNum = -1; - QModelIndexList aLst = selectionModel()->selectedIndexes(); - for( int i = 0 ; i < aLst.size() ; i++ ){ - if( aModel->isSection( aLst[i] ) ){ - isSectSel = true; - } - else{ - isPointSel = true; - if( aSectNum == -1 ){ - aSectNum = aModel->getSection(aLst[i]); - } - else{ - if( aSectNum != aModel->getSection( aLst[i] ) ){ - isOneSection = false; - } - } - } - } - if( isSectSel && !isPointSel ) - return ST_SECTIONS; - if( isPointSel && !isSectSel ){ - if( isOneSection ){ - return ST_POINTS_ONE_SECTION; - } - return ST_POINTS; - } - if( isPointSel && isSectSel ) - return ST_MIXED; - return ST_NOSEL; -} - -void CurveCreator_TreeView::onActivated( QModelIndex theIndx ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( !aModel ) - return; - int aSect = aModel->getSection(theIndx); - if( aModel->isSection(theIndx) ){ - emit sectionEntered( aSect ); - return; - } - int aPointNum = aModel->getPoint( theIndx ); - emit pointEntered( aSect, aPointNum ); -} - -void CurveCreator_TreeView::setCurve( CurveCreator_Curve* theCurve ) -{ - CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); - if( aModel ) - aModel->setCurve(theCurve); - reset(); -} +#include "CurveCreator_TreeView.h" +#include "CurveCreator_Curve.hxx" + +#include +#include + +#include +#include + +#define ID_SECTION -1 + +CurveCreator_TreeViewModel::CurveCreator_TreeViewModel( CurveCreator_Curve* theCurve, QObject* parent ) : + QAbstractItemModel(parent), myCurve(theCurve) +{ + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + QPixmap aSplineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE"))); + QPixmap aPolylineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE"))); + QPixmap aClosedSplineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_CLOSED_SPLINE"))); + QPixmap aClosedPolylineIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_CLOSED_POLYLINE"))); + QPixmap aPointIcon(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POINT"))); + +/* QPixmap aSplineIcon(tr(":images/ICON_SPLINE")); + QPixmap aPolylineIcon(tr(":images/ICON_POLYLINE")); + QPixmap aClosedPolylineIcon(tr(":images/ICON_CLOSED_POLYLINE")); + QPixmap aClosedSplineIcon(tr(":images/ICON_CLOSED_SPLINE")); + QPixmap aPointIcon(tr(":images/ICON_POINT")); */ + + if( !aSplineIcon.isNull() ) + myCachedIcons[ICON_SPLINE] = aSplineIcon; + + if( !aPolylineIcon.isNull() ) + myCachedIcons[ICON_POLYLINE] = aPolylineIcon; + + if( !aPolylineIcon.isNull() ) + myCachedIcons[ICON_CLOSED_POLYLINE] = aClosedPolylineIcon; + + if( !aPolylineIcon.isNull() ) + myCachedIcons[ICON_CLOSED_SPLINE] = aClosedSplineIcon; + + if( !aPointIcon.isNull() ) + myCachedIcons[ICON_POINT] = aPointIcon; + +} + +int CurveCreator_TreeViewModel::columnCount(const QModelIndex & parent ) const +{ + if( parent.internalId() == ID_SECTION ) + return 1; + else + return 1; +} + +QVariant CurveCreator_TreeViewModel::data(const QModelIndex & index, int role ) const +{ + int aRow = index.row(); + int aColumn = index.column(); + if( myCurve ){ + if( index.internalId() == ID_SECTION ){ + if( role == Qt::DisplayRole ){ + if( aColumn == 0 ) + return QString::fromStdString(myCurve->getSectionName(aRow)); + return QVariant(); + } + else if( role == Qt::DecorationRole ){ + if( aColumn == 0 ){ + CurveCreator::Type aSectionType = myCurve->getType(aRow); + if( aSectionType == CurveCreator::Polyline ){ + if( myCurve->isClosed(aRow) ){ + return myCachedIcons[ICON_CLOSED_POLYLINE]; + } + else{ + return myCachedIcons[ICON_POLYLINE]; + } + } + else{ + if( myCurve->isClosed(aRow) ){ + return myCachedIcons[ICON_CLOSED_SPLINE]; + } + else{ + return myCachedIcons[ICON_SPLINE]; + } + } + } + } + } + else{ + if( role == Qt::DisplayRole ){ + if( aColumn == 1 ) + return QVariant(); + // return "Point"; + else if( aColumn == 0 ){ + CurveCreator::Coordinates aCoords = myCurve->getCoordinates(index.internalId(),index.row() ); + QString anOut; + if( myCurve->getDimension() == CurveCreator::Dim2d ){ + anOut = QString(tr("X=%1, Y=%2")).arg(aCoords[0]).arg(aCoords[1]); + } + else{ + anOut = QString(tr("X=%1, Y=%2, Z=%3")).arg(aCoords[0]).arg(aCoords[1]).arg(aCoords[2]); + } + return anOut; + } + } + else if( role == Qt::DecorationRole ){ + if( aColumn == 0 ){ + return myCachedIcons[ICON_POINT]; + } + } + } + } + return QVariant(); +} + +QModelIndex CurveCreator_TreeViewModel::index(int row, int column, const QModelIndex & parent ) const +{ + if( parent.isValid() ){ + return createIndex(row, column, parent.row() ); + } + else{ + QModelIndex aParent = createIndex(row, column, ID_SECTION ); + return aParent; + } + return QModelIndex(); +} + +QModelIndex CurveCreator_TreeViewModel::parent(const QModelIndex & theIndex) const +{ + if( !theIndex.isValid() ) + return QModelIndex(); + + if( theIndex.internalId() == ID_SECTION ){ + return QModelIndex(); + } + return createIndex( theIndex.internalId(), 0, ID_SECTION ); +} + +int CurveCreator_TreeViewModel::rowCount(const QModelIndex & parent ) const +{ + int aRowCnt = 0; + if( myCurve != NULL ){ + if( !parent.isValid() ){ + //Points level + aRowCnt = myCurve->getNbSections(); + } + else{ + //Section level + if( parent.internalId() == ID_SECTION ){ + aRowCnt = myCurve->getNbPoints(parent.row()); + } + } + } + return aRowCnt; +} + +QModelIndex CurveCreator_TreeViewModel::sectionIndex( int theSection ) const +{ + return createIndex( theSection, 0, ID_SECTION ); +} + +QModelIndex CurveCreator_TreeViewModel::pointIndex( int theSection, int thePoint ) const +{ + return createIndex( thePoint, 0, theSection ); +} + +bool CurveCreator_TreeViewModel::isSection( const QModelIndex& theIndx ) const +{ + if( theIndx.internalId() == ID_SECTION ) + return true; + return false; +} + +int CurveCreator_TreeViewModel::getSection( const QModelIndex& theIndx ) const +{ + if( theIndx.internalId() == ID_SECTION ) + return theIndx.row(); + return theIndx.internalId(); +} + +int CurveCreator_TreeViewModel::getPoint( const QModelIndex& theIndx ) const +{ + if( theIndx.internalId() == ID_SECTION ) + return -1; + return theIndx.row(); +} + +void CurveCreator_TreeViewModel::setCurve( CurveCreator_Curve* theCurve ) +{ + myCurve = theCurve; + reset(); +} + +/*****************************************************************************************/ +CurveCreator_TreeView::CurveCreator_TreeView( CurveCreator_Curve* theCurve, QWidget *parent) : + QTreeView(parent) +{ + header()->hide(); + setUniformRowHeights(true); + setContextMenuPolicy( Qt::CustomContextMenu ); + CurveCreator_TreeViewModel* aModel = new CurveCreator_TreeViewModel(theCurve, this); + setModel(aModel); + setSelectionBehavior(SelectRows); + setSelectionMode(ExtendedSelection); + setExpandsOnDoubleClick(false); + connect( selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SIGNAL(selectionChanged()) ); + connect( this, SIGNAL(activated(QModelIndex)), this, SLOT(onActivated(QModelIndex))); +} + +QList CurveCreator_TreeView::getSelectedSections() const +{ + QList aSect; + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( !aModel ) + return aSect; + QModelIndexList anIndxs = selectionModel()->selectedIndexes(); + for( int i = 0 ; i < anIndxs.size() ; i++ ){ + if( aModel->isSection(anIndxs[i]) ){ + aSect << aModel->getSection( anIndxs[i] ); + } + } + qSort(aSect.begin(), aSect.end()); + return aSect; +} + +void CurveCreator_TreeView::pointsAdded( int theSection, int thePoint, int thePointsCnt ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + QModelIndex aSectIndx = aModel->sectionIndex( theSection ); + rowsInserted(aSectIndx, thePoint, thePoint + thePointsCnt - 1 ); + } +} + +void CurveCreator_TreeView::pointDataChanged( int theSection, int thePoint ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + QModelIndex aPointIndx = aModel->pointIndex( theSection, thePoint ); + dataChanged( aPointIndx, aPointIndx ); + } +} + +void CurveCreator_TreeView::pointsRemoved( int theSection, int thePoint, int thePointsCnt ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + for( int i = 0 ; i < thePointsCnt ; i++ ){ + QModelIndex aSectIndx = aModel->pointIndex(theSection, thePoint + i); + selectionModel()->select(aSectIndx,QItemSelectionModel::Deselect); + } + QModelIndex aSectIndx = aModel->sectionIndex( theSection ); + rowsRemoved(aSectIndx, thePoint, thePoint + thePointsCnt - 1 ); + } +} + +void CurveCreator_TreeView::sectionAdded( int theSection ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + rowsInserted(QModelIndex(), theSection, theSection ); + } +} + +void CurveCreator_TreeView::sectionChanged( int theSection, int aSectCnt ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + QModelIndex aFirstSectIndx = aModel->sectionIndex( theSection ); + QModelIndex aLastSectIndx = aModel->sectionIndex( theSection + aSectCnt - 1); + dataChanged( aFirstSectIndx, aLastSectIndx ); + } +} + +void CurveCreator_TreeView::sectionsRemoved( int theSection, int theSectionCnt ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + for( int i = 0 ; i < theSectionCnt ; i++ ){ + QModelIndex aSectIndx = aModel->sectionIndex(theSection + i); + this->selectionModel()->select(aSectIndx,QItemSelectionModel::Deselect); + } + rowsRemoved( QModelIndex(), theSection, theSection+theSectionCnt-1 ); + } +} + +void CurveCreator_TreeView::setIndexState( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent ) +{ + setExpanded( theIndx, isExpanded ); + QItemSelectionModel::SelectionFlags aFlag = QItemSelectionModel::Select; + if( !isSelected ){ + aFlag = QItemSelectionModel::Deselect; + } + selectionModel()->select( theIndx, aFlag ); +} + +void CurveCreator_TreeView::getIndexInfo( const QModelIndex& theIndx, bool& isExpand, bool& isSelected, bool& isCurrent ) +{ + isExpand = isExpanded(theIndx); + isSelected = selectionModel()->isSelected(theIndx); + isCurrent = (theIndx == selectionModel()->currentIndex()); +} + +void CurveCreator_TreeView::swapIndexes( const QModelIndex& theFirst, const QModelIndex& theSecond ) +{ + bool isFirstSelected; + bool isFirstExpanded; + bool isFirstCurrent; + getIndexInfo( theFirst, isFirstExpanded, isFirstSelected, isFirstCurrent ); + + bool isSecondSelected; + bool isSecondExpanded; + bool isSecondCurrent; + getIndexInfo( theSecond, isSecondExpanded, isSecondSelected, isSecondCurrent ); + + setIndexState( theFirst, isSecondExpanded, isSecondSelected, isSecondCurrent ); + setIndexState( theSecond, isFirstExpanded, isFirstSelected, isFirstCurrent ); + dataChanged(theFirst,theFirst); + dataChanged(theSecond,theSecond); +} + +void CurveCreator_TreeView::sectionsSwapped( int theSection, int theOffset ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + QModelIndex aFirstIndex = aModel->sectionIndex( theSection ); + QModelIndex aSecondIndex = aModel->sectionIndex( theSection + theOffset ); + swapIndexes( aFirstIndex, aSecondIndex ); + } +} + +void CurveCreator_TreeView::pointsSwapped( int theSection, int thePointNum, int theOffset ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + QModelIndex aFirstIndex = aModel->pointIndex( theSection, thePointNum ); + QModelIndex aSecondIndex = aModel->pointIndex( theSection, thePointNum + theOffset ); + swapIndexes( aFirstIndex, aSecondIndex ); + } +} + +void CurveCreator_TreeView::setSelectedSections( const QList& theList ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + selectionModel()->clearSelection(); + for( int i = 0 ; i < theList.size() ; i++ ){ + QModelIndex aSectIndx = aModel->sectionIndex(theList[i]); + selectionModel()->select(aSectIndx, QItemSelectionModel::Select ); + } + } +} + +void CurveCreator_TreeView::setSelectedPoints( const QList< QPair >& thePointsList ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ){ + selectionModel()->clearSelection(); + for( int i = 0 ; i < thePointsList.size() ; i++ ){ + QModelIndex aSectIndx = aModel->pointIndex( thePointsList[i].first, thePointsList[i].second ); + selectionModel()->select(aSectIndx, QItemSelectionModel::Select ); + } + } +} + +bool pointLessThan(const QPair &s1, const QPair &s2) +{ + if( s1.first < s2.first ) + return true; + if( s1.first > s2.first ) + return false; + return s1.second < s2.second; +} + +QList< QPair< int, int > > CurveCreator_TreeView::getSelectedPoints() const +{ + QList< QPair< int, int > > aPoints; + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( !aModel ) + return aPoints; + QModelIndexList anIndxs = selectionModel()->selectedIndexes(); + for( int i = 0 ; i < anIndxs.size() ; i++ ){ + if( !aModel->isSection( anIndxs[i] ) ){ + int aSect = aModel->getSection(anIndxs[i]); + int aPointNum = aModel->getPoint(anIndxs[i]); + QPair< int, int > aPoint = QPair( aSect, aPointNum ); + aPoints.push_back( aPoint ); + } + } + qSort( aPoints.begin(), aPoints.end(), pointLessThan ); + return aPoints; +} + +CurveCreator_TreeView::SelectionType CurveCreator_TreeView::getSelectionType() const +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( !aModel ) + return ST_NOSEL; + bool isPointSel = false; + bool isSectSel = false; + bool isOneSection = true; + int aSectNum = -1; + QModelIndexList aLst = selectionModel()->selectedIndexes(); + for( int i = 0 ; i < aLst.size() ; i++ ){ + if( aModel->isSection( aLst[i] ) ){ + isSectSel = true; + } + else{ + isPointSel = true; + if( aSectNum == -1 ){ + aSectNum = aModel->getSection(aLst[i]); + } + else{ + if( aSectNum != aModel->getSection( aLst[i] ) ){ + isOneSection = false; + } + } + } + } + if( isSectSel && !isPointSel ) + return ST_SECTIONS; + if( isPointSel && !isSectSel ){ + if( isOneSection ){ + return ST_POINTS_ONE_SECTION; + } + return ST_POINTS; + } + if( isPointSel && isSectSel ) + return ST_MIXED; + return ST_NOSEL; +} + +void CurveCreator_TreeView::onActivated( QModelIndex theIndx ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( !aModel ) + return; + int aSect = aModel->getSection(theIndx); + if( aModel->isSection(theIndx) ){ + emit sectionEntered( aSect ); + return; + } + int aPointNum = aModel->getPoint( theIndx ); + emit pointEntered( aSect, aPointNum ); +} + +void CurveCreator_TreeView::setCurve( CurveCreator_Curve* theCurve ) +{ + CurveCreator_TreeViewModel* aModel = dynamic_cast(model()); + if( aModel ) + aModel->setCurve(theCurve); + reset(); +} diff --git a/src/CurveCreator/CurveCreator_TreeView.h b/src/CurveCreator/CurveCreator_TreeView.h index 85fe54cf0..19067ec85 100755 --- a/src/CurveCreator/CurveCreator_TreeView.h +++ b/src/CurveCreator/CurveCreator_TreeView.h @@ -1,75 +1,75 @@ -#ifndef CURVECREATOR_TREEVIEW_H -#define CURVECREATOR_TREEVIEW_H - -#include -#include - -class CurveCreator_Curve; - -class CurveCreator_TreeViewModel : public QAbstractItemModel -{ -public: - CurveCreator_TreeViewModel( CurveCreator_Curve* theCurve, QObject* parent ); - virtual int columnCount(const QModelIndex & parent = QModelIndex()) const; - virtual int rowCount(const QModelIndex & parent = QModelIndex()) const; - virtual QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; - virtual QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const; - virtual QModelIndex parent(const QModelIndex & theIndex) const; - - QModelIndex sectionIndex( int theSection ) const; - QModelIndex pointIndex( int theSection, int thePoint ) const; - - bool isSection( const QModelIndex& theIndx ) const; - int getSection( const QModelIndex& theIndx ) const; - int getPoint( const QModelIndex& theIndx ) const; - - void setCurve( CurveCreator_Curve* theCurve ); - -private: - enum IconType{ ICON_POLYLINE, ICON_SPLINE, ICON_CLOSED_SPLINE, ICON_CLOSED_POLYLINE, ICON_POINT }; -private: - CurveCreator_Curve* myCurve; - QMap myCachedIcons; -}; - -class CurveCreator_TreeView : public QTreeView -{ - Q_OBJECT -public: - enum SelectionType{ ST_NOSEL, ST_POINTS, ST_POINTS_ONE_SECTION, ST_SECTIONS, ST_MIXED }; -public: - explicit CurveCreator_TreeView( CurveCreator_Curve* theCurve, QWidget *parent = 0); - SelectionType getSelectionType() const; - QList getSelectedSections() const; - QList< QPair< int, int > > getSelectedPoints() const; - - void pointsAdded( int theSection, int thePoint, int thePointsCnt=1 ); - void pointDataChanged( int theSection, int thePoint ); - void pointsRemoved(int theSection, int thePoint, int thePointsCnt=1 ); - void pointsSwapped( int theSection, int thePointNum, int theOffset ); - - void sectionAdded( int theSection ); - void sectionChanged(int theSection , int aSectCnt = 1); - void sectionsRemoved( int theSection, int theSectionCnt=1 ); - void sectionsSwapped( int theSection, int theOffset ); - - void setSelectedSections( const QList& theList ); - void setSelectedPoints( const QList< QPair >& thePointsList ); - - void setCurve( CurveCreator_Curve* theCurve ); - -signals: - void selectionChanged(); - void sectionEntered(int); - void pointEntered(int,int); -public slots: -protected slots: - void onActivated( QModelIndex theIndx ); -protected: - void setIndexState( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent ); - void swapIndexes( const QModelIndex& theFirst, const QModelIndex& theSecond ); - void getIndexInfo( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent ); - -}; - -#endif // CURVECREATOR_TREEVIEW_H +#ifndef CURVECREATOR_TREEVIEW_H +#define CURVECREATOR_TREEVIEW_H + +#include +#include + +class CurveCreator_Curve; + +class CurveCreator_TreeViewModel : public QAbstractItemModel +{ +public: + CurveCreator_TreeViewModel( CurveCreator_Curve* theCurve, QObject* parent ); + virtual int columnCount(const QModelIndex & parent = QModelIndex()) const; + virtual int rowCount(const QModelIndex & parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + virtual QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const; + virtual QModelIndex parent(const QModelIndex & theIndex) const; + + QModelIndex sectionIndex( int theSection ) const; + QModelIndex pointIndex( int theSection, int thePoint ) const; + + bool isSection( const QModelIndex& theIndx ) const; + int getSection( const QModelIndex& theIndx ) const; + int getPoint( const QModelIndex& theIndx ) const; + + void setCurve( CurveCreator_Curve* theCurve ); + +private: + enum IconType{ ICON_POLYLINE, ICON_SPLINE, ICON_CLOSED_SPLINE, ICON_CLOSED_POLYLINE, ICON_POINT }; +private: + CurveCreator_Curve* myCurve; + QMap myCachedIcons; +}; + +class CurveCreator_TreeView : public QTreeView +{ + Q_OBJECT +public: + enum SelectionType{ ST_NOSEL, ST_POINTS, ST_POINTS_ONE_SECTION, ST_SECTIONS, ST_MIXED }; +public: + explicit CurveCreator_TreeView( CurveCreator_Curve* theCurve, QWidget *parent = 0); + SelectionType getSelectionType() const; + QList getSelectedSections() const; + QList< QPair< int, int > > getSelectedPoints() const; + + void pointsAdded( int theSection, int thePoint, int thePointsCnt=1 ); + void pointDataChanged( int theSection, int thePoint ); + void pointsRemoved(int theSection, int thePoint, int thePointsCnt=1 ); + void pointsSwapped( int theSection, int thePointNum, int theOffset ); + + void sectionAdded( int theSection ); + void sectionChanged(int theSection , int aSectCnt = 1); + void sectionsRemoved( int theSection, int theSectionCnt=1 ); + void sectionsSwapped( int theSection, int theOffset ); + + void setSelectedSections( const QList& theList ); + void setSelectedPoints( const QList< QPair >& thePointsList ); + + void setCurve( CurveCreator_Curve* theCurve ); + +signals: + void selectionChanged(); + void sectionEntered(int); + void pointEntered(int,int); +public slots: +protected slots: + void onActivated( QModelIndex theIndx ); +protected: + void setIndexState( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent ); + void swapIndexes( const QModelIndex& theFirst, const QModelIndex& theSecond ); + void getIndexInfo( const QModelIndex& theIndx, bool& isExpanded, bool& isSelected, bool& isCurrent ); + +}; + +#endif // CURVECREATOR_TREEVIEW_H diff --git a/src/CurveCreator/CurveCreator_Widget.cxx b/src/CurveCreator/CurveCreator_Widget.cxx index e05d2ed72..9ab5db74a 100644 --- a/src/CurveCreator/CurveCreator_Widget.cxx +++ b/src/CurveCreator/CurveCreator_Widget.cxx @@ -1,611 +1,611 @@ -#include "CurveCreator_Widget.h" -#include "CurveCreator_TreeView.h" -#include "QVBoxLayout" -#include "CurveCreator_Curve.hxx" -#include "CurveCreator_CurveEditor.hxx" -#include "CurveCreator.hxx" -#include "CurveCreator_NewPointDlg.h" -#include "CurveCreator_NewSectionDlg.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -CurveCreator_Widget::CurveCreator_Widget(QWidget* parent, - CurveCreator_Curve *theCurve, - Qt::WindowFlags fl) : - QWidget(parent), myNewPointEditor(NULL), myNewSectionEditor(NULL), myEdit(NULL), myCurve(theCurve) -{ - if( myCurve ) - myEdit = new CurveCreator_CurveEditor( myCurve ); - - CurveCreator::Dimension aDim = CurveCreator::Dim3d; - if( myCurve ) - aDim = myCurve->getDimension(); - myNewPointEditor = new CurveCreator_NewPointDlg(aDim, this); - connect( myNewPointEditor, SIGNAL(addPoint()), this, SLOT(onAddNewPoint())); - - myNewSectionEditor = new CurveCreator_NewSectionDlg(this); - connect( myNewSectionEditor, SIGNAL(addSection()), this, SLOT(onAddNewSection())); - - QGroupBox* aSectionGroup = new QGroupBox(tr("Sections"),this); - - mySectionView = new CurveCreator_TreeView(myCurve, aSectionGroup); - connect( mySectionView, SIGNAL(selectionChanged()), this, SLOT( onSelectionChanged() ) ); - connect( mySectionView, SIGNAL(pointEntered(int,int)), this, SLOT(onEditPoint(int,int)) ); - connect( mySectionView, SIGNAL(sectionEntered(int)), this, SLOT(onEditSection(int)) ); - connect( mySectionView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenu(QPoint)) ); - QToolBar* aTB = new QToolBar(tr("TOOL_BAR_TLT"), aSectionGroup); -// QToolButton* anUndoBtn = new QToolButton(aTB); - - SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); - QPixmap anUndoPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_UNDO"))); - QPixmap aRedoPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_REDO"))); - QPixmap aNewSectionPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_NEW_SECTION"))); - QPixmap aNewPointPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_NEW_POINT"))); - QPixmap aPolylinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE"))); - QPixmap aSplinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE"))); - QPixmap aRemovePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_DELETE"))); - QPixmap aJoinPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_JOIN"))); - QPixmap aStepUpPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_ARROW_UP"))); - QPixmap aStepDownPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_ARROW_DOWN"))); - -/* QPixmap anUndoPixmap = QPixmap(tr(":images/ICON_UNDO")); - QPixmap aRedoPixmap = QPixmap(tr(":images/ICON_REDO")); - QPixmap aNewSectionPixmap = QPixmap(tr(":images/ICON_NEW_SECTION")); - QPixmap aNewPointPixmap = QPixmap(tr(":images/ICON_NEW_POINT")); - QPixmap aPolylinePixmap = QPixmap(tr(":images/ICON_POLYLINE")); - QPixmap aSplinePixmap = QPixmap(tr(":images/ICON_SPLINE")); - QPixmap aRemovePixmap = QPixmap(tr(":images/ICON_REMOVE")); - QPixmap aJoinPixmap = QPixmap(tr(":images/ICON_JOIN")); - QPixmap aStepUpPixmap = QPixmap(tr(":images/ICON_STEP_UP")); - QPixmap aStepDownPixmap = QPixmap(tr(":images/ICON_STEP_DOWN"));*/ - - QAction* anAct = createAction( UNDO_ID, tr("UNDO"), anUndoPixmap, tr("UNDO_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_Z) ); - aTB->addAction(anAct); - - anAct = createAction( REDO_ID, tr("REDO"), aRedoPixmap, tr("REDO_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_Y) ); - aTB->addAction(anAct); - - aTB->addSeparator(); - - anAct = createAction( NEW_SECTION_ID, tr("NEW_SECTION"), aNewSectionPixmap, tr("NEW_SECTION_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_N) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onNewSection()) ); - aTB->addAction(anAct); - - anAct = createAction( INSERT_SECTION_BEFORE_ID, tr("INSERT_SECTION_BEFORE"), QPixmap(), - tr("INSERT_SECTION_BEFORE_TLT"), - QKeySequence(Qt::ControlModifier | Qt::Key_Insert ) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertSectionBefore()) ); - - anAct = createAction( INSERT_SECTION_AFTER_ID, tr("INSERT_SECTION_AFTER"), QPixmap(), - tr("INSERT_SECTION_AFTER_TLT"), - QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Insert ) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertSectionAfter()) ); - - anAct = createAction( NEW_POINT_ID, tr("NEW_POINT"), aNewPointPixmap, tr("NEW_POINT_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_P) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onNewPoint()) ); - aTB->addAction(anAct); - aTB->addSeparator(); - - anAct = createAction( INSERT_POINT_BEFORE_ID, tr("INSERT_POINT_BEFORE"), QPixmap(), - tr("INSERT_POINT_BEFORE_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_B) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertPointBefore()) ); - - anAct = createAction( INSERT_POINT_AFTER_ID, tr("INSERT_POINT_AFTER"), QPixmap(), - tr("INSERT_POINT_AFTER_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_M) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertPointAfter()) ); - - anAct = createAction( CLOSE_SECTIONS_ID, tr("CLOSE_SECTIONS"), QPixmap(), tr("CLOSE_SECTIONS_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_W) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onCloseSections()) ); - - anAct = createAction( UNCLOSE_SECTIONS_ID, tr("UNCLOSE_SECTIONS"), QPixmap(), - tr("UNCLOSE_SECTIONS_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_S) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onUncloseSections()) ); - - anAct = createAction( SET_SECTIONS_POLYLINE_ID, tr("SET_SECTIONS_POLYLINE"), - aPolylinePixmap, tr("SET_POLYLINE_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_E) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onSetPolyline()) ); - - anAct = createAction( SET_SECTIONS_SPLINE_ID, tr("SET_SECTIONS_SPLINE"), aSplinePixmap, - tr("SET_SPLINE_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_R) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onSetSpline()) ); - - anAct = createAction( REMOVE_ID, tr("REMOVE"), aRemovePixmap, tr("REMOVE_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_Delete ) ); - connect(anAct, SIGNAL(triggered()), this, SLOT(onRemove()) ); - aTB->addAction(anAct); - aTB->addSeparator(); - - anAct = createAction( JOIN_ID, tr("JOIN"), aJoinPixmap, tr("JOIN_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_Plus ) ); - connect( anAct, SIGNAL(triggered()), this, SLOT(onJoin()) ); - aTB->addAction(anAct); - aTB->addSeparator(); - - anAct = createAction( UP_ID, tr("STEP_UP"), aStepUpPixmap, tr("STEP_UP_TLT"), - QKeySequence(Qt::ControlModifier|Qt::Key_Up ) ); - connect( anAct, SIGNAL(triggered()), this, SLOT(onMoveUp()) ); - aTB->addAction(anAct); - - anAct = createAction( DOWN_ID, tr("STEP_DOWN"), aStepDownPixmap, tr("STEP_DOWN"), - QKeySequence(Qt::ControlModifier|Qt::Key_Down ) ); - connect( anAct, SIGNAL(triggered()), this, SLOT(onMoveDown()) ); - aTB->addAction(anAct); - - anAct = createAction( CLEAR_ALL_ID, tr("CLEAR_ALL"), QPixmap(), tr("CLEAR_ALL_TLT"), - QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Delete ) ); - connect( anAct, SIGNAL(triggered()), this, SLOT( onClearAll()) ); - - anAct = createAction( JOIN_ALL_ID, tr("JOIN_ALL"), QPixmap(), tr("JOIN_ALL_TLT"), - QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Plus ) ); - connect( anAct, SIGNAL(triggered()), this, SLOT(onJoinAll()) ); - - QVBoxLayout* aSectLayout = new QVBoxLayout(); - aSectLayout->addWidget(aTB); - aSectLayout->addWidget(mySectionView); - aSectionGroup->setLayout(aSectLayout); - QVBoxLayout* aLay = new QVBoxLayout(); -// aLay->addLayout(aNameLayout); - aLay->addWidget(aSectionGroup); - setLayout(aLay); - onSelectionChanged(); -} - -void CurveCreator_Widget::setCurve( CurveCreator_Curve* theCurve ) -{ - if( myEdit != NULL ){ - delete myEdit; - myEdit = NULL; - } - myCurve = theCurve; - mySectionView->setCurve(myCurve); - if( myCurve != NULL ){ - myEdit = new CurveCreator_CurveEditor(myCurve); - } - onSelectionChanged(); -} - -void CurveCreator_Widget::onSelectionChanged() -{ - QList anEnabledAct; - if( myCurve ){ - anEnabledAct << NEW_SECTION_ID; - int aSectCnt = myCurve->getNbPoints(); - if( aSectCnt > 0 ) - anEnabledAct << CLEAR_ALL_ID; - if( aSectCnt > 1 ) - anEnabledAct << JOIN_ALL_ID; - QList aSelSections = mySectionView->getSelectedSections(); - QList< QPair< int, int > > aSelPoints = mySectionView->getSelectedPoints(); - CurveCreator_TreeView::SelectionType aSelType = mySectionView->getSelectionType(); - switch( aSelType ){ - case CurveCreator_TreeView::ST_NOSEL:{ - break; - } - case CurveCreator_TreeView::ST_SECTIONS:{ - if( aSelSections.size() > 1 ){ - anEnabledAct << JOIN_ID; - } - if( aSelSections[0] > 0 ){ - anEnabledAct << UP_ID; - } - if( aSelSections.size() == 1 ){ - anEnabledAct << NEW_POINT_ID << INSERT_SECTION_BEFORE_ID << INSERT_SECTION_AFTER_ID; - } - if( aSelSections[ aSelSections.size() - 1 ] < ( myCurve->getNbSections() - 1 ) ){ - anEnabledAct << DOWN_ID; - } - anEnabledAct << CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID << SET_SECTIONS_POLYLINE_ID << SET_SECTIONS_SPLINE_ID; - break; - } - case CurveCreator_TreeView::ST_POINTS_ONE_SECTION:{ - if( aSelPoints[0].second > 0 ){ - anEnabledAct << UP_ID; - } - int aLastIndex = aSelPoints.size()-1; - int aSect = aSelPoints[0].first; - if( aSelPoints[aLastIndex].second < (myCurve->getNbPoints(aSect) - 1)){ - anEnabledAct << DOWN_ID; - } - if( aSelPoints.size() == 1){ - anEnabledAct << INSERT_POINT_BEFORE_ID << INSERT_POINT_AFTER_ID; - } - break; - } - } - int aSelObjsCnt = aSelPoints.size() + aSelSections.size(); - if( aSelObjsCnt > 0 ){ - anEnabledAct << REMOVE_ID; - } - if( (myCurve->getNbSections() + myCurve->getNbPoints()) > 0 ){ - anEnabledAct << REMOVE_ALL_ID; - } - if( myCurve->getNbSections() > 1 ){ - anEnabledAct << JOIN_ALL_ID; - } - } - QList anIds = myActionMap.keys(); - for( int i = 0 ; i < anIds.size() ; i++ ){ - if( myActionMap.contains(anIds[i]) ){ - if( anEnabledAct.contains(anIds[i]) ){ - myActionMap[anIds[i]]->setEnabled(true); - } - else{ - myActionMap[anIds[i]]->setEnabled(false); - } - } - } -} - -void CurveCreator_Widget::onNewPoint() -{ - if( !myEdit ) - return; - mySection= -1; - myPointNum = -1; - QList aSelSection = mySectionView->getSelectedSections(); - if( aSelSection.size() > 0 ){ - mySection = aSelSection[0]; - } - else{ - QList< QPair > aSelPoints = mySectionView->getSelectedPoints(); - if( aSelPoints.size() > 0 ){ - mySection = aSelPoints[0].first; - myPointNum = aSelPoints[0].second + 1; - } - } - QString aSectName; - if( mySection < 0 ){ - mySection = myCurve->getNbSections() - 1; - } - aSectName = QString::fromStdString( myCurve->getSectionName(mySection)); - if( myPointNum < 0 ){ - myPointNum = myCurve->getNbPoints(mySection); - } - myNewPointEditor->clear(); - myNewPointEditor->setEditMode(false); - myNewPointEditor->setSectionName(aSectName); - myNewPointEditor->setDimension(myCurve->getDimension()); - if( myNewPointEditor->exec() == QDialog::Accepted ){ - onAddNewPoint(); - } -} - -void CurveCreator_Widget::onAddNewPoint() -{ - if( !myEdit ) - return; - CurveCreator::Coordinates aCoords = myNewPointEditor->getCoordinates(); - myEdit->insertPoints(aCoords, mySection, myPointNum ); - mySectionView->pointsAdded( mySection, myPointNum ); - myNewPointEditor->clear(); - myPointNum++; - onSelectionChanged(); -} - -void CurveCreator_Widget::onNewSection() -{ - if( !myEdit ) - return; - myNewSectionEditor->clear(); - myNewSectionEditor->setEditMode(false); - QString aSectName = QString( myCurve->getUnicSectionName().c_str() ); - myNewSectionEditor->setSectionParameters(aSectName, true, CurveCreator::Polyline ); - if( myNewSectionEditor->exec() == QDialog::Accepted ){ - onAddNewSection(); - } -} - -void CurveCreator_Widget::onAddNewSection() -{ - if( !myEdit ) - return; - CurveCreator::Coordinates aCoords; - myEdit->addSection( myNewSectionEditor->getName().toStdString(), myNewSectionEditor->getSectionType(), - myNewSectionEditor->isClosed(), aCoords ); - mySectionView->sectionAdded( mySection ); - QString aNewName = QString(myCurve->getUnicSectionName().c_str()); - myNewSectionEditor->setSectionName(aNewName); - mySection++; - onSelectionChanged(); -} - -QAction* CurveCreator_Widget::createAction( ActionId theId, const QString& theName, const QPixmap& theImage, - const QString& theToolTip, const QKeySequence& theShortcut ) -{ - QAction* anAct = new QAction(theName,this); - if( !theImage.isNull() ){ - anAct->setIcon(theImage); - } - anAct->setShortcut(theShortcut); - anAct->setToolTip(theToolTip); - myActionMap[theId] = anAct; - return anAct; -} - -QAction* CurveCreator_Widget::getAction(ActionId theId) -{ - if( myActionMap.contains(theId) ) - return myActionMap[theId]; - return NULL; -} - -void CurveCreator_Widget::onEditSection( int theSection ) -{ - if( !myEdit ) - return; - mySection = theSection; - QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection)); - bool isClosed = myCurve->isClosed(theSection); - CurveCreator::Type aType = myCurve->getType(theSection); - myNewSectionEditor->setEditMode(true); - myNewSectionEditor->setSectionParameters( aSectName, isClosed, aType ); - if( myNewSectionEditor->exec() == QDialog::Accepted ){ - QString aName = myNewSectionEditor->getName(); - bool isClosed = myNewSectionEditor->isClosed(); - CurveCreator::Type aSectType = myNewSectionEditor->getSectionType(); - myEdit->setClosed( isClosed, mySection ); - myEdit->setName( aName.toStdString(), mySection ); - myEdit->setType( aSectType, mySection ); - mySectionView->sectionChanged(mySection); - } -} - -void CurveCreator_Widget::onEditPoint( int theSection, int thePoint ) -{ - if( !myNewPointEditor ) - return; - if( !myEdit ) - return; - QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection)); - myNewPointEditor->setEditMode(true); - myNewPointEditor->setSectionName(aSectName); - myNewPointEditor->setDimension( myCurve->getDimension() ); - CurveCreator::Coordinates aCoords = myCurve->getCoordinates(theSection,thePoint); - myNewPointEditor->setCoordinates(aCoords); - if( myNewPointEditor->exec() == QDialog::Accepted ){ - aCoords = myNewPointEditor->getCoordinates(); - myEdit->setCoordinates(aCoords, theSection, thePoint); - mySectionView->pointDataChanged(theSection, thePoint ); - } -} - -void CurveCreator_Widget::onJoin() -{ - if( !myEdit ) - return; - QList aSections = mySectionView->getSelectedSections(); - if( aSections.size() == 0 ){ - return; - } - int aMainSect = aSections[0]; - int aMainSectSize = myCurve->getNbPoints(aMainSect); - for( int i = 1 ; i < aSections.size() ; i++ ){ - int aSectNum = aSections[i] - (i-1); - myEdit->join( aMainSect, aSectNum ); - mySectionView->sectionsRemoved( aSectNum ); - } - int aNewSectSize = myCurve->getNbPoints(aMainSect); - if( aNewSectSize != aMainSectSize ) - mySectionView->pointsAdded( aMainSect, aMainSectSize, aNewSectSize-aMainSectSize ); -} - -void CurveCreator_Widget::onRemove() -{ - if( !myEdit ) - return; - QList< QPair > aSelPoints = mySectionView->getSelectedPoints(); - int aCurrSect=-1; - int aRemoveCnt = 0; - for( int i = 0 ; i < aSelPoints.size() ; i++ ){ - if( aCurrSect != aSelPoints[i].first ){ - aRemoveCnt = 0; - aCurrSect = aSelPoints[i].first; - } - int aPntIndx = aSelPoints[i].second - aRemoveCnt; - myEdit->removePoints(aCurrSect,aPntIndx, 1); - mySectionView->pointsRemoved( aCurrSect, aPntIndx ); - aRemoveCnt++; - } - QList aSections = mySectionView->getSelectedSections(); - for( int i = 0 ; i < aSections.size() ; i++ ){ - int aSectNum = aSections[i] - (i); - myEdit->removeSection( aSectNum ); - mySectionView->sectionsRemoved( aSectNum ); - } - mySectionView->clearSelection(); -} - -void CurveCreator_Widget::onMoveUp() -{ - if( !myEdit ) - return; - if( mySectionView->getSelectionType() == CurveCreator_TreeView::ST_SECTIONS ){ - //Move sections - QList aSections = mySectionView->getSelectedSections(); - for( int i = 0 ; i < aSections.size() ; i++ ){ - int anIndx = aSections[i]; - myEdit->moveSection( anIndx, anIndx-1); - mySectionView->sectionsSwapped( anIndx, -1 ); - } - } - else{ - //Move points - QList< QPair > aPoints = mySectionView->getSelectedPoints(); - for( int i = 0 ; i < aPoints.size() ; i++ ){ - int aSection = aPoints[i].first; - int aPoint = aPoints[i].second; - myEdit->movePoint(aSection, aPoint, aPoint-2); - mySectionView->pointsSwapped( aSection, aPoint, -1 ); - } - } -} - -void CurveCreator_Widget::onMoveDown() -{ - if( !myEdit ) - return; - if( mySectionView->getSelectionType() == CurveCreator_TreeView::ST_SECTIONS ){ - //Move sections - QList aSections = mySectionView->getSelectedSections(); - for( int i = aSections.size()-1 ; i >=0 ; i-- ){ - int anIndx = aSections[i]; - myEdit->moveSection( anIndx, anIndx+1); - mySectionView->sectionsSwapped( anIndx, 1 ); - } - } - else{ - //Move points - QList< QPair > aPoints = mySectionView->getSelectedPoints(); - for( int i = aPoints.size() - 1; i >= 0 ; i-- ){ - int aSection = aPoints[i].first; - int aPoint = aPoints[i].second; - myEdit->movePoint(aSection, aPoint, aPoint+1); - mySectionView->pointsSwapped( aSection, aPoint, 1 ); - } - } -} - -void CurveCreator_Widget::onClearAll() -{ - if( !myEdit ) - return; - myEdit->clear(); - mySectionView->reset(); - onSelectionChanged(); -} - -void CurveCreator_Widget::onJoinAll() -{ - if( !myEdit ) - return; - myEdit->join(); - mySectionView->reset(); - onSelectionChanged(); -} - -void CurveCreator_Widget::onInsertSectionBefore() -{ - -} - -void CurveCreator_Widget::onInsertSectionAfter() -{ - -} - -void CurveCreator_Widget::onInsertPointBefore() -{ - -} - -void CurveCreator_Widget::onInsertPointAfter() -{ - -} - -void CurveCreator_Widget::onUndoSettings() -{ - -} - -void CurveCreator_Widget::onSetSpline() -{ - if( !myEdit ) - return; - QList aSelSections = mySectionView->getSelectedSections(); - for( int i = 0 ; i < aSelSections.size() ; i++ ){ - myEdit->setType(CurveCreator::BSpline, aSelSections[i]); - mySectionView->sectionChanged(aSelSections[i]); - } -} - -void CurveCreator_Widget::onSetPolyline() -{ - if( !myEdit ) - return; - QList aSelSections = mySectionView->getSelectedSections(); - for( int i = 0 ; i < aSelSections.size() ; i++ ){ - myEdit->setType(CurveCreator::Polyline, aSelSections[i]); - mySectionView->sectionChanged(aSelSections[i]); - } -} - -void CurveCreator_Widget::onCloseSections() -{ - if( !myEdit ) - return; - QList aSelSections = mySectionView->getSelectedSections(); - for( int i = 0 ; i < aSelSections.size() ; i++ ){ - myEdit->setClosed(true, aSelSections[i]); - mySectionView->sectionChanged(aSelSections[i]); - } -} - -void CurveCreator_Widget::onUncloseSections() -{ - if( !myEdit ) - return; - QList aSelSections = mySectionView->getSelectedSections(); - for( int i = 0 ; i < aSelSections.size() ; i++ ){ - myEdit->setClosed(false, aSelSections[i]); - mySectionView->sectionChanged(aSelSections[i]); - } -} - -void CurveCreator_Widget::onContextMenu( QPoint thePoint ) -{ - QList aContextActions; - aContextActions << CLEAR_ALL_ID << JOIN_ALL_ID << SEPARATOR_ID << - INSERT_SECTION_BEFORE_ID << INSERT_SECTION_AFTER_ID << SEPARATOR_ID << - CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID << SET_SECTIONS_POLYLINE_ID << - SET_SECTIONS_SPLINE_ID << SEPARATOR_ID << - INSERT_POINT_BEFORE_ID << INSERT_POINT_AFTER_ID; - QPoint aGlPoint = mySectionView->mapToGlobal(thePoint); - bool isVis = false; - QList aResAct; - for( int i = 0 ; i < aContextActions.size() ; i++ ){ - if( aContextActions[i] != SEPARATOR_ID ){ - if( myActionMap.contains(aContextActions[i]) ){ - QAction* anAct = myActionMap[aContextActions[i]]; - if( anAct->isEnabled() ){ - aResAct << aContextActions[i]; - isVis = true; - } - } - } - else{ - aResAct << SEPARATOR_ID; - } - } - if( !isVis ) - return; - - QMenu* aMenu = new QMenu(this); - for( int i = 0 ; i < aResAct.size() ; i++ ){ - if( aResAct[i] == SEPARATOR_ID ){ - aMenu->addSeparator(); - } - else{ - QAction* anAct = myActionMap[aResAct[i]]; - aMenu->insertAction(NULL, anAct); - } - } - aMenu->exec(aGlPoint); -} +#include "CurveCreator_Widget.h" +#include "CurveCreator_TreeView.h" +#include "QVBoxLayout" +#include "CurveCreator_Curve.hxx" +#include "CurveCreator_CurveEditor.hxx" +#include "CurveCreator.hxx" +#include "CurveCreator_NewPointDlg.h" +#include "CurveCreator_NewSectionDlg.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +CurveCreator_Widget::CurveCreator_Widget(QWidget* parent, + CurveCreator_Curve *theCurve, + Qt::WindowFlags fl) : + QWidget(parent), myNewPointEditor(NULL), myNewSectionEditor(NULL), myEdit(NULL), myCurve(theCurve) +{ + if( myCurve ) + myEdit = new CurveCreator_CurveEditor( myCurve ); + + CurveCreator::Dimension aDim = CurveCreator::Dim3d; + if( myCurve ) + aDim = myCurve->getDimension(); + myNewPointEditor = new CurveCreator_NewPointDlg(aDim, this); + connect( myNewPointEditor, SIGNAL(addPoint()), this, SLOT(onAddNewPoint())); + + myNewSectionEditor = new CurveCreator_NewSectionDlg(this); + connect( myNewSectionEditor, SIGNAL(addSection()), this, SLOT(onAddNewSection())); + + QGroupBox* aSectionGroup = new QGroupBox(tr("Sections"),this); + + mySectionView = new CurveCreator_TreeView(myCurve, aSectionGroup); + connect( mySectionView, SIGNAL(selectionChanged()), this, SLOT( onSelectionChanged() ) ); + connect( mySectionView, SIGNAL(pointEntered(int,int)), this, SLOT(onEditPoint(int,int)) ); + connect( mySectionView, SIGNAL(sectionEntered(int)), this, SLOT(onEditSection(int)) ); + connect( mySectionView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenu(QPoint)) ); + QToolBar* aTB = new QToolBar(tr("TOOL_BAR_TLT"), aSectionGroup); +// QToolButton* anUndoBtn = new QToolButton(aTB); + + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + QPixmap anUndoPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_UNDO"))); + QPixmap aRedoPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_REDO"))); + QPixmap aNewSectionPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_NEW_SECTION"))); + QPixmap aNewPointPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_NEW_POINT"))); + QPixmap aPolylinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_POLYLINE"))); + QPixmap aSplinePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_SPLINE"))); + QPixmap aRemovePixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_DELETE"))); + QPixmap aJoinPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_JOIN"))); + QPixmap aStepUpPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_ARROW_UP"))); + QPixmap aStepDownPixmap(aResMgr->loadPixmap("GEOM", tr("ICON_CC_ARROW_DOWN"))); + +/* QPixmap anUndoPixmap = QPixmap(tr(":images/ICON_UNDO")); + QPixmap aRedoPixmap = QPixmap(tr(":images/ICON_REDO")); + QPixmap aNewSectionPixmap = QPixmap(tr(":images/ICON_NEW_SECTION")); + QPixmap aNewPointPixmap = QPixmap(tr(":images/ICON_NEW_POINT")); + QPixmap aPolylinePixmap = QPixmap(tr(":images/ICON_POLYLINE")); + QPixmap aSplinePixmap = QPixmap(tr(":images/ICON_SPLINE")); + QPixmap aRemovePixmap = QPixmap(tr(":images/ICON_REMOVE")); + QPixmap aJoinPixmap = QPixmap(tr(":images/ICON_JOIN")); + QPixmap aStepUpPixmap = QPixmap(tr(":images/ICON_STEP_UP")); + QPixmap aStepDownPixmap = QPixmap(tr(":images/ICON_STEP_DOWN"));*/ + + QAction* anAct = createAction( UNDO_ID, tr("UNDO"), anUndoPixmap, tr("UNDO_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_Z) ); + aTB->addAction(anAct); + + anAct = createAction( REDO_ID, tr("REDO"), aRedoPixmap, tr("REDO_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_Y) ); + aTB->addAction(anAct); + + aTB->addSeparator(); + + anAct = createAction( NEW_SECTION_ID, tr("NEW_SECTION"), aNewSectionPixmap, tr("NEW_SECTION_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_N) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onNewSection()) ); + aTB->addAction(anAct); + + anAct = createAction( INSERT_SECTION_BEFORE_ID, tr("INSERT_SECTION_BEFORE"), QPixmap(), + tr("INSERT_SECTION_BEFORE_TLT"), + QKeySequence(Qt::ControlModifier | Qt::Key_Insert ) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertSectionBefore()) ); + + anAct = createAction( INSERT_SECTION_AFTER_ID, tr("INSERT_SECTION_AFTER"), QPixmap(), + tr("INSERT_SECTION_AFTER_TLT"), + QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Insert ) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertSectionAfter()) ); + + anAct = createAction( NEW_POINT_ID, tr("NEW_POINT"), aNewPointPixmap, tr("NEW_POINT_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_P) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onNewPoint()) ); + aTB->addAction(anAct); + aTB->addSeparator(); + + anAct = createAction( INSERT_POINT_BEFORE_ID, tr("INSERT_POINT_BEFORE"), QPixmap(), + tr("INSERT_POINT_BEFORE_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_B) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertPointBefore()) ); + + anAct = createAction( INSERT_POINT_AFTER_ID, tr("INSERT_POINT_AFTER"), QPixmap(), + tr("INSERT_POINT_AFTER_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_M) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onInsertPointAfter()) ); + + anAct = createAction( CLOSE_SECTIONS_ID, tr("CLOSE_SECTIONS"), QPixmap(), tr("CLOSE_SECTIONS_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_W) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onCloseSections()) ); + + anAct = createAction( UNCLOSE_SECTIONS_ID, tr("UNCLOSE_SECTIONS"), QPixmap(), + tr("UNCLOSE_SECTIONS_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_S) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onUncloseSections()) ); + + anAct = createAction( SET_SECTIONS_POLYLINE_ID, tr("SET_SECTIONS_POLYLINE"), + aPolylinePixmap, tr("SET_POLYLINE_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_E) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onSetPolyline()) ); + + anAct = createAction( SET_SECTIONS_SPLINE_ID, tr("SET_SECTIONS_SPLINE"), aSplinePixmap, + tr("SET_SPLINE_TLT"), QKeySequence(Qt::ControlModifier|Qt::Key_R) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onSetSpline()) ); + + anAct = createAction( REMOVE_ID, tr("REMOVE"), aRemovePixmap, tr("REMOVE_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_Delete ) ); + connect(anAct, SIGNAL(triggered()), this, SLOT(onRemove()) ); + aTB->addAction(anAct); + aTB->addSeparator(); + + anAct = createAction( JOIN_ID, tr("JOIN"), aJoinPixmap, tr("JOIN_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_Plus ) ); + connect( anAct, SIGNAL(triggered()), this, SLOT(onJoin()) ); + aTB->addAction(anAct); + aTB->addSeparator(); + + anAct = createAction( UP_ID, tr("STEP_UP"), aStepUpPixmap, tr("STEP_UP_TLT"), + QKeySequence(Qt::ControlModifier|Qt::Key_Up ) ); + connect( anAct, SIGNAL(triggered()), this, SLOT(onMoveUp()) ); + aTB->addAction(anAct); + + anAct = createAction( DOWN_ID, tr("STEP_DOWN"), aStepDownPixmap, tr("STEP_DOWN"), + QKeySequence(Qt::ControlModifier|Qt::Key_Down ) ); + connect( anAct, SIGNAL(triggered()), this, SLOT(onMoveDown()) ); + aTB->addAction(anAct); + + anAct = createAction( CLEAR_ALL_ID, tr("CLEAR_ALL"), QPixmap(), tr("CLEAR_ALL_TLT"), + QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Delete ) ); + connect( anAct, SIGNAL(triggered()), this, SLOT( onClearAll()) ); + + anAct = createAction( JOIN_ALL_ID, tr("JOIN_ALL"), QPixmap(), tr("JOIN_ALL_TLT"), + QKeySequence(Qt::ControlModifier | Qt::ShiftModifier | Qt::Key_Plus ) ); + connect( anAct, SIGNAL(triggered()), this, SLOT(onJoinAll()) ); + + QVBoxLayout* aSectLayout = new QVBoxLayout(); + aSectLayout->addWidget(aTB); + aSectLayout->addWidget(mySectionView); + aSectionGroup->setLayout(aSectLayout); + QVBoxLayout* aLay = new QVBoxLayout(); +// aLay->addLayout(aNameLayout); + aLay->addWidget(aSectionGroup); + setLayout(aLay); + onSelectionChanged(); +} + +void CurveCreator_Widget::setCurve( CurveCreator_Curve* theCurve ) +{ + if( myEdit != NULL ){ + delete myEdit; + myEdit = NULL; + } + myCurve = theCurve; + mySectionView->setCurve(myCurve); + if( myCurve != NULL ){ + myEdit = new CurveCreator_CurveEditor(myCurve); + } + onSelectionChanged(); +} + +void CurveCreator_Widget::onSelectionChanged() +{ + QList anEnabledAct; + if( myCurve ){ + anEnabledAct << NEW_SECTION_ID; + int aSectCnt = myCurve->getNbPoints(); + if( aSectCnt > 0 ) + anEnabledAct << CLEAR_ALL_ID; + if( aSectCnt > 1 ) + anEnabledAct << JOIN_ALL_ID; + QList aSelSections = mySectionView->getSelectedSections(); + QList< QPair< int, int > > aSelPoints = mySectionView->getSelectedPoints(); + CurveCreator_TreeView::SelectionType aSelType = mySectionView->getSelectionType(); + switch( aSelType ){ + case CurveCreator_TreeView::ST_NOSEL:{ + break; + } + case CurveCreator_TreeView::ST_SECTIONS:{ + if( aSelSections.size() > 1 ){ + anEnabledAct << JOIN_ID; + } + if( aSelSections[0] > 0 ){ + anEnabledAct << UP_ID; + } + if( aSelSections.size() == 1 ){ + anEnabledAct << NEW_POINT_ID << INSERT_SECTION_BEFORE_ID << INSERT_SECTION_AFTER_ID; + } + if( aSelSections[ aSelSections.size() - 1 ] < ( myCurve->getNbSections() - 1 ) ){ + anEnabledAct << DOWN_ID; + } + anEnabledAct << CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID << SET_SECTIONS_POLYLINE_ID << SET_SECTIONS_SPLINE_ID; + break; + } + case CurveCreator_TreeView::ST_POINTS_ONE_SECTION:{ + if( aSelPoints[0].second > 0 ){ + anEnabledAct << UP_ID; + } + int aLastIndex = aSelPoints.size()-1; + int aSect = aSelPoints[0].first; + if( aSelPoints[aLastIndex].second < (myCurve->getNbPoints(aSect) - 1)){ + anEnabledAct << DOWN_ID; + } + if( aSelPoints.size() == 1){ + anEnabledAct << INSERT_POINT_BEFORE_ID << INSERT_POINT_AFTER_ID; + } + break; + } + } + int aSelObjsCnt = aSelPoints.size() + aSelSections.size(); + if( aSelObjsCnt > 0 ){ + anEnabledAct << REMOVE_ID; + } + if( (myCurve->getNbSections() + myCurve->getNbPoints()) > 0 ){ + anEnabledAct << REMOVE_ALL_ID; + } + if( myCurve->getNbSections() > 1 ){ + anEnabledAct << JOIN_ALL_ID; + } + } + QList anIds = myActionMap.keys(); + for( int i = 0 ; i < anIds.size() ; i++ ){ + if( myActionMap.contains(anIds[i]) ){ + if( anEnabledAct.contains(anIds[i]) ){ + myActionMap[anIds[i]]->setEnabled(true); + } + else{ + myActionMap[anIds[i]]->setEnabled(false); + } + } + } +} + +void CurveCreator_Widget::onNewPoint() +{ + if( !myEdit ) + return; + mySection= -1; + myPointNum = -1; + QList aSelSection = mySectionView->getSelectedSections(); + if( aSelSection.size() > 0 ){ + mySection = aSelSection[0]; + } + else{ + QList< QPair > aSelPoints = mySectionView->getSelectedPoints(); + if( aSelPoints.size() > 0 ){ + mySection = aSelPoints[0].first; + myPointNum = aSelPoints[0].second + 1; + } + } + QString aSectName; + if( mySection < 0 ){ + mySection = myCurve->getNbSections() - 1; + } + aSectName = QString::fromStdString( myCurve->getSectionName(mySection)); + if( myPointNum < 0 ){ + myPointNum = myCurve->getNbPoints(mySection); + } + myNewPointEditor->clear(); + myNewPointEditor->setEditMode(false); + myNewPointEditor->setSectionName(aSectName); + myNewPointEditor->setDimension(myCurve->getDimension()); + if( myNewPointEditor->exec() == QDialog::Accepted ){ + onAddNewPoint(); + } +} + +void CurveCreator_Widget::onAddNewPoint() +{ + if( !myEdit ) + return; + CurveCreator::Coordinates aCoords = myNewPointEditor->getCoordinates(); + myEdit->insertPoints(aCoords, mySection, myPointNum ); + mySectionView->pointsAdded( mySection, myPointNum ); + myNewPointEditor->clear(); + myPointNum++; + onSelectionChanged(); +} + +void CurveCreator_Widget::onNewSection() +{ + if( !myEdit ) + return; + myNewSectionEditor->clear(); + myNewSectionEditor->setEditMode(false); + QString aSectName = QString( myCurve->getUnicSectionName().c_str() ); + myNewSectionEditor->setSectionParameters(aSectName, true, CurveCreator::Polyline ); + if( myNewSectionEditor->exec() == QDialog::Accepted ){ + onAddNewSection(); + } +} + +void CurveCreator_Widget::onAddNewSection() +{ + if( !myEdit ) + return; + CurveCreator::Coordinates aCoords; + myEdit->addSection( myNewSectionEditor->getName().toStdString(), myNewSectionEditor->getSectionType(), + myNewSectionEditor->isClosed(), aCoords ); + mySectionView->sectionAdded( mySection ); + QString aNewName = QString(myCurve->getUnicSectionName().c_str()); + myNewSectionEditor->setSectionName(aNewName); + mySection++; + onSelectionChanged(); +} + +QAction* CurveCreator_Widget::createAction( ActionId theId, const QString& theName, const QPixmap& theImage, + const QString& theToolTip, const QKeySequence& theShortcut ) +{ + QAction* anAct = new QAction(theName,this); + if( !theImage.isNull() ){ + anAct->setIcon(theImage); + } + anAct->setShortcut(theShortcut); + anAct->setToolTip(theToolTip); + myActionMap[theId] = anAct; + return anAct; +} + +QAction* CurveCreator_Widget::getAction(ActionId theId) +{ + if( myActionMap.contains(theId) ) + return myActionMap[theId]; + return NULL; +} + +void CurveCreator_Widget::onEditSection( int theSection ) +{ + if( !myEdit ) + return; + mySection = theSection; + QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection)); + bool isClosed = myCurve->isClosed(theSection); + CurveCreator::Type aType = myCurve->getType(theSection); + myNewSectionEditor->setEditMode(true); + myNewSectionEditor->setSectionParameters( aSectName, isClosed, aType ); + if( myNewSectionEditor->exec() == QDialog::Accepted ){ + QString aName = myNewSectionEditor->getName(); + bool isClosed = myNewSectionEditor->isClosed(); + CurveCreator::Type aSectType = myNewSectionEditor->getSectionType(); + myEdit->setClosed( isClosed, mySection ); + myEdit->setName( aName.toStdString(), mySection ); + myEdit->setType( aSectType, mySection ); + mySectionView->sectionChanged(mySection); + } +} + +void CurveCreator_Widget::onEditPoint( int theSection, int thePoint ) +{ + if( !myNewPointEditor ) + return; + if( !myEdit ) + return; + QString aSectName = QString::fromStdString( myCurve->getSectionName(theSection)); + myNewPointEditor->setEditMode(true); + myNewPointEditor->setSectionName(aSectName); + myNewPointEditor->setDimension( myCurve->getDimension() ); + CurveCreator::Coordinates aCoords = myCurve->getCoordinates(theSection,thePoint); + myNewPointEditor->setCoordinates(aCoords); + if( myNewPointEditor->exec() == QDialog::Accepted ){ + aCoords = myNewPointEditor->getCoordinates(); + myEdit->setCoordinates(aCoords, theSection, thePoint); + mySectionView->pointDataChanged(theSection, thePoint ); + } +} + +void CurveCreator_Widget::onJoin() +{ + if( !myEdit ) + return; + QList aSections = mySectionView->getSelectedSections(); + if( aSections.size() == 0 ){ + return; + } + int aMainSect = aSections[0]; + int aMainSectSize = myCurve->getNbPoints(aMainSect); + for( int i = 1 ; i < aSections.size() ; i++ ){ + int aSectNum = aSections[i] - (i-1); + myEdit->join( aMainSect, aSectNum ); + mySectionView->sectionsRemoved( aSectNum ); + } + int aNewSectSize = myCurve->getNbPoints(aMainSect); + if( aNewSectSize != aMainSectSize ) + mySectionView->pointsAdded( aMainSect, aMainSectSize, aNewSectSize-aMainSectSize ); +} + +void CurveCreator_Widget::onRemove() +{ + if( !myEdit ) + return; + QList< QPair > aSelPoints = mySectionView->getSelectedPoints(); + int aCurrSect=-1; + int aRemoveCnt = 0; + for( int i = 0 ; i < aSelPoints.size() ; i++ ){ + if( aCurrSect != aSelPoints[i].first ){ + aRemoveCnt = 0; + aCurrSect = aSelPoints[i].first; + } + int aPntIndx = aSelPoints[i].second - aRemoveCnt; + myEdit->removePoints(aCurrSect,aPntIndx, 1); + mySectionView->pointsRemoved( aCurrSect, aPntIndx ); + aRemoveCnt++; + } + QList aSections = mySectionView->getSelectedSections(); + for( int i = 0 ; i < aSections.size() ; i++ ){ + int aSectNum = aSections[i] - (i); + myEdit->removeSection( aSectNum ); + mySectionView->sectionsRemoved( aSectNum ); + } + mySectionView->clearSelection(); +} + +void CurveCreator_Widget::onMoveUp() +{ + if( !myEdit ) + return; + if( mySectionView->getSelectionType() == CurveCreator_TreeView::ST_SECTIONS ){ + //Move sections + QList aSections = mySectionView->getSelectedSections(); + for( int i = 0 ; i < aSections.size() ; i++ ){ + int anIndx = aSections[i]; + myEdit->moveSection( anIndx, anIndx-1); + mySectionView->sectionsSwapped( anIndx, -1 ); + } + } + else{ + //Move points + QList< QPair > aPoints = mySectionView->getSelectedPoints(); + for( int i = 0 ; i < aPoints.size() ; i++ ){ + int aSection = aPoints[i].first; + int aPoint = aPoints[i].second; + myEdit->movePoint(aSection, aPoint, aPoint-2); + mySectionView->pointsSwapped( aSection, aPoint, -1 ); + } + } +} + +void CurveCreator_Widget::onMoveDown() +{ + if( !myEdit ) + return; + if( mySectionView->getSelectionType() == CurveCreator_TreeView::ST_SECTIONS ){ + //Move sections + QList aSections = mySectionView->getSelectedSections(); + for( int i = aSections.size()-1 ; i >=0 ; i-- ){ + int anIndx = aSections[i]; + myEdit->moveSection( anIndx, anIndx+1); + mySectionView->sectionsSwapped( anIndx, 1 ); + } + } + else{ + //Move points + QList< QPair > aPoints = mySectionView->getSelectedPoints(); + for( int i = aPoints.size() - 1; i >= 0 ; i-- ){ + int aSection = aPoints[i].first; + int aPoint = aPoints[i].second; + myEdit->movePoint(aSection, aPoint, aPoint+1); + mySectionView->pointsSwapped( aSection, aPoint, 1 ); + } + } +} + +void CurveCreator_Widget::onClearAll() +{ + if( !myEdit ) + return; + myEdit->clear(); + mySectionView->reset(); + onSelectionChanged(); +} + +void CurveCreator_Widget::onJoinAll() +{ + if( !myEdit ) + return; + myEdit->join(); + mySectionView->reset(); + onSelectionChanged(); +} + +void CurveCreator_Widget::onInsertSectionBefore() +{ + +} + +void CurveCreator_Widget::onInsertSectionAfter() +{ + +} + +void CurveCreator_Widget::onInsertPointBefore() +{ + +} + +void CurveCreator_Widget::onInsertPointAfter() +{ + +} + +void CurveCreator_Widget::onUndoSettings() +{ + +} + +void CurveCreator_Widget::onSetSpline() +{ + if( !myEdit ) + return; + QList aSelSections = mySectionView->getSelectedSections(); + for( int i = 0 ; i < aSelSections.size() ; i++ ){ + myEdit->setType(CurveCreator::BSpline, aSelSections[i]); + mySectionView->sectionChanged(aSelSections[i]); + } +} + +void CurveCreator_Widget::onSetPolyline() +{ + if( !myEdit ) + return; + QList aSelSections = mySectionView->getSelectedSections(); + for( int i = 0 ; i < aSelSections.size() ; i++ ){ + myEdit->setType(CurveCreator::Polyline, aSelSections[i]); + mySectionView->sectionChanged(aSelSections[i]); + } +} + +void CurveCreator_Widget::onCloseSections() +{ + if( !myEdit ) + return; + QList aSelSections = mySectionView->getSelectedSections(); + for( int i = 0 ; i < aSelSections.size() ; i++ ){ + myEdit->setClosed(true, aSelSections[i]); + mySectionView->sectionChanged(aSelSections[i]); + } +} + +void CurveCreator_Widget::onUncloseSections() +{ + if( !myEdit ) + return; + QList aSelSections = mySectionView->getSelectedSections(); + for( int i = 0 ; i < aSelSections.size() ; i++ ){ + myEdit->setClosed(false, aSelSections[i]); + mySectionView->sectionChanged(aSelSections[i]); + } +} + +void CurveCreator_Widget::onContextMenu( QPoint thePoint ) +{ + QList aContextActions; + aContextActions << CLEAR_ALL_ID << JOIN_ALL_ID << SEPARATOR_ID << + INSERT_SECTION_BEFORE_ID << INSERT_SECTION_AFTER_ID << SEPARATOR_ID << + CLOSE_SECTIONS_ID << UNCLOSE_SECTIONS_ID << SET_SECTIONS_POLYLINE_ID << + SET_SECTIONS_SPLINE_ID << SEPARATOR_ID << + INSERT_POINT_BEFORE_ID << INSERT_POINT_AFTER_ID; + QPoint aGlPoint = mySectionView->mapToGlobal(thePoint); + bool isVis = false; + QList aResAct; + for( int i = 0 ; i < aContextActions.size() ; i++ ){ + if( aContextActions[i] != SEPARATOR_ID ){ + if( myActionMap.contains(aContextActions[i]) ){ + QAction* anAct = myActionMap[aContextActions[i]]; + if( anAct->isEnabled() ){ + aResAct << aContextActions[i]; + isVis = true; + } + } + } + else{ + aResAct << SEPARATOR_ID; + } + } + if( !isVis ) + return; + + QMenu* aMenu = new QMenu(this); + for( int i = 0 ; i < aResAct.size() ; i++ ){ + if( aResAct[i] == SEPARATOR_ID ){ + aMenu->addSeparator(); + } + else{ + QAction* anAct = myActionMap[aResAct[i]]; + aMenu->insertAction(NULL, anAct); + } + } + aMenu->exec(aGlPoint); +} diff --git a/src/CurveCreator/CurveCreator_Widget.h b/src/CurveCreator/CurveCreator_Widget.h index 5a3c55dcd..88f4a7aa6 100644 --- a/src/CurveCreator/CurveCreator_Widget.h +++ b/src/CurveCreator/CurveCreator_Widget.h @@ -1,75 +1,75 @@ -#ifndef CURVECREATOR_WIDGET_H -#define CURVECREATOR_WIDGET_H - -#include "CurveCreator_Curve.hxx" - -#include - -#include - -class QAction; -class QPixmap; -class CurveCreator_CurveEditor; -class CurveCreator_TreeView; -class CurveCreator_NewPointDlg; -class CurveCreator_NewSectionDlg; - -class CurveCreator_Widget : public QWidget -{ - Q_OBJECT -public: - explicit CurveCreator_Widget( QWidget* parent, - CurveCreator_Curve *theCurve, - Qt::WindowFlags fl=0 ); - - void setCurve( CurveCreator_Curve* theCurve ); - -signals: - -public slots: - -protected slots: - void onNewPoint(); - void onNewSection(); - void onSelectionChanged(); - void onAddNewPoint(); - void onAddNewSection(); - void onEditSection( int theSection ); - void onEditPoint( int theSection, int thePoint ); - void onJoin(); - void onRemove(); - void onMoveUp(); - void onMoveDown(); - void onClearAll(); - void onJoinAll(); - void onInsertSectionBefore(); - void onInsertSectionAfter(); - void onSetSpline(); - void onSetPolyline(); - void onCloseSections(); - void onUncloseSections(); - void onInsertPointBefore(); - void onInsertPointAfter(); - void onUndoSettings(); - void onContextMenu(QPoint thePoint); -protected: - enum ActionId{ UNDO_ID, REDO_ID, NEW_SECTION_ID, NEW_POINT_ID, REMOVE_ID, REMOVE_ALL_ID, JOIN_ID, - JOIN_ALL_ID, UP_ID, DOWN_ID, INSERT_SECTION_BEFORE_ID, INSERT_SECTION_AFTER_ID, - INSERT_POINT_BEFORE_ID, INSERT_POINT_AFTER_ID, CLOSE_SECTIONS_ID, UNCLOSE_SECTIONS_ID, - SET_SECTIONS_POLYLINE_ID, SET_SECTIONS_SPLINE_ID, CLEAR_ALL_ID, SEPARATOR_ID }; -private: - QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage, - const QString& theToolTip, const QKeySequence& theShortcut ); - QAction* getAction(ActionId theId); -private: - QMap myActionMap; - CurveCreator_Curve* myCurve; - CurveCreator_CurveEditor* myEdit; - CurveCreator_TreeView* mySectionView; - CurveCreator_NewPointDlg* myNewPointEditor; - CurveCreator_NewSectionDlg* myNewSectionEditor; - int mySection; - int myPointNum; -}; - -#endif // CURVECREATOR_WIDGET_H +#ifndef CURVECREATOR_WIDGET_H +#define CURVECREATOR_WIDGET_H + +#include "CurveCreator_Curve.hxx" + +#include + +#include + +class QAction; +class QPixmap; +class CurveCreator_CurveEditor; +class CurveCreator_TreeView; +class CurveCreator_NewPointDlg; +class CurveCreator_NewSectionDlg; + +class CURVECREATOR_EXPORT CurveCreator_Widget : public QWidget +{ + Q_OBJECT +public: + explicit CurveCreator_Widget( QWidget* parent, + CurveCreator_Curve *theCurve, + Qt::WindowFlags fl=0 ); + + void setCurve( CurveCreator_Curve* theCurve ); + +signals: + +public slots: + +protected slots: + void onNewPoint(); + void onNewSection(); + void onSelectionChanged(); + void onAddNewPoint(); + void onAddNewSection(); + void onEditSection( int theSection ); + void onEditPoint( int theSection, int thePoint ); + void onJoin(); + void onRemove(); + void onMoveUp(); + void onMoveDown(); + void onClearAll(); + void onJoinAll(); + void onInsertSectionBefore(); + void onInsertSectionAfter(); + void onSetSpline(); + void onSetPolyline(); + void onCloseSections(); + void onUncloseSections(); + void onInsertPointBefore(); + void onInsertPointAfter(); + void onUndoSettings(); + void onContextMenu(QPoint thePoint); +protected: + enum ActionId{ UNDO_ID, REDO_ID, NEW_SECTION_ID, NEW_POINT_ID, REMOVE_ID, REMOVE_ALL_ID, JOIN_ID, + JOIN_ALL_ID, UP_ID, DOWN_ID, INSERT_SECTION_BEFORE_ID, INSERT_SECTION_AFTER_ID, + INSERT_POINT_BEFORE_ID, INSERT_POINT_AFTER_ID, CLOSE_SECTIONS_ID, UNCLOSE_SECTIONS_ID, + SET_SECTIONS_POLYLINE_ID, SET_SECTIONS_SPLINE_ID, CLEAR_ALL_ID, SEPARATOR_ID }; +private: + QAction* createAction( ActionId theId, const QString& theName, const QPixmap& theImage, + const QString& theToolTip, const QKeySequence& theShortcut ); + QAction* getAction(ActionId theId); +private: + QMap myActionMap; + CurveCreator_Curve* myCurve; + CurveCreator_CurveEditor* myEdit; + CurveCreator_TreeView* mySectionView; + CurveCreator_NewPointDlg* myNewPointEditor; + CurveCreator_NewSectionDlg* myNewSectionEditor; + int mySection; + int myPointNum; +}; + +#endif // CURVECREATOR_WIDGET_H diff --git a/src/CurveCreator/Makefile.am b/src/CurveCreator/Makefile.am index 6372a395e..8bd4a3689 100644 --- a/src/CurveCreator/Makefile.am +++ b/src/CurveCreator/Makefile.am @@ -55,7 +55,7 @@ salomeinclude_HEADERS = \ if GEOM_ENABLE_GUI dist_libCurveCreator_la_SOURCES += \ CurveCreator_NewPointDlg.h \ - CurveCreator_NewSection.h \ + CurveCreator_NewSectionDlg.h \ CurveCreator_TreeView.h \ CurveCreator_Widget.h \ CurveCreator_NewPointDlg.cxx \ @@ -87,5 +87,7 @@ libCurveCreator_la_CPPFLAGS = \ $(GUI_CXXFLAGS) libCurveCreator_la_LDFLAGS = \ - $(KERNEL_LDFLAGS) \ - $(CAS_KERNEL) + $(QT_MT_LIBS) \ + $(CAS_KERNEL) \ + $(KERNEL_LDFLAGS) \ + $(GUI_LDFLAGS) -lqtx -lsuit -- 2.39.2