doc/html
*_log.txt
start.bat
-*.orig
\ No newline at end of file
+*.orig
+*~
+/.project
--- /dev/null
+#!/bin/sh
+
+source salome_env.sh
+
+mkdir -p ${ROOT_DIR}/build
+cd ${ROOT_DIR}/build
+
+CMAKE_ARGS="-D_ECLIPSE_VERSION=4.3"
+CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_BUILD_TYPE=Debug"
+CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=ON"
+CMAKE_ARGS="${CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=${ROOT_DIR}/install"
+CMAKE_ARGS="${CMAKE_ARGS} ${SRC_DIR}"
+
+
+cmake -G "Eclipse CDT4 - Unix Makefiles" ${CMAKE_ARGS}
+
+/misc/dn48/newgeom/common/eclipse-4.3.0/eclipse -Dosgi.locking=none &
#------ Setting products installation directory ------
+if [ "${PDIR}" = "" ] ; then
+ export PDIR=/dn48/newgeom/common/products
+fi
+
# Find absolute path to ROOT_DIR
export ROOT_DIR=$(pwd)/..
export ROOT_DIR=`cd "${ROOT_DIR}";pwd`
-export PDIR=/dn48/newgeom/common/products
#------ Python ------
export PYTHON_ROOT_DIR=${PDIR}/Python-2.7.3
--- /dev/null
+#!/bin/sh
+
+if [ "${INST_ROOT}" = "" ] ; then
+ source /dn47/SALOME/PRODUCTS/7x/opt/CentOS.6.3.64/7.3.0/env_products.sh
+ source /dn47/SALOME/stable/V7_3_0/start.sh
+else
+ source ${INST_ROOT}/env_products.sh
+fi
+
+
+export ROOT_DIR=$(pwd)/..
+export ROOT_DIR=`cd "${ROOT_DIR}";pwd`
+
+SRC_DIR=${ROOT_DIR}/sources
+
+export LIB=${LD_LIBRARY_PATH}
+export PATH=${CASROOT}:${PATH}
+export PYTHON_INC_DIR=${PYTHON_INCLUDE}
+export PYTHON_LIB_DIR=${PYTHON_ROOT_DIR}/lib
+
+#------ NewGEOM ------
+export INST_DIR=${ROOT_DIR}/install
+export PATH=${INST_DIR}/bin:${INST_DIR}/plugins:${PATH}
+export LD_LIBRARY_PATH=${INST_DIR}/bin:${INST_DIR}/swig:${INST_DIR}/plugins:${PATH}${LD_LIBRARY_PATH}
+export NEW_GEOM_CONFIG_FILE=${INST_DIR}/plugins
--- /dev/null
+#!/bin/sh
+
+export ROOT_DIR=$(pwd)/..
+
+source ${ROOT_DIR}/sources/salome_env.sh
+
+# Correcting path which defined with error
+export LD_LIBRARY_PATH=${KERNEL_ROOT_DIR}/lib/salome:${LD_LIBRARY_PATH}
+
+export LightAppConfig=${ROOT_DIR}/install/share/salome/resources/newgeom:${GUI_ROOT_DIR}/share/salome/resources/gui
+
+SUITApp LightApp -style salome --modules=NewGeom --uselicense --noexcepthandling
\ No newline at end of file
Events_Loop::loop()->send(anError);
}
-static void send(std::string theDescription, const void* theSender = 0)
+void Events_Error::send(std::string theDescription, const void* theSender)
{
Events_Error::send(theDescription.c_str(), theSender);
}
#include <ModelAPI_Document.h>
#include <ModelAPI_Feature.h>
#include <ModelAPI_Data.h>
-#include <ModelAPI_PluginManager.h>
#include <ModelAPI_Document.h>
#ifdef _DEBUG
void ModuleBase_Operation::startOperation()
{
- boost::shared_ptr<ModelAPI_Document> aDoc = ModelAPI_PluginManager::get()->rootDocument();
- myFeature = aDoc->addFeature(getDescription()->operationId().toStdString());
- if (myFeature) // TODO: generate an error if feature was not created
- myFeature->execute();
+ createFeature();
//emit callSlot();
//commit();
}
{
if (myFeature) myFeature->execute();
}
+
+void ModuleBase_Operation::createFeature()
+{
+ boost::shared_ptr<ModelAPI_Document> aDoc = document();
+ myFeature = aDoc->addFeature(getDescription()->operationId().toStdString());
+ if (myFeature) // TODO: generate an error if feature was not created
+ myFeature->execute();
+}
/// Virtual method called when operation committed (see commit() method for more description)
virtual void commitOperation();
+ /// Creates a new feature and save it in the operation internal field
+ virtual void createFeature();
+
private:
boost::shared_ptr<ModelAPI_Feature> myFeature; /// the operation feature to be handled
};
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/XGUI
${PROJECT_SOURCE_DIR}/src/Events
+ ${PROJECT_SOURCE_DIR}/src/ModuleBase
${SALOME_GUI_INCLUDE}
${SALOME_KERNEL_INCLUDE}
${CAS_INCLUDE_DIRS}
#include "NewGeom_OCCSelector.h"
#include <XGUI_Workshop.h>
+#include <XGUI_PropertyPanel.h>
#include <LightApp_Application.h>
#include <LightApp_SelectionMgr.h>
if (aPreviewOp) {
visualizePreview(aPreviewOp->feature(), true);
- connect(aPreviewOp, SIGNAL(featureConstructed(boost::shared_ptr<ModelAPI_Feature>)),
- this, SLOT(onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature>)));
+ connect(aPreviewOp, SIGNAL(featureConstructed(boost::shared_ptr<ModelAPI_Feature>, int)),
+ this, SLOT(onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature>, int)));
PartSet_OperationSketch* aSketchOp = dynamic_cast<PartSet_OperationSketch*>(aPreviewOp);
if (aSketchOp) {
myWorkshop->actionsMgr()->setNestedActionsEnabled(true);
}
-void PartSet_Module::onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature)
+void PartSet_Module::onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature,
+ int theMode)
{
- visualizePreview(theFeature, true);
+ bool isDisplay = theMode != PartSet_OperationSketchBase::FM_Abort;
+ visualizePreview(theFeature, isDisplay);
}
void PartSet_Module::visualizePreview(boost::shared_ptr<ModelAPI_Feature> theFeature, bool isDisplay)
if (isDisplay) {
boost::shared_ptr<GeomAPI_Shape> aPreview = aPreviewOp->preview(theFeature);
if (aPreview) {
- aDisplayer->DisplayInLocalContext(theFeature, aPreview->impl<TopoDS_Shape>(),
- aPreviewOp->getSelectionMode(theFeature));
+ aDisplayer->RedisplayInLocalContext(theFeature, aPreview->impl<TopoDS_Shape>(),
+ aPreviewOp->getSelectionModes(theFeature));
}
}
else {
- aDisplayer->CloseLocalContexts(false);
+ //aDisplayer->CloseLocalContexts(false);
aDisplayer->Erase(anOperation->feature());
}
}
/// SLOT, to visualize the feature in another local context mode
/// \param theFeature the feature to be put in another local context mode
- void onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature);
+ /// \param theMode the mode appeared on the feature
+ void onFeatureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature,
+ int theMode);
private:
XGUI_Workshop* myWorkshop;
{
}
-int PartSet_OperationSketch::getSelectionMode(boost::shared_ptr<ModelAPI_Feature> theFeature) const
+std::list<int> PartSet_OperationSketch::getSelectionModes(boost::shared_ptr<ModelAPI_Feature> theFeature) const
{
- int aMode = TopAbs_FACE;
- if (isEditMode())
- aMode = TopAbs_VERTEX;
- return aMode;
+ std::list<int> aModes;
+ if (!isEditMode())
+ aModes.push_back(TopAbs_FACE);
+ return aModes;
}
void PartSet_OperationSketch::setSelectedShapes(const NCollection_List<TopoDS_Shape>& theList)
/// Returns the operation local selection mode
/// \param theFeature the feature object to get the selection mode
/// \return the selection mode
- virtual int getSelectionMode(boost::shared_ptr<ModelAPI_Feature> theFeature) const;
+ virtual std::list<int> getSelectionModes(boost::shared_ptr<ModelAPI_Feature> theFeature) const;
/// Gives the current selected objects to be processed by the operation
/// \param theList a list of interactive selected shapes
class PARTSET_EXPORT PartSet_OperationSketchBase : public ModuleBase_Operation
{
Q_OBJECT
+public:
+ enum FeatureActionMode { FM_Activation, FM_Deactivation, FM_Abort };
+
public:
/// Constructor
/// \param theId an feature index
/// Returns the operation local selection mode
/// \param theFeature the feature object to get the selection mode
/// \return the selection mode
- virtual int getSelectionMode(boost::shared_ptr<ModelAPI_Feature> theFeature) const = 0;
+ virtual std::list<int> getSelectionModes(boost::shared_ptr<ModelAPI_Feature> theFeature) const = 0;
/// Gives the current selected objects to be processed by the operation
/// \param theList a list of interactive selected shapes
signals:
/// Signal about the feature construing is finished
/// \param theFeature the result feature
- void featureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature);
+ /// \param theMode the mode of the feature modification
+ void featureConstructed(boost::shared_ptr<ModelAPI_Feature> theFeature,
+ int theMode);
public:
/// temporary code to provide edition mode
return true;
}
-int PartSet_OperationSketchLine::getSelectionMode(boost::shared_ptr<ModelAPI_Feature> theFeature) const
+std::list<int> PartSet_OperationSketchLine::getSelectionModes(boost::shared_ptr<ModelAPI_Feature> theFeature) const
{
- int aMode = 0;
+ std::list<int> aModes;
if (theFeature != feature())
- aMode = TopAbs_VERTEX;
- return aMode;
+ aModes.push_back(TopAbs_VERTEX);
+ return aModes;
}
void PartSet_OperationSketchLine::mouseReleased(const gp_Pnt& thePoint)
setLinePoint(aPrevFeature, LINE_ATTR_END, LINE_ATTR_START);
myPointSelectionMode = SM_SecondPoint;
- emit featureConstructed(aPrevFeature);
+ emit featureConstructed(aPrevFeature, FM_Deactivation);
}
break;
default:
void PartSet_OperationSketchLine::keyReleased(const int theKey)
{
switch (theKey) {
- case Qt::Key_Escape:
+ case Qt::Key_Escape: {
+ if (myPointSelectionMode != SM_None)
+ emit featureConstructed(feature(), FM_Abort);
abort();
- break;
- case Qt::Key_Enter:
- //myPointSelectionMode = myPointSelectionMode;
- break;
+ }
+ break;
+ case Qt::Key_Return: {
+ if (myPointSelectionMode != SM_None) {
+ emit featureConstructed(feature(), FM_Abort);
+ myPointSelectionMode = SM_FirstPoint;
+ document()->abortOperation();
+ }
+ else
+ myPointSelectionMode = SM_FirstPoint;
+ }
+ break;
default:
- break;
+ break;
}
}
void PartSet_OperationSketchLine::startOperation()
{
PartSet_OperationSketchBase::startOperation();
-
- if (mySketch) {
- boost::shared_ptr<SketchPlugin_Feature> aFeature =
- boost::dynamic_pointer_cast<SketchPlugin_Feature>(mySketch);
-
- aFeature->addSub(feature());
- }
myPointSelectionMode = SM_FirstPoint;
}
myPointSelectionMode = SM_None;
}
+void PartSet_OperationSketchLine::createFeature()
+{
+ PartSet_OperationSketchBase::createFeature();
+ if (mySketch) {
+ boost::shared_ptr<SketchPlugin_Feature> aFeature =
+ boost::dynamic_pointer_cast<SketchPlugin_Feature>(mySketch);
+
+ aFeature->addSub(feature());
+ }
+ //emit featureConstructed(aPrevFeature, FM_Activation);
+}
+
void PartSet_OperationSketchLine::setLinePoint(const gp_Pnt& thePoint,
const std::string& theAttribute)
{
/// Returns the operation local selection mode
/// \param theFeature the feature object to get the selection mode
/// \return the selection mode
- virtual int getSelectionMode(boost::shared_ptr<ModelAPI_Feature> theFeature) const;
+ virtual std::list<int> getSelectionModes(boost::shared_ptr<ModelAPI_Feature> theFeature) const;
/// Gives the current selected objects to be processed by the operation
/// \param thePoint a point clicked in the viewer
/// After the parent operation body perform, reset selection point mode of the operation
virtual void stopOperation();
+ /// Creates a new feature and save it in the operation internal field.
+ /// In addition to the default realization it set a sketch feature to the created feature
+ virtual void createFeature();
+
protected:
/// \brief Save the point to the line.
/// \param thePoint the 3D point in the viewer
continue;
aContext->Erase(anAISShape);
}
+ myFeature2AISObjectMap.erase(theFeature);
if (isUpdateViewer)
aContext->UpdateCurrentViewer();
}
-void XGUI_Displayer::DisplayInLocalContext(boost::shared_ptr<ModelAPI_Feature> theFeature,
- const TopoDS_Shape& theShape,
- const int theMode, const bool isUpdateViewer)
+void XGUI_Displayer::RedisplayInLocalContext(boost::shared_ptr<ModelAPI_Feature> theFeature,
+ const TopoDS_Shape& theShape,
+ const std::list<int>& theModes, const bool isUpdateViewer)
{
Handle(AIS_InteractiveContext) aContext = AISContext();
}
aDispAIS.push_back(anAIS);
myFeature2AISObjectMap[theFeature] = aDispAIS;
- aContext->Display(anAIS, Standard_False);
-
- AIS_ListOfInteractive anAISList;
- anAISList.Append(anAIS);
- activateInLocalContext(anAISList, theMode, true);
-}
-
-void XGUI_Displayer::CloseLocalContexts(const bool isUpdateViewer)
-{
- closeAllContexts(true);
-}
-void XGUI_Displayer::activateInLocalContext(const AIS_ListOfInteractive& theAISObjects, const int theMode,
- const bool isUpdateViewer)
-{
Handle(AIS_InteractiveContext) ic = AISContext();
// Open local context if there is no one
- bool allObjects = false; // calculate by AIS shape
if (!ic->HasOpenedContext()) {
ic->ClearCurrents(false);
- ic->OpenLocalContext(allObjects, true, true);
+ ic->OpenLocalContext(false/*use displayed objects*/, /*true*/false/*use displayed objects*/,
+ true/*allow shape decomposition*/);
}
-
// Activate selection of objects from prs
- AIS_ListIteratorOfListOfInteractive aIter(theAISObjects);
- for (; aIter.More(); aIter.Next()) {
- Handle(AIS_InteractiveObject) anAIS = aIter.Value();
- if (!anAIS.IsNull()) {
- if (anAIS->IsKind(STANDARD_TYPE(AIS_Shape))) {
- ic->Load(anAIS, -1, false);
- ic->Activate(anAIS, AIS_Shape::SelectionMode((TopAbs_ShapeEnum)theMode));
- }
- else if (anAIS->DynamicType() != STANDARD_TYPE(AIS_Trihedron)) {
- ic->Load(anAIS, -1, false);
- ic->Activate(anAIS, theMode);
- }
+ if (!anAIS.IsNull()) {
+ if (anAIS->IsKind(STANDARD_TYPE(AIS_Shape))) {
+ ic->Display(anAIS, false);
+ ic->Load(anAIS, -1, true/*allow decomposition*/);
+ std::list<int>::const_iterator anIt = theModes.begin(), aLast = theModes.end();
+ for (; anIt != aLast; anIt++)
+ ic->Activate(anAIS, AIS_Shape::SelectionMode((TopAbs_ShapeEnum)*anIt));
}
}
if (isUpdateViewer)
ic->UpdateCurrentViewer();
}
+void XGUI_Displayer::CloseLocalContexts(const bool isUpdateViewer)
+{
+ closeAllContexts(true);
+}
+
void XGUI_Displayer::closeAllContexts(const bool isUpdateViewer)
{
Handle(AIS_InteractiveContext) ic = AISContext();
#include <map>
#include <vector>
+#include <list>
class XGUI_Viewer;
class ModelAPI_Feature;
/// \param theShape a shape
/// \param theMode a local selection mode
/// \param isUpdateViewer the parameter whether the viewer should be update immediatelly
- void DisplayInLocalContext(boost::shared_ptr<ModelAPI_Feature> theFeature,
+ void RedisplayInLocalContext(boost::shared_ptr<ModelAPI_Feature> theFeature,
const TopoDS_Shape& theShape,
- const int theMode, const bool isUpdateViewer = true);
+ const std::list<int>& theMode, const bool isUpdateViewer = true);
/// Erase the feature and a shape.
/// \param theFeature a feature instance
void CloseLocalContexts(const bool isUpdateViewer = true);
protected:
- /// Activate local selection
- /// \param theAIS the list of objects
- /// \param theMode the selection mode
- /// \param isUpdateViewer the state wether the viewer should be updated immediatelly
- void activateInLocalContext(const AIS_ListOfInteractive& theAISObjects, const int theMode,
- const bool isUpdateViewer);
/// Deactivate local selection
/// \param isUpdateViewer the state wether the viewer should be updated immediatelly
void closeAllContexts(const bool isUpdateViewer);