Commit Graph

44 Commits

Author SHA1 Message Date
luz paz
38815b9550 Gui: Fix header uniformity, whitespace, and doxygen fixes 2020-11-26 10:14:56 +01:00
wmayer
067b51b835 Gui: [skip ci] let view provider to decide to whether open a transaction on double-click
The sketcher view provider doesn't need a transaction on double-click or otherwise shows a useless entry in the undo dialog which when undoing leads to weird behaviour
2020-10-24 15:37:04 +02:00
Zheng, Lei
6375b82eb6 Gui: fix view object global coordinate space showable checking 2020-09-10 14:30:50 +02:00
carlopav
7a84e52fa1 Gui: divide ViewProviderGeometryObject properties into groups
.


.


.


.
2020-08-21 12:36:46 +02:00
carlopav
4442a9cf3a Gui: attempt to reorder ViewProviderDocumentObject properties
ref: https://forum.freecadweb.org/viewtopic.php?f=8&t=46911#p403077
@wmayer beware, I didn't test compiling.
Gui: fixed duplicated property adding in ViewProviderDocumentObject

fixed regression
2020-08-21 12:36:46 +02:00
wmayer
983939b32d Coverity: Uninitialized scalar/pointer field 2020-07-20 17:34:30 +02:00
wmayer
c5c8b21cc4 Gui: Optimize ViewProviderDocumentObject::getDocument() 2020-07-20 17:34:29 +02:00
wmayer
2a50ac2252 PVS: V595 A pointer was utilized before it was verified against nullptr 2020-07-18 10:59:28 +02:00
wmayer
4ffeb38f2c Gui: [skip ci] do not mark the document as modified if the visibility of an object changes but the flag 'TouchDocument' is not set 2020-03-10 11:40:08 +01:00
wmayer
6bf1a623c5 Gui: add function to observe before changing a property 2020-01-13 02:17:39 +01:00
Zheng, Lei
ca48c25ea0 Gui: fix ViewProviderDocumentObject display mode restore
C++ view provider will get the call of attach() before restoring
properties. However, python view object will delay the call until Proxy
is restored.

The reason why this problem did not show up eariler is because
ViewProviderPythonFeature::getDefaultDisplayMode() did not fallback to
its parent implementation if there is no Python override. This can be
considered as a bug, which is fixed during the merge. And the display
mode restore problem is the side effect of the fix.
2019-12-31 15:04:19 +01:00
Zheng, Lei
000ef1517f Gui: avoid unecessary visibility change when update view provider
This patch prevents syncing DocumentObject::Visibility when view
provider hides itself before updating. Some object may have additional
logic based on object visibility change. For example, GroupExtension
monitors its children visibility for exporting, and propgate changes to
upper hierarchy.
2019-10-09 14:01:44 +02:00
wmayer
6d515aa60c fix build failure on Windows due to conflicting define of GDI API 2019-10-08 14:49:56 +02:00
Zheng, Lei
bb3baefdb5 Gui: refactor bounding box selection style
Previously, box style selection is rendered using customized
SoBoxSelectionRenderAction, which does not support selection context,
i.e. it does not work with Link.

This patch implements context aware bound box rendering inside
SoFCSelectionRoot, SoFCSelection and SoFCPathAnnotation (for always on
top rendering). The box rendering in SoBoxSelectionRenderAction is
disabled on construction. Box style selection can be enabled for
individual object through property SelectionStyle (moved from
ViewProviderGeometryObject to ViewProviderDocumentObject), or globally
through Parameter BaseApp/Preferences/View/ShowSelectionBoundingBox.

In addition, the parameter BaseApp/Preferences/View/UseNewSelection is
used to override selection model reported from
ViewProvider::useNewSelectionModel(). The reason being that, the same
parameter is already used to toggle selection model inside
SoFCSelection. This avoids inconsistency of selection model choice
between view provider and the SoFCSelection node inside. Note that if
the parameter 'UseNewSelection' is set to false, those view providers
that choose old selection model will not work with Link.
2019-10-08 09:56:09 +02:00
wmayer
5af586b92e Add parameter to suppress touching a document when a view provider has been modified 2019-08-24 15:54:41 +02:00
Zheng, Lei
81d3cf1b89 Gui: refactor tree view
* Major refactor of tree view to support external linking.

* Item update and selection change are now mostly handled by timer for
  performance improvement.

* Major change to drag and drop for better support of switching between
  copy, move and replace action, and auto adjustment of placement and
  relative link.

* Add second column for user changable object description.

* Unified tree view options and action into command group
  Std_TreeViewActions.

* Modified object search function to find external objects using
  Expression syntax.
2019-08-17 15:08:33 +02:00
Zheng, Lei
cd7725227f ViewProvider(DocumentObject): new APIs for context aware selection
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.
2019-08-17 14:52:10 +02:00
Zheng, Lei
be6ec3fdfc App: Property related API changes
Property:

* Extended property status bitset. Mirror most of PropertyType and
  allow dynamic change property type.

* Cache property name and type to improve performance

* Centralize property status change signalling

* Change aboutToSetValue()/hasSetValue() to virtual

* Add new API getFullName() to obtain full quanlified name of the property

AtomicPropertyChangeInterface:

* Allow calling aboutToSetValue()/hasSetValue() when actually changed

PropertyLists:

