]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Modify creation of curves: 1) using QDockWidget instead of QDialog; 2) selection...
authorakl <akl@opencascade.com>
Fri, 20 Sep 2013 12:10:32 +0000 (12:10 +0000)
committerakl <akl@opencascade.com>
Fri, 20 Sep 2013 12:10:32 +0000 (12:10 +0000)
CMakeLists.txt
src/HYDROGUI/CMakeLists.txt
src/HYDROGUI/HYDROGUI_InputPanel.cxx
src/HYDROGUI/HYDROGUI_InputPanel.h
src/HYDROGUI/HYDROGUI_PolylineDlg.cxx
src/HYDROGUI/HYDROGUI_PolylineDlg.h
src/HYDROGUI/HYDROGUI_PolylineOp.cxx

index ffb6e673ca4e868703be907038b368e5acc70377..f68683cd2dd229cc8eaaa3f0c43d19bfbce67d8e 100644 (file)
@@ -2,9 +2,9 @@ cmake_minimum_required (VERSION 2.6)
 
 project (HYDRO)
 
-IF(WINDOWS)
+IF(WIN32)
   ADD_DEFINITIONS(-DWNT)
-ENDIF(WINDOWS)
+ENDIF(WIN32)
 
 SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR} CACHE PATH "Path to the Salome KERNEL")
 IF(EXISTS ${KERNEL_ROOT_DIR})
index c8316feaf0d0e7bb010d228f89014d5395c59763..73ac8c894aa0e4b757cee298b5706a081440b191 100644 (file)
@@ -114,7 +114,7 @@ include_directories(
 
 add_library(HYDROGUI SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${PROJECT_HEADERS_MOC})
 target_link_libraries(HYDROGUI HYDROData 
-    ${CAS_TKV3d} ${CAS_TKTopAlgo}
+    ${CAS_TKV3d} ${CAS_TKTopAlgo} ${CAS_TKBRep}
     ${LightApp} ${CAM} ${suit} ${qtx} ${ObjBrowser} ${GraphicsView} ${std} ${Event} ${OCCViewer}
     ${CurveCreator}
     )
index 68c084a2534e12904e1ad29f1da8b200adbd862a..a20c755bcfb3d782e399589d54e65d6deae0892f 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <QLayout>
 #include <QPushButton>
+#include <QStackedLayout>
 
 HYDROGUI_InputPanel::HYDROGUI_InputPanel( HYDROGUI_Module* theModule, const QString& theTitle )
 : QDockWidget( theModule->application()->desktop() ),
@@ -42,19 +43,23 @@ HYDROGUI_InputPanel::HYDROGUI_InputPanel( HYDROGUI_Module* theModule, const QStr
   QVBoxLayout* aLayout = new QVBoxLayout( aFrame );
   
   myMainFrame = new QFrame( aFrame );
-  QBoxLayout* aMainLayout = new QVBoxLayout( myMainFrame );
+  QVBoxLayout* aMainLayout = new QVBoxLayout( myMainFrame );
   aMainLayout->setMargin( 0 );
   aMainLayout->setSpacing( 5 );
 
+  myStackedLayout = new QStackedLayout();
+
   myBtnFrame = new QFrame( aFrame );
-  aLayout->addWidget( myMainFrame, 1 );
-  aLayout->addWidget( myBtnFrame, 0 );
+  activateWidget( myBtnFrame );
+  
+  aLayout->addWidget( myMainFrame, 3 );
+  aLayout->addLayout( myStackedLayout, 1 );
 
   QHBoxLayout* aBtnsLayout = new QHBoxLayout( myBtnFrame );
   aBtnsLayout->setMargin( 5 );
   aBtnsLayout->setSpacing( 5 );
 
-  myApply = new QPushButton( tr( "APPLY" ), myBtnFrame ),
+  myApply = new QPushButton( tr( "APPLY" ), myBtnFrame );
   myCancel = new QPushButton( tr( "CANCEL" ), myBtnFrame );
   myHelp = new QPushButton( tr( "HELP" ), myBtnFrame );
 
@@ -114,3 +119,14 @@ QFrame* HYDROGUI_InputPanel::mainFrame() const
   return myMainFrame;
 }
 
+void HYDROGUI_InputPanel::activateWidget( QWidget* theWidget )
+{
+  if (theWidget == 0) {
+    myStackedLayout->setCurrentIndex( 0 );
+  }
+  else { 
+    if ( myStackedLayout->indexOf( theWidget ) == -1 )
+      myStackedLayout->addWidget( theWidget );
+    myStackedLayout->setCurrentWidget( theWidget );
+  }
+}
index 3321f56d11df239cc6ccaf041394e97d977b4563..7c3c829b404e9c5e45d9c110b74bb235700cf8a0 100644 (file)
@@ -28,6 +28,7 @@
 class QFrame;
 class QPushButton;
 class QLayout;
+class QStackedLayout;
 
 class HYDROGUI_Module;
 
@@ -46,6 +47,8 @@ public:
   void addLayout( QLayout* theLayout );
   void addStretch();
 
+  void addToStackedLayout( QWidget* );
+  void activateWidget( QWidget* );
   HYDROGUI_Module* module() const;
 
 signals:
@@ -67,6 +70,7 @@ private:
   QPushButton* myApply;
   QPushButton* myCancel;
   QPushButton* myHelp;
+  QStackedLayout* myStackedLayout;
 };
 
 #endif
