mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-13 10:10:34 +05:00
0021827: [CEA 650] TUI setColor on an object displayed in wireframe is ignored
This commit is contained in:
parent
6c588d710b
commit
506a331dc5
@ -1,73 +0,0 @@
|
|||||||
// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// This library is free software; you can redistribute it and/or
|
|
||||||
// modify it under the terms of the GNU Lesser General Public
|
|
||||||
// License as published by the Free Software Foundation; either
|
|
||||||
// version 2.1 of the License.
|
|
||||||
//
|
|
||||||
// This library is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
||||||
//
|
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
|
||||||
// File : GeometryGUI_Swig.i
|
|
||||||
// Author : Nicolas REJNERI, Paul RASCLE
|
|
||||||
//
|
|
||||||
%{
|
|
||||||
#include "GeometryGUI_Swig.hxx"
|
|
||||||
%}
|
|
||||||
|
|
||||||
/*
|
|
||||||
managing C++ exception in the Python API
|
|
||||||
*/
|
|
||||||
%exception
|
|
||||||
{
|
|
||||||
class PyAllowThreadsGuard {
|
|
||||||
public:
|
|
||||||
// Py_BEGIN_ALLOW_THREADS
|
|
||||||
PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
|
|
||||||
// Py_END_ALLOW_THREADS
|
|
||||||
~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
|
|
||||||
private:
|
|
||||||
PyThreadState *_save;
|
|
||||||
};
|
|
||||||
|
|
||||||
PyAllowThreadsGuard guard;
|
|
||||||
|
|
||||||
$action
|
|
||||||
}
|
|
||||||
|
|
||||||
class GEOM_Swig
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
GEOM_Swig();
|
|
||||||
~GEOM_Swig();
|
|
||||||
|
|
||||||
void createAndDisplayGO(const char* Entry, bool isUpdated =true);
|
|
||||||
void eraseGO(const char* Entry, bool allWindows);
|
|
||||||
void createAndDisplayFitAllGO(const char* Entry);
|
|
||||||
void UpdateViewer();
|
|
||||||
int getIndexTopology(const char *SubEntry, const char *Entry);
|
|
||||||
const char* getShapeTypeString(const char *Entry);
|
|
||||||
|
|
||||||
void setDisplayMode(const char* Entry, int mode, bool isUpdated =true);
|
|
||||||
void setVectorsMode(const char* Entry, bool isSet, bool isUpdated =true);
|
|
||||||
void setColor(const char* Entry, int red, int green, int blue, bool isUpdated =true);
|
|
||||||
void setTransparency(const char* Entry, float transp, bool isUpdated =true);
|
|
||||||
void setIsos(const char* Entry, int nbU, int nbV, bool isUpdated =true);
|
|
||||||
void setDeflection(const char* Entry, float deflect);
|
|
||||||
const char* getShapeTypeIcon(const char *Ior);
|
|
||||||
|
|
||||||
bool initGeomGen();
|
|
||||||
};
|
|
@ -35,8 +35,6 @@ salomeinclude_HEADERS = \
|
|||||||
GEOM_Displayer.h \
|
GEOM_Displayer.h \
|
||||||
GEOMGUI_OCCSelector.h \
|
GEOMGUI_OCCSelector.h \
|
||||||
GEOMGUI_Selection.h \
|
GEOMGUI_Selection.h \
|
||||||
GeometryGUI_Swig.hxx \
|
|
||||||
GeometryGUI_Swig.i \
|
|
||||||
GEOM_GEOMGUI.hxx
|
GEOM_GEOMGUI.hxx
|
||||||
|
|
||||||
dist_libGEOM_la_SOURCES = \
|
dist_libGEOM_la_SOURCES = \
|
||||||
@ -44,8 +42,7 @@ dist_libGEOM_la_SOURCES = \
|
|||||||
GEOMGUI.cxx \
|
GEOMGUI.cxx \
|
||||||
GEOM_Displayer.cxx \
|
GEOM_Displayer.cxx \
|
||||||
GEOMGUI_OCCSelector.cxx \
|
GEOMGUI_OCCSelector.cxx \
|
||||||
GEOMGUI_Selection.cxx \
|
GEOMGUI_Selection.cxx
|
||||||
GeometryGUI_Swig.cxx
|
|
||||||
|
|
||||||
MOC_FILES = \
|
MOC_FILES = \
|
||||||
GeometryGUI_moc.cxx
|
GeometryGUI_moc.cxx
|
||||||
|
@ -30,12 +30,16 @@
|
|||||||
#include "GEOM_ToolsGUI.hxx"
|
#include "GEOM_ToolsGUI.hxx"
|
||||||
|
|
||||||
#include <GEOMGUI.h>
|
#include <GEOMGUI.h>
|
||||||
|
|
||||||
#include <SALOMEDSClient.hxx>
|
#include <SALOMEDSClient.hxx>
|
||||||
|
|
||||||
class GEOM_Displayer;
|
class GEOM_Displayer;
|
||||||
class SALOME_View;
|
class SALOME_View;
|
||||||
class SALOME_ListIO;
|
class SALOME_ListIO;
|
||||||
|
class SalomeApp_Study;
|
||||||
|
class SVTK_View;
|
||||||
|
class QColor;
|
||||||
|
class Handle_SALOME_InteractiveObject;
|
||||||
|
class Handle_AIS_InteractiveContext;
|
||||||
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
@ -54,6 +58,8 @@ public:
|
|||||||
|
|
||||||
enum ActionType { SHOWDLG, INCR, DECR };
|
enum ActionType { SHOWDLG, INCR, DECR };
|
||||||
|
|
||||||
|
static void SetColor( const QString&, const QColor&, bool );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Import and export topology methods
|
// Import and export topology methods
|
||||||
bool Import();
|
bool Import();
|
||||||
@ -89,6 +95,18 @@ private:
|
|||||||
_PTR(Study),
|
_PTR(Study),
|
||||||
QList<SALOME_View*>,
|
QList<SALOME_View*>,
|
||||||
GEOM_Displayer* );
|
GEOM_Displayer* );
|
||||||
|
|
||||||
|
static void setVtkColor( SalomeApp_Study* study,
|
||||||
|
int mgrId,
|
||||||
|
SVTK_View* view,
|
||||||
|
const Handle_SALOME_InteractiveObject& IO,
|
||||||
|
const QColor& color );
|
||||||
|
|
||||||
|
static void setOccColor( SalomeApp_Study* study,
|
||||||
|
int mgrId,
|
||||||
|
const Handle_AIS_InteractiveContext& ic,
|
||||||
|
const Handle_SALOME_InteractiveObject& IO,
|
||||||
|
const QColor& color );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GEOMTOOLSGUI_H
|
#endif // GEOMTOOLSGUI_H
|
||||||
|
@ -267,88 +267,192 @@ void GEOMToolsGUI::OnDisableAutoColor()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
aMainObject->SetAutoColor( false );
|
aMainObject->SetAutoColor( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI::SetColor( const QString& entry, const QColor& color, bool /*updateViewer*/ )
|
||||||
|
{
|
||||||
|
if ( entry.isEmpty() || !color.isValid() ) return;
|
||||||
|
|
||||||
|
// get active application
|
||||||
|
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
||||||
|
if ( !app ) return;
|
||||||
|
|
||||||
|
// get current study
|
||||||
|
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
|
||||||
|
if ( !appStudy ) return;
|
||||||
|
|
||||||
|
// get active view
|
||||||
|
SUIT_ViewWindow* window = app->desktop()->activeWindow();
|
||||||
|
bool isOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
|
||||||
|
bool isVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
|
||||||
|
|
||||||
|
// get view id
|
||||||
|
int mgrId = window->getViewManager()->getGlobalId();
|
||||||
|
|
||||||
|
Handle(SALOME_InteractiveObject) IO =
|
||||||
|
new SALOME_InteractiveObject( entry.toLatin1().data(), "GEOM", "");
|
||||||
|
|
||||||
|
if ( isVTK ) {
|
||||||
|
SVTK_ViewWindow* vtkVW = dynamic_cast<SVTK_ViewWindow*>( window );
|
||||||
|
if ( !vtkVW ) return;
|
||||||
|
SVTK_View* aView = vtkVW->getView();
|
||||||
|
|
||||||
|
GEOMToolsGUI::setVtkColor( appStudy, mgrId, aView, IO, color );
|
||||||
|
}
|
||||||
|
else if ( isOCC ) {
|
||||||
|
OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*> ( window->getViewManager()->getViewModel() );
|
||||||
|
Handle (AIS_InteractiveContext) ic = vm->getAISContext();
|
||||||
|
GEOMToolsGUI::setOccColor( appStudy, mgrId, ic, IO, color );
|
||||||
|
}
|
||||||
|
|
||||||
|
// mark study as modified
|
||||||
|
GeometryGUI::Modified();
|
||||||
|
|
||||||
|
// update actions
|
||||||
|
app->updateActions(); //SRN: To update a Save button in the toolbar
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOMToolsGUI::OnColor()
|
void GEOMToolsGUI::OnColor()
|
||||||
{
|
{
|
||||||
SALOME_ListIO selected;
|
// get active application
|
||||||
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
||||||
|
if ( !app ) return;
|
||||||
|
|
||||||
|
// get current study
|
||||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
|
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
|
||||||
if ( app && appStudy ) {
|
if ( !appStudy ) return;
|
||||||
|
|
||||||
|
// get selection manager
|
||||||
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
|
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
|
||||||
if ( aSelMgr ) {
|
if ( !aSelMgr ) return;
|
||||||
|
|
||||||
|
// get selection
|
||||||
|
SALOME_ListIO selected;
|
||||||
aSelMgr->selectedObjects( selected );
|
aSelMgr->selectedObjects( selected );
|
||||||
if ( !selected.IsEmpty() ) {
|
if ( selected.IsEmpty() ) return;
|
||||||
|
|
||||||
|
// get active view
|
||||||
SUIT_ViewWindow* window = app->desktop()->activeWindow();
|
SUIT_ViewWindow* window = app->desktop()->activeWindow();
|
||||||
bool isOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
|
bool isOCC = ( window && window->getViewManager()->getType() == OCCViewer_Viewer::Type() );
|
||||||
bool isVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
|
bool isVTK = ( window && window->getViewManager()->getType() == SVTK_Viewer::Type() );
|
||||||
|
|
||||||
|
// get view id
|
||||||
int mgrId = window->getViewManager()->getGlobalId();
|
int mgrId = window->getViewManager()->getGlobalId();
|
||||||
|
|
||||||
if ( isVTK ) {
|
if ( isVTK ) {
|
||||||
SVTK_ViewWindow* vtkVW = dynamic_cast<SVTK_ViewWindow*>( window );
|
SVTK_ViewWindow* vtkVW = dynamic_cast<SVTK_ViewWindow*>( window );
|
||||||
if ( !vtkVW )
|
if ( !vtkVW ) return;
|
||||||
return;
|
|
||||||
|
// get initial color (use first object from selection)
|
||||||
SVTK_View* aView = vtkVW->getView();
|
SVTK_View* aView = vtkVW->getView();
|
||||||
QColor initcolor = aView->GetColor( selected.First() );
|
QColor color = aView->GetColor( selected.First() );
|
||||||
QColor c = QColorDialog::getColor( initcolor, app->desktop() );
|
QVariant v = appStudy->getObjectProperty( mgrId, selected.First()->getEntry(), COLOR_PROP, color );
|
||||||
if ( c.isValid() ) {
|
|
||||||
|
// show Choose Color dialog box
|
||||||
|
color = QColorDialog::getColor( v.value<QColor>(), app->desktop() );
|
||||||
|
if ( !color.isValid() ) return;
|
||||||
|
|
||||||
|
// iterate through list of objects and assign new color
|
||||||
SUIT_OverrideCursor();
|
SUIT_OverrideCursor();
|
||||||
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
|
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
|
||||||
QString matProp;
|
GEOMToolsGUI::setVtkColor( appStudy, mgrId, aView, It.Value(), color );
|
||||||
matProp = appStudy->getObjectProperty(mgrId,It.Value()->getEntry(), MATERIAL_PROP, matProp).toString();
|
|
||||||
Material_Model material;
|
|
||||||
material.fromProperties( matProp );
|
|
||||||
if ( !material.isPhysical() ) {
|
|
||||||
aView->SetColor( It.Value(), c );
|
|
||||||
appStudy->setObjectProperty(mgrId,It.Value()->getEntry(),COLOR_PROP, c);
|
|
||||||
}
|
}
|
||||||
// store color to GEOM_Object
|
|
||||||
_PTR(Study) aStudy = appStudy->studyDS();
|
|
||||||
_PTR(SObject) aSObject( aStudy->FindObjectID( It.Value()->getEntry() ) );
|
|
||||||
GEOM::GEOM_Object_var anObject =
|
|
||||||
GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObject));
|
|
||||||
SALOMEDS::Color aSColor;
|
|
||||||
aSColor.R = (double)c.red() / 255.0;
|
|
||||||
aSColor.G = (double)c.green() / 255.0;
|
|
||||||
aSColor.B = (double)c.blue() / 255.0;
|
|
||||||
anObject->SetColor( aSColor );
|
|
||||||
anObject->SetAutoColor( false );
|
|
||||||
}
|
}
|
||||||
GeometryGUI::Modified();
|
|
||||||
}
|
|
||||||
} // if ( isVTK )
|
|
||||||
else if ( isOCC ) {
|
else if ( isOCC ) {
|
||||||
|
// find AIS interactive object (for first item in selection)
|
||||||
Handle(AIS_InteractiveObject) io = GEOMBase::GetAIS( selected.First() );
|
Handle(AIS_InteractiveObject) io = GEOMBase::GetAIS( selected.First() );
|
||||||
if ( !io.IsNull() ) {
|
if ( io.IsNull() ) return;
|
||||||
|
|
||||||
|
// get initial color (use first object from selection)
|
||||||
Quantity_Color aColor;
|
Quantity_Color aColor;
|
||||||
io->Color( aColor );
|
io->Color( aColor );
|
||||||
QColor ic = QColor((int )( aColor.Red() * 255.0 ),
|
QColor color = QColor((int)( aColor.Red() * 255.0 ),
|
||||||
(int)( aColor.Green() * 255.0 ),
|
(int)( aColor.Green() * 255.0 ),
|
||||||
(int)( aColor.Blue() * 255.0 ));
|
(int)( aColor.Blue() * 255.0 ));
|
||||||
|
QVariant v = appStudy->getObjectProperty( mgrId, selected.First()->getEntry(), COLOR_PROP, color );
|
||||||
|
|
||||||
QVariant v = appStudy->getObjectProperty(mgrId,selected.First()->getEntry(), COLOR_PROP, ic);
|
// show Choose Color dialog box
|
||||||
|
color = QColorDialog::getColor( v.value<QColor>(), app->desktop() );
|
||||||
|
if ( !color.isValid() ) return;
|
||||||
|
|
||||||
QColor initcolor = v.value<QColor>();
|
// iterate through list of objects and assign new color
|
||||||
QColor c = QColorDialog::getColor( initcolor, app->desktop() );
|
|
||||||
if ( c.isValid() ) {
|
|
||||||
SUIT_OverrideCursor();
|
SUIT_OverrideCursor();
|
||||||
aColor = Quantity_Color( c.red() / 255., c.green() / 255., c.blue() / 255., Quantity_TOC_RGB );
|
|
||||||
OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*> ( window->getViewManager()->getViewModel() );
|
OCCViewer_Viewer* vm = dynamic_cast<OCCViewer_Viewer*> ( window->getViewManager()->getViewModel() );
|
||||||
Handle (AIS_InteractiveContext) ic = vm->getAISContext();
|
Handle (AIS_InteractiveContext) ic = vm->getAISContext();
|
||||||
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
|
for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
|
||||||
|
GEOMToolsGUI::setOccColor( appStudy, mgrId, ic, It.Value(), color );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// mark study as modified
|
||||||
|
GeometryGUI::Modified();
|
||||||
|
|
||||||
|
// update actions
|
||||||
|
app->updateActions(); //SRN: To update a Save button in the toolbar
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GEOMToolsGUI::setVtkColor( SalomeApp_Study* study, // study
|
||||||
|
int mgrId, // view window id
|
||||||
|
SVTK_View* view, // VTK view
|
||||||
|
const Handle(SALOME_InteractiveObject)& IO, // interactive object
|
||||||
|
const QColor& color ) // color
|
||||||
|
{
|
||||||
|
// get material property
|
||||||
QString matProp;
|
QString matProp;
|
||||||
matProp = appStudy->getObjectProperty(mgrId,It.Value()->getEntry(), MATERIAL_PROP, matProp).toString();
|
matProp = study->getObjectProperty( mgrId, IO->getEntry(), MATERIAL_PROP, matProp ).toString();
|
||||||
Material_Model material;
|
Material_Model material;
|
||||||
material.fromProperties( matProp );
|
material.fromProperties( matProp );
|
||||||
io = GEOMBase::GetAIS( It.Value(), true );
|
|
||||||
if ( !io.IsNull() && !material.isPhysical() ) { // change color only for shapes with not physical type of material
|
|
||||||
|
|
||||||
|
// change color only for shapes with not physical type of material
|
||||||
|
if ( !material.isPhysical() ) {
|
||||||
|
view->SetColor( IO, color );
|
||||||
|
study->setObjectProperty( mgrId, IO->getEntry(), COLOR_PROP, color );
|
||||||
|
}
|
||||||
|
|
||||||
|
// store color to GEOM_Object
|
||||||
|
_PTR(Study) aStudy = study->studyDS();
|
||||||
|
_PTR(SObject) aSObject( aStudy->FindObjectID( IO->getEntry() ) );
|
||||||
|
if ( !aSObject ) return;
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_var anObject =
|
||||||
|
GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObject));
|
||||||
|
|
||||||
|
if ( CORBA::is_nil( anObject ) ) return;
|
||||||
|
|
||||||
|
SALOMEDS::Color aSColor;
|
||||||
|
aSColor.R = (double)color.red() / 255.0;
|
||||||
|
aSColor.G = (double)color.green() / 255.0;
|
||||||
|
aSColor.B = (double)color.blue() / 255.0;
|
||||||
|
anObject->SetColor( aSColor );
|
||||||
|
anObject->SetAutoColor( false );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOMToolsGUI::setOccColor( SalomeApp_Study* study, // study
|
||||||
|
int mgrId, // view window id
|
||||||
|
const Handle(AIS_InteractiveContext)& ic, // OCC interactive context
|
||||||
|
const Handle(SALOME_InteractiveObject)& IO, // interactive object
|
||||||
|
const QColor& color ) // color
|
||||||
|
{
|
||||||
|
// get AIS object
|
||||||
|
Handle(AIS_InteractiveObject) io = GEOMBase::GetAIS( IO, true );
|
||||||
|
if ( io.IsNull() ) return;
|
||||||
|
|
||||||
|
// get material property
|
||||||
|
QString matProp;
|
||||||
|
matProp = study->getObjectProperty( mgrId, IO->getEntry(), MATERIAL_PROP, matProp ).toString();
|
||||||
|
Material_Model material;
|
||||||
|
material.fromProperties( matProp );
|
||||||
|
|
||||||
|
Quantity_Color aColor = Quantity_Color( color.red() / 255., color.green() / 255., color.blue() / 255., Quantity_TOC_RGB );
|
||||||
|
|
||||||
|
// change color only for shapes with not physical type of material
|
||||||
|
if ( !material.isPhysical() ) {
|
||||||
if ( io->IsKind( STANDARD_TYPE(AIS_Shape) ) ) {
|
if ( io->IsKind( STANDARD_TYPE(AIS_Shape) ) ) {
|
||||||
TopoDS_Shape theShape = Handle(AIS_Shape)::DownCast( io )->Shape();
|
TopoDS_Shape theShape = Handle(AIS_Shape)::DownCast( io )->Shape();
|
||||||
bool onlyVertex = (theShape.ShapeType() == TopAbs_VERTEX || GEOM_Displayer::isCompoundOfVertices( theShape ));
|
bool onlyVertex = (theShape.ShapeType() == TopAbs_VERTEX || GEOM_Displayer::isCompoundOfVertices( theShape ));
|
||||||
if ( onlyVertex ) {
|
if ( onlyVertex ) {
|
||||||
// Set color for a point
|
// set color for a point
|
||||||
|
|
||||||
Handle(AIS_Drawer) aCurDrawer = io->Attributes();
|
Handle(AIS_Drawer) aCurDrawer = io->Attributes();
|
||||||
Handle(Prs3d_PointAspect) aCurPointAspect = aCurDrawer->PointAspect();
|
Handle(Prs3d_PointAspect) aCurPointAspect = aCurDrawer->PointAspect();
|
||||||
Quantity_Color aCurColor;
|
Quantity_Color aCurColor;
|
||||||
@ -361,13 +465,11 @@ void GEOMToolsGUI::OnColor()
|
|||||||
else {
|
else {
|
||||||
Standard_Integer aWidth, aHeight;
|
Standard_Integer aWidth, aHeight;
|
||||||
aCurPointAspect->GetTextureSize( aWidth, aHeight );
|
aCurPointAspect->GetTextureSize( aWidth, aHeight );
|
||||||
|
|
||||||
#if OCC_VERSION_LARGE > 0x06040000 // Porting to OCCT6.5.1
|
#if OCC_VERSION_LARGE > 0x06040000 // Porting to OCCT6.5.1
|
||||||
Handle(TColStd_HArray1OfByte) aTexture = aCurPointAspect->GetTexture();
|
Handle(TColStd_HArray1OfByte) aTexture = aCurPointAspect->GetTexture();
|
||||||
#else
|
#else
|
||||||
Handle(Graphic3d_HArray1OfBytes) aTexture = aCurPointAspect->GetTexture();
|
Handle(Graphic3d_HArray1OfBytes) aTexture = aCurPointAspect->GetTexture();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aColor, 1, aWidth, aHeight, aTexture ) );
|
aCurDrawer->SetPointAspect( new Prs3d_PointAspect( aColor, 1, aWidth, aHeight, aTexture ) );
|
||||||
}
|
}
|
||||||
ic->SetLocalAttributes( io, aCurDrawer, Standard_False );
|
ic->SetLocalAttributes( io, aCurDrawer, Standard_False );
|
||||||
@ -381,36 +483,23 @@ void GEOMToolsGUI::OnColor()
|
|||||||
aGAISShape->storeBoundaryColors();
|
aGAISShape->storeBoundaryColors();
|
||||||
}
|
}
|
||||||
|
|
||||||
appStudy->setObjectProperty(mgrId,It.Value()->getEntry(), COLOR_PROP, c);
|
|
||||||
|
|
||||||
io->Redisplay( Standard_True );
|
io->Redisplay( Standard_True );
|
||||||
|
|
||||||
|
study->setObjectProperty( mgrId, IO->getEntry(), COLOR_PROP, color );
|
||||||
|
}
|
||||||
|
|
||||||
// store color to GEOM_Object
|
// store color to GEOM_Object
|
||||||
_PTR(Study) aStudy = appStudy->studyDS();
|
_PTR(Study) aStudy = study->studyDS();
|
||||||
_PTR(SObject) aSObject( aStudy->FindObjectID( It.Value()->getEntry() ) );
|
_PTR(SObject) aSObject( aStudy->FindObjectID( IO->getEntry() ) );
|
||||||
GEOM::GEOM_Object_var anObject =
|
GEOM::GEOM_Object_var anObject =
|
||||||
GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObject));
|
GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObject));
|
||||||
|
|
||||||
|
|
||||||
SALOMEDS::Color aSColor;
|
SALOMEDS::Color aSColor;
|
||||||
aSColor.R = (double)c.red() / 255.0;
|
aSColor.R = (double)color.red() / 255.0;
|
||||||
aSColor.G = (double)c.green() / 255.0;
|
aSColor.G = (double)color.green() / 255.0;
|
||||||
aSColor.B = (double)c.blue() / 255.0;
|
aSColor.B = (double)color.blue() / 255.0;
|
||||||
anObject->SetColor( aSColor );
|
anObject->SetColor( aSColor );
|
||||||
anObject->SetAutoColor( false );
|
anObject->SetAutoColor( false );
|
||||||
}
|
}
|
||||||
} // for
|
|
||||||
ic->UpdateCurrentViewer();
|
|
||||||
GeometryGUI::Modified();
|
|
||||||
} // if c.isValid()
|
|
||||||
} // first IO is not null
|
|
||||||
} // if ( isOCC )
|
|
||||||
} // if ( selection not empty )
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
app->updateActions(); //SRN: To update a Save button in the toolbar
|
|
||||||
}
|
|
||||||
|
|
||||||
void GEOMToolsGUI::OnTexture()
|
void GEOMToolsGUI::OnTexture()
|
||||||
{
|
{
|
||||||
|
@ -17,14 +17,6 @@
|
|||||||
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
||||||
#
|
#
|
||||||
|
|
||||||
# GEOM GEOM_SWIG : binding of C++ omplementaion with Python
|
|
||||||
# File : Makefile.in
|
|
||||||
# Author : Nicolas REJNERI, Paul RASCLE
|
|
||||||
# Modified by : Alexander BORODIN (OCN) - autotools usage
|
|
||||||
# Module : GEOM
|
|
||||||
# $Header$
|
|
||||||
# Libraries targets
|
|
||||||
#
|
|
||||||
include $(top_srcdir)/adm_local/unix/make_common_starter.am
|
include $(top_srcdir)/adm_local/unix/make_common_starter.am
|
||||||
|
|
||||||
# ===============================================================
|
# ===============================================================
|
||||||
@ -40,28 +32,24 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am
|
|||||||
# Step 2: build the dynamic library from cpp built source files and
|
# Step 2: build the dynamic library from cpp built source files and
|
||||||
# dependant libraries.
|
# dependant libraries.
|
||||||
#
|
#
|
||||||
# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libSALOME_Swig.la
|
# swig_wrap.cpp -- gcc --> swig_wrap.o |-- link --> _libGEOM_Swig.la
|
||||||
# + |
|
# + |
|
||||||
# dependant libs |
|
# dependant libs |
|
||||||
#
|
#
|
||||||
# The file libGEOM_Swig.py will be installed to the
|
# The files libGEOM_Swig.py and _libGEOM_Swig.so will be installed to the
|
||||||
# <prefix>/bin/salome directory.
|
|
||||||
# The library _libGEOM_Swig.so will be installed to the
|
|
||||||
# <prefix>/lib/python<version>/site-package/salome directory.
|
# <prefix>/lib/python<version>/site-package/salome directory.
|
||||||
#
|
#
|
||||||
|
|
||||||
SWIG_FLAGS = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../GEOMGUI
|
SWIG_FLAGS = @SWIG_FLAGS@ -I$(srcdir) -I$(srcdir)/../GEOMGUI
|
||||||
SWIG_SOURCES = libGEOM_Swig.i
|
SWIG_SOURCES = libGEOM_Swig.i
|
||||||
|
|
||||||
|
salomeinclude_HEADERS = $(SWIG_SOURCES) libGEOM_Swig.h
|
||||||
|
|
||||||
salomepython_PYTHON = libGEOM_Swig.py
|
salomepython_PYTHON = libGEOM_Swig.py
|
||||||
salomepyexec_LTLIBRARIES = _libGEOM_Swig.la
|
salomepyexec_LTLIBRARIES = _libGEOM_Swig.la
|
||||||
|
|
||||||
libGEOM_Swig.py: swig_wrap.cpp
|
_libGEOM_Swig_la_SOURCES = $(SWIG_SOURCES) libGEOM_Swig.h libGEOM_Swig.cxx
|
||||||
BUILT_SOURCES = swig_wrap.cpp
|
nodist__libGEOM_Swig_la_SOURCES = swig_wrap.cpp
|
||||||
_libGEOM_Swig_la_SOURCES = $(SWIG_SOURCES)
|
|
||||||
nodist__libGEOM_Swig_la_SOURCES = $(BUILT_SOURCES)
|
|
||||||
|
|
||||||
salomeinclude_HEADERS = $(SWIG_SOURCES)
|
|
||||||
|
|
||||||
_libGEOM_Swig_la_CPPFLAGS = \
|
_libGEOM_Swig_la_CPPFLAGS = \
|
||||||
$(QT_INCLUDES) \
|
$(QT_INCLUDES) \
|
||||||
@ -73,16 +61,22 @@ _libGEOM_Swig_la_CPPFLAGS = \
|
|||||||
$(GUI_CXXFLAGS) \
|
$(GUI_CXXFLAGS) \
|
||||||
$(CORBA_CXXFLAGS) \
|
$(CORBA_CXXFLAGS) \
|
||||||
$(CORBA_INCLUDES) \
|
$(CORBA_INCLUDES) \
|
||||||
|
-I$(srcdir)/../GEOMClient \
|
||||||
|
-I$(srcdir)/../OBJECT \
|
||||||
-I$(srcdir)/../GEOMGUI \
|
-I$(srcdir)/../GEOMGUI \
|
||||||
|
-I$(srcdir)/../GEOMToolsGUI \
|
||||||
-I$(top_builddir)/idl
|
-I$(top_builddir)/idl
|
||||||
|
|
||||||
_libGEOM_Swig_la_LDFLAGS = -module
|
_libGEOM_Swig_la_LDFLAGS = -module
|
||||||
_libGEOM_Swig_la_LIBADD = \
|
_libGEOM_Swig_la_LIBADD = \
|
||||||
../GEOMGUI/libGEOM.la \
|
../GEOMGUI/libGEOM.la \
|
||||||
|
../GEOMToolsGUI/libGEOMToolsGUI.la \
|
||||||
$(PYTHON_LIBS)
|
$(PYTHON_LIBS)
|
||||||
|
|
||||||
swig_wrap.cpp : $(SWIG_SOURCES)
|
swig_wrap.cpp : $(SWIG_SOURCES)
|
||||||
$(SWIG) $(SWIG_FLAGS) -o $@ $<
|
$(SWIG) $(SWIG_FLAGS) -o $@ $<
|
||||||
|
|
||||||
|
libGEOM_Swig.py: swig_wrap.cpp
|
||||||
|
|
||||||
CLEANFILES = swig_wrap.cpp libGEOM_Swig.py
|
CLEANFILES = swig_wrap.cpp libGEOM_Swig.py
|
||||||
|
|
||||||
|
@ -21,12 +21,13 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : GeometryGUI_Swig.cxx
|
// File : libGEOM_Swig.cxx
|
||||||
// Author : Nicolas REJNERI, Paul RASCLE
|
// Author : Nicolas REJNERI, Paul RASCLE
|
||||||
//
|
//
|
||||||
#include "GeometryGUI_Swig.hxx"
|
#include "libGEOM_Swig.h"
|
||||||
|
|
||||||
#include "GeometryGUI.h"
|
#include "GeometryGUI.h"
|
||||||
|
#include "GEOMToolsGUI.h"
|
||||||
|
|
||||||
#include "SUIT_Desktop.h"
|
#include "SUIT_Desktop.h"
|
||||||
#include "SUIT_Session.h"
|
#include "SUIT_Session.h"
|
||||||
@ -450,7 +451,7 @@ void GEOM_Swig::setVectorsMode(const char* theEntry, bool isOn, bool isUpdated)
|
|||||||
void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, bool isUpdated)
|
void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, bool isUpdated)
|
||||||
{
|
{
|
||||||
class TEvent: public SALOME_Event {
|
class TEvent: public SALOME_Event {
|
||||||
std::string myEntry;
|
QString myEntry;
|
||||||
int myRed;
|
int myRed;
|
||||||
int myGreen;
|
int myGreen;
|
||||||
int myBlue;
|
int myBlue;
|
||||||
@ -463,6 +464,8 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, boo
|
|||||||
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
|
SUIT_Application* anApp = SUIT_Session::session()->activeApplication();
|
||||||
if (!anApp) return;
|
if (!anApp) return;
|
||||||
|
|
||||||
|
GEOMToolsGUI::SetColor( myEntry, QColor( myRed, myGreen, myBlue), myUpdateViewer );
|
||||||
|
/*
|
||||||
Handle(SALOME_InteractiveObject) anIO =
|
Handle(SALOME_InteractiveObject) anIO =
|
||||||
new SALOME_InteractiveObject(myEntry.c_str(), "GEOM", "");
|
new SALOME_InteractiveObject(myEntry.c_str(), "GEOM", "");
|
||||||
|
|
||||||
@ -496,7 +499,7 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, boo
|
|||||||
}
|
}
|
||||||
if (myUpdateViewer) occViewer->update();
|
if (myUpdateViewer) occViewer->update();
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ProcessVoidEvent(new TEvent(theEntry, red, green, blue, isUpdated));
|
ProcessVoidEvent(new TEvent(theEntry, red, green, blue, isUpdated));
|
@ -21,9 +21,10 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
// GEOM GEOMGUI : GUI for Geometry component
|
// GEOM GEOMGUI : GUI for Geometry component
|
||||||
// File : GeometryGUI_Swig.hxx
|
// File : libGEOM_Swig.h
|
||||||
// Author : Nicolas REJNERI, Paul RASCLE
|
// Author : Nicolas REJNERI, Paul RASCLE
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef GEOMETRYGUI_SWIG_HXX
|
#ifndef GEOMETRYGUI_SWIG_HXX
|
||||||
#define GEOMETRYGUI_SWIG_HXX
|
#define GEOMETRYGUI_SWIG_HXX
|
||||||
|
|
@ -26,5 +26,51 @@
|
|||||||
//
|
//
|
||||||
%module libGEOM_Swig
|
%module libGEOM_Swig
|
||||||
|
|
||||||
%include "GeometryGUI_Swig.i"
|
%{
|
||||||
|
#include "libGEOM_Swig.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
/*
|
||||||
|
managing C++ exception in the Python API
|
||||||
|
*/
|
||||||
|
%exception
|
||||||
|
{
|
||||||
|
class PyAllowThreadsGuard {
|
||||||
|
public:
|
||||||
|
// Py_BEGIN_ALLOW_THREADS
|
||||||
|
PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
|
||||||
|
// Py_END_ALLOW_THREADS
|
||||||
|
~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
|
||||||
|
private:
|
||||||
|
PyThreadState *_save;
|
||||||
|
};
|
||||||
|
|
||||||
|
PyAllowThreadsGuard guard;
|
||||||
|
|
||||||
|
$action
|
||||||
|
}
|
||||||
|
|
||||||
|
class GEOM_Swig
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GEOM_Swig();
|
||||||
|
~GEOM_Swig();
|
||||||
|
|
||||||
|
void createAndDisplayGO(const char* Entry, bool isUpdated =true);
|
||||||
|
void eraseGO(const char* Entry, bool allWindows);
|
||||||
|
void createAndDisplayFitAllGO(const char* Entry);
|
||||||
|
void UpdateViewer();
|
||||||
|
int getIndexTopology(const char *SubEntry, const char *Entry);
|
||||||
|
const char* getShapeTypeString(const char *Entry);
|
||||||
|
|
||||||
|
void setDisplayMode(const char* Entry, int mode, bool isUpdated =true);
|
||||||
|
void setVectorsMode(const char* Entry, bool isSet, bool isUpdated =true);
|
||||||
|
void setColor(const char* Entry, int red, int green, int blue, bool isUpdated =true);
|
||||||
|
void setTransparency(const char* Entry, float transp, bool isUpdated =true);
|
||||||
|
void setIsos(const char* Entry, int nbU, int nbV, bool isUpdated =true);
|
||||||
|
void setDeflection(const char* Entry, float deflect);
|
||||||
|
const char* getShapeTypeIcon(const char *Ior);
|
||||||
|
|
||||||
|
bool initGeomGen();
|
||||||
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user