Fix for bug IPAL9595 ( 3.0.0(current2707): SMESH - "Scalar Bar Properties" does not work and leads to Fatal error ).

This commit is contained in:
mzn 2005-07-27 11:15:55 +00:00
parent 53e2da7a18
commit c75bbbb996
3 changed files with 3 additions and 314 deletions

View File

@ -167,8 +167,6 @@ namespace{
void Control( int theCommandID );
void SetDisplaySettings();
// Definitions
//=============================================================
@ -524,53 +522,6 @@ namespace{
SMESH::RepaintCurrentView();
}
}
void SetDisplaySettings()
{
SUIT_ResourceMgr* mgr = SMESHGUI::resourceMgr();
if( !mgr )
return;
SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog();
SMESHGUI_Preferences_ColorDlg *aDlg =
new SMESHGUI_Preferences_ColorDlg( SMESHGUI::GetSMESHGUI(), "" );
QColor color = mgr->colorValue( "SMESH", "fill_color", QColor(0, 170, 255) );
aDlg->SetColor(1, color);
color = mgr->colorValue( "SMESH", "outline_color", QColor(0, 170, 255) );
aDlg->SetColor(2, color);
color = mgr->colorValue( "SMESH", "node_color", Qt::red );
aDlg->SetColor(3, color);
color = mgr->colorValue( "SMESH", "backface_color", Qt::blue );
aDlg->SetColor(4, color);
int iVal = mgr->integerValue( "SMESH", "element_width", 1 );
aDlg->SetIntValue(1, iVal);
iVal = mgr->integerValue( "SMESH", "node_size", 3 );
aDlg->SetIntValue(2, iVal);
iVal = mgr->integerValue( "SMESH", "shrink_coeff", 75 );
aDlg->SetIntValue(3, iVal);
if (aDlg->exec()) {
mgr->setValue( "SMESH", "fill_color", aDlg->GetColor(1) );
mgr->setValue( "SMESH", "outline_color", aDlg->GetColor(2) );
mgr->setValue( "SMESH", "node_color", aDlg->GetColor(3) );
mgr->setValue( "SMESH", "backface_color", aDlg->GetColor(4) );
mgr->setValue( "SMESH", "element_width", aDlg->GetIntValue(1) );
mgr->setValue( "SMESH", "node_size", aDlg->GetIntValue(2) );
mgr->setValue( "SMESH", "shrink_coeff", aDlg->GetIntValue(3) );
}
delete aDlg;
}
void Control( int theCommandID )
{
@ -1776,120 +1727,6 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
break;
}
case 1001: // AUTOMATIC UPDATE PREFERENCES
{
// if (act->isOn()) {
// mgr->setValue( "SMESH", "AutomaticUpdate", true );
// myAutomaticUpdate = true;
// }
// else {
// mgr->setValue( "SMESH", "AutomaticUpdate", false );
// myAutomaticUpdate = false;
// }
break;
}
case 1003: // MESH PREFERENCES
{
::SetDisplaySettings();
break;
}
case 1005:
{
SMESHGUI_Preferences_ScalarBarDlg::ScalarBarPreferences( this );
break;
}
case 10070:
{
( new SMESHGUI_PrecisionDlg( this ) )->exec();
break;
}
case 10071:
{
if (act->isOn()) {
mgr->setValue( "SMESH", "display_entity", true );
}
else {
mgr->setValue( "SMESH", "display_entity", false );
}
break;
}
case 1006:
{
SMESHGUI_Preferences_SelectionDlg* aDlg =
new SMESHGUI_Preferences_SelectionDlg( this );
QColor aColor = mgr->colorValue( "SMESH", "highlight_color", Qt::cyan );
aDlg->SetColor(1, aColor);
aColor = mgr->colorValue( "SMESH", "selection_element_color", Qt::yellow );
aDlg->SetColor(2, aColor);
aColor = mgr->colorValue( "SMESH", "selection_object_color", Qt::white );
aDlg->SetColor(3, aColor);
aDlg->SetWidth(1, mgr->integerValue( "SMESH", "highlight_width", 5 ) );
aDlg->SetWidth(2, mgr->integerValue( "SMESH", "selection_width", 5 ) );
aDlg->SetPrecision(1, mgr->doubleValue( "SMESH", "selection_precision_node", 0.025 ) );
aDlg->SetPrecision(2, mgr->doubleValue( "SMESH", "selection_precision_element", 0.001 ) );
if (aDlg->exec()) {
QColor aPreColor = aDlg->GetColor(1),
aSelColor = aDlg->GetColor(2),
aHiColor = aDlg->GetColor(3);
int aPreWidth = aDlg->GetWidth(1),
aSelWidth = aDlg->GetWidth(2);
double aTolNodes = aDlg->GetPrecision(1),
aTolItems = aDlg->GetPrecision(2);
mgr->setValue( "SMESH", "highlight_color", aPreColor );
mgr->setValue( "SMESH", "selection_element_color", aSelColor );
mgr->setValue( "SMESH", "selection_object_color", aHiColor );
mgr->setValue( "SMESH", "highlight_width", aPreWidth );
mgr->setValue( "SMESH", "selection_width", aSelWidth );
mgr->setValue( "SMESH", "selection_precision_node", aTolNodes );
mgr->setValue( "SMESH", "selection_precision_element", aTolItems );
// update current study settings
SMESH::UpdateSelectionProp( this );
if( vtkwnd ) {
// update VTK viewer properties
SVTK_RenderWindowInteractor* anInteractor =
dynamic_cast<SVTK_RenderWindowInteractor*>( vtkwnd->getRWInteractor() );
if (anInteractor) {
anInteractor->SetSelectionProp(aSelColor.red()/255., aSelColor.green()/255.,
aSelColor.blue()/255., aSelWidth);
anInteractor->SetSelectionTolerance(aTolNodes, aTolItems);
SVTK_InteractorStyle* aStyle =
dynamic_cast<SVTK_InteractorStyle*>( anInteractor->GetInteractorStyle() );
if (aStyle)
aStyle->setPreselectionProp(aPreColor.red()/255., aPreColor.green()/255.,
aPreColor.blue()/255., aPreWidth);
}
// update actors
vtkRenderer* aRenderer = vtkwnd->getRenderer();
vtkActorCollection *aCollection = aRenderer->GetActors();
aCollection->InitTraversal();
while(vtkActor *anAct = aCollection->GetNextActor()){
if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
anActor->SetHighlightColor(aHiColor.red()/255., aHiColor.green()/255.,
aHiColor.blue()/255.);
anActor->SetPreHighlightColor(aPreColor.red()/255., aPreColor.green()/255.,
aPreColor.blue()/255.);
}
}
}
}
break;
}
case 1100: // EDIT HYPOTHESIS
{
if(checkLock(aStudy)) break;
@ -2271,42 +2108,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
}
break;
}
case 10001: // DISPLAY MODE PREFERENCE
{
// Wireframe
act->setOn( true );
action( 10002 )->setOn( false );
action( 10004 )->setOn( false );
action( 10003 )->setOn( true );
mgr->setValue( "SMESH", "display_mode", "Wireframe");
break;
}
case 10002:
{
act->setOn( true );
action( 10001 )->setOn( false );
action( 10004 )->setOn( false );
action( 10003 )->setOn( true );
mgr->setValue( "SMESH", "display_mode", "Shading");
break;
}
case 10003:
{
mgr->setValue( "SMESH", "display_mode", "Shrink" );
break;
}
case 10004:
{
act->setOn( true );
action( 10001 )->setOn( false );
action( 10002 )->setOn( false );
action( 10003 )->setOn( false );
mgr->setValue( "SMESH", "display_mode", "Nodes" );
break;
}
}
//updateObjBrowser();
return true;
}
@ -2341,81 +2143,6 @@ bool SMESHGUI::OnKeyPress( QKeyEvent * pe, SUIT_ViewWindow * wnd )
return true;
}
//=============================================================================
/*!
*
*/
//=============================================================================
bool SMESHGUI::SetSettings(SUIT_Desktop* parent)
{
SMESHGUI::GetSMESHGUI();
SUIT_ResourceMgr* mgr = resourceMgr();
if( !mgr )
return false;
// Display mode
QString DisplayMode = "Shading";
if ( mgr->hasValue("SMESH","display_mode") )
DisplayMode = mgr->stringValue("SMESH","display_mode");
else
mgr->setValue("SMESH","display_mode", "Shading");
bool Shrink = false;
if ( mgr->hasValue("SMESH","display_mode") )
Shrink = mgr->stringValue("SMESH","display_mode") == "Shrink";
if (DisplayMode == "Wireframe") {
// wireframe
action( 10004 )->setOn( false );
action( 10002 )->setOn( false );
action( 10001 )->setOn( true );
action( 10003 )->setOn( true );
}
else if (DisplayMode == "Nodes") {
// poins
action( 10004 )->setOn( true );
action( 10002 )->setOn( false );
action( 10001 )->setOn( false );
action( 10003 )->setOn( false );
}
else {
// default is shading
action( 10004 )->setOn( false );
action( 10002 )->setOn( true );
action( 10001 )->setOn( false );
action( 10003 )->setOn( true );
}
action( 10003 )->setOn( Shrink );
// Automatic Update
// if ( mgr->booleanValue( "SMESH","AutomaticUpdate", false ) ) {
// action( 1001 )->setOn( true );
// myAutomaticUpdate = true;
// }
// else {
// action( 1001 )->setOn( false );
// myAutomaticUpdate = false;
// }
if ( mgr->booleanValue( "SMESH","display_entity", false ) )
action( 10071 )->setOn( true );
else
action( 10071 )->setOn( false );
// Selection
SMESH::UpdateSelectionProp( this );
// menus disable
action( 111 )->setEnabled( false ); // IMPORT DAT
//action( 112 )->setEnabled( false );
//parent->menuBar()->setItemEnabled(112, false); // IMPORT UNV
return true;
}
//=============================================================================
/*! Method: BuildPresentation(const Handle(SALOME_InteractiveObject)& theIO)
* Purpose: ensures that the actor for the given <theIO> exists in the active VTK view
@ -2572,16 +2299,6 @@ void SMESHGUI::initialize( CAM_Application* app )
createSMESHAction( 414, "REVOLUTION", "ICON_REVOLUTION" );
createSMESHAction( 415, "MAP", "ICON_MAP" );
createSMESHAction( 416, "EXTRUSION_ALONG", "ICON_EXTRUSION_ALONG" );
createSMESHAction( 10001, "WIRE", "ICON_WIRE", 0, true );
createSMESHAction( 10002, "SHADE", "ICON_SHADE", 0, true );
createSMESHAction( 10003, "SHRINK", "ICON_SHRINK", 0, true );
createSMESHAction( 10004, "NODES", "ICON_POINTS", 0, true );
createSMESHAction( 1001, "AUTO_UPD", "", 0, true );
createSMESHAction( 1003, "COLORS" );
createSMESHAction( 1005, "SCALAR_BAR" );
createSMESHAction( 1006, "SELECTION" );
createSMESHAction( 10070, "PRECISION", "", 0, true );
createSMESHAction( 10071, "DISP_ENT", "", 0, true );
createSMESHAction( 200, "RESET" );
createSMESHAction( 201, "SCALAR_BAR_PROP" );
createSMESHAction( 211, "WIRE", "ICON_WIRE", 0, true );
@ -2617,23 +2334,16 @@ void SMESHGUI::initialize( CAM_Application* app )
meshId = createMenu( tr( "MEN_MESH" ), -1, 70, 10 ),
ctrlId = createMenu( tr( "MEN_CTRL" ), -1, 60, 10 ),
modifyId = createMenu( tr( "MEN_MODIFY" ), -1, 40, 10 ),
prefId = createMenu( tr( "MEN_PREF" ), -1, 4, 10 ),
viewId = createMenu( tr( "MEN_VIEW" ), -1, 2 );
createMenu( separator(), fileId );
int importId = createMenu( tr( "MEN_IMPORT" ), fileId, 11, 10 ),
exportId = createMenu( tr( "MEN_EXPORT" ), fileId, 12, 10 ),
addId = createMenu( tr( "MEN_ADD" ), modifyId, 402 ),
removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ),
renumId = createMenu( tr( "MEN_RENUM" ), modifyId, 404 ),
transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ),
meshPrefId = createMenu( tr( "MEN_MESH" ), prefId, 100 ),
dispModeId = createMenu( tr( "MEN_DISPMODE" ), meshPrefId, 1000 ),
qualityId = createMenu( tr( "MEN_QUALITY" ), meshPrefId, 1007 );
transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 );
createMenu( 111, importId, -1 );
createMenu( 112, importId, -1 );
@ -2722,25 +2432,6 @@ void SMESHGUI::initialize( CAM_Application* app )
createMenu( 414, modifyId, -1 );
createMenu( 415, modifyId, -1 );
createMenu( 10001, dispModeId, -1 );
createMenu( 10002, dispModeId, -1 );
createMenu( 10004, dispModeId, -1 );
createMenu( 10003, dispModeId, -1 );
createMenu( 1001, prefId, -1 );
createMenu( separator(), prefId, -1 );
createMenu( 1003, prefId, -1 );
createMenu( separator(), prefId, -1 );
createMenu( 1005, prefId, -1 );
createMenu( separator(), prefId, -1 );
createMenu( 1006, prefId, -1 );
createMenu( separator(), prefId, -1 );
createMenu( 10070, qualityId, -1 );
createMenu( 10071, qualityId, -1 );
createMenu( separator(), prefId, -1 );
createMenu( 214, viewId, -1 );
// ----- create toolbars --------------
@ -3080,7 +2771,6 @@ bool SMESHGUI::activateModule( SUIT_Study* study )
setMenuShown( true );
setToolShown( true );
SetSettings( desktop() );
return res;
}

View File

@ -89,7 +89,6 @@ public :
virtual void contextMenuPopup( const QString&, QPopupMenu*, QString& );
virtual bool SetSettings ( SUIT_Desktop* );
virtual void BuildPresentation ( const Handle(SALOME_InteractiveObject)&,
SUIT_ViewWindow* = 0 );

View File

@ -88,7 +88,7 @@ SMESHGUI_Preferences_ScalarBarDlg* SMESHGUI_Preferences_ScalarBarDlg::myDlg = 0;
void SMESHGUI_Preferences_ScalarBarDlg::ScalarBarProperties( SMESHGUI* theModule )
{
if (!myDlg) {
myDlg = new SMESHGUI_Preferences_ScalarBarDlg( theModule, false);
myDlg = new SMESHGUI_Preferences_ScalarBarDlg( theModule, true);
myDlg->show();
} else {
myDlg->show();
@ -108,7 +108,7 @@ void SMESHGUI_Preferences_ScalarBarDlg::ScalarBarProperties( SMESHGUI* theModule
void SMESHGUI_Preferences_ScalarBarDlg::ScalarBarPreferences( SMESHGUI* theModule )
{
SMESHGUI_Preferences_ScalarBarDlg* aDlg =
new SMESHGUI_Preferences_ScalarBarDlg( theModule, true);
new SMESHGUI_Preferences_ScalarBarDlg( theModule, false);
aDlg->exec();
}