diff --git a/src/App/CMakeLists.txt b/src/App/CMakeLists.txt index 16f2cfc7c..e7fd4f345 100644 --- a/src/App/CMakeLists.txt +++ b/src/App/CMakeLists.txt @@ -67,6 +67,7 @@ SET(Document_CPP_SRCS FeatureTest.cpp GeoFeature.cpp Part.cpp + Path.cpp InventorObject.cpp MeasureDistance.cpp Placement.cpp @@ -95,6 +96,7 @@ SET(Document_HPP_SRCS FeatureTest.h GeoFeature.h Part.h + Path.h InventorObject.h MeasureDistance.h Placement.h diff --git a/src/App/Part.cpp b/src/App/Part.cpp index 7b9601549..873f7db8d 100644 --- a/src/App/Part.cpp +++ b/src/App/Part.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2002 * + * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 * * * * This file is part of the FreeCAD CAx development system. * * * diff --git a/src/App/Part.h b/src/App/Part.h index 933651e23..a21f08cc7 100644 --- a/src/App/Part.h +++ b/src/App/Part.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2002 * + * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 * * * * This file is part of the FreeCAD CAx development system. * * * @@ -46,6 +46,11 @@ public: Part(void); virtual ~Part(); + /// returns the type name of the ViewProvider + virtual const char* getViewProviderName(void) const { + return "Gui::ViewProviderPart"; + } + }; } //namespace App diff --git a/src/App/Path.cpp b/src/App/Path.cpp new file mode 100644 index 000000000..5126fdfb8 --- /dev/null +++ b/src/App/Path.cpp @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 * + * * + * 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" + +#ifndef _PreComp_ +#endif + +#include "Path.h" +#define new DEBUG_CLIENTBLOCK +using namespace App; + + +Path::Path(void) +{ +} + +Path::Path(const std::vector &PathVector) +:_PathVector(PathVector) +{ +} + +Path::~Path(void) +{ +} + diff --git a/src/App/Path.h b/src/App/Path.h new file mode 100644 index 000000000..772415828 --- /dev/null +++ b/src/App/Path.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright (c) Jürgen Riegel (juergen.riegel@web.de) 2014 * + * * + * 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 APP_Path_H +#define APP_Path_H + +#include + + + +namespace App +{ + + +/** Base class of all geometric document objects. + */ +class AppExport Path +{ +protected: + std::vector _PathVector; + +public: + /// Constructor + Path(void); + Path(const std::vector & PathVector); + + virtual ~Path(); + + const std::vector & getVector(void)const{return _PathVector;} + +}; + +} //namespace App + + +#endif // APP_Path_H diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index 765623134..4f1f10206 100644 --- a/src/Gui/CMakeLists.txt +++ b/src/Gui/CMakeLists.txt @@ -821,6 +821,7 @@ SET(Viewprovider_CPP_SRCS ViewProviderBuilder.cpp ViewProviderPlacement.cpp ViewProviderPlane.cpp + ViewProviderPart.cpp ViewProviderMaterialObject.cpp ) SET(Viewprovider_SRCS @@ -839,6 +840,7 @@ SET(Viewprovider_SRCS ViewProviderBuilder.h ViewProviderPlacement.h ViewProviderPlane.h + ViewProviderPart.h ViewProviderMaterialObject.h ) SOURCE_GROUP("View3D\\Viewprovider" FILES ${Viewprovider_SRCS}) diff --git a/src/Gui/ViewProviderPart.cpp b/src/Gui/ViewProviderPart.cpp new file mode 100644 index 000000000..f952d6b8c --- /dev/null +++ b/src/Gui/ViewProviderPart.cpp @@ -0,0 +1,149 @@ +/*************************************************************************** + * Copyright (c) 2006 Werner Mayer * + * * + * 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" + +#ifndef _PreComp_ +# include +# include +#endif + +#include +#include + +/// Here the FreeCAD includes sorted by Base,App,Gui...... +#include "ViewProviderPart.h" +#include "Application.h" +#include "Command.h" +#include "BitmapFactory.h" +#include "Document.h" +#include "Tree.h" +#include "View3DInventor.h" +#include "View3DInventorViewer.h" + + +using namespace Gui; + + +PROPERTY_SOURCE(Gui::ViewProviderPart, Gui::ViewProviderGeometryObject) + + +/** + * Creates the view provider for an object group. + */ +ViewProviderPart::ViewProviderPart() : visible(false) +{ +#if 0 + setDefaultMode(SO_SWITCH_ALL); +#endif +} + +ViewProviderPart::~ViewProviderPart() +{ +} + +/** + * Whenever a property of the group gets changed then the same property of all + * associated view providers of the objects of the object group get changed as well. + */ +void ViewProviderPart::onChanged(const App::Property* prop) +{ + ViewProviderDocumentObject::onChanged(prop); +} + +void ViewProviderPart::attach(App::DocumentObject *pcObj) +{ + ViewProviderDocumentObject::attach(pcObj); +} + +void ViewProviderPart::updateData(const App::Property* prop) +{ + +} + +std::vector ViewProviderPart::claimChildren(void)const +{ + return std::vector(static_cast(getObject())->Member.getValues()); +} + +std::vector ViewProviderPart::getDisplayModes(void) const +{ + // empty + return std::vector(); +} + +bool ViewProviderPart::onDelete(const std::vector &) +{ + //Gui::Command::doCommand(Gui::Command::Doc,"App.getDocument(\"%s\").getObject(\"%s\").removeObjectsFromDocument()" + // ,getObject()->getDocument()->getName(), getObject()->getNameInDocument()); + return true; +} + + +void ViewProviderPart::hide(void) +{ + +} + +void ViewProviderPart::show(void) +{ + +} + +bool ViewProviderPart::isShow(void) const +{ + return Visibility.getValue(); +} + +void ViewProviderPart::Restore(Base::XMLReader &reader) +{ + Visibility.StatusBits.set(9); // tmp. set + ViewProviderDocumentObject::Restore(reader); + Visibility.StatusBits.reset(9); // unset +} + + +/** + * Returns the pixmap for the list item. + */ +QIcon ViewProviderPart::getIcon() const +{ + QIcon groupIcon; + groupIcon.addPixmap(QApplication::style()->standardPixmap(QStyle::SP_DirClosedIcon), + QIcon::Normal, QIcon::Off); + groupIcon.addPixmap(QApplication::style()->standardPixmap(QStyle::SP_DirOpenIcon), + QIcon::Normal, QIcon::On); + return groupIcon; +} + + +// Python feature ----------------------------------------------------------------------- + +namespace Gui { +/// @cond DOXERR +PROPERTY_SOURCE_TEMPLATE(Gui::ViewProviderPartPython, Gui::ViewProviderPart) +/// @endcond + +// explicit template instantiation +template class GuiExport ViewProviderPythonFeatureT; +} diff --git a/src/Gui/ViewProviderPart.h b/src/Gui/ViewProviderPart.h new file mode 100644 index 000000000..77843e84f --- /dev/null +++ b/src/Gui/ViewProviderPart.h @@ -0,0 +1,77 @@ +/*************************************************************************** + * Copyright (c) 2006 Werner Mayer * + * * + * 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 GUI_VIEWPROVIDER_DOCUMENTOBJECTGROUP_H +#define GUI_VIEWPROVIDER_DOCUMENTOBJECTGROUP_H + + +#include "ViewProviderGeometryObject.h" +#include "ViewProviderPythonFeature.h" + +namespace Gui { + +class GuiExport ViewProviderPart : public ViewProviderGeometryObject +{ + PROPERTY_HEADER(Gui::ViewProviderPart); + +public: + /// constructor. + ViewProviderPart(); + /// destructor. + virtual ~ViewProviderPart(); + + virtual std::vector claimChildren(void)const; + + void attach(App::DocumentObject *pcObject); + void updateData(const App::Property*); + void Restore(Base::XMLReader &reader); + QIcon getIcon(void) const; + /// returns a list of all possible modes + std::vector getDisplayModes(void) const; + void hide(void); + void show(void); + bool isShow(void) const; + + virtual bool onDelete(const std::vector &); + + /// get called if the user hover over a object in the tree + //virtual bool allowDrop(const std::vector &objList,Qt::KeyboardModifiers keys,Qt::MouseButtons mouseBts,const QPoint &pos); + /// get called if the user drops some objects + //virtual void drop(const std::vector &objList,Qt::KeyboardModifiers keys,Qt::MouseButtons mouseBts,const QPoint &pos); + +protected: + /// get called by the container whenever a property has been changed + void onChanged(const App::Property* prop); + void getViewProviders(std::vector&) const; + +private: + bool visible; // helper variable + std::vector nodes; +}; + +typedef ViewProviderPythonFeatureT ViewProviderPartPython; + +} // namespace Gui + +#endif // GUI_VIEWPROVIDER_DOCUMENTOBJECTGROUP_H +