Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 0 additions & 61 deletions src/Core/Internal/Context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1710,67 +1710,6 @@ void Context::clearSession()
// annulation de la sélection
m_selection_manager->clearSelection ( );

//creation de la commande de destruction
Internal::CommandComposite* command = new Internal::CommandComposite(*this, TkUtil::UTF8String ("Destruction de tout, les commandes précédentes n'ont plus lieu d'être ! ", TkUtil::Charset::UTF_8));

// trace dans le script
TkUtil::UTF8String cmd (TkUtil::Charset::UTF_8);
cmd << getContextAlias() << ".clearSession()";
command->setScriptCommand(cmd);

// commande de destruction de toutes les entités maillages qui ont pu être construites
Mesh::CommandDestroyMesh* commandMesh = new Mesh::CommandDestroyMesh(*this);

command->addCommand(commandMesh);

// commande de destruction de toutes les entités topologiques qui ont pu être construites
std::vector<Topo::TopoEntity*> ve;
std::vector<Topo::Block*> blocks;
getTopoManager().getBlocks(blocks);
for (uint i=0; i<blocks.size(); i++)
ve.push_back(blocks[i]);
std::vector<Topo::CoFace*> cofaces;
getTopoManager().getCoFaces(cofaces);
for (uint i=0; i<cofaces.size(); i++)
ve.push_back(cofaces[i]);
std::vector<Topo::CoEdge*> coedges;
getTopoManager().getCoEdges(coedges);
for (uint i=0; i<coedges.size(); i++)
ve.push_back(coedges[i]);
std::vector<Topo::Vertex*> vertices;
getTopoManager().getVertices(vertices);
for (uint i=0; i<vertices.size(); i++)
ve.push_back(vertices[i]);

Topo::CommandDestroyTopo* commandTopo = new Topo::CommandDestroyTopo(*this, ve, true);

command->addCommand(commandTopo);

// commande de destruction de toutes les entités géométriques qui ont pu être construites
std::vector<Geom::GeomEntity*> entities;
std::vector<Geom::Volume*> volumes = getGeomManager().getVolumesObj();
for (uint i=0; i<volumes.size(); i++)
entities.push_back(volumes[i]);
std::vector<Geom::Surface*> surfaces = getGeomManager().getSurfacesObj();
for (uint i=0; i<surfaces.size(); i++)
entities.push_back(surfaces[i]);
std::vector<Geom::Curve*> curves = getGeomManager().getCurvesObj();
for (uint i=0; i<curves.size(); i++)
entities.push_back(curves[i]);
std::vector<Geom::Vertex*> vtx = getGeomManager().getVerticesObj();
for (uint i=0; i<vtx.size(); i++)
entities.push_back(vtx[i]);

Geom::CommandRemove* commandGeom = new Geom::CommandRemove(*this, entities, true);

command->addCommand(commandGeom);

// TODO [EB] Destruction des SysCoord

// on passe au gestionnaire de commandes qui exécute la commande en // ou non
// et la stocke dans le gestionnaire de undo-redo si c'est une réussite
getCommandManager().addCommand(command, Utils::Command::DO);

m_command_manager->clear();
m_name_manager->clear();
m_geom_manager->clear();
Expand Down
1 change: 1 addition & 0 deletions src/Core/Topo/TopoManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ void TopoManager::clear()
m_edges.deleteAndClear();
m_coedges.deleteAndClear();
m_vertices.deleteAndClear();
m_geom_associations.clear();
m_defaultNbMeshingEdges = 10;
}
/*----------------------------------------------------------------------------*/
Expand Down
5 changes: 5 additions & 0 deletions src/QtComponents/QtEntitiesItemViewPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,11 @@ void QtEntitiesItemViewPanel::setMainWindow (QtMgx3DMainWindow* mainWindow)
} // QtEntitiesItemViewPanel::setMainWindow


void QtEntitiesItemViewPanel::sessionCleared ( )
{
} // QtEntitiesItemViewPanel::sessionCleared


