]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Coloring of objects (Bug #219).
authoradv <adv@opencascade.com>
Wed, 11 Dec 2013 13:05:54 +0000 (13:05 +0000)
committeradv <adv@opencascade.com>
Wed, 11 Dec 2013 13:05:54 +0000 (13:05 +0000)
38 files changed:
src/HYDROData/HYDROData_Channel.cxx
src/HYDROData/HYDROData_Channel.h
src/HYDROData/HYDROData_Digue.cxx
src/HYDROData/HYDROData_Digue.h
src/HYDROData/HYDROData_IPolyline.cxx
src/HYDROData/HYDROData_IPolyline.h
src/HYDROData/HYDROData_ImmersibleZone.cxx
src/HYDROData/HYDROData_ImmersibleZone.h
src/HYDROData/HYDROData_Object.cxx
src/HYDROData/HYDROData_Object.h
src/HYDROData/HYDROData_Obstacle.cxx
src/HYDROData/HYDROData_Obstacle.h
src/HYDROData/HYDROData_Polyline3D.cxx
src/HYDROData/HYDROData_Polyline3D.h
src/HYDROData/HYDROData_PolylineXY.cxx
src/HYDROData/HYDROData_PolylineXY.h
src/HYDROData/HYDROData_Profile.cxx
src/HYDROData/HYDROData_Profile.h
src/HYDROData/HYDROData_Stream.cxx
src/HYDROData/HYDROData_Stream.h
src/HYDROGUI/HYDROGUI_ChannelOp.cxx
src/HYDROGUI/HYDROGUI_ChannelOp.h
src/HYDROGUI/HYDROGUI_ColorDlg.cxx
src/HYDROGUI/HYDROGUI_ColorDlg.h
src/HYDROGUI/HYDROGUI_DigueOp.cxx
src/HYDROGUI/HYDROGUI_DigueOp.h
src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx
src/HYDROGUI/HYDROGUI_ImportGeomObjectOp.cxx
src/HYDROGUI/HYDROGUI_ImportObstacleFromFileOp.cxx
src/HYDROGUI/HYDROGUI_Module.cxx
src/HYDROGUI/HYDROGUI_Poly3DOp.cxx
src/HYDROGUI/HYDROGUI_PolylineOp.cxx
src/HYDROGUI/HYDROGUI_ProfileOp.cxx
src/HYDROGUI/HYDROGUI_SetColorOp.cxx
src/HYDROGUI/HYDROGUI_SetColorOp.h
src/HYDROGUI/HYDROGUI_Shape.cxx
src/HYDROGUI/HYDROGUI_StreamOp.cxx
src/HYDROGUI/resources/HYDROGUI_msg_en.ts

index e1363d79e9db29b016e712ba7efdbaad1ddf84a5..2640d5ef61a6b1f6d40a9461be583cb01e30d1ff 100644 (file)
@@ -14,6 +14,7 @@
 #include <BRepTools.hxx>
 #endif
 
+#include <QColor>
 #include <QStringList>
 
 #define PYTHON_CHANNEL_ID "KIND_CHANNEL"
@@ -116,6 +117,26 @@ void HYDROData_Channel::Update()
   }
 }
 
+QColor HYDROData_Channel::DefaultFillingColor()
+{
+  return QColor( Qt::blue );
+}
+
+QColor HYDROData_Channel::DefaultBorderColor()
+{
+  return QColor( Qt::transparent );
+}
+
+QColor HYDROData_Channel::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_Channel::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
+
 bool HYDROData_Channel::SetGuideLine( const Handle(HYDROData_Polyline3D)& theGuideLine )
 {
   Handle(HYDROData_Polyline3D) aPrevGuideLine = GetGuideLine();
index 8ffa76a7bcab1184692394120b3575a922691905..155f9e394979f61b6f06d6fbb6e3eab20f60bdeb 100644 (file)
@@ -60,6 +60,16 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  /**
+   * Returns default filling color for new channel.
+   */
+  HYDRODATA_EXPORT static QColor DefaultFillingColor();
+
+  /**
+   * Returns default border color for new channel.
+   */
+  HYDRODATA_EXPORT static QColor DefaultBorderColor();
+
 
 public:      
   // Public methods to work with Channel
@@ -96,6 +106,18 @@ public:
   HYDRODATA_EXPORT virtual void RemoveProfile();
 
 
+protected:
+
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
 protected:
 
   friend class HYDROData_Iterator;
index 077d7e8b96a3f631ad3263bfe590ea66acfd6400..5efa44060097c0803dab09ec90bc7994fadd103e 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <TopoDS_Shape.hxx>
 
+#include <QColor>
 #include <QStringList>
 
 #define PYTHON_DIGUE_ID "KIND_DIGUE"
@@ -44,5 +45,23 @@ QStringList HYDROData_Digue::DumpToPython( MapOfTreatedObjects& theTreatedObject
   return aResList;
 }
 
+QColor HYDROData_Digue::DefaultFillingColor()
+{
+  return QColor( Qt::red );
+}
+
+QColor HYDROData_Digue::DefaultBorderColor()
+{
+  return QColor( Qt::transparent );
+}
 
+QColor HYDROData_Digue::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_Digue::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
 
index c4145d220c439c2e881a5bbfdc3a68fc92c7a7a1..fcd8fb77f1f16f679df7ed32f19c7acde965d982 100644 (file)
@@ -34,6 +34,28 @@ public:
    */
   HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const;
 
+  /**
+   * Returns default filling color for new digue.
+   */
+  HYDRODATA_EXPORT static QColor DefaultFillingColor();
+
+  /**
+   * Returns default border color for new digue.
+   */
+  HYDRODATA_EXPORT static QColor DefaultBorderColor();
+
+protected:
+
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
 protected:
 
   friend class HYDROData_Iterator;
index 687318cc064b4d81262b0323f33b98339e7c65e6..73675538bb3a92c17c3f2ffe59b4bfe31d698b43 100755 (executable)
@@ -13,6 +13,8 @@
 #include <TNaming_Builder.hxx>
 #include <TNaming_NamedShape.hxx>
 
+#include <QColor>
+
 IMPLEMENT_STANDARD_HANDLE(HYDROData_IPolyline, HYDROData_Entity)
 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_IPolyline, HYDROData_Entity)
 
@@ -25,6 +27,21 @@ HYDROData_IPolyline::~HYDROData_IPolyline()
 {
 }
 
+void HYDROData_IPolyline::SetWireColor( const QColor& theColor )
+{
+  SetColor( theColor, DataTag_WireColor );
+}
+
+QColor HYDROData_IPolyline::GetWireColor() const
+{
+  return GetColor( DefaultWireColor(), DataTag_WireColor );
+}
+
+QColor HYDROData_IPolyline::DefaultWireColor()
+{
+  return QColor( Qt::black );
+}
+
 int HYDROData_IPolyline::NbPoints( const int theSectionIndex ) const
 {
   return GetPoints( theSectionIndex ).Length();
index 0d3d7442ce8f2e074fa37880ee370cb9f346cc44..1a7c63ae5ece8010b1d37757d409e39921eaeb7a 100644 (file)
@@ -37,11 +37,31 @@ protected:
     DataTag_Points,
     DataTag_Sections,
     DataTag_PolylineShape,
+    DataTag_WireColor,
   };
 
 public:
   DEFINE_STANDARD_RTTI(HYDROData_IPolyline);
 
