Updates the material preferences including selecting a default material
Preferences adds some options for what gets displayed in the Materials editor.
The option to use the legacy editor is removed in favour of the new
editor.
A new preference page has been added that allows the user to select a
default material. This will then be assigned to any newly created object. In
support of this, a new widget PrefsMaterialTreeWidget has been added as an
extension of the MaterialTreeWidget to automatically save and restore the
selected material.
The class MaterialLibrary has a shared pointer to its Material objects and the class Material has a shared pointer to the MaterialLibrary.
The class MaterialManager owns all MaterialLibrary and Material objects in static containers. To resolve the cyclic references the method
cleanup() has been added.
The class ModelLibrary has a shared pointer to its Model objects and the class Model has a shared pointer to the ModelLibrary.
The class ModelManager owns all ModelLibrary and Model objects in static containers. To resolve the cyclic references the method
cleanup() has been added.
The Materials module registers a function to App::CleanupProcess that calls the above cleanup() methods.
NOTE: This registration is only done in debug mode mainly to satisfy memory checkers
* Create a compatibility module QtSvgWidgets.py to handle PySide2 & PySide6
* In the Arch and Material modules use the QtSvgWidgets module
* Since Qt6 the method QFont.setWeight() doesn't accept an int any more but requires an enum. Since the call of QFont.setBold(True) sets
a weight of 75 the extra calls of QFont.setWeight(75) can be safely removed
Co-authored-by: Adrián Insaurralde Avalos <36372335+adrianinsaval@users.noreply.github.com>
Improves the MaterialTreeWidget beyond minimum viable product.
- Filters can now be filter lists to allow a variety of filtering
options.
- User preferences allow the inclusion/exclusion of favorites and
recents.
- Widget state such as expansion, tree expansions, etc are saved and
restored.
- show current appearancee material when editing.
- implements a python interface
#fixes 13421: always opens full tree
There were several issues here, not just one. The following are fixed:
Incorrect display of Quantity items (NaN)
Editing and updating quantity items
Editing and updating items on the first row.
There are still issues with editing lists, but these were known issues at the time of initial merge. This has been split out into issue #13435fixes#13020
Provides compatibility loading older files outside the context of
a library.
Older material files were loaded by specifying a path. The new
material system used the path to associated the material with a
library, which may not be appropriate for legacy files. This change
allows the use of materials outside of a library.
Additionally, legacy files often have name/value pairs not part of the
standard list of properties. Since these were unable to be mapped to
a model property they were ignored. Materials now maintain a legacy
map to hold properties not associated with a property model. These
properties are considered transient and will not be saved. It is not
intended for this feature to be used as a generic container for
properties not mapped to an appropriate model.
Fixes#13302
* fix warning -Wunused-variable
* fix warning -Wreorder-ctor
* fix warning -Wunused-but-set-variable
* fix uic warning for DlgDisplayProperties.ui
* rename the target MateriaTestLib ALL (note the typo and the already existing MaterialTestLib ALL) to MaterialTest ALL
drop the hard dependency to the Part module: The document is checked for a property ShapeMaterial of type Materials::PropertyMaterial.
An alternative could be to cast to GeoFeature and use the methods getMaterialAppearance() and setMaterialAppearance()
Uses new material system for appearance
Each feature object now has a property called ShapeMaterial that
describes its physical properties. If it has a shape, it has a
material.
The ShapeColor attribute is replaced by a ShapeAppearance attribute.
This is a material list that describes all appearance properties, not
just diffuse color. As a list in can be used for all elements of a
shape, such as edges and faces.
A new widget is provided to allow the user to select materials in a
consistent fashion. It can also launch the material editor with its
more advanced capabilities.
This fixes#12949.
* The file materials-editor.ui must be installed with a separate INSTALL command because it goes to another directory than the other resource files.
* Material_rc.py isn't copied to the build directory any more. So, then don't install it either.
Removes localization from the material card dictionary.
Fixes#12935
The previous card implementation transferred strings directly to the
card dictionary without interpretation. The new material system parses
the file data, producing a dictionary for compatibility. The new
dictionaries localized the strings which is incorrect. This PR
removes that localization.
Fixes#12933
The previous card implementation used a parameter to select either
solids or fluids. The current material dictionary ignored the
parameter and only returned solids. This PR restores the use of the
material type filter.
* Update translations
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* updated ts files
* merged crowdin translations
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Improves compatibility when using the legacy editor.
Corrects a number of issues that prevented saved files from being displayed when using the legacy editor.
Reduces the verbosity of console messages.
Continues the work of the material subsystem improvements.
Add support for embedded SVG files. These are not the same
as image files so need to be handled differently.
Add the ability to filter materials in the editor when called from
code. This allows programs to select objects supporting specific
models, complete models, older models, etc.
Updated tests, and refactored code.
New models and materials supporting patterns such as used by the
TechDraw workbench.
fixes#11686 - checks for the presense of a model property before
assinging a value. This can happen when a required model definition is
not available.
---------
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
* Adding version check
* Add compat component for Qt6
* Remove too many qts
* Fix include path
---------
Co-authored-by: David Lanzendörfer <leviathan@libresilicon.com>