From 0e8a2d27a32bcca4e40983469dd67a5bf1c78e8c Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Thu, 24 Jan 2019 16:03:54 +0100 Subject: [PATCH] Sketcher: Excise SketchGeometryExtension outside of SketchObject --- src/Mod/Sketcher/App/AppSketcher.cpp | 3 +- src/Mod/Sketcher/App/CMakeLists.txt | 2 + .../Sketcher/App/SketchGeometryExtension.cpp | 83 +++++++++++++++++++ .../Sketcher/App/SketchGeometryExtension.h | 55 ++++++++++++ .../App/SketchGeometryExtensionPy.xml | 2 +- src/Mod/Sketcher/App/SketchObject.cpp | 53 ------------ src/Mod/Sketcher/App/SketchObject.h | 23 +---- 7 files changed, 145 insertions(+), 76 deletions(-) create mode 100644 src/Mod/Sketcher/App/SketchGeometryExtension.cpp create mode 100644 src/Mod/Sketcher/App/SketchGeometryExtension.h diff --git a/src/Mod/Sketcher/App/AppSketcher.cpp b/src/Mod/Sketcher/App/AppSketcher.cpp index 9dcea88fbf..27721fa053 100644 --- a/src/Mod/Sketcher/App/AppSketcher.cpp +++ b/src/Mod/Sketcher/App/AppSketcher.cpp @@ -31,6 +31,7 @@ #include "SketchObjectSF.h" #include "SketchObject.h" +#include "SketchGeometryExtension.h" #include "Constraint.h" #include "Sketch.h" #include "ConstraintPy.h" @@ -64,7 +65,7 @@ PyMOD_INIT_FUNC(Sketcher) // NOTE: To finish the initialization of our own type objects we must // call PyType_Ready, otherwise we run into a segmentation fault, later on. // This function is responsible for adding inherited slots from a type's base class. - + Sketcher::SketchGeometryExtension ::init(); Sketcher::SketchObjectSF ::init(); Sketcher::SketchObject ::init(); diff --git a/src/Mod/Sketcher/App/CMakeLists.txt b/src/Mod/Sketcher/App/CMakeLists.txt index d45ed552da..72682dbd6d 100644 --- a/src/Mod/Sketcher/App/CMakeLists.txt +++ b/src/Mod/Sketcher/App/CMakeLists.txt @@ -51,6 +51,8 @@ SOURCE_GROUP("Properties" FILES ${Properties_SRCS}) SET(Features_SRCS SketchObjectSF.cpp SketchObjectSF.h + SketchGeometryExtension.cpp + SketchGeometryExtension.h SketchObject.cpp SketchObject.h SketchAnalysis.h diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.cpp b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp new file mode 100644 index 0000000000..8b175689e9 --- /dev/null +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.cpp @@ -0,0 +1,83 @@ +/*************************************************************************** + * Copyright (c) 2019 Abdullah Tahiri * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 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 * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#include "PreCompiled.h" + +#include +#include + +#include + +#include "SketchGeometryExtension.h" + +using namespace Sketcher; + +//---------- Geometry Extension + +TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryExtension) + +SketchGeometryExtension::SketchGeometryExtension():id(0) +{ + +} + +SketchGeometryExtension::SketchGeometryExtension(long cid):id(cid) +{ + +} + +SketchGeometryExtension::~SketchGeometryExtension() +{ +} + +// Persistence implementer +unsigned int SketchGeometryExtension::getMemSize (void) const +{ + return sizeof(long int); +} + +void SketchGeometryExtension::Save(Base::Writer &writer) const +{ + + writer.Stream() << writer.ind() << "getTypeId().getName() + << "\" id=\"" << id << "\"/>" << endl; +} + +void SketchGeometryExtension::Restore(Base::XMLReader &reader) +{ + id = reader.getAttributeAsInteger("id"); +} + +std::unique_ptr SketchGeometryExtension::copy(void) const +{ + std::unique_ptr cpy = std::make_unique(); + + cpy->id = this->id; + + return std::move(cpy); +} + +PyObject * SketchGeometryExtension::getPyObject(void) +{ + return new SketchGeometryExtensionPy(new SketchGeometryExtension(this->id)); +} + diff --git a/src/Mod/Sketcher/App/SketchGeometryExtension.h b/src/Mod/Sketcher/App/SketchGeometryExtension.h new file mode 100644 index 0000000000..50f469c722 --- /dev/null +++ b/src/Mod/Sketcher/App/SketchGeometryExtension.h @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright (c) 2019 Abdullah Tahiri * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 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 * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#ifndef SKETCHER_SKETCHGEOMETRYEXTENSION_H +#define SKETCHER_SKETCHGEOMETRYEXTENSION_H + +#include + +namespace Sketcher +{ + +class SketcherExport SketchGeometryExtension : public Part::GeometryExtension +{ + TYPESYSTEM_HEADER(); +public: + SketchGeometryExtension(); + SketchGeometryExtension(long cid); + virtual ~SketchGeometryExtension(); + + // Persistence implementer --------------------- + virtual unsigned int getMemSize(void) const; + virtual void Save(Base::Writer &/*writer*/) const; + virtual void Restore(Base::XMLReader &/*reader*/); + + virtual std::unique_ptr copy(void) const; + + virtual PyObject *getPyObject(void); + +public: + long int id; +}; + +} //namespace Sketcher + + +#endif // SKETCHER_SKETCHGEOMETRYEXTENSION_H diff --git a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml index d00edae5ff..5ace89f320 100644 --- a/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml +++ b/src/Mod/Sketcher/App/SketchGeometryExtensionPy.xml @@ -6,7 +6,7 @@ PythonName="Sketcher.SketchGeometryExtension" Twin="SketchGeometryExtension" TwinPointer="SketchGeometryExtension" - Include="Mod/Sketcher/App/SketchObject.h" + Include="Mod/Sketcher/App/SketchGeometryExtension.h" Namespace="Sketcher" FatherInclude="Mod/Part/App/GeometryExtensionPy.h" FatherNamespace="Part" diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index 7b93d45dc6..c0c2d7b73c 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -89,59 +89,6 @@ using namespace Sketcher; using namespace Base; -//---------- Geometry Extension - -TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryExtension) - -SketchGeometryExtension::SketchGeometryExtension():id(0) -{ - -} - -SketchGeometryExtension::SketchGeometryExtension(long cid):id(cid) -{ - -} - -SketchGeometryExtension::~SketchGeometryExtension() -{ -} - -// Persistence implementer -unsigned int SketchGeometryExtension::getMemSize (void) const -{ - return sizeof(long int); -} - -void SketchGeometryExtension::Save(Base::Writer &writer) const -{ - - writer.Stream() << writer.ind() << "getTypeId().getName() - << "\" id=\"" << id << "\"/>" << endl; -} - -void SketchGeometryExtension::Restore(Base::XMLReader &reader) -{ - id = reader.getAttributeAsInteger("id"); -} - -std::unique_ptr SketchGeometryExtension::copy(void) const -{ - std::unique_ptr cpy = std::make_unique(); - - cpy->id = this->id; - - return std::move(cpy); -} - -PyObject * SketchGeometryExtension::getPyObject(void) -{ - return new SketchGeometryExtensionPy(new SketchGeometryExtension(this->id)); -} - - -//-------------- End Geometry Extension - const int GeoEnum::RtPnt = -1; const int GeoEnum::HAxis = -1; diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index fe26a8cad8..0bc595ffde 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -38,30 +38,11 @@ #include "Sketch.h" +#include "SketchGeometryExtension.h" + namespace Sketcher { -class SketcherExport SketchGeometryExtension : public Part::GeometryExtension -{ - TYPESYSTEM_HEADER(); -public: - SketchGeometryExtension(); - SketchGeometryExtension(long cid); - virtual ~SketchGeometryExtension(); - - // Persistence implementer --------------------- - virtual unsigned int getMemSize(void) const; - virtual void Save(Base::Writer &/*writer*/) const; - virtual void Restore(Base::XMLReader &/*reader*/); - - virtual std::unique_ptr copy(void) const; - - virtual PyObject *getPyObject(void); - -public: - long int id; -}; - struct SketcherExport GeoEnum { static const int RtPnt;