Context aware selection makes it possible to select the same Coin3D node in different hierarchies (i.e. context) without ambiguity. New/modified APIs in ViewProvider (the first two are the most crucial APIs for context aware selection to work): * getElementPicked(), supercedes getElement(). Given a Coin3D pick point, this function returns a dot separated subname reference as a path leads to the selected object. * getDetailPath(), supercedes getDetail(). Given a subname reference, this function returns an SoFullPath leads to the Coin3D node of the selected object or sub-element (with SoDetail). * (has)HiddenMarker(), check/return a special text marker for context aware override of object visibility. * partialRender(), render only part of the object based on given subname references. It can render, e.g. some faces of a solid, or some children of a container. It uses the 'secondary' extension of SoSelectionElementAction to select which elements to render or hide. The actually rendering functionality will be added in the following patch. * update()/onChanged(), modified to sync Visibility property from DocumentObject. * useNewSelectionModel(), modified to return the default true view parameter. This is for test in the early stage of Link development, probably not needed anymore. * getBoundingBox(), a convenience function to obtain the bounding box of a sub-object/element regardless of object's visibility. It uses getDetailPath() and SoGetBoundingBoxAction to obtain bounding box through Coin3D. It will be used in later sub-element box selection functionality. New/modified APIs in ViewProviderDocumentObject: * getElementPicked()/getDetailPath() provides actual implementation to support container like (sub)object selection without ambiguity. It relies on DocumentObject::getSubObject() to walk the path. * reattach(), called when undo deleteion * forceUpdate()/isUpdateForced(), force update even if object is invisible. These are used by Link to force update the visual of a linked object regardless of its visibility. * getLinkedViewProvider(), return the linked view provider with hierarchy. ViewProviderDocumentObjectPy: * Object attribute is made writtable. Assigning it is equaivalant of calling ViewProviderDocumentObject::attach() in Python.
41 lines
1.5 KiB
XML
41 lines
1.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
|
|
<PythonExport
|
|
Father="ViewProviderPy"
|
|
Name="ViewProviderDocumentObjectPy"
|
|
Twin="ViewProviderDocumentObject"
|
|
TwinPointer="ViewProviderDocumentObject"
|
|
Include="Gui/ViewProviderDocumentObject.h"
|
|
Namespace="Gui"
|
|
FatherInclude="Gui/ViewProviderPy.h"
|
|
FatherNamespace="Gui">
|
|
<Documentation>
|
|
<Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net" />
|
|
<UserDocu>This is the ViewProvider base class</UserDocu>
|
|
</Documentation>
|
|
<Methode Name="update">
|
|
<Documentation>
|
|
<UserDocu>Update the view representation of the object</UserDocu>
|
|
</Documentation>
|
|
</Methode>
|
|
<Attribute Name="Object">
|
|
<Documentation>
|
|
<UserDocu>Set/Get the associated data object</UserDocu>
|
|
</Documentation>
|
|
<Parameter Name="Object" Type="Object" />
|
|
</Attribute>
|
|
<Attribute Name="ForceUpdate">
|
|
<Documentation>
|
|
<UserDocu>Reference count to force update visual</UserDocu>
|
|
</Documentation>
|
|
<Parameter Name="ForceUpdate" Type="Boolean" />
|
|
</Attribute>
|
|
<Attribute Name="Document" ReadOnly="true">
|
|
<Documentation>
|
|
<UserDocu>Return the document the view provider is part of</UserDocu>
|
|
</Documentation>
|
|
<Parameter Name="Document" Type="Object" />
|
|
</Attribute>
|
|
</PythonExport>
|
|
</GenerateModel>
|