Skip to content

Commit

Permalink
WIP4
Browse files Browse the repository at this point in the history
  • Loading branch information
HuguesDelorme committed Jun 4, 2024
1 parent 58220ec commit e8a9f03
Show file tree
Hide file tree
Showing 17 changed files with 779 additions and 415 deletions.
88 changes: 68 additions & 20 deletions src/app/commands_tools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@

#include <QtWidgets/QWidget>

#include "../qtscripting/js_application.h"
#include "../qtscripting/js_document.h"
#include "../qtscripting/script_application.h"
#include "../qtscripting/script_document.h"
#include <QtCore/QFile>
#include <QtCore/QtDebug>
#include <QtQml/QJSEngine>
#include <QtWidgets/QFileDialog>
#include <TopAbs_ShapeEnum.hxx>
#include <GeomAbs_CurveType.hxx>
#include <GeomAbs_SurfaceType.hxx>

namespace Mayo {

Expand Down Expand Up @@ -140,27 +142,73 @@ void CommandExecScript::execute()
m_jsEngine = new QJSEngine(this);
m_jsEngine->installExtensions(QJSEngine::ConsoleExtension);

auto jsApp = new JsApplication(this->context()->guiApp()->application(), m_jsEngine);
auto jsApp = new ScriptApplication(this->context()->guiApp()->application(), m_jsEngine);
QJSValue scriptApp = m_jsEngine->newQObject(jsApp);
m_jsEngine->globalObject().setProperty("application", scriptApp);

QJSValue scriptShapeType = m_jsEngine->newObject();
scriptShapeType.setProperty("Compound", TopAbs_COMPOUND);
scriptShapeType.setProperty("CompoundSolid", TopAbs_COMPSOLID);
scriptShapeType.setProperty("Solid", TopAbs_SOLID);
scriptShapeType.setProperty("Shell", TopAbs_SHELL);
scriptShapeType.setProperty("Face", TopAbs_FACE);
scriptShapeType.setProperty("Wire", TopAbs_WIRE);
scriptShapeType.setProperty("Edge", TopAbs_EDGE);
scriptShapeType.setProperty("Vertex", TopAbs_VERTEX);
m_jsEngine->globalObject().setProperty("ShapeType", scriptShapeType);

QJSValue scriptShapeOrientation = m_jsEngine->newObject();
scriptShapeOrientation.setProperty("Forward", TopAbs_FORWARD);
scriptShapeOrientation.setProperty("Reversed", TopAbs_REVERSED);
scriptShapeOrientation.setProperty("Internal", TopAbs_INTERNAL);
scriptShapeOrientation.setProperty("External", TopAbs_EXTERNAL);
m_jsEngine->globalObject().setProperty("ShapeOrientation", scriptShapeOrientation);
{
QJSValue scriptGeomContinuity = m_jsEngine->newObject();
scriptGeomContinuity.setProperty("C0", GeomAbs_C0);
scriptGeomContinuity.setProperty("G1", GeomAbs_G1);
scriptGeomContinuity.setProperty("C1", GeomAbs_C1);
scriptGeomContinuity.setProperty("G2", GeomAbs_G2);
scriptGeomContinuity.setProperty("C2", GeomAbs_C2);
scriptGeomContinuity.setProperty("C3", GeomAbs_C3);
scriptGeomContinuity.setProperty("CN", GeomAbs_CN);
m_jsEngine->globalObject().setProperty("GeomContinuity", scriptGeomContinuity);
}

{
QJSValue scriptGeomCurveType = m_jsEngine->newObject();
scriptGeomCurveType.setProperty("Line", GeomAbs_Line);
scriptGeomCurveType.setProperty("Circle", GeomAbs_Circle);
scriptGeomCurveType.setProperty("Ellipse", GeomAbs_Ellipse);
scriptGeomCurveType.setProperty("Hyperbola", GeomAbs_Hyperbola);
scriptGeomCurveType.setProperty("Parabola", GeomAbs_Parabola);
scriptGeomCurveType.setProperty("Bezier", GeomAbs_BezierCurve);
scriptGeomCurveType.setProperty("BSpline", GeomAbs_BSplineCurve);
scriptGeomCurveType.setProperty("Offset", GeomAbs_OffsetCurve);
scriptGeomCurveType.setProperty("Other", GeomAbs_OtherCurve);
m_jsEngine->globalObject().setProperty("GeomCurveType", scriptGeomCurveType);
}

{
QJSValue scriptGeomSurfaceType = m_jsEngine->newObject();
scriptGeomSurfaceType.setProperty("Plane", GeomAbs_Plane);
scriptGeomSurfaceType.setProperty("Cylinder", GeomAbs_Cylinder);
scriptGeomSurfaceType.setProperty("Cone", GeomAbs_Cone);
scriptGeomSurfaceType.setProperty("Sphere", GeomAbs_Sphere);
scriptGeomSurfaceType.setProperty("Torus", GeomAbs_Torus);
scriptGeomSurfaceType.setProperty("Bezier", GeomAbs_BezierSurface);
scriptGeomSurfaceType.setProperty("BSpline", GeomAbs_BSplineSurface);
scriptGeomSurfaceType.setProperty("SurfaceOfRevolution", GeomAbs_SurfaceOfRevolution);
scriptGeomSurfaceType.setProperty("SurfaceOfExtrusion", GeomAbs_SurfaceOfExtrusion);
scriptGeomSurfaceType.setProperty("Offset", GeomAbs_OffsetSurface);
scriptGeomSurfaceType.setProperty("Other", GeomAbs_OtherSurface);
m_jsEngine->globalObject().setProperty("GeomSurfaceType", scriptGeomSurfaceType);
}

{
QJSValue scriptShapeType = m_jsEngine->newObject();
scriptShapeType.setProperty("Compound", TopAbs_COMPOUND);
scriptShapeType.setProperty("CompoundSolid", TopAbs_COMPSOLID);
scriptShapeType.setProperty("Solid", TopAbs_SOLID);
scriptShapeType.setProperty("Shell", TopAbs_SHELL);
scriptShapeType.setProperty("Face", TopAbs_FACE);
scriptShapeType.setProperty("Wire", TopAbs_WIRE);
scriptShapeType.setProperty("Edge", TopAbs_EDGE);
scriptShapeType.setProperty("Vertex", TopAbs_VERTEX);
m_jsEngine->globalObject().setProperty("ShapeType", scriptShapeType);
}

{
QJSValue scriptShapeOrientation = m_jsEngine->newObject();
scriptShapeOrientation.setProperty("Forward", TopAbs_FORWARD);
scriptShapeOrientation.setProperty("Reversed", TopAbs_REVERSED);
scriptShapeOrientation.setProperty("Internal", TopAbs_INTERNAL);
scriptShapeOrientation.setProperty("External", TopAbs_EXTERNAL);
m_jsEngine->globalObject().setProperty("ShapeOrientation", scriptShapeOrientation);
}
}