+public:
+
+  /**
+   * Sets wire color for object.
+   */
+  HYDRODATA_EXPORT virtual void SetWireColor( const QColor& theColor );
+
+  /**
+   * Returns wire color of object.
+   */
+  HYDRODATA_EXPORT virtual QColor GetWireColor() const;
+
+  /**
+   * Returns default wire color for new object.
+   */
+  HYDRODATA_EXPORT static QColor DefaultWireColor();
+
+public:
+
   /**
    * Returns the 3D presentation of all points.
    */
index 38b83a61a1f920dbf06a392ba240d5871d6cc7f0..eb3ae96669cf873e4ab86daa31ea92a30c380084 100644 (file)
@@ -172,13 +172,12 @@ TopoDS_Shape HYDROData_ImmersibleZone::generateTopShape() const
 
 TopoDS_Shape HYDROData_ImmersibleZone::GetShape3D() const
 {
-  // TODO
   return getTopShape();
 }
 
 QColor HYDROData_ImmersibleZone::DefaultFillingColor()
 {
-  return QColor( Qt::green );
+  return QColor( Qt::darkBlue );
 }
 
 QColor HYDROData_ImmersibleZone::DefaultBorderColor()
@@ -186,6 +185,16 @@ QColor HYDROData_ImmersibleZone::DefaultBorderColor()
   return QColor( Qt::transparent );
 }
 
+QColor HYDROData_ImmersibleZone::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_ImmersibleZone::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
+
 void HYDROData_ImmersibleZone::SetPolyline( const Handle(HYDROData_PolylineXY)& thePolyline )
 {
   SetReferenceObject( thePolyline, DataTag_Polyline );
index d8ea781c33d761aba6394d19dc58660ac9754eae..e71a50171aa77e20a7a96455b371d424c764baf3 100644 (file)
@@ -83,6 +83,18 @@ public:
    */
   HYDRODATA_EXPORT virtual void RemovePolyline();
 
+protected:
+
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
 private:
 
   TopoDS_Shape generateTopShape() const;
index 5349d354169574155e9a35e97f47d6984f779571..524916fcef7ebc3d450f9a587fa4e9182b607208 100644 (file)
@@ -159,7 +159,7 @@ void HYDROData_Object::SetFillingColor( const QColor& theColor )
 
 QColor HYDROData_Object::GetFillingColor() const
 {
-  return GetColor( DefaultFillingColor(), DataTag_FillingColor );
+  return GetColor( getDefaultFillingColor(), DataTag_FillingColor );
 }
 
 void HYDROData_Object::SetBorderColor( const QColor& theColor )
@@ -169,7 +169,7 @@ void HYDROData_Object::SetBorderColor( const QColor& theColor )
 
 QColor HYDROData_Object::GetBorderColor() const
 {
-  return GetColor( DefaultBorderColor(), DataTag_BorderColor );
+  return GetColor( getDefaultBorderColor(), DataTag_BorderColor );
 }
 
 QColor HYDROData_Object::DefaultFillingColor()
@@ -180,4 +180,15 @@ QColor HYDROData_Object::DefaultFillingColor()
 QColor HYDROData_Object::DefaultBorderColor()
 {
   return QColor( Qt::transparent );
-}
\ No newline at end of file
+}
+
+QColor HYDROData_Object::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_Object::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
+
index 3eb3824872f878ee68bc4229628d275f72e50733..807465639b38f62d66976fa1514737d0e26c2a08 100644 (file)
@@ -126,6 +126,18 @@ public:
    */
   HYDRODATA_EXPORT static QColor DefaultBorderColor();
 
+protected:
+
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
 protected:
 
   /**
index b83e7cb8af3c9ed39658e0462e520e10b30c4e2f..6c89c52d159456048b019cb81171596059379120 100644 (file)
@@ -7,16 +7,24 @@
 
 #include <BRepTools.hxx>
 #include <BRep_Builder.hxx>
+
 #include <IGESControl_Reader.hxx>
 #include <IGESData_IGESModel.hxx>
+
 #include <STEPControl_Reader.hxx>
+
 #include <Interface_Static.hxx>
+
 #include <TopoDS_Iterator.hxx>
 #include <TopoDS_Shape.hxx>
+
 #include <TDataStd_AsciiString.hxx>
+
 #include <TColStd_SequenceOfAsciiString.hxx>
+
 #include <TopExp_Explorer.hxx>
 
+#include <QColor>
 #include <QFile>
 #include <QFileInfo>
 #include <QStringList>
@@ -72,6 +80,26 @@ TopoDS_Shape HYDROData_Obstacle::GetShape3D() const
   return getShape3D();
 }
 
+QColor HYDROData_Obstacle::DefaultFillingColor()
+{
+  return QColor( Qt::yellow );
+}
+
+QColor HYDROData_Obstacle::DefaultBorderColor()
+{
+  return QColor( Qt::transparent );
+}
+
+QColor HYDROData_Obstacle::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_Obstacle::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
+
 bool HYDROData_Obstacle::ImportFromFile( const QString& theFilePath )
 {
   // Check the file existence
index 66db4c38014608aeb4f06a83c054853ad5ca8768..bfa194e691dcf72c4556bf2ee0820dd5243321a9 100644 (file)
@@ -46,6 +46,19 @@ public:
    */
   HYDRODATA_EXPORT virtual TopoDS_Shape GetShape3D() const;
 
+  /**
+   * Returns default filling color for new obstacle.
+   */
+  HYDRODATA_EXPORT static QColor DefaultFillingColor();
+
+  /**
+   * Returns default border color for new obstacle.
+   */
+  HYDRODATA_EXPORT static QColor DefaultBorderColor();
+
+
+public:
+
   /**
    * Imports shape from file containing geometrical object and sets this
    * shape as the obstacle shape.
@@ -81,6 +94,18 @@ public:
    */
   HYDRODATA_EXPORT QString GetGeomObjectEntry() const;
 
+protected:
+
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
 protected:
 
   friend class HYDROData_Iterator;
index cf41020e6ef39a5d0b8907b33b069cdd4049ee8d..8bff09cb3301cb587b4de1b9c4e6dc684104e9d7 100644 (file)
@@ -12,6 +12,7 @@
 #include <TopoDS.hxx>
 #include <TopoDS_Wire.hxx>
 
+#include <QColor>
 #include <QStringList>
 
 #define PYTHON_POLYLINE_ID "KIND_POLYLINE"
@@ -126,6 +127,26 @@ void HYDROData_Polyline3D::Update()
   SetShape3D( aResWire );
 } 
 
