Commit Graph

69 Commits

Author SHA1 Message Date
Miikka Heikkinen
ac1af9a582 Implement texture context menu
Apply to selected model/material, delete, duplicate, and
create new options are available in the menu.

Fixes: QDS-8342
Change-Id: Ib9bdc1738500a87361000bcd3e89403e3b8ccef8
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-11-22 10:44:36 +00:00
Miikka Heikkinen
e3a817ec77 QmlDesigner: Hide or disable material browser and editor if no library
If material library is missing, material browser and editor UI should
be disabled, except for material editor main pane in case of root
material node.

Change-Id: I3d2bd545de0649fb90d3fe1f751d46b7c7054bbf
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-11-22 10:05:55 +00:00
Mahmoud Badri
a04f1590de QmlDesigner: Update texture preview when source change
Fixes: QDS-8386
Change-Id: Ifaa6effc040398452b022080257bbacbfb14efdf
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-11-21 15:12:52 +00:00
Mahmoud Badri
88ce27736f QmlDesigner: Add separate + buttons for material browser sections
Fixes: QDS-8343
Change-Id: Id986820c857df241cf25e55416832f189c28bfe0
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-11-21 13:32:45 +00:00
Mahmoud Badri
815dd39e47 QmlDesigner: Implement Texture Editor view
Fixes: QDS-8209
Change-Id: Ief0c9f56da79841c745595024dbcd9219072b681
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-11-21 10:16:33 +00:00
Miikka Heikkinen
889e999f32 QmlDesigner: Clear material preview cache on detach
The previews are cached based on modelnode internal id, which can
overlap between documents, resulting in briefly showing incorrect
preview when new document is opened. Also, never clearing the cache
leads to leaking memory.

Fixed the issue by clearing the preview cache whenever all materials
are removed from browser (model detach and material library deletion).

Change-Id: Idad39fef62871c4e94f35604e643c7195ae9ec81
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-11-14 13:22:11 +00:00
Mahmoud Badri
d5a7f25e60 QmlDesigner: Implement content library view
Fixes: QDS-8058
Fixes: QDS-8059
Change-Id: I1adfdc7ac15141e010467813ec6e673060269241
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-11-08 10:04:43 +00:00
Miikka Heikkinen
9febccb2d7 QmlDesigner: Update material browser materials on state change
More generally, materials previews are now updated whenever the
instance values on them change.

Fixes: QDS-8096
Change-Id: I07dab4c9cefa241ca5f22e32e6a53e85c31aa252
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-11-07 11:56:18 +00:00
Tim Jenssen
40072fb5c7 Merge remote-tracking branch 'origin/9.0' into qds/dev
Change-Id: I5f72661f1fc54ff861e2cbbaa4cb32f867924c3b
2022-11-03 15:32:29 +01:00
Eike Ziller
b402f35481 Merge remote-tracking branch 'origin/8.0' into 9.0
Conflicts:
	doc/qtcreator/src/qtquick/qt-design-viewer.qdoc
	src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp
	src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
	src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
	src/plugins/qmldesigner/components/navigator/choosefrompropertylistdialog.cpp
	src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
	src/plugins/qmldesigner/designercore/model/abstractview.cpp
	src/plugins/qmldesigner/designercore/model/import.cpp
	src/plugins/qmldesigner/designercore/model/model_p.h
	src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
	src/plugins/qmlprojectmanager/qmlproject.cpp

Change-Id: I4236bf0da9306abf201f4679259e72dd7c1eddbe
2022-11-01 15:38:49 +01:00
Miikka Heikkinen
33602af185 QmlDesigner: Fix crashes on mode change
Fixes: QDS-8129
Change-Id: Iea76157c58f663244e8fd8de8ea26392d2b49b43
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2022-10-31 15:36:07 +00:00
Tim Jenssen
564298bba5 qmldesigner: fix crash while switching modes
Task-number: QDS-7984
Change-Id: Ia1803ce062c3956390c12f0da5b86577593fd721
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-10-28 08:02:55 +00:00
Miikka Heikkinen
bc370aecfd QmlDesigner: Hide material bundle if QtQuick3D version too low
Most materials in the material bundle require at least QtQuick3D 6.3,
so we hide the bundle materials from material browser when the detected
module version is less than 6.3.

