FreeCAD
1/***************************************************************************
2* Copyright (c) 2016 Stefan Tröger <stefantroeger@gmx.net> *
3* *
4* This file is part of the FreeCAD CAx development system. *
5* *
6* This library is free software; you can redistribute it and/or *
7* modify it under the terms of the GNU Library General Public *
8* License as published by the Free Software Foundation; either *
9* version 2 of the License, or (at your option) any later version. *
10* *
11* This library is distributed in the hope that it will be useful, *
12* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14* GNU Library General Public License for more details. *
15* *
16* You should have received a copy of the GNU Library General Public *
17* License along with this library; see the file COPYING.LIB. If not, *
18* write to the Free Software Foundation, Inc., 59 Temple Place, *
19* Suite 330, Boston, MA 02111-1307, USA *
20* *
21***************************************************************************/
22
23
24#include "PreCompiled.h"25
26#ifndef _PreComp_27# include <cassert>28# include <algorithm>29#endif30
31#include "ViewProviderExtension.h"32#include "ViewProviderExtensionPy.h"33#include "ViewProviderExtensionPython.h"34#include "ViewProviderDocumentObject.h"35
36using namespace Gui;37
38EXTENSION_PROPERTY_SOURCE(Gui::ViewProviderExtension, App::Extension)39
40ViewProviderExtension::ViewProviderExtension()41{
42initExtensionType(Gui::ViewProviderExtension::getExtensionClassTypeId());43}
44
45ViewProviderExtension::~ViewProviderExtension() = default;46
47const ViewProviderDocumentObject* ViewProviderExtension::getExtendedViewProvider() const{48
49assert(getExtendedContainer()->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId()));50return static_cast<const ViewProviderDocumentObject*>(getExtendedContainer());51}
52
53ViewProviderDocumentObject* ViewProviderExtension::getExtendedViewProvider() {54
55assert(getExtendedContainer()->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId()));56return static_cast<ViewProviderDocumentObject*>(getExtendedContainer());57}
58
59void ViewProviderExtension::extensionUpdateData(const App::Property*) {60
61}
62
63PyObject* ViewProviderExtension::getExtensionPyObject() {64
65if (ExtensionPythonObject.is(Py::_None())){66// ref counter is set to 167auto ext = new ViewProviderExtensionPy(this);68ExtensionPythonObject = Py::asObject(ext);69}70return Py::new_reference_to(ExtensionPythonObject);71}
72
73namespace Gui {74EXTENSION_PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderExtensionPython, Gui::ViewProviderExtension)75
76// explicit template instantiation
77template class GuiExport ViewProviderExtensionPythonT<ViewProviderExtension>;78}
79