+QColor HYDROData_Polyline3D::DefaultFillingColor()
+{
+  return QColor( Qt::transparent );
+}
+
+QColor HYDROData_Polyline3D::DefaultBorderColor()
+{
+  return QColor( Qt::red );
+}
+
+QColor HYDROData_Polyline3D::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_Polyline3D::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
+
 bool HYDROData_Polyline3D::SetPolylineXY( const Handle(HYDROData_PolylineXY)& thePolyline )
 {
   if ( thePolyline.IsNull() )
index 16c6f6e6e751e0de8dd90bb3c43544315a1efb87..e05cfdb9f2a2b092b00130096bae7900ccef4d77 100644 (file)
@@ -66,6 +66,16 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  /**
+   * Returns default filling color for new 3D polyline.
+   */
+  HYDRODATA_EXPORT static QColor DefaultFillingColor();
+
+  /**
+   * Returns default border color for new 3D polyline.
+   */
+  HYDRODATA_EXPORT static QColor DefaultBorderColor();
+
 
 public:      
   // Public methods to work with 3D polyline
@@ -104,6 +114,16 @@ public:
 
 protected:
 
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
   /**
    * Checks and if necessary create child 3D object.
    * Reimplemented to prevent creation of 3D child object.
index 18dc1e4c663e2bed89a8a823d1af7ee06fb35f1e..776e7db09e503c19ff5bee2533cf15475881fc02 100755 (executable)
@@ -35,6 +35,7 @@
 
 #include <TopTools_ListIteratorOfListOfShape.hxx>
 
+#include <QColor>
 #include <QPainterPath>
 #include <QVariant>
 
@@ -107,6 +108,11 @@ QVariant HYDROData_PolylineXY::GetDataVariant()
   return aVarData;
 }
 
+QColor HYDROData_PolylineXY::DefaultWireColor()
+{
+  return QColor( Qt::red );
+}
+
 TopoDS_Shape HYDROData_PolylineXY::GetShape()
 {
   return getPolylineShape();
index 5ce65a94cb72fa52920917ca99db967fb3b65191..d14212e163ab7e52694d798d7752b2236b572510 100644 (file)
@@ -45,6 +45,11 @@ public:
    */
   HYDRODATA_EXPORT virtual QVariant GetDataVariant();
 
+  /**
+   * Returns default wire color for new polyline.
+   */
+  HYDRODATA_EXPORT static QColor DefaultWireColor();
+
 public:
 
   /**
index ea90dad95352e196ea790c819c8a11b22d7e4607..f2f8ba46bde8dd1b220323e21c8e77b38c9486d6 100755 (executable)
@@ -21,6 +21,7 @@
 #include <OSD_File.hxx>
 #include <OSD_Protection.hxx>
 
+#include <QColor>
 #include <QStringList>
 
 #define PYTHON_PROFILE_ID "KIND_PROFILE"
@@ -37,6 +38,24 @@ HYDROData_Profile::~HYDROData_Profile()
 {
 }
 
+QStringList HYDROData_Profile::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
+{
+  QStringList aResList;
+
+  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+  if ( aDocument.IsNull() )
+    return aResList;
+                             
+  QString aDocName = aDocument->GetDocPyName();
+  QString aProfileName = GetName();
+
+  aResList << QString( "%1 = %2.CreateObject( %3 );" )
+              .arg( aProfileName ).arg( aDocName ).arg( PYTHON_PROFILE_ID );
+  aResList << QString( "%1.SetName( \"%1\" );" ).arg( aProfileName );
+
+  return aResList;
+}
+
 TopoDS_Shape HYDROData_Profile::GetTopShape() const
 {
   TopoDS_Wire aWire;
@@ -90,25 +109,24 @@ void HYDROData_Profile::Update()
   SetShape3D( aWire );
 }
 
-/**
- * Dump object to Python script representation.
- */
-QStringList HYDROData_Profile::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
+QColor HYDROData_Profile::DefaultFillingColor()
 {
-  QStringList aResList;
+  return QColor( Qt::transparent );
+}
 
-  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
-  if ( aDocument.IsNull() )
-    return aResList;
-                             
-  QString aDocName = aDocument->GetDocPyName();
-  QString aProfileName = GetName();
+QColor HYDROData_Profile::DefaultBorderColor()
+{
+  return QColor( Qt::black );
+}
 
-  aResList << QString( "%1 = %2.CreateObject( %3 );" )
-              .arg( aProfileName ).arg( aDocName ).arg( PYTHON_PROFILE_ID );
-  aResList << QString( "%1.SetName( \"%1\" );" ).arg( aProfileName );
+QColor HYDROData_Profile::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
 
-  return aResList;
+QColor HYDROData_Profile::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
 }
 
 bool HYDROData_Profile::IsValid() const
@@ -381,6 +399,8 @@ bool HYDROData_Profile::ImportFromFile( const Handle(HYDROData_Document)& theDoc
     aProfile->SetName( aProfileName );
 
     aProfile->SetFilePath( theFileName );
+
+    aProfile->SetBorderColor( HYDROData_Profile::DefaultBorderColor() );
   }
 
   return !aCreatedProfiles.IsEmpty();
index 9f8aa531c06efb031ddc7048d6149cedc80ddd48..dc62e6fe52d69abdfa57deecaa244ea84439f218 100644 (file)
@@ -43,6 +43,11 @@ public:
    */
   HYDRODATA_EXPORT virtual const ObjectKind GetKind() const { return KIND_PROFILE; }
 
+  /**
+   * Dump object to Python script representation.
+   */
+  HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const;
+
   /**
    * Returns the top shape of the object.
    */
@@ -61,10 +66,17 @@ public:
   HYDRODATA_EXPORT virtual void Update();
 
   /**
-   * Dump object to Python script representation.
+   * Returns default filling color for new profile.
    */
-  HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const;
+  HYDRODATA_EXPORT static QColor DefaultFillingColor();
+
+  /**
+   * Returns default border color for new profile.
+   */
+  HYDRODATA_EXPORT static QColor DefaultBorderColor();
+
 