QFile jsFile(strFilePath);
Expand Down
10 changes: 8 additions & 2 deletions src/base/document_tree_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const DocumentTreeNode& DocumentTreeNode::null()
TDF_Label DocumentTreeNode::label() const
{
if (this->isValid())
return m_document->modelTree().nodeData(m_id);
return DocumentTreeNode::label(m_document, m_id);
else
return TDF_Label();
}
Expand All @@ -51,7 +51,13 @@ bool DocumentTreeNode::operator==(const DocumentTreeNode& other) const
return false;

return m_document->identifier() == other.document()->identifier()
&& m_id == other.id();
&& m_id == other.id();
}

const TDF_Label& DocumentTreeNode::label(const DocumentPtr &doc, TreeNodeId treeNodeId)
{
static const TDF_Label nullLabel;
return doc ? doc->modelTree().nodeData(treeNodeId) : nullLabel;
}

} // namespace Mayo
2 changes: 2 additions & 0 deletions src/base/document_tree_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class DocumentTreeNode {

bool operator==(const DocumentTreeNode& other) const;

static const TDF_Label& label(const DocumentPtr& doc, TreeNodeId treeNodeId);

private:
DocumentPtr m_document; // TODO Document* or Document::identifier instead ?
TreeNodeId m_id = 0;
Expand Down
208 changes: 0 additions & 208 deletions src/qtscripting/js_document.cpp

This file was deleted.

Loading

0 comments on commit e8a9f03

Please sign in to comment.