Fixes: QDS-8100
Change-Id: I9f50b507c3c3c50f821fa6a902995b999da24464
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-10-27 14:35:07 +00:00
Tim Jenssen
aa33927651 Merge remote-tracking branch 'origin/9.0'
Conflicts:
	src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
	src/plugins/qmldesigner/components/stateseditornew/propertychangesmodel.cpp
	src/plugins/qmldesigner/components/stateseditornew/propertymodel.cpp
	src/plugins/qmldesigner/qmldesignerprojectmanager.cpp
	src/plugins/qmldesigner/qmldesignerprojectmanager.h

Change-Id: Ib029a830ee99190bc4ea2ad75d9300bfa86b42d9
2022-10-25 19:02:15 +02:00
Ali Kianian
f2f6f6e6cc Reload material property groups when model changes
The property groups would be unloaded when a model is detached,
and it would be loaded when the model is attached.
The problem was that the unload function was missing for the
MaterialBrowserModel.

Task-number: QDS-7515
Change-Id: I89064a78552c10228c0b18e42c1e0df4a92fb4a6
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-10-25 09:18:51 +00:00
Miikka Heikkinen
f496970002 QmlDesigner: Don't copy/remove data property when copying all
'data' property contains node's children, so it should be ignored
during the 'copy all properties' operation.

Change-Id: Ib056409c9ad0a42ebc40f751173b7a3455d912c6
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-10-21 10:58:50 +00:00
Eike Ziller
57a3afbb70 Merge remote-tracking branch 'origin/8.0' into 9.0
Conflicts:
	src/plugins/qmldesigner/components/timelineeditor/easingcurvedialog.cpp

Change-Id: I435b955899fcc70faaec6332de55283cf16b694f
2022-10-20 15:28:23 +02:00
Mahmoud Badri
0ac1920ed2 QmlDesigner: Clear search upon adding a bundle material
Fixes: QDS-8025
Change-Id: Iaa1f7d9f94b602e60171a00d0cc51d5b19d71468
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-10-20 08:09:53 +00:00
Eike Ziller
3bdb1a3edf Merge remote-tracking branch 'origin/9.0'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
	src/plugins/vcsbase/vcscommand.cpp

Change-Id: I2d33113bfb2ea7134550cda1de4e2c21e6711778
2022-10-18 16:51:36 +02:00
Eike Ziller
ea5a050c5c Merge remote-tracking branch 'origin/8.0' into 9.0
Conflicts:
	src/plugins/mcusupport/mcusupportsdk.cpp
	src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
	src/plugins/qmldesigner/components/materialbrowser/bundleimporter.cpp
	src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp

Change-Id: I9317da0fc1243b9ce6d87f577aa843c51f132ad7
2022-10-18 10:48:46 +02:00
Mahmoud Badri
fdffb6c7d9 QmlDesigner: Fix crash when bundImporter is nullptr
Change-Id: I54436b0199babe53dcaec61c74b34ed72e80ea7b
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-10-17 09:17:53 +00:00
Mahmoud Badri
b983b8aa52 QmlDesigner: Implement unimporting bundle materials
Fixes: QDS-7904
Change-Id: I08642c25a2844547d0104a7b3d9fda6afe47cd38
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-10-17 08:05:50 +00:00
Miikka Heikkinen
b8f4cd97d1 Fix copying dynamic properties on materials
Fixes: QDS-7803
Change-Id: I24c8cd269965552a62fbbbc521efbff00811fa43
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-10-10 13:53:03 +00:00
Mahmoud Badri
fcc7edc135 QmlDesigner: Fix applying a bundle material to a multi-selection
Fixes: QDS-7830
Change-Id: Ic939b1e3b86e6931c369b1b06887284d0b23fa79
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-10-10 11:27:11 +00:00
Eike Ziller
7efb0a0625 Merge remote-tracking branch 'origin/9.0'
Conflicts:
	src/plugins/qmldesigner/CMakeLists.txt

Change-Id: I500420df35519e6903abc570d1283185f01bf900
2022-10-10 11:47:45 +02:00
Marc Mutz
8eb4d52342 Port from qAsConst() to std::as_const()
We've been requiring C++17 since Qt 6.0, and our qAsConst use finally
starts to bother us (QTBUG-99313), so time to port away from it
now.

Since qAsConst has exactly the same semantics as std::as_const (down
to rvalue treatment, constexpr'ness and noexcept'ness), there's really
nothing more to it than a global search-and-replace.