+public:
 
   /**
    * Check profile data and returns true if profile is valid.
@@ -198,6 +210,16 @@ public:
 
 protected:
 
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
   /**
    * Checks and if necessary create child 3D object.
    * Reimplemented to prevent creation of 3D child object.
index ec2b1cb9cb199810671025fe882878c7bbc95692..e49b2b795583bbe69d612a933165b53a64748f63 100644 (file)
@@ -5,13 +5,19 @@
 #include "HYDROData_PolylineXY.h"
 #include "HYDROData_Profile.h"
 
-#include <BRep_Builder.hxx>
-#include <BRepBuilderAPI_MakeEdge.hxx>
-#include <BRepBuilderAPI_MakeWire.hxx>
-#include <BRepBuilderAPI_MakeFace.hxx>
-
 #include <TDataStd_RealArray.hxx>
 
+#include <Precision.hxx>
+
+#include <NCollection_DataMap.hxx>
+
+#include <TColStd_Array1OfReal.hxx>
+#include <TColStd_ListOfReal.hxx>
+#include <TColStd_ListIteratorOfListOfReal.hxx>
+#include <TCollection_CompareOfReal.hxx>
+#include <TColgp_Array1OfPnt.hxx>
+#include <TColgp_HArray1OfPnt.hxx>
+
 #include <TopoDS.hxx>
 #include <TopoDS_Wire.hxx>
 #include <TopoDS_Shell.hxx>
 #include <TopoDS_Vertex.hxx>
 #include <TopExp.hxx>
 #include <TopExp_Explorer.hxx>
+
+#include <Bnd_Box.hxx>
+
+#include <BRep_Builder.hxx>
+#include <BRepBuilderAPI_MakeEdge.hxx>
+#include <BRepBuilderAPI_MakeWire.hxx>
+#include <BRepBuilderAPI_MakeFace.hxx>
+
+#include <BRepBndLib.hxx>
 #include <BRepProj_Projection.hxx>
 #include <BRepExtrema_ExtCC.hxx>
+#include <BRepCheck_Analyzer.hxx>
+
+#include <gp.hxx>
 #include <gp_Ax1.hxx>
 #include <gp_Ax2.hxx>
 #include <gp_Ax3.hxx>
 #include <gp_Vec.hxx>
 #include <gp_Pnt.hxx>
 #include <gp_Pln.hxx>
-#include <gp.hxx>
-#include <Bnd_Box.hxx>
-#include <BRepBndLib.hxx>
-#include <TColStd_Array1OfReal.hxx>
-#include <Precision.hxx>
-#include <QStringList>
 
-#include <NCollection_DataMap.hxx>
-typedef NCollection_DataMap<Standard_Real, Handle(HYDROData_Profile)> HYDROData_DataMapOfRealOfHDProfile;
-#include <TColStd_ListOfReal.hxx>
-#include <TColStd_ListIteratorOfListOfReal.hxx>
-#include <TCollection_CompareOfReal.hxx>
-#include <SortTools_QuickSortOfReal.hxx>
-#include <TColgp_Array1OfPnt.hxx>
-#include <TColgp_HArray1OfPnt.hxx>
 #include <GeomAPI_Interpolate.hxx>
 #include <Geom_BSplineCurve.hxx>
+
 #include <TopTools_Array1OfShape.hxx>
-#include <BRepCheck_Analyzer.hxx>
+
+#include <SortTools_QuickSortOfReal.hxx>
+
+#include <QColor>
+#include <QStringList>
 
 //#define DEB_STREAM 1
 #ifdef DEB_STREAM
@@ -58,6 +67,8 @@ typedef NCollection_DataMap<Standard_Real, Handle(HYDROData_Profile)> HYDROData_
 
 #define PYTHON_STREAM_ID "KIND_STREAM"
 
+typedef NCollection_DataMap<Standard_Real, Handle(HYDROData_Profile)> HYDROData_DataMapOfRealOfHDProfile;
+
 IMPLEMENT_STANDARD_HANDLE(HYDROData_Stream,HYDROData_NaturalObject)
 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Stream,HYDROData_NaturalObject)
 
@@ -111,11 +122,14 @@ TopoDS_Shape HYDROData_Stream::GetTopShape() const
 {
   return getTopShape();
 }
+
 TopoDS_Shape HYDROData_Stream::GetShape3D() const
 {
   return getShape3D();
 }
- Handle(Geom_BSplineCurve) HYDROData_Stream::buildInterpolationCurve(const   Handle(TColgp_HArray1OfPnt)& theArrayOfPnt)
+
+Handle(Geom_BSplineCurve) HYDROData_Stream::buildInterpolationCurve( 
+  const Handle(TColgp_HArray1OfPnt)& theArrayOfPnt )
 {
   Handle(Geom_BSplineCurve) aBSpline;
   GeomAPI_Interpolate anInterpolator (theArrayOfPnt, Standard_False, 1.0e-5); 
@@ -124,6 +138,7 @@ TopoDS_Shape HYDROData_Stream::GetShape3D() const
        aBSpline = anInterpolator.Curve();
   return aBSpline; 
 }
+
 void HYDROData_Stream::Update()
 {
   HYDROData_NaturalObject::Update();
@@ -270,6 +285,26 @@ void HYDROData_Stream::Update()
 
 }
 
+QColor HYDROData_Stream::DefaultFillingColor()
+{
+  return QColor( Qt::green );
+}
+
+QColor HYDROData_Stream::DefaultBorderColor()
+{
+  return QColor( Qt::transparent );
+}
+
+QColor HYDROData_Stream::getDefaultFillingColor() const
+{
+  return DefaultFillingColor();
+}
+
+QColor HYDROData_Stream::getDefaultBorderColor() const
+{
+  return DefaultBorderColor();
+}
+
 bool HYDROData_Stream::SetHydraulicAxis( const Handle(HYDROData_PolylineXY)& theAxis )
 {
   Handle(HYDROData_PolylineXY) aPrevAxis = GetHydraulicAxis();
index 3ebc441ab6bb2810e5d110a3bb1eac6e4d28a347..e7bec1950525accfbaba3acdfa31092779f17533 100644 (file)
@@ -63,6 +63,16 @@ public:
    */
   HYDRODATA_EXPORT virtual void Update();
 
+  /**
+   * Returns default filling color for new stream.
+   */
+  HYDRODATA_EXPORT static QColor DefaultFillingColor();
+
+  /**
+   * Returns default border color for new stream.
+   */
+  HYDRODATA_EXPORT static QColor DefaultBorderColor();
+
 
 public:      
   // Public methods to work with Stream
@@ -135,6 +145,16 @@ protected:
    */
   Handle(Geom_BSplineCurve) buildInterpolationCurve(const   Handle(TColgp_HArray1OfPnt)& theArrayOfPnt);
 
+  /**
+   * Returns default filling color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultFillingColor() const;
+
+  /**
+   * Returns default border color for new object.
+   */
+  HYDRODATA_EXPORT virtual QColor getDefaultBorderColor() const;
+
 private:
   
   void setParametersArray( const TColStd_Array1OfReal& theArray );
index 4ccd4df478abdb9737beb6b43446b3d897a977e9..0149a1c85d108641db29e1eaad2bc99a64112ca8 100644 (file)
@@ -129,7 +129,7 @@ HYDROGUI_InputPanel* HYDROGUI_ChannelOp::createInputPanel() const
 }
 
 bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags,