* Refactor implementation by an abstract class PropertyListBase and a
  template class PropertyListsT, to allow better code reuse.
  PropertyListT is derived from AtomicPropertyChangeInterface to allow
  more efficient change on individual elements.

* All list type property now accept setting python value as a dictionary
  with index as key to set individual element of a list.

* Add touch list for more efficient handling of value changes. The list
  contains the index of changed value. And empty touch list should be
  treated as the entire list is changed. PropertyContainerPy expose this
  functionality with getPropertyTouchList().

PropertyPersistentObject:

* New property to allow dynamic creation of any FreeCAD object derived
  from Base::Persistence, and use it as a property.

DynamicProperty:

* Use boost multi_index_container for efficient property lookup while
  keeping order.

* Modify to be allowed to use in PropertyContainer directly

PropertyContainer:

* Use boost multi_index_container for efficient property lookup while
  keeping order.

* Allow adding/removing dynamic property on all property container

* Modify Save/Restore() to persist property status, and better handle
  transient property which can now be dynamically enabled/disabled per
  object.

* Add new API getFullName() to obtain full quanlified name of the property.
  Implemented by Document, DocumentObject, and also
  ViewProviderDocumentObject if future patch

DocumentObject and FeaturePython are modified to accommondate the
dynamic property changes.

Removed get/setCustomAttribute() implementation from DocumentObjectPy,
and rely on PropertyContainerPy for the implementation, because of the
additional dynamic property support in property container.

Gui::ViewProviderDocumentObject, which is derived from
PropertyContainer, is also modified accordingly
2019-08-17 14:52:09 +02:00
wmayer
7646e54580 fixes 0003986: Changing view attributes does not trigger 'File changed' status 2019-05-26 23:25:58 +02:00
wmayer
869fb99595 improve whitespaces 2018-10-18 23:31:55 +02:00
Zheng, Lei
a221a04001 ViewProviderDocumentObject: forbid recursive call of updateView() 2018-08-08 13:44:36 +02:00
wmayer
4ec1c8c29f fix exception raised on project load for invalid enums 2018-08-07 15:23:56 +02:00
wmayer
48155db774 issue #0002080: Attempt to remove FEM analysis result (displacement & stress) results in false warning 2017-10-18 19:46:20 +02:00
wmayer
a5bf15b55d remove properties from transactions when being deleted 2017-08-28 21:20:17 +02:00
wmayer
45198fb712 use names directly from document to set them in scene inspector 2017-01-30 22:29:26 +01:00
wmayer
359a25d0c8 issue #0002802: Set a name to coin rootnodes of objects 2016-12-15 22:16:19 +01:00
wmayer
f1127dd2f4 Fix issues:
+ improve formatting
+ remove superfluous semicolons
+ comment unused parameters
+ rename Initialisation to Initialization
+ rename Deinitialisation to Finalization
+ remove spaces
2016-10-08 12:48:34 +02:00
Stefan Tröger
5b9aea71d5 Extensions: Port ViewProvider of GeoFeatureGroup 2016-10-08 12:48:34 +02:00
Stefan Tröger
56492971c8 Remove redundant drag'n'drop interface
In the long time of parallel assembly development an own drag'n'drop interface has been added to master and assembly branch. After merge both have been available. This commit removes one and keeps the more extensive implementation
2016-10-08 12:48:34 +02:00
wmayer
1e6dcabefc fix -Wextra in FreeCADGui 2016-09-21 20:54:52 +02:00
wmayer
56ff619cd8 Add method to get Gui document from view provider 2016-08-21 18:24:56 +02:00
wmayer
554875b930 add method to get view that contains a given node 2016-08-14 18:01:10 +02:00
wmayer
71390dcf20 prepare view provider for undo/redo 2016-07-23 11:46:19 +02:00
wmayer
e471ebe1fb prepare view provider for undo/redo 2016-07-23 11:45:38 +02:00
wmayer
3d16ae0f04 prepare view provider for undo/redo 2016-07-23 11:45:21 +02:00
jriegel
be619b3e7d Generall Drag/Drop interface 2016-04-12 18:12:01 +02:00
wmayer
750897c20e + introduce proper enum for property status to replace plain integers 2016-01-01 15:36:24 +01:00
Mateusz Skowroński
05f95c0506 Fix files encoding. Go from ISO8859-1 to UTF-8. 2015-09-21 19:50:49 -03:00
wmayer
dffaebd346 + check returned mdi view to be of the requested type 2015-09-16 16:15:19 +02:00
wmayer
4accb68bb1 + fix method ViewProviderDocumentObject::getActiveView()
+ fix SoAutoZoomTranslation and SoZoomTranslation to get correct scaling factor
(do not rely on active view because this can be the wrong one and thus delivers wrong results)
2015-09-16 11:32:35 +02:00
wmayer
a2d8a5b0aa + add convenience method to get editing view of a view provider 2015-09-15 22:09:28 +02:00
wmayer
56234513b3 + fixes #0001678: Visibility property is ignored on drawing sheets 2015-01-03 17:09:17 +01:00
wmayer
8eb07e0184 Make information if tree item is expanded/collapsed persistent 2013-04-29 14:30:26 +02:00
wmayer
120ca87015 + unify DLL export defines to namespace names
git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5000 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
2011-10-10 13:44:52 +00:00