Task-number: QTBUG-99313
Change-Id: I88edd91395849574436299b8badda21bb93bea39
Reviewed-by: hjk <hjk@qt.io>
2022-10-07 13:47:53 +00:00
Marco Bubke
78cf5051f5 QmlDesigner: Merge cmake files
To improve testability external dependencies are now broken with an
interface. It is a first step to test individual units without injection
of source files.

Task-number: QDS-7571
Change-Id: I4255c8668022f1097947e4ea5788f2a6b605365d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2022-10-07 13:15:41 +00:00
Tim Jenssen
964f539e55 Merge remote-tracking branch 'origin/8.0' into 9.0
resolved conflicts:
* doc/qtdesignstudio/src/developers/studio-designer-developer-workflow.qdoc
* src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
* src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
* src/plugins/qmldesigner/components/navigator/choosefrompropertylistdialog.cpp

and compile fix in materialbrowserview.cpp

Change-Id: I686e7e93ded8ac1afc792942ded47cd9fe4341ed
2022-10-04 13:44:42 +00:00
Mahmoud Badri
dbbed3dc68 QmlDesigner: Fix property groups missing on new project creation
Fixes: QDS-7469
Change-Id: I97809f1e143e92374c72e9fc58f2440742cbcc71
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ali Kianian <ali.kianian@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-10-04 11:31:45 +00:00
Mahmoud Badri
395e40b8f3 QmlDesigner: Allow dropping bundle materials to Navigator
Fixes: QDS-7844
Change-Id: If3c58f82797beabe76baf99ea2dddc59032729df
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-09-30 12:08:55 +00:00
Miikka Heikkinen
5da5830fa7 QmlDesigner: Fix dragging material from bundle to camera/light
Added check that target node is actually a model when applying material.

Fixes: QDS-7843
Change-Id: I6e165280c8b79ebbf8316861fe0eb9b947eac3be
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-09-30 11:15:00 +00:00
Miikka Heikkinen
d238c50399 QmlDesigner: Store current value at material property copy
Now we store the current value of copied properties at copy time
instead of just storing a reference to copied property. This ensures
we paste the correct value.
When copying all properties, properties set by base state,
current state, and active timeline are copied.

Fixes: QDS-7804
Change-Id: Id6315dde96b30304fde007a87da578faaab43233
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-09-30 09:03:56 +00:00
Miikka Heikkinen
07ab73fe7f QmlDesigner: Disable paste option for the original material
Fixes: QDS-7526
Change-Id: Ifdc220685a4881dc3a397d9148022b9be7b5032a
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-09-27 08:51:21 +00:00
Eike Ziller
7eaa36e6e5 Merge remote-tracking branch 'origin/8.0' into 9.0
Conflicts:
	src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
	src/plugins/qmldesigner/designercore/imagecache/meshimagecachecollector.cpp

Change-Id: I38f196e8f42cf11f7b613e7a723745600e35c5e9
2022-09-27 10:03:37 +02:00
Miikka Heikkinen
945e6fce31 QmlDesigner: Fix copying material property default values
When copying specific set of properties, old values need to be cleared
just like in case of copying all properties to ensure also default
values get copied.

Fixes: QDS-7522
Change-Id: I314ff70b6e611bec3f662b86f964d789618c1df7
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-09-26 12:13:23 +00:00
Marco Bubke
1d9c7e071e QmlDesigner: Use new validation approach in material browser
Many validation tests can now be skipped.

Task-number: QDS-7454
Change-Id: I01c37ff9747260940400043d2a0e39bb2700ee5b
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-09-26 08:50:36 +00:00
Marco Bubke
0be4de69d8 QmlDesigner: Remove parent from abstract view
We apply not very often the parent to views. So it can lead to dangling
pointer if the parent is used by other objects and does not handle the
null pointer case. It can lead to double deletion if the parent is
deleted before the object when it is on the stack or handled by smart
pointer.

If you really want to use it there is still setParent.

Change-Id: I1fc6b145a50f037a0e9d415fb36e7970ea7296ed
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2022-09-22 19:08:12 +00:00
Mahmoud Badri
1664a5f4e2 QmlDesigner: Remove "Material" word from the bundle material instances
TO save space and make material names clearer.

