-// Copyright (C) 2009-2013 CEA/DEN, EDF R&D
+// Copyright (C) 2009-2016 CEA/DEN, EDF R&D
//
// 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.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <cassert>
-
+#include <QDir>
#include <QInputDialog>
#include <QIcon>
#include <QStackedWidget>
+#include <QMenu>
+#include <QSplitter>
#include <QtxTreeView.h>
#include <SUIT_MessageBox.h>
#include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
#include <SALOME_LifeCycleCORBA.hxx>
#include "HEXABLOCKGUI_OccGraphicView.hxx"
#include "HEXABLOCKGUI_GraphicViewsHandler.hxx"
-#include <HEXABLOCK_version.h>
+#include "HEXABLOCK_version.h"
#include "MyBasicGUI_PointDlg.hxx"
#include <Visual3d_ViewManager.hxx>
-#include <Graphic3d_Structure.hxx>
-#include <Graphic3d_Group.hxx>
-#include <V3d_PerspectiveView.hxx>
+//#include <V3d_PerspectiveView.hxx>
#include <V3d_AmbientLight.hxx>
-#include <Graphic3d_GraphicDevice.hxx>
-#include <Graphic3d_Array1OfVertex.hxx>
#include <V3d_DirectionalLight.hxx>
#include <Xw_Window.hxx>
#include <V3d_TypeOfShadingModel.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
+#include <utilities.h>
#define DW_MINIMUM_WIDTH 50
#define DWINPUT_MINIMUM_HEIGHT 50
// _treeViewDelegate(0),
_isSaved( false ),
moduleActivatedOnce(false),
+ menusEnabled(true),
_vertexDiag(0),
_edgeDiag(0),
_quadDiag(0),
void HEXABLOCKGUI::initialize( CAM_Application* app )
{
+ MESSAGE("HEXABLOCKGUI::initialize");
DEBTRACE("HEXABLOCKGUI::initialize");
SalomeApp_Module::initialize( app );
currentDocGView->getViewWindow()->installEventFilter(this);
}
else
- initialMenus();
+ {
+ newDocument();
+// initialMenus();
+ }
return bOk;
}
SOCC_Prs* prs = getOccPrs(currentDocGView);
if (prs == NULL)
{
- prs = new SOCC_Prs();
+ prs = new SOCC_Prs(0);
isNewPrs = true;
}
docModel->setName( name );
aName->SetValue( name.toLatin1().data() );
getApp()->updateObjectBrowser();
- _dwPattern->setWindowTitle( name );
+// _dwPattern->setWindowTitle( name );
result = true;
}
}
DEBTRACE("HEXABLOCKGUI::windows");
theMap.clear();
theMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
+#ifndef DISABLE_PYCONSOLE
theMap.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea );
+#endif
}
QString HEXABLOCKGUI::engineIOR() const
docGView->setViewWindow(graphicViewsHandler->createVtkWindow());
docGView->getViewWindow()->installEventFilter(this);
showAllMenus();
+ if (!menusEnabled)
+ setAllMenusEnabled(true);
}
else
docGView->setViewWindow(currentDocGView->getViewWindow());
if (currentDocGView != NULL)
currentDocGView->setViewWindow(NULL);
- initialMenus();
+// initialMenus();
+ setAllMenusEnabled(false);
+ enableDocumentMenus(true);
+
return;
}
void HEXABLOCKGUI::createAndFillDockWidget()
{
+
QMainWindow *aParent = application()->desktop();
// Create dock widget (3 dock)
_dwInputPanel = new QDockWidget(aParent);
_dwInputPanel->setVisible(false);
_dwInputPanel->setWindowTitle("Input Panel");
+ _dwInputPanel->setObjectName("hexablockInputPanelDock");
// _dwInputPanel->setMinimumWidth(DWINPUT_MINIMUM_WIDTH); // --- force a minimum until display
// _treeViewDelegate = new DocumentDelegate(_dwInputPanel);
_dwPattern->setVisible(false);
_dwPattern->setWindowTitle("Model");
_dwPattern->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display
+ _dwPattern->setObjectName("hexablockModelDock");
QFrame* patternFrame = new QFrame(_dwPattern);
patternFrame->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
_dwGroups->setVisible(false);
_dwGroups->setWindowTitle("Groups");
_dwGroups->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display
+ _dwGroups->setObjectName("hexablockGroupsDock");
_groupsTreeView = new QTreeView(_dwGroups);
_groupsTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
// _groupsTreeView->setItemDelegate(_treeViewDelegate);
_dwMesh->setVisible(false);
_dwMesh->setWindowTitle("Mesh");
_dwMesh->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display
+ _dwMesh->setObjectName("hexablockMeshDock");
_meshTreeView = new QTreeView(_dwMesh);
_meshTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
_meshTreeView->setSelectionMode(QAbstractItemView::SingleSelection);
_dwMesh->setWidget(_meshTreeView);
_meshTreeView->show();
- QDockWidget *_dwObjectBrowser = 0;
+// QDockWidget *_dwObjectBrowser = 0;
QWidget* wid = getApp()->objectBrowser()->treeView();
QWidget *w = wid->parentWidget();
while ( w && !_dwObjectBrowser ) {
// dock widget position
aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwObjectBrowser );
-// aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwInputPanel );
aParent->addDockWidget( Qt::RightDockWidgetArea, _dwInputPanel );
+// aParent->tabifyDockWidget( _dwPattern, _dwObjectBrowser );
+// aParent->tabifyDockWidget( _dwGroups, _dwPattern );
+// aParent->tabifyDockWidget( _dwMesh, _dwGroups );
+
aParent->tabifyDockWidget( _dwObjectBrowser, _dwPattern );
aParent->tabifyDockWidget( _dwPattern, _dwGroups );
aParent->tabifyDockWidget( _dwGroups, _dwMesh );
-
#if QT_VERSION >= 0x040500
aParent->setTabPosition(Qt::AllDockWidgetAreas, Resource::tabPanelsUp? QTabWidget::North: QTabWidget::South);
#endif
-
// popup menu on data tree view
_patternDataTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(_patternDataTreeView,
{
int aToolId;
- aToolId = createTool ( tr( "HexaBlock Toolbar" ) );
+ aToolId = createTool ( tr( "HexaBlock Toolbar" ), QString( "HexaBlockMain" ) );
createTool( _newAct, aToolId );
createTool( _importAct, aToolId );
createTool( _saveAct, aToolId );
//createTool( separator(), aToolId );
// Pattern Data
- aToolId = createTool ( tr( "Construction" ) );
+ aToolId = createTool ( tr( "Construction" ), QString( "HexaBlockConstruction" ) );
createTool( _addVertex, aToolId );
createTool( _addEdge, aToolId );
createTool( _addQuad, aToolId );
createTool( _makePipes, aToolId );
// Pattern Data Edition
- aToolId = createTool ( tr( "Operation" ) );
+ aToolId = createTool ( tr( "Operation" ), QString( "HexaBlockOperation" ) );
createTool( _removeHexa, aToolId );
createTool( _prismQuad, aToolId );
createTool( _joinQuad, aToolId );
createTool( _quadRevolution, aToolId );
// Association
- aToolId = createTool ( tr( "Association" ) );
+ aToolId = createTool ( tr( "Association" ), QString( "HexaBlockAssociation" ) );
createTool( _assocVertex, aToolId );
createTool( _assocEdge, aToolId );
createTool( _assocQuad, aToolId );
createTool( _addShapeAct, aToolId );
// Group
- aToolId = createTool ( tr( "Group" ) );
+ aToolId = createTool ( tr( "Group" ), QString( "HexaBlockGroup" ) );
createTool( _addGroup, aToolId );
createTool( _removeGroup, aToolId ); //CS_TODO
// Law
- aToolId = createTool ( tr( "Mesh" ) );
+ aToolId = createTool ( tr( "Mesh" ), QString( "HexaBlockMesh" ) );
createTool( _addLaw, aToolId );
createTool( _removeLaw, aToolId );
createTool( _setPropagation, aToolId );
showMeshMenus( true );
}
+void HEXABLOCKGUI::setAllMenusEnabled(bool enable)
+{
+ enableDocumentMenus( enable );
+ enablePatternMenus( enable );
+ enableAssociationMenus( enable );
+ enableGroupsMenus( enable );
+ enableMeshMenus( enable );
+
+ menusEnabled = enable;
+}
void HEXABLOCKGUI::showDocumentMenus(bool show)
{
setToolShown(_saveAct, show);
}
+void HEXABLOCKGUI::enableDocumentMenus(bool enable)
+{
+ _newAct->setEnabled(enable);
+// setToolShown(_newAct, enable);
+
+ _importAct->setEnabled(enable);
+// setToolShown(_importAct, enable);
+
+ _showModelInfoAct->setEnabled(enable);
+// setToolShown(_showModelInfoAct, enable);
+
+ _saveAct->setEnabled(enable);
+// setToolShown(_saveAct, enable);
+}
+
+
void HEXABLOCKGUI::showPatternMenus(bool show)
{
DEBTRACE("HEXABLOCKGUI::showPatternMenus " << show);
setMenuShown( _showModelInfoAct, show );
}
+void HEXABLOCKGUI::enablePatternMenus(bool enable)
+{
+ if ( enable && !getCurrentModel() ) return;
+
+ _addVertex->setEnabled(enable);
+// setToolShown(_addVertex, enable);
+
+ _addEdge->setEnabled(enable);
+// setToolShown(_addEdge, enable);
+
+ _addQuad->setEnabled(enable);
+// setToolShown(_addQuad, enable);
+
+ _addHexa->setEnabled(enable);
+// setToolShown(_addHexa, enable);
+
+// setMenuShown(_sep1, enable );
+// setToolShown(_sep1, enable);
+
+ _addVector->setEnabled(enable);
+// setToolShown( _addVector, enable);
+
+// setMenuShown(_sep2, enable );
+// setToolShown(_sep2, enable);
+
+ _makeGrid->setEnabled(enable);
+// setToolShown( _makeGrid, enable);
+
+ _makePipe->setEnabled(enable);
+// setToolShown( _makePipe, enable);
+
+// setMenuShown(_sep3, enable );
+// setToolShown(_sep3, enable);
+
+ _makeCylinder->setEnabled(enable);
+// setToolShown( _makeCylinder, enable);
+
+ _makeCylinders->setEnabled(enable);
+// setToolShown( _makeCylinders, enable);
+
+ _makePipes->setEnabled(enable);
+// setToolShown( _makePipes, enable);
+
+ _makeHemiSphere->setEnabled(enable);
+// setToolShown( _makeHemiSphere, enable);
+
+ // Pattern Data Edition
+ _removeHexa->setEnabled(enable);
+// setToolShown( _removeHexa, enable);
+
+ _prismQuad->setEnabled(enable);
+// setToolShown( _prismQuad, enable);
+
+ _joinQuad->setEnabled(enable);
+// setToolShown( _joinQuad, enable);
+
+ _merge->setEnabled(enable);
+// setToolShown( _merge, enable);
+
+ _disconnect->setEnabled(enable);
+// setToolShown( _disconnect, enable);
+
+ _cutEdge->setEnabled(enable);
+// setToolShown( _cutEdge, enable);
+
+ _makeTransformation->setEnabled(enable);
+// setToolShown( _makeTransformation, enable);
+
+ _makeSymmetry->setEnabled(enable);
+// setToolShown( _makeSymmetry, enable);
+
+ _performTransformation->setEnabled(enable);
+// setToolShown( _performTransformation, enable);
+
+ _performSymmetry->setEnabled(enable);
+// setToolShown( _performSymmetry, enable);
+
+ _replaceHexa->setEnabled(enable);
+// setToolShown( _replaceHexa, enable);
+
+ _quadRevolution->setEnabled(enable);
+// setToolShown( _quadRevolution, enable);
+
+// setMenuShown( _sep4, enable );
+ _showModelInfoAct->setEnabled(enable);
+}
+
void HEXABLOCKGUI::showAssociationMenus(bool show)
{
// Association Edition
setMenuShown( _assocVertex, show );
setToolShown( _assocVertex, show );
+
setMenuShown( _assocEdge, show );
setToolShown( _assocEdge, show );
+
setMenuShown( _assocQuad, show );
setToolShown( _assocQuad, show );
+
setMenuShown( _addShapeAct, show );
setToolShown( _addShapeAct, show );
+}
+
+void HEXABLOCKGUI::enableAssociationMenus(bool enable)
+{
+ if ( enable && !getCurrentModel() )
+ return;
+
+ // Association Edition
+ _assocVertex->setEnabled(enable);
+ // setToolShown( _assocVertex, enable );
+
+ _assocEdge->setEnabled(enable);
+ // setToolShown( _assocEdge, enable );
+
+ _assocQuad->setEnabled(enable);
+ // setToolShown( _assocQuad, enable );
+ _addShapeAct->setEnabled(enable);
+ // setToolShown( _addShapeAct, enable );
}
void HEXABLOCKGUI::showGroupsMenus(bool show)
setToolShown( _removeGroup , show);
}
+void HEXABLOCKGUI::enableGroupsMenus(bool enable)
+{
+ if ( enable && !getCurrentModel() )
+ return;
+
+ _addGroup->setEnabled(enable);
+// setToolShown( _addGroup, enable);
+
+ _removeGroup->setEnabled(enable);
+// setToolShown( _removeGroup , enable);
+}
+
void HEXABLOCKGUI::showMeshMenus(bool show)
{
DEBTRACE("HEXABLOCKGUI::showMeshMenus" << show);
setToolShown( _computeMesh, show);
}
+void HEXABLOCKGUI::enableMeshMenus(bool enable)
+{
+ if ( enable && !getCurrentModel() )
+ return;
+
+ _addLaw->setEnabled(enable);
+// setToolShown( _addLaw, enable);
+
+ _removeLaw->setEnabled(enable);
+// setToolShown( _removeLaw, enable);
+
+ _setPropagation->setEnabled(enable);
+// setToolShown( _setPropagation, enable);
+
+ _computeMesh->setEnabled(enable);
+// setToolShown( _computeMesh, enable);
+}
+
void HEXABLOCKGUI::showVtkActor()
{
VtkDocumentGraphicView* currentVtkGView = getCurrentVtkGraphicView();
currentDocGView = dgview;
showOnlyActor();
currentDocGView->getDocumentModel()->refresh();
- _dwPattern->setWindowTitle(currentDocGView->getDocumentModel()->getName());
+// _dwPattern->setWindowTitle(currentDocGView->getDocumentModel()->getName());
showAllMenus();
+ if (!menusEnabled)
+ setAllMenusEnabled(true);
}
DocumentModel* HEXABLOCKGUI::getCurrentModel()
extern "C"
{
- HexaExport CAM_Module* createModule()
+ HEXABLOCK_EXPORT CAM_Module* createModule()
{
return new HEXABLOCKGUI();
}
- HexaExport char* getModuleVersion()
+ HEXABLOCK_EXPORT char* getModuleVersion()
{
return (char*)HEXABLOCK_VERSION_STR;
}