Mgx3D::Internal::Context& QtEntitiesItemViewPanel::getContext ( )
{
if (0 == _context)
Expand Down
56 changes: 54 additions & 2 deletions src/QtComponents/QtEntitiesPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,7 @@ void QtEntitiesGroupTreeWidgetItem::setRepresentationMask (unsigned long mask)
} // QtEntitiesGroupTreeWidgetItem::setRepresentationMask


DisplayRepresentation::display_type
QtEntitiesGroupTreeWidgetItem::getEntitiesType ( ) const
DisplayRepresentation::display_type QtEntitiesGroupTreeWidgetItem::getEntitiesType ( ) const
{
return _entitiesType;
} // QtEntitiesGroupTreeWidgetItem::getEntitiesType
Expand Down Expand Up @@ -328,6 +327,12 @@ const Entity* QtEntityTreeWidgetItem::getEntity ( ) const
} // QtEntityTreeWidgetItem::getEntity


void QtEntityTreeWidgetItem::releaseEntity ( )
{
_entity = 0;
} // QtEntityTreeWidgetItem::releaseEntity


unsigned long QtEntityTreeWidgetItem::getNativeRepresentationMask ( ) const
{
return _3dRep;
Expand Down Expand Up @@ -1510,6 +1515,53 @@ void QtEntitiesPanel::updateEntryItems (DisplayRepresentation::display_type type
} // QtEntitiesPanel::updateEntryItems


static void clearEntityTreeWidgetItemList (QTreeWidgetItem& entry)
{
QList<QTreeWidgetItem*> items = entry.takeChildren ( );
for (int i = 0; i < items.size ( ); i++)
{
QtEntityTreeWidgetItem* entityItem = dynamic_cast<QtEntityTreeWidgetItem*>(items.at (i));
if (0 != entityItem)
entityItem->releaseEntity ( );
delete items.at (i);
} // for (int i = 0; i < items.size ( ); i++)
entry.setCheckState (0, Qt::Unchecked);
} // clearEntityTreeWidgetItemList


void QtEntitiesPanel::sessionCleared ( )
{
CHECK_NULL_PTR_ERROR (_cadVolumesItem)
CHECK_NULL_PTR_ERROR (_cadSurfacesItem)
CHECK_NULL_PTR_ERROR (_cadCurvesItem)
CHECK_NULL_PTR_ERROR (_cadCloudsItem)
CHECK_NULL_PTR_ERROR (_topoBlocksItem)
CHECK_NULL_PTR_ERROR (_topoFacesItem)
CHECK_NULL_PTR_ERROR (_topoEdgesItem)
CHECK_NULL_PTR_ERROR (_topoVerticesItem)
CHECK_NULL_PTR_ERROR (_meshVolumesItem)
CHECK_NULL_PTR_ERROR (_meshSurfacesItem)
CHECK_NULL_PTR_ERROR (_meshLinesItem)
CHECK_NULL_PTR_ERROR (_meshCloudsItem)
CHECK_NULL_PTR_ERROR (_sysCoordItem)
CHECK_NULL_PTR_ERROR (_structuredMeshVolumesItem)
clearEntityTreeWidgetItemList (*_cadVolumesItem);
clearEntityTreeWidgetItemList (*_cadSurfacesItem);
clearEntityTreeWidgetItemList (*_cadCurvesItem);
clearEntityTreeWidgetItemList (*_cadCloudsItem);
clearEntityTreeWidgetItemList (*_topoBlocksItem);
clearEntityTreeWidgetItemList (*_topoFacesItem);
clearEntityTreeWidgetItemList (*_topoEdgesItem);
clearEntityTreeWidgetItemList (*_topoVerticesItem);
clearEntityTreeWidgetItemList (*_meshVolumesItem);
clearEntityTreeWidgetItemList (*_meshSurfacesItem);
clearEntityTreeWidgetItemList (*_meshLinesItem);
clearEntityTreeWidgetItemList (*_meshCloudsItem);
clearEntityTreeWidgetItemList (*_sysCoordItem);
clearEntityTreeWidgetItemList (*_structuredMeshVolumesItem);
} // QtEntitiesPanel::sessionCleared


void QtEntitiesPanel::entitiesAddedToSelection (const vector<Entity*>& entities)
{
for (vector<Entity*>::const_iterator it = entities.begin ( );
Expand Down
12 changes: 12 additions & 0 deletions src/QtComponents/QtGroupsPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,18 @@ vector<Group::GroupEntity*> QtGroupsPanel::getSelectedGroups ( ) const
} // QtGroupsPanel::getSelectedGroups


void QtGroupsPanel::sessionCleared ( )
{
// Rem : ça détruit également la vue multi-niveaux
for (vector<QTreeWidgetItem*>::iterator itge = _groupsEntriesItems.begin ( ); itge != _groupsEntriesItems.end ( ); itge++)
{
QList<QTreeWidgetItem*> items = (*itge)->takeChildren ( );
for (int i = 0; i < items.size ( ); i++)
delete items.at (i);
} // for (vector<QTreeWidgetItem*>::iterator itge = _groupsEntriesItems.begin ( ); itge != _groupsEntriesItems.end ( ); itge++)
} // QtGroupsPanel::sessionCleared


void QtGroupsPanel::displaySelectedTypes (bool display)
{
if (true == getGraphicalWidget ( )->getRenderingManager ( ).displayLocked ( ))
Expand Down
8 changes: 6 additions & 2 deletions src/QtComponents/QtMgx3DMainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5395,7 +5395,7 @@ cout << __FILE__ << ' ' << __LINE__ << " QtMgx3DMainWindow::exitCallback" << end

BEGIN_QT_TRY_CATCH_BLOCK

DISABLE_COMMAND_ACTIONS
DISABLE_COMMAND_ACTIONS
DISABLE_GRAPHICAL_OPERATIONS
getContext().redo();

Expand Down Expand Up @@ -5429,7 +5429,11 @@ cout << __FILE__ << ' ' << __LINE__ << " QtMgx3DMainWindow::exitCallback" << end

BEGIN_QT_TRY_CATCH_BLOCK

getContext().clearSession();
DISABLE_GRAPHICAL_OPERATIONS

getContext ( ).clearSession ( );
getGroupsPanel ( ).sessionCleared ( );
getEntitiesPanel ( ).sessionCleared ( );

COMPLETE_QT_TRY_CATCH_BLOCK(true, this, getAppTitle())
} // QtMgx3DMainWindow::reinitializeCallback
Expand Down
38 changes: 15 additions & 23 deletions src/QtComponents/protected/QtComponents/QtEntitiesItemViewPanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,10 @@ class QtMgx3DMainWindow;


/**
* \brief Panneau abstrait de l'IHM <I>Magix 3D</I> affichant des entités
* d'une session <I>Magix 3D</I>.
* L'affichage est ici a priori textuel et couplé à un affichage
* dans une fenêtre graphique 3D.
* \brief Panneau abstrait de l'IHM <I>Magix 3D</I> affichant des entités d'une session <I>Magix 3D</I>.
* L'affichage est ici a priori textuel et couplé à un affichage dans une fenêtre graphique 3D.
*
* <P>L'objectif de cette classe non instanciable est de factoriser
* certains services des vues textuelles type <I>QTreeWidget</I>
* d'entités.
* <P>L'objectif de cette classe non instanciable est de factoriser certains services des vues textuelles type <I>QTreeWidget</I> d'entités.
* </P>
*/
class QtEntitiesItemViewPanel : public QtGroupBox
Expand All @@ -45,9 +41,7 @@ class QtEntitiesItemViewPanel : public QtGroupBox
* \param Nom du panneau.
* \param Contexte Magix 3D du panneau
*/
QtEntitiesItemViewPanel (
QWidget* parent, QtMgx3DMainWindow* mainWindow,
const std::string& name, Internal::Context& context);
QtEntitiesItemViewPanel (QWidget* parent, QtMgx3DMainWindow* mainWindow, const std::string& name, Internal::Context& context);

/**
* RAS.
Expand All @@ -73,6 +67,11 @@ class QtEntitiesItemViewPanel : public QtGroupBox
*/
virtual void setMainWindow (QtMgx3DMainWindow*);

/**
* A appeler lorsque la session est réinitialisée, doit réinitialiser le panneau. Ne fait rien par défaut, à surcharger.
*/
virtual void sessionCleared ( );

/**
* La gestion de la sélection.
*/
Expand All @@ -99,11 +98,8 @@ class QtEntitiesItemViewPanel : public QtGroupBox
//@{

/**
* \param La fenêtre graphique à utiliser pour les affichages 3D,
* ou 0.
* \exception Une exception est levée si la fenêtre transmise en
* argument est non nulle et qu'une autre fenêtre est déjà
* affectée.
* \param La fenêtre graphique à utiliser pour les affichages 3D, ou 0.
* \exception Une exception est levée si la fenêtre transmise en argument est non nulle et qu'une autre fenêtre est déjà affectée.
* \see getGraphicalWidget
*/
virtual void setGraphicalWidget (Qt3DGraphicalWidget* widget3D);
Expand All @@ -129,22 +125,18 @@ class QtEntitiesItemViewPanel : public QtGroupBox
virtual void setLogStream (TkUtil::LogOutputStream* stream);

/**
* \param Ecrit le log transmis en argument dans le flux
* d'informations associé.
* \param Ecrit le log transmis en argument dans le flux d'informations associé.
*/
virtual void log (const TkUtil::Log& log);

//@} // La gestion des informations à remonter à l'utilisateur.

/**
* Appelé pour modifier les paramètres d'affichage
* (points/filaire/surfacique) des entités données en argument. Affiche une
* boite de dialogue de choix des types de représentation à utiliser,
* initialisé selon les entités transmises en argument, et effectue les
* Appelé pour modifier les paramètres d'affichage (points/filaire/surfacique) des entités données en argument. Affiche une
* boite de dialogue de choix des types de représentation à utiliser, initialisé selon les entités transmises en argument, et effectue les
* modifications demandées.
*/
virtual void changeRepresentationTypes (
const std::vector<Mgx3D::Utils::Entity*>& entities);
virtual void changeRepresentationTypes (const std::vector<Mgx3D::Utils::Entity*>& entities);


protected :
Expand Down
10 changes: 10 additions & 0 deletions src/QtComponents/protected/QtComponents/QtEntitiesPanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ class QtEntityTreeWidgetItem :
*/
virtual ~QtEntityTreeWidgetItem ( );

/**
* Oublie l'entité représentée.
*/
virtual void releaseEntity ( );

/**
* \return L'entité représentée.
*/
Expand Down Expand Up @@ -757,6 +762,11 @@ class QtEntitiesPanel :public QtEntitiesItemViewPanel, public Internal::Selectio
*/
virtual void updateEntryItems (Mgx3D::Utils::DisplayRepresentation::display_type type);

/**
* A appeler lorsque la session est réinitialisée, doit réinitialiser le panneau. Ne fait rien par défaut, à surcharger.
*/
virtual void sessionCleared ( );

//@}

/**
Expand Down
6 changes: 5 additions & 1 deletion src/QtComponents/protected/QtComponents/QtGroupsPanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,11 @@ class QtGroupsPanel : public QtEntitiesItemViewPanel, public Internal::Selection
*/
virtual std::vector<Mgx3D::Group::GroupEntity*> getSelectedGroups ( ) const;

/**
* A appeler lorsque la session est réinitialisée, doit réinitialiser le panneau. Ne fait rien par défaut, à surcharger.
*/
virtual void sessionCleared ( );

//@} // Les groupes représentés.

/**
Expand Down Expand Up @@ -760,7 +765,6 @@ class QtGroupsPanel : public QtEntitiesItemViewPanel, public Internal::Selection
*/
virtual void clearGroupCallback ( );


/**
* Appelé lorsque le menu popup est demandé au niveau de l'arborescence des types d'entités à afficher. Affiche ce menu popup à la position transmise en argument.
*/
Expand Down