Salome HOME
refs #1330: draft preferences implementation for polyline arrow
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.cxx
index 9b1d8f3d5334eead598b93f2ca9c9249ea2b0296..aca7491c21c4ddfd4ddc716aa3d334ac9566d566 100644 (file)
@@ -831,6 +831,24 @@ void HYDROGUI_Module::createPreferences()
   setPreferenceProperty( defaultStricklerCoef, "min", 0.00 );
   setPreferenceProperty( defaultStricklerCoef, "max", 1000000.00 );
   setPreferenceProperty( defaultStricklerCoef, "step", 0.01 );
+
+  int polylinesGroup = addPreference( tr( "PREF_GROUP_POLYLINES" ), genTab );
+  int polylineArrow = addPreference( tr( "PREF_POLYLINE_ARROW" ), polylinesGroup,
+    LightApp_Preferences::Selector, "polyline", "arrow_type" );
+
+  QList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  indices.append( 2 );
+  setPreferenceProperty( polylineArrow, "indexes", indices );
+  QList<QVariant> arrow_types;
+  arrow_types.append( tr( "No" ) );
+  arrow_types.append( tr( "Triangle" ) );
+  arrow_types.append( tr( "Cone" ) );
+  setPreferenceProperty( polylineArrow, "strings", arrow_types );
+
+  int polylineSize = addPreference( tr( "PREF_POLYLINE_ARROW_SIZE" ), polylinesGroup,
+    LightApp_Preferences::IntSpin, "polyline", "arrow_size" );
 }
 
 void HYDROGUI_Module::preferencesChanged( const QString& theSection, const QString& thePref )
@@ -842,6 +860,10 @@ void HYDROGUI_Module::preferencesChanged( const QString& theSection, const QStri
         if ( resMgr && !aDoc.IsNull() )
             aDoc->SetDefaultStricklerCoefficient( resMgr->doubleValue( theSection, thePref, 0 ) );
     }
+    else if( theSection == "polyline" )
+    {
+      //TODO: update polylines
+    }
     else
         LightApp_Module::preferencesChanged( theSection, thePref );
 }
@@ -1089,10 +1111,13 @@ void HYDROGUI_Module::setObjectVisible( const int theViewId,
     if ( hydroObject )
     {
         SUIT_AbstractModel* treeModel = dynamic_cast<SUIT_AbstractModel*>( getApp()->objectBrowser()->model() );
-        QString id = hydroObject->text( hydroObject->customData( Qtx::IdType ).toInt() );
-        Qtx::VisibilityState visState = treeModel->visibilityState( id );
-        if ( visState != Qtx::UnpresentableState )
+        if ( treeModel )
+        {
+          QString id = hydroObject->text( hydroObject->customData( Qtx::IdType ).toInt() );
+          Qtx::VisibilityState visState = treeModel->visibilityState( id );
+          if ( visState != Qtx::UnpresentableState )
             treeModel->setVisibilityState( id, theState ? Qtx::ShownState : Qtx::HiddenState );
+        }
     }
 
     if ( theObject->GetKind() == KIND_BATHYMETRY && theState ) {
@@ -1538,6 +1563,7 @@ void HYDROGUI_Module::onViewCreated( SUIT_ViewWindow* theViewWindow )
       aViewFrame->installEventFilter( this );
 
       GraphicsView_ViewPort* aViewPort = aViewFrame->getViewPort();
+      aViewPort->setInteractionFlag( GraphicsView_ViewPort::GlobalWheelScaling );
 
       connect( aViewPort, SIGNAL( vpMouseEvent( QGraphicsSceneMouseEvent* ) ),
                this, SLOT( onViewPortMouseEvent( QGraphicsSceneMouseEvent* ) ) );
@@ -1818,7 +1844,7 @@ void HYDROGUI_Module::onObjectClicked( SUIT_DataObject* theObject, int theColumn
 
   setObjectVisible( HYDROGUI_Tool::GetActiveViewId( this ), hydroObject->modelObject(), vis );
 
-  update( UF_OCCViewer | ( visState == Qtx::ShownState ? UF_FitAll : 0 ) );
+  update( UF_OCCViewer | UF_VTKViewer | ( visState == Qtx::ShownState ? UF_FitAll : 0 ) );
 }
 
 Handle(HYDROData_StricklerTable) HYDROGUI_Module::getLandCoverColoringTable( const int theViewId ) const