-                                              QString& theErrorMsg )
+                                       QString& theErrorMsg )
 {
   HYDROGUI_ChannelDlg* aPanel = ::qobject_cast<HYDROGUI_ChannelDlg*>( inputPanel() );
   if ( !aPanel )
@@ -158,7 +158,8 @@ bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags,
 
   myEditedObject->SetName( anObjectName );
 
-  if ( !myIsEdit ) {
+  if ( !myIsEdit )
+  {
     myEditedObject->SetFillingColor( HYDROData_Channel::DefaultFillingColor() );
     myEditedObject->SetBorderColor( HYDROData_Channel::DefaultBorderColor() );
   }
index 25f47a37bb28f69238a3dda9f4732e899973c75a..ddb294ef771e4c59b7e791e2e69f9e279c7d7d01 100644 (file)
@@ -53,6 +53,7 @@ protected slots:
 
 protected:
   virtual void               erasePreview();
+
   virtual Handle(HYDROData_Channel) getObjectToEdit() const;
 
 protected:
index 278fdad2b5f69ddde64769a94a10cabf245c7d14..5bc7f5fe87b0bed7f1e3239fb1b289e5c1fea505 100644 (file)
 #include <QRadioButton>
 #include <QPushButton>
 
-HYDROGUI_ColorDlg::HYDROGUI_ColorDlg( QWidget* theParent )
-: QDialog( theParent )
+HYDROGUI_ColorDlg::HYDROGUI_ColorDlg( QWidget* theParent, bool theIsOneColor )
+: QDialog( theParent ),
+  myIsOneColor( theIsOneColor )
 {
-  // Filling color
-  QFrame* aFillingFrame = new QFrame( this );
-  QLabel* aFillingLabel = new QLabel( tr( "FILLING_COLOR" ), aFillingFrame );
-  myFillingTransparent = new QRadioButton( tr( "TRANSPARENT" ), aFillingFrame );
-  myFillingTransparent->setChecked( true );
-  myFillingColor = new QRadioButton( tr( "COLOR" ), aFillingFrame );
-  myFillingColorBox = new HYDROGUI_ColorWidget( aFillingFrame );
-
-  QGridLayout* aFillingLayout = new QGridLayout( aFillingFrame );
-  aFillingLayout->setMargin( 5 );
-  aFillingLayout->setSpacing( 5 );
-  aFillingLayout->addWidget( aFillingLabel, 0, 0, 2, 1 );
-  aFillingLayout->addWidget( myFillingTransparent, 0, 1 );
-  aFillingLayout->addWidget( myFillingColor,       1, 1 );
-  aFillingLayout->addWidget( myFillingColorBox,    1, 2 );
-
-  // Border color
-  myBorderColorGroup = new QGroupBox( tr( "BORDER_COLOR" ), this );
-  myBorderColorGroup->setCheckable( true );
-
-  myBorderColorBox = new HYDROGUI_ColorWidget( myBorderColorGroup );
-
-  QBoxLayout* aBorderColorLayout = new QHBoxLayout( myBorderColorGroup );
-  aBorderColorLayout->setMargin( 5 );
-  aBorderColorLayout->setSpacing( 5 );
-  aBorderColorLayout->addWidget( new QLabel( tr( "COLOR" ), myBorderColorGroup ) );
-  aBorderColorLayout->addWidget( myBorderColorBox );
+  QVBoxLayout* aMainLayout = new QVBoxLayout( this );
+  aMainLayout->setMargin( 5 );
+  aMainLayout->setSpacing( 5 );
+
+  if ( !theIsOneColor )
+  {
+    // Filling color
+    QFrame* aFillingFrame = new QFrame( this );
+    QLabel* aFillingLabel = new QLabel( tr( "FILLING_COLOR" ), aFillingFrame );
+    myFillingTransparent = new QRadioButton( tr( "TRANSPARENT" ), aFillingFrame );
+    myFillingTransparent->setChecked( true );
+    myFillingColor = new QRadioButton( tr( "COLOR" ), aFillingFrame );
+    myFillingColorBox = new HYDROGUI_ColorWidget( aFillingFrame );
+
+    QGridLayout* aFillingLayout = new QGridLayout( aFillingFrame );
+    aFillingLayout->setMargin( 5 );
+    aFillingLayout->setSpacing( 5 );
+    aFillingLayout->addWidget( aFillingLabel, 0, 0, 2, 1 );
+    aFillingLayout->addWidget( myFillingTransparent, 0, 1 );
+    aFillingLayout->addWidget( myFillingColor,       1, 1 );
+    aFillingLayout->addWidget( myFillingColorBox,    1, 2 );
+
+    // Border color
+    myBorderColorGroup = new QGroupBox( tr( "BORDER_COLOR" ), this );
+    myBorderColorGroup->setCheckable( true );
+
+    myBorderColorBox = new HYDROGUI_ColorWidget( myBorderColorGroup );
+
+    QBoxLayout* aBorderColorLayout = new QHBoxLayout( myBorderColorGroup );
+    aBorderColorLayout->setMargin( 5 );
+    aBorderColorLayout->setSpacing( 5 );
+    aBorderColorLayout->addWidget( new QLabel( tr( "COLOR" ), myBorderColorGroup ) );
+    aBorderColorLayout->addWidget( myBorderColorBox );
+
+    aMainLayout->addWidget( aFillingFrame );
+    aMainLayout->addWidget( myBorderColorGroup );
+  }
+  else
+  {
+    QFrame* aColorFrame = new QFrame( this );
+    QLabel* aColorLabel = new QLabel( tr( "OBJECT_COLOR" ), aColorFrame );
+    myColorBox = new HYDROGUI_ColorWidget( aColorFrame );
+    myColorBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); 
+    myColorBox->setFixedHeight( 20 );
+
+    QBoxLayout* aColorLayout = new QHBoxLayout( aColorFrame );
+    aColorLayout->setMargin( 10 );
+    aColorLayout->setSpacing( 5 );
+    aColorLayout->addWidget( aColorLabel );
+    aColorLayout->addWidget( myColorBox );
+
+    aMainLayout->addWidget( aColorFrame );
+  }
 
   // Buttons
   QPushButton* anOkButton = new QPushButton( tr( "OK" ), this );
@@ -76,12 +103,6 @@ HYDROGUI_ColorDlg::HYDROGUI_ColorDlg( QWidget* theParent )
   aButtonsLayout->addWidget( aCancelButton );
 
   // Common
-  QVBoxLayout* aMainLayout = new QVBoxLayout( this );
-  aMainLayout->setMargin( 5 );
-  aMainLayout->setSpacing( 5 );
-
-  aMainLayout->addWidget( aFillingFrame );
-  aMainLayout->addWidget( myBorderColorGroup );
   aMainLayout->addStretch();
   aMainLayout->addLayout( aButtonsLayout );
 
@@ -91,43 +112,67 @@ HYDROGUI_ColorDlg::HYDROGUI_ColorDlg( QWidget* theParent )
   connect( anOkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
   connect( aCancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
 
-  setFixedSize( 300, 150 );
+  setFixedSize( 300, theIsOneColor ? 90 : 150 );
 }
 
 HYDROGUI_ColorDlg::~HYDROGUI_ColorDlg()
 {
 }
 
-void HYDROGUI_ColorDlg::setFillingColor( const QColor& theColor )
+void HYDROGUI_ColorDlg::setFirstColor( const QColor& theColor )
 {
-  if( theColor.alpha() == 0 ) // transparent
-    myFillingTransparent->setChecked( true );
+  if ( !myIsOneColor )
+  {
+    if( theColor.alpha() == 0 ) // transparent
+      myFillingTransparent->setChecked( true );
+    else
+      myFillingColor->setChecked( true );
+
+    myFillingColorBox->setColor( theColor );
+  }
   else
-    myFillingColor->setChecked( true );
-
-  myFillingColorBox->setColor( theColor );
+  {
+    myColorBox->setColor( theColor );
+  }
 }
 
-QColor HYDROGUI_ColorDlg::getFillingColor() const
+QColor HYDROGUI_ColorDlg::getFirstColor() const
 {
-  QColor aColor( 255, 255, 255, 0 ); // transparent
-  if( myFillingColor->isChecked() )
-    aColor = myFillingColorBox->color();
+  QColor aColor;
+  if ( !myIsOneColor )
+  {
+    aColor = QColor( 255, 255, 255, 0 ); // transparent
+    if( myFillingColor->isChecked() )
+      aColor = myFillingColorBox->color();
+  }
+  else
+  {
+    aColor = myColorBox->color();
+  }
+
   return aColor;
 }
 
-void HYDROGUI_ColorDlg::setBorderColor( const QColor& theColor )
+void HYDROGUI_ColorDlg::setSecondColor( const QColor& theColor )
 {
+  if ( myIsOneColor )
+    return;
+
   bool isTransparent = theColor.alpha() == 0;
   myBorderColorGroup->setChecked( !isTransparent );
   myBorderColorBox->setColor( !isTransparent ? theColor : QColor( Qt::black ) );
 }
 
-QColor HYDROGUI_ColorDlg::getBorderColor() const
+QColor HYDROGUI_ColorDlg::getSecondColor() const
 {
   QColor aColor( Qt::transparent ); // transparent
+  if ( myIsOneColor )
+    return aColor;
+
   if( myBorderColorGroup->isChecked() )
     aColor = myBorderColorBox->color();
+  
   return aColor;
 }
 
index 4287e266329bdbffffaea3fff2f261a414ed01d1..c2acd295bda5be97dc7a781e12d7891e07887527 100644 (file)
@@ -34,14 +34,14 @@ class HYDROGUI_ColorDlg : public QDialog
   Q_OBJECT
 
 public:
-  HYDROGUI_ColorDlg( QWidget* );
+  HYDROGUI_ColorDlg( QWidget* theParent, bool theIsOneColor );
   virtual ~HYDROGUI_ColorDlg();
   
-  void                       setFillingColor( const QColor& theColor );
-  QColor                     getFillingColor() const;
+  void                       setFirstColor( const QColor& theColor );
+  QColor                     getFirstColor() const;
 
-  void                       setBorderColor( const QColor& theColor );
-  QColor                     getBorderColor() const;
+  void                       setSecondColor( const QColor& theColor );
+  QColor                     getSecondColor() const;
 
 protected slots:
 
@@ -52,6 +52,10 @@ private:
 
   QGroupBox*                 myBorderColorGroup;
   HYDROGUI_ColorWidget*      myBorderColorBox;
+
+  HYDROGUI_ColorWidget*      myColorBox;
+
+  bool                       myIsOneColor;
 };
 
 #endif
index d62b163006282d2a7ae90130bbc6dc6e07efecc3..0d8c6073b778916acc6e38ba394587abee17b90e 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "HYDROGUI_DigueDlg.h"
 #include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Shape.h"
 
 #include <HYDROData_Document.h>
 #include <HYDROData_Digue.h>
@@ -52,6 +53,21 @@ void HYDROGUI_DigueOp::startOperation()
   }
 }
 