Change-Id: I1cea8787ca03a37adca6e4a0f352732d50bc1b40
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-09-22 13:43:45 +00:00
Mahmoud Badri
70c4acae67 QmlDesigner: Avoid duplicate bundle material instance creation
When apply a material from the material bundle directly to a model in
the 3D scene, check frist if there is an existing material that has no
properties set, if so apply it instead of creating a new instance.
Also few tweaks.

Change-Id: I4ddadfd84442164b671645af5e4f5d9e8dcb7cb0
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-09-22 13:31:17 +00:00
Eike Ziller
3011548066 Merge remote-tracking branch 'origin/8.0'
Conflicts:
	src/libs/utils/deviceshell.cpp
	src/plugins/clangcodemodel/clangdclient.cpp
	src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
	src/plugins/remotelinux/linuxdevice.cpp

Change-Id: Idc2edf428c98e9cbc891f1833b271ce2def9a835
2022-09-21 11:16:29 +02:00
Mahmoud Badri
d9f07e95b5 QmlDesigner: Implement material bundle frontend
Fixes: QDS-7500
Change-Id: I60c512bb7664d13160f8c58ce063e1e87b6875ee
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-09-20 12:30:47 +00:00
Marco Bubke
da36459759 QmlDesigner: Refactor isSubClass
IsSubClass is renamed to isBasedOn and takes now NodeMetaInfo as a
parameter. But for most cases there are is... functions as short cut.
The model is providing shortcut NodeMetaInfos too. This is done in the
sake of caching.

Task-number: QDS-7445
Change-Id: Iff2dea66e253b412105427134bd49cb16ed76193
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2022-08-26 15:02:24 +00:00
Lucie Gérard
a7956df3ca Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.

Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-08-26 12:27:18 +00:00
Eike Ziller
c6c92ec096 Merge remote-tracking branch 'origin/8.0'
Conflicts:
	src/libs/qmljs/qmljsmodelmanagerinterface.cpp
	src/plugins/clangcodemodel/clangdclient.cpp
	src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp
	src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp
	src/plugins/qmldesigner/designercore/include/modelnode.h
	src/plugins/qmldesigner/designercore/model/modelnode.cpp
	src/plugins/qmldesigner/designercore/model/rewriterview.cpp

Change-Id: I93c57879b79f27325321bfc045ca618bd835af93
2022-08-26 08:40:23 +02:00
Mahmoud Badri
86d1526564 QmlDesigner: Fix propertyGroups.json warning for 2D projects
Load property groups file only if Quick3D import exists

Change-Id: Idf7b95cb4efa34dde6196964e5e2cbad54341193
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-08-22 13:23:27 +00:00
Eike Ziller
64247bf571 Merge remote-tracking branch 'origin/8.0'
Reverts/comments out parts of 45f93a817a,
which needs to be resolved in a follow-up commit.

 Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
	src/plugins/clangcodemodel/clangmodelmanagersupport.cpp
	src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
	src/plugins/python/pythoneditor.cpp
	src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
	src/plugins/scxmleditor/common/colorsettings.cpp

Change-Id: I7f0f7b7120e75a9fc3a8886bc57c17345cbb501b
2022-08-19 12:48:27 +02:00
Mahmoud Badri
2d86c290ce QmlDesigner: Implement copying specific material properties section
Change-Id: I34bed00c89018e86941c4e5a7ddeae44c06f850d
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-08-18 15:11:18 +00:00
Miikka Heikkinen
326f70c40f QmlDesigner: Add support for component materials
Component materials can now be seen on material browser and their
properties are properly shown on material editor

Fixes: QDS-7390
Change-Id: I3f7edfe655bdb0da1fa71739c825d09d6101c386
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-08-18 11:10:42 +00:00
Miikka Heikkinen
2e8574bd76 QmlDesigner: Add scene root material support to material editor/browser
If the scene root item is Material subclass, material library is not
created for the scene. Material editor and browser functionalities that
relate to having material library are disabled.
Material editor will always show the material that is the scene root.

Fixes: QDS-7374
Change-Id: Icd1c212c17b59e4a2caa6b3b4d7e615e68b21eb9
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2022-08-18 11:10:04 +00:00
Mahmoud Badri
d4cc3fddc9 QmlDesigner: Implement copy/paste material properties
Fixes: QDS-7014
Change-Id: I2a8b779f97de353836a4d506b715720b490c349f
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2022-08-18 09:12:10 +00:00