Files
create/src/Gui/ViewProviderGroupExtension.h
Zheng, Lei c5112ecdc5 (GeoFeature)GroupExtension: track children visibility
The future patch will introduce Part::getTopoShape() to construct a
compound shape from a group. It will rely on the children visibility to
determine whether to include the child shape or not. This patch adds
children visibility tracking capability to group, and makes sure that
the group object will be marked for recomputation in case of any change
in group member, and their visibility status.

* Remove Prop_Output from 'Group' property.

* Added hidden property _GroupTouched to help propagate children change.

* Track children visibility change using signal

* GeoFeatureGroupExtension uses new PropertyLinkBase interface for
  scope checking.
2019-08-17 14:52:10 +02:00

65 lines
2.9 KiB
C++

/***************************************************************************
* Copyright (c) 2006 Werner Mayer <wmayer[at]users.sourceforge.net> *
* *
* 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_VIEWPROVIDERGROUPEXTENSION_H
#define GUI_VIEWPROVIDERGROUPEXTENSION_H
#include <App/Extension.h>
#include "ViewProviderExtension.h"
namespace Gui
{
class GuiExport ViewProviderGroupExtension : public ViewProviderExtension
{
EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(Gui::ViewProviderGroupExtension);
public:
/// Constructor
ViewProviderGroupExtension(void);
virtual ~ViewProviderGroupExtension();
virtual std::vector<App::DocumentObject*> extensionClaimChildren(void)const override;
virtual bool extensionCanDragObjects() const override;
virtual bool extensionCanDragObject(App::DocumentObject*) const override;
virtual void extensionDragObject(App::DocumentObject*) override;
virtual bool extensionCanDropObjects() const override;
virtual bool extensionCanDropObject(App::DocumentObject*) const override;
virtual void extensionDropObject(App::DocumentObject*) override;
virtual void extensionHide(void) override;
virtual void extensionShow(void) override;
virtual bool extensionOnDelete(const std::vector<std::string> &) override;
private:
bool guard;
std::vector<ViewProvider*> nodes;
};
typedef ViewProviderExtensionPythonT<Gui::ViewProviderGroupExtension> ViewProviderGroupExtensionPython;
} //namespace Gui
#endif // GUI_VIEWPROVIDERGROUPEXTENSION_H