+bool HYDROGUI_DigueOp::processApply( int& theUpdateFlags,
+                                     QString& theErrorMsg )
+{
+  if ( !HYDROGUI_ChannelOp::processApply( theUpdateFlags, theErrorMsg ) )
+    return false;
+
+  if ( !myIsEdit )
+  {
+    myEditedObject->SetFillingColor( HYDROData_Digue::DefaultFillingColor() );
+    myEditedObject->SetBorderColor( HYDROData_Digue::DefaultBorderColor() );
+  }
+
+  return true;
+}
+
 HYDROGUI_InputPanel* HYDROGUI_DigueOp::createInputPanel() const
 {
   HYDROGUI_DigueDlg* aPanel = new HYDROGUI_DigueDlg( module(), getName() );
index 87db05f80001bf3bebba5cd2a9642743e8da4a5f..429baf62c57b0e8ce64c881be8afa0a0cfff87b5 100644 (file)
@@ -35,10 +35,14 @@ public:
 
 protected:
 
-  virtual void               startOperation();
+  virtual void                 startOperation();
+
+  virtual bool                 processApply( int& theUpdateFlags, QString& theErrorMsg );
 
   virtual HYDROGUI_InputPanel* createInputPanel() const;
 
+protected:
+
   virtual Handle(HYDROData_Channel) getObjectToEdit() const;
 
 private:
index 3e9fd482bbee6b2f055c3c4c33e747f5825c59ed..276d51afcd1a229eac14016021f9e590caf7038c 100644 (file)
@@ -71,8 +71,6 @@ void HYDROGUI_ImmersibleZoneOp::startOperation()
 
   QString anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_IMMERSIBLE_ZONE_NAME" ) );
 
-  QColor      aFillingColor( HYDROData_ImmersibleZone::DefaultFillingColor() );
-  QColor      aBorderColor( HYDROData_ImmersibleZone::DefaultBorderColor() );
   QString     aSelectedPolyline, aSelectedBathymetry;
   QStringList aSelectedBathymetries;
 
@@ -83,9 +81,6 @@ void HYDROGUI_ImmersibleZoneOp::startOperation()
     {
       anObjectName = myEditedObject->GetName();
 
-      aFillingColor = myEditedObject->GetFillingColor();
-      aBorderColor = myEditedObject->GetBorderColor();
-
       Handle(HYDROData_PolylineXY) aRefPolyline = myEditedObject->GetPolyline();
       if ( !aRefPolyline.IsNull() )
         aSelectedPolyline = aRefPolyline->GetName();
@@ -214,7 +209,8 @@ bool HYDROGUI_ImmersibleZoneOp::processApply( int& theUpdateFlags,
 
   aZoneObj->SetName( anObjectName );
 
-  if ( !myIsEdit ) {
+  if ( !myIsEdit )
+  {
     aZoneObj->SetFillingColor( HYDROData_ImmersibleZone::DefaultFillingColor() );
     aZoneObj->SetBorderColor( HYDROData_ImmersibleZone::DefaultBorderColor() );
   }
index 4ba06589d180a3cce243b3e641ff58c3db810d2e..44f3476dc67244e8b873c6911983ebb55bcc2346 100644 (file)
@@ -167,6 +167,9 @@ bool HYDROGUI_ImportGeomObjectOp::processApply( int& theUpdateFlags,
         if ( anObstacleToEdit.IsNull() ) {
           anObstacle = 
             Handle(HYDROData_Obstacle)::DownCast( doc()->CreateObject(KIND_OBSTACLE) );
+          
+          anObstacle->SetFillingColor( HYDROData_Obstacle::DefaultFillingColor() );
+          anObstacle->SetBorderColor( HYDROData_Obstacle::DefaultBorderColor() );
         } else {
           anObstacle = anObstacleToEdit;
         }
index 0fc2e3e58fd7a0720cd868538cea38ee472a1b71..350c6d66cffd7688193f732fc680ac80f4ab710b 100644 (file)
@@ -154,6 +154,9 @@ bool HYDROGUI_ImportObstacleFromFileOp::processApply( int& theUpdateFlags,
   // If the obstacle for edit is null - create new obstacle object
   if ( anObstacle.IsNull() ) {
     anObstacle = Handle(HYDROData_Obstacle)::DownCast( doc()->CreateObject(KIND_OBSTACLE) );
+
+    anObstacle->SetFillingColor( HYDROData_Obstacle::DefaultFillingColor() );
+    anObstacle->SetBorderColor( HYDROData_Obstacle::DefaultBorderColor() );
   }
 
   if ( !anObstacle.IsNull() ) {
index 5534edf5584b7b38061db6369f8078ddd1d21af2..f85b49a5bda338b0b53d8913a075b99f7cb35c0f 100644 (file)
@@ -39,6 +39,7 @@
 #include "HYDROGUI_VTKPrsDisplayer.h"
 #include "HYDROGUI_AbstractDisplayer.h"
 #include "HYDROGUI_PolylineOp.h"
+#include "HYDROGUI_SetColorOp.h"
 
 #include <HYDROData_Image.h>
 #include <HYDROData_Profile.h>
@@ -305,8 +306,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
   bool anIsStream = false;
   bool anIsChannel = false;
   bool anIsDigue = false;
-  bool anIsGeomObject = false;
   bool anIsDummyObject3D = false;
+  bool anIsObjectCanBeColored = false;
 
   // check the selected GEOM objects
   if ( anIsObjectBrowser && !HYDROGUI_Tool::GetSelectedGeomObjects( this ).isEmpty() ) {
@@ -396,7 +397,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
         anIsDummyObject3D = true;
     }
 
-    anIsGeomObject = HYDROData_Tool::IsGeometryObject( anObject );
+    if ( !anIsObjectCanBeColored )
+      anIsObjectCanBeColored = HYDROGUI_SetColorOp::CanObjectBeColored( anObject );
   }
 
   // Check if all selected objects are profiles
@@ -546,7 +548,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
       }
 
       // Add set color action for geometrical objects
-      if ( anIsGeomObject )
+      if ( anIsObjectCanBeColored )
       {
         theMenu->addAction( action( SetColorId ) );
         theMenu->addSeparator();
index 045e655dc0f5aa789c8eae674e1bee82add61951..0b0e1deac0e47c40719f136fb89b3ded4fe4cbf6 100644 (file)
@@ -156,11 +156,16 @@ bool HYDROGUI_Poly3DOp::processApply( int& theUpdateFlags,
   aResult->SetProfileUZ( aProfileUZ );
   aResult->SetPolylineXY( aPolyline );
 
+  if( !myIsEdit )
+  {
+    aResult->SetBorderColor( HYDROData_Polyline3D::DefaultBorderColor() );
+  }
+
   aResult->Update();
 
   if( !myIsEdit )
   {
-    size_t aViewId = HYDROGUI_Tool::GetActiveGraphicsViewId( module() );
+    size_t aViewId = HYDROGUI_Tool::GetActiveOCCViewId( module() );
     module()->setObjectVisible( aViewId, anObject1, false );
     module()->setObjectVisible( aViewId, anObject2, false );
     module()->setObjectVisible( aViewId, aResult, true );
index b9fd474b75c12ff53cc7a5804a6e28b0e4225b40..835b9d04d18f341507a19b3c81f089a00abfc57e 100755 (executable)
@@ -250,6 +250,11 @@ bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
     }
   }
 
+  if ( !myIsEdit )
+  {
+    aPolylineObj->SetWireColor( HYDROData_PolylineXY::DefaultWireColor() );
+  }
+
   // Update the wire of polyline
   aPolylineObj->Update();
 
index 8266fd7a9b6ee3f2261490b156767a874f76a62a..fa0ad6d72479b52aa4b85484c41c7acb1466ad3c 100644 (file)
@@ -223,6 +223,11 @@ bool HYDROGUI_ProfileOp::processApply( int& theUpdateFlags,
 
   aProfileUZ->SetSectionType( 0, aSectType );
 
+  if ( !myIsEdit )
+  {
+    aProfileObj->SetBorderColor( HYDROData_Profile::DefaultBorderColor() );
+  }
+
   aProfileObj->Update();
 
   theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced;
index 245e11c66425b39a9f7942799f8841b23cb5d7f7..511f56b8bb289c6ea208ffc1ad6cc2522580529e 100644 (file)
@@ -28,6 +28,9 @@
 #include "HYDROGUI_Tool.h"
 #include "HYDROGUI_UpdateFlags.h"
 
+#include <HYDROData_Object.h>
+#include <HYDROData_IPolyline.h>
+
 #include <LightApp_Application.h>
 #include <LightApp_UpdateFlags.h>
 
@@ -44,52 +47,110 @@ HYDROGUI_SetColorOp::~HYDROGUI_SetColorOp()
 {
 }
 
+bool HYDROGUI_SetColorOp::CanObjectBeColored( const Handle(HYDROData_Entity)& theObject )
+{
+  if ( theObject.IsNull() )
+    return false;
+
+  return theObject->IsKind( STANDARD_TYPE(HYDROData_Object) ) ||
+         theObject->IsKind( STANDARD_TYPE(HYDROData_IPolyline) );
+}
+
 void HYDROGUI_SetColorOp::startOperation()
 {
   HYDROGUI_Operation::startOperation();
 
   // Get the selected object
-  myEditedObject = Handle(HYDROData_Object)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+  //myEditedObject = Handle(HYDROData_Object)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+  myEditedObject = HYDROGUI_Tool::GetSelectedObject( module() );
+  if ( !CanObjectBeColored( myEditedObject ) )
+  {
+    abort();
+    return;
+  }
+
+  bool anIsOneColor = false;
+
+  // Get colors from the object
+  QColor aFirstColor, aSecondColor;
+  if ( myEditedObject->IsKind( STANDARD_TYPE(HYDROData_Object) ) )
+  {
+    Handle(HYDROData_Object) aGeomObject =
+      Handle(HYDROData_Object)::DownCast( myEditedObject );
+
+    if ( myEditedObject->GetKind() == KIND_POLYLINE ||
+         myEditedObject->GetKind() == KIND_PROFILE )
+    {
+      aFirstColor = aGeomObject->GetBorderColor();
+      anIsOneColor = true;
+    }
+    else
+    {
+      aFirstColor = aGeomObject->GetFillingColor();
+      aSecondColor = aGeomObject->GetBorderColor();
+    }
+  }
+  else if ( myEditedObject->IsKind( STANDARD_TYPE(HYDROData_IPolyline) ) )
+  {
+    Handle(HYDROData_IPolyline) aPolyObject =
+      Handle(HYDROData_IPolyline)::DownCast( myEditedObject );
 
-  if( !myEditedObject.IsNull() ) {
-    // Get colors from the object
-    QColor aFillingColor = myEditedObject->GetFillingColor();
-    QColor aBorderColor = myEditedObject->GetBorderColor();
+    aFirstColor = aPolyObject->GetWireColor();
 
-    // Create color dialog
-    myColorDlg = new HYDROGUI_ColorDlg( module()->getApp()->desktop() );
-    myColorDlg->setModal( true );
-    myColorDlg->setWindowTitle( getName() );
+    anIsOneColor = true;
+  }
 
-    // Set colors from the object
-    myColorDlg->setFillingColor( aFillingColor );
-    myColorDlg->setBorderColor( aBorderColor );
+  // Create color dialog
+  myColorDlg = new HYDROGUI_ColorDlg( module()->getApp()->desktop(), anIsOneColor );
+  myColorDlg->setModal( true );
+  myColorDlg->setWindowTitle( getName() );
 
-    // Connect the dialog to operation slots
-    connect( myColorDlg, SIGNAL( accepted() ), this, SLOT( onApply()  ) );
-    connect( myColorDlg, SIGNAL( rejected() ), this, SLOT( onCancel() ) );
+  // Set colors from the object
+  myColorDlg->setFirstColor( aFirstColor );
+  myColorDlg->setSecondColor( aSecondColor );
 
-    // Show the dialog
-    myColorDlg->exec();    
-  }
+  // Connect the dialog to operation slots
+  connect( myColorDlg, SIGNAL( accepted() ), this, SLOT( onApply()  ) );
+  connect( myColorDlg, SIGNAL( rejected() ), this, SLOT( onCancel() ) );
+
+  // Show the dialog
+  myColorDlg->exec();
 }
 
 bool HYDROGUI_SetColorOp::processApply( int& theUpdateFlags,
                                         QString& theErrorMsg )
 {
-  bool anIsOk = false;
-
-  if ( myColorDlg && myEditedObject ) {
-    QColor aFillingColor = myColorDlg->getFillingColor();
-    QColor aBorderColor = myColorDlg->getBorderColor();
-
-    myEditedObject->SetFillingColor( aFillingColor );
-    myEditedObject->SetBorderColor( aBorderColor );
-
-    theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced;
+  if ( !myColorDlg || myEditedObject.IsNull() )
+    return false;
+
+  QColor aFirstColor = myColorDlg->getFirstColor();
+  QColor aSecondColor = myColorDlg->getSecondColor();
+
+  if ( myEditedObject->IsKind( STANDARD_TYPE(HYDROData_Object) ) )
+  {
+    Handle(HYDROData_Object) aGeomObject =
+      Handle(HYDROData_Object)::DownCast( myEditedObject );
+
+    if ( myEditedObject->GetKind() == KIND_POLYLINE ||
+         myEditedObject->GetKind() == KIND_PROFILE  )
+    {
+      aGeomObject->SetBorderColor( aFirstColor );
+    }
+    else
+    {
+      aGeomObject->SetFillingColor( aFirstColor );
+      aGeomObject->SetBorderColor( aSecondColor );
+    }
+  }
+  else if ( myEditedObject->IsKind( STANDARD_TYPE(HYDROData_IPolyline) ) )
+  {
+    Handle(HYDROData_IPolyline) aPolyObject =
+      Handle(HYDROData_IPolyline)::DownCast( myEditedObject );
 
-    anIsOk = true;
+    aPolyObject->SetWireColor( aFirstColor );
   }
+
+  theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced;
   
-  return anIsOk;
+  return true;
 }
index 10d02b9911320e673c2b883cdacb0627c763b696..9fce5bd1baf625add529393719403cb1ea2dc9a7 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "HYDROGUI_Operation.h"
 
-#include <HYDROData_Object.h>
+#include <HYDROData_Entity.h>
 
 class HYDROGUI_ColorDlg;
 
@@ -37,6 +37,9 @@ public:
   HYDROGUI_SetColorOp( HYDROGUI_Module* theModule );
   virtual ~HYDROGUI_SetColorOp();
 
+
+  static bool CanObjectBeColored( const Handle(HYDROData_Entity)& theObject );
+
 protected:
   virtual void startOperation();
 
@@ -45,7 +48,7 @@ protected:
 private:
   HYDROGUI_ColorDlg* myColorDlg;
 
-  Handle(HYDROData_Object) myEditedObject;
+  Handle(HYDROData_Entity) myEditedObject;
 };
 
 #endif
\ No newline at end of file
index 9967bc006c2fdf2952ea63b4b5a1e5a3031919d2..06c4a6f5b1da47f6ce3fc19ae1598d5df2c23951 100644 (file)
@@ -165,6 +165,9 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
           updateShape( false, false );
         }
       }
+
+      QColor aWireColor = aPolyline->GetWireColor();
+      setBorderColor( aWireColor, false, false );
     }
     else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Polyline3D) ) )
     {
@@ -185,6 +188,9 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
           updateShape( false, false );
         }
       }