index 7deeb6fd47a8a105bf2aefceb4395937184964b0..40a831d80db3cab3a7a59f1fe96dfed29b8fc29d 100755 (executable)
@@ -21,6 +21,8 @@
 //
 
 #include "HYDROGUI_PolylineDlg.h"
+
+#include "HYDROGUI_Module.h"
 #include <CurveCreator_Widget.h>
 #include <CurveCreator_Curve.hxx>
 
@@ -40,17 +42,31 @@ HYDROGUI_PolylineDlg::HYDROGUI_PolylineDlg( HYDROGUI_Module* theModule, const QS
   addLayout(aNameLayout);
 
   myEditorWidget =
-    new CurveCreator_Widget( this, NULL);
+    new CurveCreator_Widget( this, NULL );
 
   addWidget( myEditorWidget );
 
   connect( myEditorWidget, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) );
+  connect( myEditorWidget, SIGNAL( subOperationStarted(QWidget*) ), this, SLOT( processStartedSubOperation(QWidget*) ) );
+  connect( myEditorWidget, SIGNAL( subOperationFinished(QWidget*) ), this, SLOT( processFinishedSubOperation(QWidget*) ) );
 }
 
 HYDROGUI_PolylineDlg::~HYDROGUI_PolylineDlg()
 {
 }
 
+void HYDROGUI_PolylineDlg::processStartedSubOperation( QWidget* theWidget )
+{
+  myEditorWidget->setEnabled( false );
+  activateWidget( theWidget );
+}
+
+void HYDROGUI_PolylineDlg::processFinishedSubOperation( QWidget* theWidget )
+{
+  myEditorWidget->setEnabled( true );
+  activateWidget( 0 );
+}
+
 void HYDROGUI_PolylineDlg::reset()
 {
 }
index 059bc2fdf74873e626f6e08de0bd75580ebfa5a5..4ca803fa320a141c19c16f56bf70602d86cd647b 100755 (executable)
@@ -49,10 +49,14 @@ public:
   QList< QPair< int, int > > getSelectedPoints();
 
 protected slots:
-
+  void processStartedSubOperation( QWidget* );
+  void processFinishedSubOperation( QWidget* );
 signals:
   void                  createPreview( QString );
   void                  selectionChanged();
+  void                  widgetCreated(QWidget*);
+  void                  subOperationStarted(QWidget*);
+  void                  subOperationFinished(QWidget*);
 private:
   QLineEdit*            myName;
   CurveCreator_Widget*  myEditorWidget;
index f5334fe84ff80e298511c3e101b97fecef6a6634..2e3ad922dd59aa4fa5499485f1ca2010a5dfe494 100755 (executable)
@@ -39,6 +39,7 @@
 
 #include <OCCViewer_ViewManager.h>
 #include <OCCViewer_ViewModel.h>
+#include <OCCViewer_ViewWindow.h>
 
 #include <OCCViewer_AISSelector.h>
 
@@ -127,6 +128,9 @@ void HYDROGUI_PolylineOp::onCreatePreview()
     aViewer->enableMultiselection(true);
     Handle_AIS_InteractiveContext aCtx = aViewer->getAISContext();
 
+    OCCViewer_ViewWindow* vw = (OCCViewer_ViewWindow*)myPreviewViewManager->getActiveView();
+    vw->onTopView();
+
     myAISCurve = new HYDROGUI_AISCurve(myCurve, aCtx);
 
     myAISCurve->Display();
@@ -171,7 +175,7 @@ void HYDROGUI_PolylineOp::startOperation()
 
   }
   else{
-    myCurve = new CurveCreator_Curve(CurveCreator::Dim3d);
+    myCurve = new CurveCreator_Curve(CurveCreator::Dim2d);
     aPanel->setCurve(myCurve);
     QString aNewName = HYDROGUI_Tool::GenerateObjectName( module(), "Polyline" );
     aPanel->setPolylineName(aNewName);