resMgr->doubleValue( "OCCViewer", "focus_value", vm->stereographicFocusValue() ));
vm->setInterocularDistance( resMgr->integerValue( "OCCViewer", "iod_type", vm->interocularDistanceType() ),
resMgr->doubleValue( "OCCViewer", "iod_value", vm->interocularDistanceValue() ));
- vm->setSelectionStyle( resMgr->integerValue( "OCCViewer", "adv_selection_mode", vm->selectionStyle() ) );
+ vm->setSelectionStyle((OCCViewer_ViewWindow::SelectionStyle) resMgr->integerValue( "OCCViewer", "adv_selection_mode", vm->selectionStyle() ) );
vm->setReverseStereo( resMgr->booleanValue( "OCCViewer", "reverse_stereo", vm->isReverseStereo() ) );
vm->setVSync( resMgr->booleanValue( "OCCViewer", "enable_vsync", vm->isVSync() ) );
continue;
OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
- occVM->setSelectionStyle(mode);
+ occVM->setSelectionStyle((OCCViewer_ViewWindow::SelectionStyle)mode);
}
}
#endif
resources/occ_view_env_texture.png
resources/occ_view_light_source.png
resources/occ_view_circle_style.png
+ resources/occ_view_polygon_style.png
resources/occ_view_rect_style.png
)
}
//**************************************************************************************
-int OCCViewer_ViewFrame::selectionStyle() const
+OCCViewer_ViewWindow::SelectionStyle OCCViewer_ViewFrame::selectionStyle() const
{
return getView(MAIN_VIEW)->selectionStyle();
}
//**************************************************************************************
-void OCCViewer_ViewFrame::setSelectionStyle(int t)
+void OCCViewer_ViewFrame::setSelectionStyle(OCCViewer_ViewWindow::SelectionStyle t)
{
foreach(OCCViewer_ViewWindow* aView, myViews) {
aView->setSelectionStyle(t);
virtual int projectionType() const;
virtual void setProjectionType( int );
- virtual int selectionStyle() const;
- virtual void setSelectionStyle(int);
+ virtual OCCViewer_ViewWindow::SelectionStyle selectionStyle() const;
+ virtual void setSelectionStyle(OCCViewer_ViewWindow::SelectionStyle);
virtual int stereoType() const;
virtual void setStereoType( const int );
#include "OCCViewer_ViewModel.h"
#include "OCCViewer.h"
-#include "OCCViewer_ViewWindow.h"
#include "OCCViewer_ViewFrame.h"
#include "OCCViewer_VService.h"
#include "OCCViewer_ViewPort3d.h"
#include <AIS_Axis.hxx>
#include <Prs3d_Drawer.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <StdSelect_ViewerSelector3d.hxx>
#include <Graphic3d_Texture2Dmanual.hxx>
#include <Graphic3d_MaterialAspect.hxx>
myAISContext = new AIS_InteractiveContext( myV3dViewer );
myAISContext->HighlightStyle(Prs3d_TypeOfHighlight_LocalSelected)->SetColor( Quantity_NOC_WHITE );
myAISContext->HighlightStyle(Prs3d_TypeOfHighlight_Selected)->SetColor( Quantity_NOC_WHITE );
+
+ // Set overlap detection for common behaviour of Rect selection and Polygon selection
+ // (both selects an object with partial overlap)
+ myAISContext->MainSelector()->AllowOverlapDetection(true);
// display isoline on planar faces (box for ex.)
myAISContext->IsoOnPlane( true );
// set projection type to orthographic
myProjectionType = 0;
- mySelectionStyle = 0;
+ mySelectionStyle = OCCViewer_ViewWindow::RectStyle;
// set stereo parameters
myStereoType = 0;
myAnaglyphFilter = 0;
myEndPnt.setX(theEvent->x()); myEndPnt.setY(theEvent->y());
bool aHasShift = (theEvent->modifiers() & Qt::ShiftModifier);
- if (!aHasShift) {
- myAISContext->ClearCurrents( false );
- emit deselection();
- }
if (myStartPnt == myEndPnt)
{
+ if (!aHasShift) {
+ myAISContext->ClearCurrents( false );
+ emit deselection();
+ }
if ( !isPreselectionEnabled() ) {
Handle(V3d_View) aView3d = aView->getViewPort()->getView();
if ( !aView3d.IsNull() ) {
- myAISContext->MoveTo( myEndPnt.x(), myEndPnt.y(), aView3d, Standard_True );
+ myAISContext->MoveTo( myEndPnt.x(), myEndPnt.y(), aView3d, Standard_True );
}
}
else
myAISContext->Select( Standard_True );
}
- else
- {
- if (aHasShift && myMultiSelectionEnabled)
- myAISContext->ShiftSelect(myStartPnt.x(), myStartPnt.y(),
- myEndPnt.x(), myEndPnt.y(),
- aView->getViewPort()->getView(), Standard_False );
- else
- myAISContext->Select(myStartPnt.x(), myStartPnt.y(),
- myEndPnt.x(), myEndPnt.y(),
- aView->getViewPort()->getView(), Standard_False );
-
- int Nb = myAISContext->NbSelected();
- if( Nb>1 && !myMultiSelectionEnabled )
- {
- myAISContext->InitSelected();
- Handle( SelectMgr_EntityOwner ) anOwner = myAISContext->SelectedOwner();
- if( !anOwner.IsNull() )
- {
- myAISContext->ClearSelected( Standard_False );
- myAISContext->AddOrRemoveSelected( anOwner, Standard_False );
- }
- }
-
- myAISContext->UpdateCurrentViewer();
- }
+ //else
+ //{
+ // if (aHasShift && myMultiSelectionEnabled)
+ // myAISContext->ShiftSelect(myStartPnt.x(), myStartPnt.y(),
+ // myEndPnt.x(), myEndPnt.y(),
+ // aView->getViewPort()->getView(), Standard_False );
+ // else
+ // myAISContext->Select(myStartPnt.x(), myStartPnt.y(),
+ // myEndPnt.x(), myEndPnt.y(),
+ // aView->getViewPort()->getView(), Standard_False );
+
+ // int Nb = myAISContext->NbSelected();
+ // if( Nb>1 && !myMultiSelectionEnabled )
+ // {
+ // myAISContext->InitSelected();
+ // Handle( SelectMgr_EntityOwner ) anOwner = myAISContext->SelectedOwner();
+ // if( !anOwner.IsNull() )
+ // {
+ // myAISContext->ClearSelected( Standard_False );
+ // myAISContext->AddOrRemoveSelected( anOwner, Standard_False );
+ // }
+ // }
+
+ // myAISContext->UpdateCurrentViewer();
+ //}
emit selectionChanged();
}
}
-int OCCViewer_Viewer::selectionStyle() const
+OCCViewer_ViewWindow::SelectionStyle OCCViewer_Viewer::selectionStyle() const
{
return mySelectionStyle;
}
-void OCCViewer_Viewer::setSelectionStyle(const int theMode)
+void OCCViewer_Viewer::setSelectionStyle(OCCViewer_ViewWindow::SelectionStyle theMode)
{
if (mySelectionStyle != theMode) {
mySelectionStyle = theMode;
#include "OCCViewer.h"
#include "OCCViewer_ClipPlane.h"
+#include "OCCViewer_ViewWindow.h"
#include "Qtx.h"
#include "SUIT_ViewModel.h"
int stereoType() const;
void setStereoType( const int );
- int selectionStyle() const;
- void setSelectionStyle(const int);
+ OCCViewer_ViewWindow::SelectionStyle selectionStyle() const;
+ void setSelectionStyle(OCCViewer_ViewWindow::SelectionStyle);
int anaglyphFilter() const;
void setAnaglyphFilter( const int );
int myAnaglyphFilter;
int myStereographicFocusType;
int myInterocularDistanceType;
- int mySelectionStyle;
+ OCCViewer_ViewWindow::SelectionStyle mySelectionStyle;
double myStereographicFocusValue;
double myInterocularDistanceValue;
delete (QRect*)mypData;
mypData = 0;
mypRectRB->clearGeometry();
+ mypRectRB->hide();
}
bool OCCViewer_RectSketcher::onKey( QKeyEvent* e )
myDelButton ( 0 ),
myMode ( Poligone )
{
- mySketchButton = Qt::RightButton;
+ mySketchButton = Qt::LeftButton;
if ( vw )
{
OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
void OCCViewer_PolygonSketcher::onDeactivate()
{
- if ( mypPolyRB )
- mypPolyRB->clearGeometry();
- if (mypCircleRB)
+ if (mypPolyRB) {
+ mypPolyRB->clearGeometry();
+ mypPolyRB->hide();
+ }
+ if (mypCircleRB) {
mypCircleRB->clearGeometry();
+ mypCircleRB->hide();
+ }
((QPolygon*)mypData)->clear();
}
-bool OCCViewer_PolygonSketcher::onKey( QKeyEvent* e )
+bool OCCViewer_PolygonSketcher::onKey(QKeyEvent* e)
{
- if ( e->key() == Qt::Key_Escape )
+ int aKey = e->key();
+ if (aKey == Qt::Key_Escape)
{
myResult = Reject;
return true;
}
- else if ( e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return )
+ else if (aKey == Qt::Key_Enter || aKey == Qt::Key_Return)
{
QPolygon* points = (QPolygon*)data();
- if ( points->count() )
+ if (points->count())
{
- QPoint last = points->point( points->count() - 1 );
- if ( last != myCurr )
+ QPoint last = points->point(points->count() - 1);
+ if (last != myCurr)
{
- points->resize( points->count() + 1 );
- points->setPoint( points->count() - 1, myCurr );
+ points->resize(points->count() + 1);
+ points->setPoint(points->count() - 1, myCurr);
}
}
myResult = Accept;
return true;
}
- else if ( e->key() == Qt::Key_Backspace && e->type() == QEvent::KeyRelease )
+ else if (aKey == Qt::Key_Backspace && e->type() == QEvent::KeyRelease)
{
QPolygon* points = (QPolygon*)data();
- if ( points->count() > 1 )
- points->resize( points->count() - 1 );
- onMouse( 0 );
+ if (points->count() > 1)
+ points->resize(points->count() - 1);
+ onMouse(0);
return true;
}
+ else if (aKey == Qt::Key_Space && e->type() == QEvent::KeyRelease)
+ {
+ OCCViewer_ViewPort3d* avp = mypViewWindow->getViewPort();
+ bool closed = false;
+ QPolygon* points = (QPolygon*)data();
+ bool valid = avp->rect().contains(myCurr);
+ if (!myStart.isNull())
+ {
+ QRect aRect(myStart.x() - myToler.width(), myStart.y() - myToler.height(),
+ 2 * myToler.width(), 2 * myToler.height());
+ closed = aRect.contains(myCurr);
+ }
+ valid = valid && isValid(points, myCurr);
+ if (closed && !valid)
+ closed = false;
+ if (closed)
+ myResult = Accept;
+ else
+ {
+ if (myStart.isNull())
+ myStart = myCurr;
+ else
+ {
+ QPoint last = points->point(points->count() - 1);
+ if (last != myCurr && valid)
+ {
+ points->resize(points->count() + 1);
+ points->setPoint(points->count() - 1, myCurr);
+ }
+ if (valid && myDbl)
+ myResult = Accept;
+ }
+ }
+ }
return true;
}
e->globalPos(), e->button(),
e->buttons(), e->modifiers() ) );
}
- else if ( e->type() == QEvent::MouseButtonRelease && ( e->button() & myAddButton ) )
- {
- if ( closed )
- myResult = Accept;
- else
- {
- if ( myStart.isNull() )
- myStart = myCurr;
- else
- {
- QPoint last = points->point( points->count() - 1 );
- if ( last != myCurr && valid )
- {
- points->resize( points->count() + 1 );
- points->setPoint( points->count() - 1, myCurr );
- }
- if ( valid && myDbl )
- myResult = Accept;
- }
- }
- }
else if ( ( e->type() == QEvent::MouseButtonRelease && ( e->button() & myDelButton ) ) ||
( e->type() == QEvent::MouseButtonDblClick && ( e->button() & myDelButton ) ) )
{
aButton == Qt::LeftButton && ( aState == Qt::ControlModifier || aState == ( Qt::ControlModifier|Qt::ShiftModifier ) ) ) ) {
myDrawRect = myEnableDrawMode;
if ( myDrawRect ) {
- drawRect();
- if ( !myCursorIsHand ) { // we are going to sketch a rectangle
- QCursor handCursor (Qt::PointingHandCursor);
- myCursorIsHand = true;
- saveCursor();
- myViewPort->setCursor( handCursor );
+ //drawRect();
+ //if ( !myCursorIsHand ) { // we are going to sketch a rectangle
+ // QCursor handCursor (Qt::PointingHandCursor);
+ // myCursorIsHand = true;
+ // saveCursor();
+ // myViewPort->setCursor( handCursor );
+ //}
+ if (!mypSketcher) {
+ SelectionStyle aStyle = selectionStyle();
+ activateSketching(aStyle == RectStyle ? Rect : Polygon);
}
- }
- emit mouseMoving( this, theEvent );
- }
- else if ( ( anInteractionStyle == SUIT_ViewModel::STANDARD &&
- aButton == Qt::RightButton && ( aState == Qt::NoModifier || Qt::ShiftModifier ) ) ||
- ( anInteractionStyle == SUIT_ViewModel::KEY_FREE &&
- aButton == Qt::RightButton && ( aState == Qt::ControlModifier || aState == ( Qt::ControlModifier|Qt::ShiftModifier ) ) ) ) {
- OCCViewer_ViewSketcher* sketcher = 0;
- QList<OCCViewer_ViewSketcher*>::Iterator it;
- for ( it = mySketchers.begin(); it != mySketchers.end() && !sketcher; ++it )
- {
- OCCViewer_ViewSketcher* sk = (*it);
- if( sk->isDefault() && sk->sketchButton() == aButton )
- sketcher = sk;
- }
- if ( sketcher && myCurSketch == -1 )
- {
- activateSketching( sketcher->type() );
- if ( mypSketcher )
- {
- myCurSketch = mypSketcher->sketchButton();
-
- if ( l_mbPressEvent )
- {
- QApplication::sendEvent( getViewPort(), l_mbPressEvent );
+ if (mypSketcher) {
+ if (l_mbPressEvent) {
+ QApplication::sendEvent(getViewPort(), l_mbPressEvent);
delete l_mbPressEvent;
l_mbPressEvent = 0;
}
- QApplication::sendEvent( getViewPort(), theEvent );
+ QApplication::sendEvent(getViewPort(), theEvent);
}
}
+ emit mouseMoving( this, theEvent );
}
+ //else if ( ( anInteractionStyle == SUIT_ViewModel::STANDARD &&
+ // aButton == Qt::RightButton && ( aState == Qt::NoModifier || Qt::ShiftModifier ) ) ||
+ // ( anInteractionStyle == SUIT_ViewModel::KEY_FREE &&
+ // aButton == Qt::RightButton && ( aState == Qt::ControlModifier || aState == ( Qt::ControlModifier|Qt::ShiftModifier ) ) ) ) {
+ // OCCViewer_ViewSketcher* sketcher = 0;
+ // QList<OCCViewer_ViewSketcher*>::Iterator it;
+ // for ( it = mySketchers.begin(); it != mySketchers.end() && !sketcher; ++it )
+ // {
+ // OCCViewer_ViewSketcher* sk = (*it);
+ // if( sk->isDefault() && sk->sketchButton() == aButton )
+ // sketcher = sk;
+ // }
+ // if ( sketcher && myCurSketch == -1 )
+ // {
+ // activateSketching( sketcher->type() );
+ // if ( mypSketcher )
+ // {
+ // myCurSketch = mypSketcher->sketchButton();
+
+ // if ( l_mbPressEvent )
+ // {
+ // QApplication::sendEvent( getViewPort(), l_mbPressEvent );
+ // delete l_mbPressEvent;
+ // l_mbPressEvent = 0;
+ // }
+ // QApplication::sendEvent( getViewPort(), theEvent );
+ // }
+ // }
+ //}
else
emit mouseMoving( this, theEvent );
}
myViewPort->update();
}
- if ( l_mbPressEvent )
- {
+ if ( l_mbPressEvent ) {
delete l_mbPressEvent;
l_mbPressEvent = 0;
}
{
if ( !myRectBand ) {
myRectBand = new QtxRectRubberBand( myViewPort );
- //QPalette palette;
- //palette.setColor(myRectBand->foregroundRole(), Qt::white);
- //myRectBand->setPalette(palette);
}
- //myRectBand->hide();
myRectBand->setUpdatesEnabled ( false );
QRect aRect = SUIT_Tools::makeRect(myStartX, myStartY, myCurrX, myCurrY);
myRectBand->show();
myRectBand->setUpdatesEnabled ( true );
- //myRectBand->repaint();
-
- //myRectBand->setVisible( aRect.isValid() );
- //if ( myRectBand->isVisible() )
- // myRectBand->repaint();
- //else
- // myRectBand->show();
- //myRectBand->repaint();
}
/*!
*/
void OCCViewer_ViewWindow::endDrawRect()
{
- //delete myRectBand;
- //myRectBand = 0;
- if ( myRectBand )
- {
- myRectBand->clearGeometry();
- myRectBand->hide();
- }
+ if ( myRectBand ) {
+ myRectBand->clearGeometry();
+ myRectBand->hide();
+ }
}
/*!
aAction->setCheckable(true);
toolMgr()->registerAction( aAction, RectangleSelectionStyleId);
+ aAction = new QtxAction(tr("MNU_POLYGON_SELECTION_STYLE"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_POLY_STYLE" ) ),
+ tr( "MNU_POLYGON_SELECTION_STYLE" ), 0, this);
+ aAction->setStatusTip(tr("DSC_POLYGON_SELECTION_STYLE"));
+ aAction->setCheckable(true);
+ toolMgr()->registerAction( aAction, PolygonSelectionStyleId);
+
aAction = new QtxAction(tr("MNU_CIRCLE_SELECTION_STYLE"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_CIRCLE_STYLE" ) ),
tr( "MNU_CIRCLE_SELECTION_STYLE" ), 0, this);
aAction->setStatusTip(tr("DSC_CIRCLE_SELECTION_STYLE"));
// - add exclusive action group
QActionGroup* aSelectionGroup = new QActionGroup(this);
aSelectionGroup->addAction(toolMgr()->action(RectangleSelectionStyleId));
+ aSelectionGroup->addAction(toolMgr()->action(PolygonSelectionStyleId));
aSelectionGroup->addAction(toolMgr()->action(CircleSelectionStyleId));
connect(aSelectionGroup, SIGNAL(triggered(QAction*)), this, SLOT(onSwitchSelectionStyle(QAction*)));
toolMgr()->append( SwitchZoomingStyleId, tid );
toolMgr()->append( SwitchPreselectionId, tid );
toolMgr()->append( SwitchSelectionId, tid );
- toolMgr()->append(RectangleSelectionStyleId, tid );
- toolMgr()->append(CircleSelectionStyleId, tid );
+
+ QtxMultiAction* aSelectionAction = new QtxMultiAction(this);
+ aSelectionAction->insertAction(toolMgr()->action(RectangleSelectionStyleId));
+ aSelectionAction->insertAction(toolMgr()->action(PolygonSelectionStyleId));
+ aSelectionAction->insertAction(toolMgr()->action(CircleSelectionStyleId));
+ toolMgr()->append(aSelectionAction, tid );
+
if( myModel->trihedronActivated() )
toolMgr()->append( TrihedronShowId, tid );
// selection
OCCViewer_ViewSketcher* aSkecher = getSketcher(Polygon);
if (aSkecher) {
- if (theAction == toolMgr()->action(RectangleSelectionStyleId)) {
+ if (theAction == toolMgr()->action(PolygonSelectionStyleId)) {
aSkecher->setSketcherMode(OCCViewer_PolygonSketcher::Poligone);
}
else if (theAction == toolMgr()->action(CircleSelectionStyleId)) {
}
}
-int OCCViewer_ViewWindow::selectionStyle() const
+/*!
+Returns currently selected selection style
+*/
+OCCViewer_ViewWindow::SelectionStyle OCCViewer_ViewWindow::selectionStyle() const
{
- OCCViewer_ViewSketcher* aSkecher = getSketcher(Polygon);
- if (aSkecher) {
- return aSkecher->sketcherMode();
- }
- return 0;
+ if (toolMgr()->action(PolygonSelectionStyleId)->isChecked())
+ return PolygonStyle;
+ if (toolMgr()->action(CircleSelectionStyleId)->isChecked())
+ return CyrcleStyle;
+ return RectStyle;
}
-void OCCViewer_ViewWindow::setSelectionStyle(int theMode)
+void OCCViewer_ViewWindow::setSelectionStyle(SelectionStyle theMode)
{
- OCCViewer_ViewSketcher* aSkecher = getSketcher(Polygon);
- if (aSkecher) {
- aSkecher->setSketcherMode(theMode);
- if (theMode == 0) {
- toolMgr()->action(RectangleSelectionStyleId)->setChecked(true);
- toolMgr()->action(CircleSelectionStyleId)->setChecked(false);
- }
- else {
- toolMgr()->action(RectangleSelectionStyleId)->setChecked(false);
- toolMgr()->action(CircleSelectionStyleId)->setChecked(true);
- }
+ toolMgr()->action(RectangleSelectionStyleId)->setChecked(false);
+ toolMgr()->action(PolygonSelectionStyleId)->setChecked(false);
+ toolMgr()->action(CircleSelectionStyleId)->setChecked(false);
+ switch (theMode) {
+ case RectStyle:
+ toolMgr()->action(RectangleSelectionStyleId)->setChecked(true);
+ break;
+ case PolygonStyle:
+ toolMgr()->action(PolygonSelectionStyleId)->setChecked(true);
+ break;
+ case CyrcleStyle:
+ toolMgr()->action(CircleSelectionStyleId)->setChecked(true);
}
}
if ( mypSketcher && mypSketcher->result() == OCCViewer_ViewSketcher::Accept )
{
Handle(AIS_InteractiveContext) ic = myModel->getAISContext();
- bool append = bool( mypSketcher->buttonState() && mypSketcher->isHasShift() );
+ bool append = mypSketcher->isHasShift();
switch( mypSketcher->type() )
{
case Rect:
// myRect = aRect;
if( append )
- ic->ShiftSelect( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False );
+ ic->ShiftSelect( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False);
else
- ic->Select( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False );
+ ic->Select( aLeft, aBottom, aRight, aTop, getViewPort()->getView(), Standard_False);
}
}
break;
}
if( append )
- ic->ShiftSelect( anArray, getViewPort()->getView(), Standard_False );
+ ic->ShiftSelect( anArray, getViewPort()->getView(), Standard_False);
else
- ic->Select( anArray, getViewPort()->getView(), Standard_False );
+ ic->Select( anArray, getViewPort()->getView(), Standard_False);
}
}
break;
SwitchPreselectionId, SwitchSelectionId,
MaximizedId, SynchronizeId, ReturnTo3dViewId,
OrthographicId, PerspectiveId, StereoId, RayTracingId, EnvTextureId, LightSourceId,
- RectangleSelectionStyleId, CircleSelectionStyleId,
+ RectangleSelectionStyleId, PolygonSelectionStyleId, CircleSelectionStyleId,
UserId };
enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE,
enum SketchingType { NoSketching, Rect, Polygon };
+ enum SelectionStyle { RectStyle, PolygonStyle, CyrcleStyle };
+
enum Mode2dType { No2dMode, XYPlane, XZPlane, YZPlane };
enum ProjectionType { Orthographic, Perspective, Stereo };
virtual int projectionType() const;
virtual void setProjectionType( int );
- virtual int selectionStyle() const;
- virtual void setSelectionStyle(int);
+ virtual SelectionStyle selectionStyle() const;
+ virtual void setSelectionStyle(SelectionStyle);
virtual int stereoType() const;
virtual void setStereoType( const int );
<source>ICON_OCCVIEWER_RECT_STYLE</source>
<translation>occ_view_rect_style.png</translation>
</message>
+ <message>
+ <source>ICON_OCCVIEWER_POLY_STYLE</source>
+ <translation>occ_view_polygon_style.png</translation>
+ </message>
<message>
<source>ICON_OCCVIEWER_CIRCLE_STYLE</source>
<translation>occ_view_circle_style.png</translation>
</message>
<message>
<source>MNU_RECTANGLE_SELECTION_STYLE</source>
- <translation>Advanced selection by polygon</translation>
+ <translation>Selection by rectangle</translation>
</message>
<message>
<source>DSC_RECTANGLE_SELECTION_STYLE</source>
- <translation>Advanced selection by polygon</translation>
+ <translation>Selection by rectangle</translation>
+ </message>
+ <message>
+ <source>MNU_POLYGON_SELECTION_STYLE</source>
+ <translation>Selection by polygon</translation>
+ </message>
+ <message>
+ <source>DSC_POLYGON_SELECTION_STYLE</source>
+ <translation>Selection by polygon</translation>
</message>
<message>
<source>MNU_CIRCLE_SELECTION_STYLE</source>
- <translation>Advanced selection by circle</translation>
+ <translation>Selection by circle</translation>
</message>
<message>
<source>DSC_CIRCLE_SELECTION_STYLE</source>
- <translation>Advanced selection by circle</translation>
+ <translation>Selection by circle</translation>
</message>
<message>
<source>MNU_ENABLE_PRESELECTION</source>
</message>
<message>
<source>MNU_RECTANGLE_SELECTION_STYLE</source>
- <translation>Advanced selection by polygon</translation>
+ <translation>Sélection par rectangle</translation>
</message>
<message>
<source>DSC_RECTANGLE_SELECTION_STYLE</source>
- <translation>Advanced selection by polygon</translation>
+ <translation>Sélection par rectangle</translation>
+ </message>
+ <message>
+ <source>MNU_POLYGON_SELECTION_STYLE</source>
+ <translation>La sélection par polygone</translation>
+ </message>
+ <message>
+ <source>DSC_POLYGON_SELECTION_STYLE</source>
+ <translation>La sélection par polygone</translation>
</message>
<message>
<source>MNU_CIRCLE_SELECTION_STYLE</source>
- <translation>Advanced selection by circle</translation>
+ <translation>Sélection par cercle</translation>
</message>
<message>
<source>DSC_CIRCLE_SELECTION_STYLE</source>
- <translation>Advanced selection by circle</translation>
+ <translation>Sélection par cercle</translation>
</message>
<message>
<source>MNU_ENABLE_PRESELECTION</source>