+
+      QColor aWireColor = aPolyline->GetBorderColor();
+      setBorderColor( aWireColor, false, false );
     }
     else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Zone) ) )
     {
@@ -307,6 +313,9 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
       }
 
       setWire( aProfileWire, false, false );  
+
+      QColor aWireColor = aProfile->GetBorderColor();
+      setBorderColor( aWireColor, false, false );
     }
     else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Stream) ) ||
               myObject->IsKind( STANDARD_TYPE(HYDROData_Channel) ) ||
index 78b1f3a9a4d9d8723d88059ad7d7399d588f10c9..1557a79444f00e2eea7d37579aa3afd5d784a1a7 100755 (executable)
@@ -174,6 +174,12 @@ bool HYDROGUI_StreamOp::processApply( int& theUpdateFlags,
   // Set the object name
   myEditedObject->SetName( anObjectName );
 
+  if ( !myIsEdit )
+  {
+    myEditedObject->SetFillingColor( HYDROData_Stream::DefaultFillingColor() );
+    myEditedObject->SetBorderColor( HYDROData_Stream::DefaultBorderColor() );
+  }
+
   // Erase preview
   erasePreview();
 
index 9d8c7006e0d01d95e4c68ab12e9185e6e2ff2d8b..c4fb0ed51463bb1d223c01c97ce8a148098e8ee4 100644 (file)
@@ -1599,6 +1599,10 @@ file cannot be correctly imported for an Obstacle definition.</translation>
       <source>FILLING_COLOR</source>
       <translation>Filling color</translation>
     </message>
+    <message>
+      <source>OBJECT_COLOR</source>
+      <translation>Object color</translation>
+    </message>
     <message>
       <source>TRANSPARENT</source>
       <translation>Transparent</translation>