aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator
diff options
context:
space:
mode:
Diffstat (limited to 'share/qtcreator')
-rw-r--r--share/qtcreator/CMakeLists.txt1
-rw-r--r--share/qtcreator/cplusplus/examples/CMakeLists.txt2
-rw-r--r--share/qtcreator/debugger/cdbbridge.py55
-rw-r--r--share/qtcreator/debugger/creatortypes.py2
-rw-r--r--share/qtcreator/debugger/dumper.py193
-rw-r--r--share/qtcreator/debugger/gdbbridge.py98
-rw-r--r--share/qtcreator/debugger/lldbbridge.py78
-rw-r--r--share/qtcreator/debugger/qttypes.py151
-rw-r--r--share/qtcreator/jsonschemas/project.json57
-rw-r--r--share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetsContextMenu.qml2
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsEditDelegate.qml247
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsToolbar.qml291
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsView.qml727
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionItem.qml154
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionListView.qml215
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionView.qml206
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/ColorViewDelegate.qml296
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/EditPropertyDialog.qml158
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/IconTextButton.qml97
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/ImportDialog.qml225
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/Message.qml42
-rw-r--r--share/qtcreator/qmldesigner/collectionEditorQmlSource/NewCollectionDialog.qml111
-rw-r--r--share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialog.qml4
-rw-r--r--share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialogForm.qml17
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml30
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectContextMenu.qml2
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectsView.qml2
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItem.qml (renamed from share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffect.qml)8
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItemContextMenu.qml71
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterial.qml10
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialContextMenu.qml59
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialsView.qml13
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryTextureContextMenu.qml12
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml49
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/DeleteBundleItemDialog.qml65
-rw-r--r--share/qtcreator/qmldesigner/contentLibraryQmlSource/UnimportBundleItemDialog.qml (renamed from share/qtcreator/qmldesigner/contentLibraryQmlSource/UnimportBundleMaterialDialog.qml)2
-rw-r--r--share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerTopBar.qml4
-rw-r--r--share/qtcreator/qmldesigner/effectComposerQmlSources/ValueFloat.qml5
-rw-r--r--share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml12
-rw-r--r--share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorPane.qml84
-rw-r--r--share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorTopSection.qml30
-rw-r--r--share/qtcreator/qmldesigner/projectstorage/fake.qmltypes9
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/BusyIndicatorSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ButtonSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckBoxSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckDelegateSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ComboBoxSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ControlSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DelayButtonSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialogSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DrawerSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/FrameSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/GroupBoxSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ItemDelegateSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/LabelSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageIndicatorSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PaneSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PopupSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ProgressBarSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioButtonSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioDelegateSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RangeSliderSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RoundButtonSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ScrollViewSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SliderSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SpinBoxSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/StackViewSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeDelegateSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeViewSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchDelegateSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabBarSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabButtonSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextAreaSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextFieldSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolBarSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolButtonSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolSeparatorSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TumblerSpecifics.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/EffectsSection.qml64
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml9
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditorPopup.qml23
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml4
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ExtendedFunctionLogic.qml2
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/PropertyEditorPane.qml71
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml2
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml1
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/MenuItem.qml14
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/PopupDialog.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/impl/ColorPicker.qml5
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml10
-rw-r--r--share/qtcreator/qmldesigner/qt4mcu/metadata.qml8
-rw-r--r--share/qtcreator/qmldesigner/qt4mcu/qul-27.qml227
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/files/javascript/wizard.json50
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/application-3d/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/application-extended-3d/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/app_mcu.qmlproject.tpl8
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/application/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/wizard.json2
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/Colors.json.tpl18
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/DataStore.qml.tpl17
-rw-r--r--share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/models.json.tpl56
-rw-r--r--share/qtcreator/templates/wizards/autotest/boosttest/wizard.json7
-rw-r--r--share/qtcreator/templates/wizards/autotest/catch/wizard.json7
-rw-r--r--share/qtcreator/templates/wizards/autotest/files/tst.txt2
-rw-r--r--share/qtcreator/templates/wizards/autotest/gtest/wizard.json7
-rw-r--r--share/qtcreator/templates/wizards/autotest/qttest/wizard.json7
-rw-r--r--share/qtcreator/templates/wizards/autotest/quicktest/wizard.json7
-rw-r--r--share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/codesnippet/wizard.json1
-rw-r--r--share/qtcreator/templates/wizards/files/form/wizard.json4
-rw-r--r--share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/projects/consoleapp/wizard.json3
-rw-r--r--share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json3
-rw-r--r--share/qtcreator/templates/wizards/projects/nim/wizard.json1
-rw-r--r--share/qtcreator/templates/wizards/projects/nimble/wizard.json1
-rw-r--r--share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/projects/plainc/wizard.json5
-rw-r--r--share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/projects/plaincpp/wizard.json5
-rw-r--r--share/qtcreator/templates/wizards/projects/qmake/empty/wizard.json4
-rw-r--r--share/qtcreator/templates/wizards/projects/qtforpythonapplication/widget/wizard.json2
-rw-r--r--share/qtcreator/templates/wizards/projects/qtquick2-extension/wizard.json9
-rw-r--r--share/qtcreator/templates/wizards/projects/qtquickapplication/wizard.json1
-rw-r--r--share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/projects/qtquickapplication_compat/empty/wizard.json3
-rw-r--r--share/qtcreator/templates/wizards/projects/qtquickuiprototype/wizard.json1
-rw-r--r--share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json5
-rw-r--r--share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt2
-rw-r--r--share/qtcreator/templates/wizards/qtcreatorplugin/wizard.json3
-rw-r--r--share/qtcreator/themes/dark.figmatokens5
-rw-r--r--share/qtcreator/themes/light.figmatokens5
-rw-r--r--share/qtcreator/translations/README.md8
-rw-r--r--share/qtcreator/translations/qtcreator_cs.ts28
-rw-r--r--share/qtcreator/translations/qtcreator_da.ts54
-rw-r--r--share/qtcreator/translations/qtcreator_de.ts76
-rw-r--r--share/qtcreator/translations/qtcreator_es.ts30
-rw-r--r--share/qtcreator/translations/qtcreator_fr.ts74
-rw-r--r--share/qtcreator/translations/qtcreator_hr.ts22
-rw-r--r--share/qtcreator/translations/qtcreator_hu.ts28
-rw-r--r--share/qtcreator/translations/qtcreator_it.ts24
-rw-r--r--share/qtcreator/translations/qtcreator_ja.ts58
-rw-r--r--share/qtcreator/translations/qtcreator_pl.ts74
-rw-r--r--share/qtcreator/translations/qtcreator_ru.ts64
-rw-r--r--share/qtcreator/translations/qtcreator_sl.ts30
-rw-r--r--share/qtcreator/translations/qtcreator_uk.ts44
-rw-r--r--share/qtcreator/translations/qtcreator_zh_CN.ts28
-rw-r--r--share/qtcreator/translations/qtcreator_zh_TW.ts4
155 files changed, 1744 insertions, 3755 deletions
diff --git a/share/qtcreator/CMakeLists.txt b/share/qtcreator/CMakeLists.txt
index f8be01a7a7b..73a0837ede2 100644
--- a/share/qtcreator/CMakeLists.txt
+++ b/share/qtcreator/CMakeLists.txt
@@ -3,6 +3,7 @@ set(resource_directories
cplusplus
glsl
indexer_preincludes
+ jsonschemas
modeleditor
qmldesigner
qmlicons
diff --git a/share/qtcreator/cplusplus/examples/CMakeLists.txt b/share/qtcreator/cplusplus/examples/CMakeLists.txt
index 7d14eba5b98..5eafcab4e0b 100644
--- a/share/qtcreator/cplusplus/examples/CMakeLists.txt
+++ b/share/qtcreator/cplusplus/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(examples LANGUAGES CXX)
diff --git a/share/qtcreator/debugger/cdbbridge.py b/share/qtcreator/debugger/cdbbridge.py
index 4ac053eb559..0b53baf1661 100644
--- a/share/qtcreator/debugger/cdbbridge.py
+++ b/share/qtcreator/debugger/cdbbridge.py
@@ -7,6 +7,7 @@ import sys
import cdbext
import re
import threading
+import time
from utils import TypeCode
sys.path.insert(1, os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
@@ -75,7 +76,9 @@ class Dumper(DumperBase):
self.outputLock = threading.Lock()
self.isCdb = True
- #FIXME
+ #FIXME
+ def register_known_qt_types(self):
+ DumperBase.register_known_qt_types(self)
typeid = self.typeid_for_string('@QVariantMap')
del self.type_code_cache[typeid]
del self.type_target_cache[typeid]
@@ -121,7 +124,7 @@ class Dumper(DumperBase):
pass
if nativeValue.type().code() == TypeCode.Enum:
val.ldisplay = self.enumValue(nativeValue)
- elif not nativeValue.type().resolved and nativeValue.type().code() == TypeCode.Struct and not nativeValue.hasChildren():
+ elif not nativeValue.type().resolved() and nativeValue.type().code() == TypeCode.Struct and not nativeValue.hasChildren():
val.ldisplay = self.enumValue(nativeValue)
val.isBaseClass = val.name == nativeValue.type().name()
val.typeid = self.from_native_type(nativeValue.type())
@@ -169,15 +172,17 @@ class Dumper(DumperBase):
self.type_name_cache[typeid] = nativeType.name()
self.type_code_cache[typeid] = code
self.type_target_cache[typeid] = self.typeid_for_string(targetName)
- self.type_size_cache[typeid] = nativeType.bitsize() // 8
+ if nativeType.resolved():
+ self.type_size_cache[typeid] = nativeType.bitsize() // 8
return typeid
code = TypeCode.Struct
self.type_name_cache[typeid] = nativeType.name()
- self.type_size_cache[typeid] = nativeType.bitsize() // 8
+ if nativeType.resolved():
+ self.type_size_cache[typeid] = nativeType.bitsize() // 8
+ self.type_modulename_cache[typeid] = nativeType.module()
self.type_code_cache[typeid] = code
- self.type_modulename_cache[typeid] = nativeType.module()
self.type_enum_display_cache[typeid] = lambda intval, addr, form: \
self.nativeTypeEnumDisplay(nativeType, intval, form)
return typeid
@@ -309,27 +314,7 @@ class Dumper(DumperBase):
self.qtDeclarativeHookDataSymbolName = lambda: hookSymbolName
return hookSymbolName
- def qtNamespace(self):
- namespace = ''
- qstrdupSymbolName = '*qstrdup'
- coreModuleName = self.qtCoreModuleName()
- if coreModuleName is not None:
- qstrdupSymbolName = '%s!%s' % (coreModuleName, qstrdupSymbolName)
- resolved = cdbext.resolveSymbol(qstrdupSymbolName)
- if resolved:
- name = resolved[0].split('!')[1]
- namespaceIndex = name.find('::')
- if namespaceIndex > 0:
- namespace = name[:namespaceIndex + 2]
- self.qtNamespace = lambda: namespace
- self.qtCustomEventFunc = self.parseAndEvaluate(
- '%s!%sQObject::customEvent' %
- (self.qtCoreModuleName(), namespace)).address()
- self.qtNamespace = lambda: namespace
- return namespace
-
- def qtVersion(self):
- qtVersion = None
+ def extractQtVersion(self):
try:
qtVersion = self.parseAndEvaluate(
'((void**)&%s)[2]' % self.qtHookDataSymbolName()).integer()
@@ -341,10 +326,7 @@ class Dumper(DumperBase):
(major, minor, patch) = version.decode('latin1').split('.')
qtVersion = 0x10000 * int(major) + 0x100 * int(minor) + int(patch)
except:
- pass
- if qtVersion is None:
- qtVersion = self.fallbackQtVersion
- self.qtVersion = lambda: qtVersion
+ return None
return qtVersion
def putVtableItem(self, address):
@@ -421,6 +403,7 @@ class Dumper(DumperBase):
return ptr
def fetchVariables(self, args):
+ start_time = time.perf_counter()
self.resetStats()
(ok, res) = self.tryFetchInterpreterVariables(args)
if ok:
@@ -458,6 +441,8 @@ class Dumper(DumperBase):
self.put(',qtnamespace="%s"' % self.qtNamespaceToReport)
self.qtNamespaceToReport = None
+ runtime = time.perf_counter() - start_time
+ self.put(',runtime="%s"' % runtime)
self.reportResult(''.join(self.output), args)
self.output = []
@@ -547,7 +532,6 @@ class Dumper(DumperBase):
return
self.putAddress(value.address())
- self.putField('size', self.type_size(value.typeid))
if typeobj.code == TypeCode.Function:
#DumperBase.warn('FUNCTION VALUE: %s' % value)
@@ -921,3 +905,12 @@ class Dumper(DumperBase):
if self.useDynamicType:
val.typeid = self.dynamic_typeid_at_address(val.typeid, address)
return val
+
+ def fetchInternalFunctions(self):
+ coreModuleName = self.qtCoreModuleName()
+ ns = self.qtNamespace()
+ if coreModuleName is not None:
+ self.qtCustomEventFunc = self.parseAndEvaluate(
+ '%s!%sQObject::customEvent' %
+ (self.qtCoreModuleName(), ns)).address()
+ self.fetchInternalFunctions = lambda: None
diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py
index ba5b53450b0..9c2933ba06b 100644
--- a/share/qtcreator/debugger/creatortypes.py
+++ b/share/qtcreator/debugger/creatortypes.py
@@ -53,7 +53,7 @@ def readTemplateName(d, value):
def readLiteral(d, value):
if not value.integer():
return "<null>"
- type = typeTarget(value.type.unqualified())
+ type = typeTarget(value.type)
if type and (type.name == "CPlusPlus::TemplateNameId"):
return readTemplateName(d, value)
elif type and (type.name == "CPlusPlus::QualifiedNameId"):
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 488f1e362ed..33c7eb1a846 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -172,9 +172,9 @@ class DumperBase():
self.qtCustomEventFunc = 0
self.qtCustomEventPltFunc = 0
self.qtPropertyFunc = 0
- self.fallbackQtVersion = 0x60200
self.passExceptions = False
self.isTesting = False
+ self.qtLoaded = False
self.isBigEndian = False
self.packCode = '<'
@@ -187,6 +187,11 @@ class DumperBase():
self.dumpermodules = []
+ # These are sticky for the session
+ self.qtversion = None
+ self.qtversionAtLeast6 = None
+ self.qtnamespace = None
+
self.init_type_cache()
try:
@@ -209,7 +214,7 @@ class DumperBase():
self.currentPrintsAddress = True
self.currentChildType = None
self.currentChildNumChild = None
- self.register_known_types()
+ self.register_known_simple_types()
def setVariableFetchingOptions(self, args):
self.last_args = args
@@ -231,7 +236,16 @@ class DumperBase():
self.useTimeStamps = int(args.get('timestamps', '0'))
self.partialVariable = args.get('partialvar', '')
self.uninitialized = args.get('uninitialized', [])
+
self.uninitialized = list(map(lambda x: self.hexdecode(x), self.uninitialized))
+
+ if self.qtversion is None:
+ self.qtversion = args.get('qtversion', None)
+ if self.qtversion == 0:
+ self.qtversion = None
+ if self.qtnamespace is None:
+ self.qtnamespace = args.get('qtnamespace', None)
+
#self.warn('NAMESPACE: "%s"' % self.qtNamespace())
#self.warn('EXPANDED INAMES: %s' % self.expandedINames)
#self.warn('WATCHERS: %s' % self.watchers)
@@ -252,9 +266,50 @@ class DumperBase():
args['partialvar'] = ''
self.fetchVariables(args)
- def setFallbackQtVersion(self, args):
- version = int(args.get('version', self.fallbackQtVersion))
- self.fallbackQtVersion = version
+ def extractQtVersion(self):
+ # can be overridden in bridges
+ pass
+
+ def qtVersion(self):
+ if self.qtversion:
+ return self.qtversion
+
+ #self.warn("ACCESSING UNKNOWN QT VERSION")
+ self.qtversion = self.extractQtVersion()
+ if self.qtversion:
+ return self.qtversion
+
+ #self.warn("EXTRACTING QT VERSION FAILED. GUESSING NOW.")
+ if self.qtversionAtLeast6 is None or self.qtversionAtLeast6 is True:
+ return 0x060602
+ return 0x050f00
+
+ def qtVersionAtLeast(self, version):
+ # A hack to cover most of the changes from Qt 5 to 6
+ if version == 0x60000 and self.qtversionAtLeast6 is not None:
+ return self.qtversionAtLeast6
+ if version == 0x50000: # FIXME: This drops unknown 4.x for now
+ return True
+ return self.qtVersion() >= version
+
+ def qtVersionPing(self, typeid, size_for_qt5=-1):
+ # To be called from places where the type size is sufficient
+ # to distinguish Qt 5.x and 6.x
+ if size_for_qt5 == -1:
+ size_for_qt5 = self.ptrSize()
+ test_size = self.type_size(typeid)
+ self.setQtVersionAtLeast6(test_size > size_for_qt5)
+
+ def setQtVersionAtLeast6(self, is6):
+ if self.qtversionAtLeast6 is None:
+ #self.warn("SETTING Qt VERSION AT LEAST 6 TO %s" % is6)
+ self.qtversionAtLeast6 = is6
+ self.register_known_qt_types()
+ #else:
+ # self.warn("QT VERSION ALREADY KNOWN")
+
+ def qtNamespace(self):
+ return '' if self.qtnamespace is None else self.qtnamespace
def resetPerStepCaches(self):
self.perStepCache = {}
@@ -485,18 +540,24 @@ class DumperBase():
self.type_alignment_cache[typeid] = self.type_alignment_cache[target_typeid]
return typeid
- def register_struct(self, name, p5=0, p6=0, s=0):
+ def register_struct(self, name, p5=0, p6=0, s=0, qobject_based=False):
# p5 = n -> n * ptrsize for Qt 5
# p6 = n -> n * ptrsize for Qt 6
- #if self.qtVersion() >= 0x060000: # FIXME: Qt 5, ptrSize()
- size = 8 * p6 + s
+ if self.qtversionAtLeast6 is None:
+ self.warn("TOO EARLY TO GUESS QT VERSION")
+ size = 8 * p6 + s
+ elif self.qtversionAtLeast6 is True:
+ size = 8 * p6 + s
+ else:
+ size = 8 * p5 + s
typeid = self.typeid_for_string(name)
self.type_code_cache[typeid] = TypeCode.Struct
self.type_size_cache[typeid] = size
+ self.type_qobject_based_cache[typeid] = qobject_based
self.type_alignment_cache[typeid] = 8
return typeid
- def register_known_types(self):
+ def register_known_simple_types(self):
typeid = 0
self.typeid_cache[''] = typeid
self.type_code_cache[typeid] = TypeCode.Void
@@ -556,7 +617,9 @@ class DumperBase():
self.register_enum('@Qt::ItemDataRole', 4)
- self.register_struct('@QObject', p5=2, p6=2)
+ def register_known_qt_types(self):
+ #self.warn("REGISTERING KNOWN QT TYPES NOW")
+ self.register_struct('@QObject', p5=2, p6=2, qobject_based=True)
self.register_struct('@QObjectPrivate', p5=10, p6=10) # FIXME: Not exact
self.register_struct('@QByteArray', p5=1, p6=3)
@@ -654,7 +717,7 @@ class DumperBase():
c = ord(item[0])
if c in (45, 46) or (c >= 48 and c < 58): # '-', '.' or digit.
if '.' in item:
- res.append(float(item))
+ self.type_template_arguments_cache[(typeid, idx)] = float(item)
else:
if item.endswith('l'):
item = item[:-1]
@@ -673,9 +736,6 @@ class DumperBase():
# Hex decoding operating on str, return str.
@staticmethod
def hexdecode(s, encoding='utf8'):
- if sys.version_info[0] == 2:
- # For python2 we need an extra str() call to return str instead of unicode
- return str(s.decode('hex').decode(encoding))
return bytes.fromhex(s).decode(encoding)
# Hex encoding operating on str or bytes, return str.
@@ -683,10 +743,6 @@ class DumperBase():
def hexencode(s):
if s is None:
s = ''
- if sys.version_info[0] == 2:
- if isinstance(s, buffer):
- return bytes(s).encode('hex')
- return s.encode('hex')
if isinstance(s, str):
s = s.encode('utf8')
return hexencode_(s)
@@ -704,9 +760,9 @@ class DumperBase():
return limit
def vectorData(self, value):
- if self.qtVersion() >= 0x060000:
+ if self.qtVersionAtLeast(0x060000):
data, length, alloc = self.qArrayData(value)
- elif self.qtVersion() >= 0x050000:
+ elif self.qtVersionAtLeast(0x050000):
vector_data_ptr = self.extractPointer(value)
if self.ptrSize() == 4:
(ref, length, alloc, offset) = self.split('IIIp', vector_data_ptr)
@@ -722,7 +778,7 @@ class DumperBase():
return data, length
def qArrayData(self, value):
- if self.qtVersion() >= 0x60000:
+ if self.qtVersionAtLeast(0x60000):
dd, data, length = self.split('ppp', value)
if dd:
_, _, alloc = self.split('iip', dd)
@@ -733,7 +789,7 @@ class DumperBase():
def qArrayDataHelper(self, array_data_ptr):
# array_data_ptr is what is e.g. stored in a QByteArray's d_ptr.
- if self.qtVersion() >= 0x050000:
+ if self.qtVersionAtLeast(0x050000):
# QTypedArray:
# - QtPrivate::RefCount ref
# - int length
@@ -746,7 +802,7 @@ class DumperBase():
data = data & 0xffffffff
else:
data = data & 0xffffffffffffffff
- elif self.qtVersion() >= 0x040000:
+ elif self.qtVersionAtLeast(0x040000):
# Data:
# - QBasicAtomicInt ref;
# - int alloc, length;
@@ -1016,7 +1072,6 @@ class DumperBase():
def check_typeid(self, typeid):
if not isinstance(typeid, int):
- size = self.type_size_cache.get(typeid, None)
raise RuntimeError('WRONG TYPE FOR TYPEID: %s %s' % (str(typeid), type(typeid)))
def checkRef(self, ref):
@@ -1566,7 +1621,22 @@ class DumperBase():
if address is not None:
self.put('origaddr="0x%x",' % address)
+ def wantQObjectNames(self):
+ return self.showQObjectNames and self.qtLoaded
+
+ def fetchInternalFunctions(self):
+ # Overrridden
+ pass
+
def putQObjectNameValue(self, value):
+ is_qobject_based = self.type_qobject_based_cache.get(value.typeid, None)
+ if is_qobject_based == False:
+ #self.warn("SKIP TEST OBJNAME: %s" % self.type_name(value.typeid))
+ return
+
+ #self.warn("TEST OBJNAME: %s" % self.type_name(value.typeid))
+ self.fetchInternalFunctions()
+
try:
# dd = value['d_ptr']['d'] is just behind the vtable.
(vtable, dd) = self.split('pp', value)
@@ -1575,7 +1645,7 @@ class DumperBase():
intSize = 4
ptrSize = self.ptrSize()
- if self.qtVersion() >= 0x060000:
+ if self.qtVersionAtLeast(0x060000):
# Size of QObjectData: 9 pointer + 2 int
# - vtable
# - QObject *q_ptr;
@@ -1596,7 +1666,7 @@ class DumperBase():
# - QList<QPointer<QObject> > eventFilters;
# - QString objectName
objectNameAddress = extra + 12 * ptrSize
- elif self.qtVersion() >= 0x050000:
+ elif self.qtVersionAtLeast(0x050000):
# Size of QObjectData: 5 pointer + 2 int
# - vtable
# - QObject *q_ptr;
@@ -1789,7 +1859,7 @@ class DumperBase():
# a Q_OBJECT SMO has a non-null superdata (unless it's QObject itself),
# a Q_GADGET SMO has a null superdata (hopefully)
if result and not isQObjectProper:
- if self.qtVersion() >= 0x60000 and self.isWindowsTarget():
+ if self.qtVersionAtLeast(0x60000) and self.isWindowsTarget():
(direct, indirect) = self.split('pp', result)
# since Qt 6 there is an additional indirect super data getter on windows
if direct == 0 and indirect == 0:
@@ -1873,14 +1943,14 @@ class DumperBase():
return result
def listData(self, value, check=True):
- if self.qtVersion() >= 0x60000:
+ if self.qtVersionAtLeast(0x60000):
dd, data, size = self.split('ppi', value)
return data, size
base = self.extractPointer(value)
(ref, alloc, begin, end) = self.split('IIII', base)
array = base + 16
- if self.qtVersion() < 0x50000:
+ if not self.qtVersionAtLeast(0x50000):
array += self.ptrSize()
size = end - begin
@@ -1919,7 +1989,7 @@ class DumperBase():
def metaString(self, metaObjectPtr, index, revision):
ptrSize = self.ptrSize()
stringdataOffset = ptrSize
- if self.isWindowsTarget() and self.qtVersion() >= 0x060000:
+ if self.isWindowsTarget() and self.qtVersionAtLeast(0x060000):
stringdataOffset += ptrSize # indirect super data member
stringdata = self.extract_pointer_at_address(int(metaObjectPtr) + stringdataOffset)
@@ -1948,19 +2018,19 @@ class DumperBase():
self.putField('sortgroup', sortorder)
def putQMetaStuff(self, value, origType):
- if self.qtVersion() >= 0x060000:
+ if self.qtVersionAtLeast(0x060000):
metaObjectPtr, handle = value.split('pp')
else:
metaObjectPtr, handle = value.split('pI')
if metaObjectPtr != 0:
- if self.qtVersion() >= 0x060000:
+ if self.qtVersionAtLeast(0x060000):
if handle == 0:
self.putEmptyValue()
return
revision = 9
name, alias, flags, keyCount, data = self.split('IIIII', handle)
index = name
- elif self.qtVersion() >= 0x050000:
+ elif self.qtVersionAtLeast(0x050000):
revision = 7
dataPtr = self.extract_pointer_at_address(metaObjectPtr + 2 * self.ptrSize())
index = self.extractInt(dataPtr + 4 * handle)
@@ -2002,7 +2072,7 @@ class DumperBase():
def extractDataPtr(someMetaObjectPtr):
# dataPtr = metaObjectPtr['d']['data']
- if self.qtVersion() >= 0x60000 and self.isWindowsTarget():
+ if self.qtVersionAtLeast(0x60000) and self.isWindowsTarget():
offset = 3
else:
offset = 2
@@ -2032,13 +2102,13 @@ class DumperBase():
extraData = 0
if qobjectPtr:
dd = self.extract_pointer_at_address(qobjectPtr + ptrSize)
- if self.qtVersion() >= 0x60000:
+ if self.qtVersionAtLeast(0x60000):
(dvtablePtr, qptr, parent, children, bindingStorageData, bindingStatus,
flags, postedEvents, dynMetaObjectPtr, # Up to here QObjectData.
extraData, threadDataPtr, connectionListsPtr,
sendersPtr, currentSenderPtr) \
= self.split('pp{@QObject*}{@QList<@QObject *>}ppIIp' + 'ppppp', dd)
- elif self.qtVersion() >= 0x50000:
+ elif self.qtVersionAtLeast(0x50000):
(dvtablePtr, qptr, parent, children, flags, postedEvents,
dynMetaObjectPtr, # Up to here QObjectData.
extraData, threadDataPtr, connectionListsPtr,
@@ -2164,7 +2234,7 @@ typename))
with Children(self):
# Static properties.
for i in range(propertyCount):
- if self.qtVersion() >= 0x60000:
+ if self.qtVersionAtLeast(0x60000):
t = self.split('IIIII', dataPtr + properties * 4 + 20 * i)
else:
t = self.split('III', dataPtr + properties * 4 + 12 * i)
@@ -2217,18 +2287,18 @@ typename))
data += inner_size
variant_typeid = self.cheap_typeid_from_name('@QVariant')
- if self.qtVersion() >= 0x60000:
+ if self.qtVersionAtLeast(0x60000):
values = vectorGenerator(extraData + 3 * ptrSize, variant_typeid)
- elif self.qtVersion() >= 0x50600:
+ elif self.qtVersionAtLeast(0x50600):
values = vectorGenerator(extraData + 2 * ptrSize, variant_typeid)
- elif self.qtVersion() >= 0x50000:
+ elif self.qtVersionAtLeast(0x50000):
values = list5Generator(extraData + 2 * ptrSize, variant_typeid)
else:
variantptr_typeid = self.cheap_typeid_from_name('@QVariant')
values = list5Generator(extraData + 2 * ptrSize, variantptr_typeid)
bytearray_typeid = self.cheap_typeid_from_name('@QByteArray')
- if self.qtVersion() >= 0x60000:
+ if self.qtVersionAtLeast(0x60000):
names = list6Generator(extraData, bytearray_typeid)
else:
names = list5Generator(extraData + ptrSize, bytearray_typeid)
@@ -2376,7 +2446,7 @@ typename))
self.checkIntType(base)
self.checkIntType(n)
inner_typeid = self.typeid_for_typish(inner_typish)
- inner_size = self.type_size_cache.get(inner_typeid, None)
+ inner_size = self.type_size(inner_typeid)
self.putNumChild(n)
#self.warn('ADDRESS: 0x%x INNERSIZE: %s INNERTYPE: %s' % (base, inner_size, inner_typeid))
enc = self.type_encoding_cache.get(inner_typeid, None)
@@ -2649,10 +2719,7 @@ typename))
try:
if funcname.startswith('qdump__'):
typename = funcname[7:]
- if sys.version_info > (3,):
- spec = inspect.getfullargspec(function)
- else:
- spec = inspect.getargspec(function)
+ spec = inspect.getfullargspec(function)
if len(spec.args) == 2:
self.qqDumpers[typename] = function
elif len(spec.args) == 3 and len(spec.defaults) == 1:
@@ -2699,11 +2766,8 @@ typename))
def reloadDumpers(self, args):
for mod in self.dumpermodules:
m = sys.modules[mod]
- if sys.version_info[0] >= 3:
- import importlib
- importlib.reload(m)
- else:
- reload(m)
+ import importlib
+ importlib.reload(m)
self.setupDumpers(args)
def loadDumpers(self, args):
@@ -3022,7 +3086,7 @@ typename))
self.putExpandable()
self.putEmptyValue()
#self.warn('STRUCT GUTS: %s ADDRESS: 0x%x ' % (value.name, value.address()))
- if self.showQObjectNames:
+ if self.wantQObjectNames():
#with self.timer(self.currentIName):
self.putQObjectNameValue(value)
if self.isExpanded():
@@ -3030,7 +3094,7 @@ typename))
self.putField('sortable', 1)
with Children(self, 1, childType=None):
self.putFields(value)
- if self.showQObjectNames:
+ if self.wantQObjectNames():
self.tryPutQObjectGuts(value)
def symbolAddress(self, symbolName):
@@ -3238,6 +3302,7 @@ typename))
self.type_nativetype_cache = {}
self.type_modulename_cache = {}
self.type_encoding_cache = {}
+ self.type_qobject_based_cache = {}
self.typeid_cache = {} # internal typename -> id
self.typeid_current = 100
self.typeid_from_typekey = {} # typename -> id
@@ -3404,9 +3469,9 @@ typename))
):
return True
if strippedName == 'QStringList':
- return self.dumper.qtVersion() >= 0x050000
+ return self.dumper.qtVersionAtLeast(0x050000)
if strippedName == 'QList':
- return self.dumper.qtVersion() >= 0x050600
+ return self.dumper.qtVersionAtLeast(0x050600)
return False
class Field:
@@ -3500,7 +3565,9 @@ typename))
return target_typeid
self.type_code_cache[typeid] = TypeCode.Typedef
self.type_target_cache[typeid] = target_typeid
- self.type_size_cache[typeid] = self.type_size_cache.get(target_typeid, None)
+ size = self.type_size_cache.get(target_typeid, None)
+ if size is not None:
+ self.type_size_cache[typeid] = size
return typeid
def createType(self, typish, size=None):
@@ -3527,7 +3594,7 @@ typename))
if typename.startswith('QList<') or typename.startswith('QVector<'):
typeid = self.typeid_for_string(typename)
if typeid:
- size = 3 * self.ptrSize() if self.qtVersion() >= 0x060000 else self.ptrSize()
+ size = 3 * self.ptrSize() if self.qtVersionAtLeast(0x060000) else self.ptrSize()
self.type_code_cache[typeid] = TypeCode.Struct
self.type_size_cache[typeid] = size
return typeid
@@ -3646,7 +3713,7 @@ typename))
typeid = self.cheap_typeid_from_name_nons(typename)
if typeid:
- size = self.type_size_cache.get(typeid, None)
+ size = self.type_size(typeid)
if size is not None:
return size, typeid
@@ -3654,7 +3721,7 @@ typename))
self.warn("LOOKUP FIELD TYPE: %s TYPEOBJ: %s" % (typename, typeobj))
if typeobj is not None:
typeid = typeobj.typeid
- size = self.type_size_cache.get(typeid, None)
+ size = self.type_size(typeid)
if size is not None:
return size, typeid
@@ -3885,8 +3952,10 @@ typename))
if size is not None:
return size
- if size is None:
- nativeType = self.type_nativetype(typeid)
+ nativeType = self.type_nativetype(typeid)
+ if self.isCdb:
+ size = nativeType.bitsize() // 8
+ else:
if not self.type_size_cache.get(typeid):
self.from_native_type(nativeType)
size = self.type_size_cache.get(typeid, None)
@@ -4137,7 +4206,7 @@ typename))
res = self.readRawMemory(address, size)
if len(res) > 0:
return res
- raise RuntimeError('CANNOT READ %d BYTES FROM ADDRESS: %s %s' % (size, address))
+ raise RuntimeError('CANNOT READ %d BYTES FROM ADDRESS: %s' % (size, address))
def value_display(self, value):
type_code = self.type_code(value.typeid)
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index 744d246142c..ee25520bced 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -380,6 +380,18 @@ class Dumper(DumperBase):
self.type_nativetype_cache[typeid] = nativeType
+ if code == gdb.TYPE_CODE_STRUCT:
+ self.type_qobject_based_cache[typeid] = self.is_qobject_based(nativeType)
+ #res = self.is_qobject_based(nativeType)
+ #if res == False:
+ # self.warn("RECOGNIZED AS NON-QOBJECT: %s" % nativeType)
+ #elif res == True:
+ # self.warn("RECOGNIZED AS QOBJECT: %s" % nativeType)
+ #else:
+ # self.warn("UNRECOGNIZED: %s" % nativeType)
+ elif code != gdb.TYPE_CODE_TYPEDEF:
+ self.type_qobject_based_cache[typeid] = False
+
# FIXME: Field offset caching (or later extraction?) broken
# if code == gdb.TYPE_CODE_STRUCT:
# field_type_name = self.type_name_cache.get(typeid, '')
@@ -413,6 +425,16 @@ class Dumper(DumperBase):
return typeid
+ def is_qobject_based(self, nativeType):
+ if str(nativeType) == self.qtNamespace() + 'QObject':
+ return True
+ fields = nativeType.fields()
+ if len(fields) == 0:
+ return None # No info, can't drill deeper
+ if not fields[0].is_base_class:
+ return False
+ return self.is_qobject_based(fields[0].type)
+
def nativeTemplateParameter(self, typeid, index, nativeType):
try:
targ = nativeType.template_argument(index)
@@ -864,12 +886,10 @@ class Dumper(DumperBase):
pass
return None
- def qtVersion(self):
+ def extractQtVersion(self):
try:
# Only available with Qt 5.3+
- qtversion = int(str(gdb.parse_and_eval('((void**)&qtHookData)[2]')), 16)
- self.qtVersion = lambda: qtversion
- return qtversion
+ return int(str(gdb.parse_and_eval('((void**)&qtHookData)[2]')), 16)
except:
pass
@@ -881,7 +901,8 @@ class Dumper(DumperBase):
return qtversion
except:
# Use fallback until we have a better answer.
- return self.fallbackQtVersion
+ return None
+
def createSpecialBreakpoints(self, args):
self.specialBreakpoints = []
@@ -1008,10 +1029,6 @@ class Dumper(DumperBase):
for obj in gdb.objfiles():
self.importPlainDumpersForObj(obj)
- def qtNamespace(self):
- # This function is replaced by handleQtCoreLoaded()
- return ''
-
def findSymbol(self, symbolName):
try:
return int(gdb.parse_and_eval("(size_t)&'%s'" % symbolName))
@@ -1044,41 +1061,38 @@ class Dumper(DumperBase):
pass
def handleQtCoreLoaded(self, objfile):
- fd, tmppath = tempfile.mkstemp()
- os.close(fd)
- cmd = 'maint print msymbols -objfile "%s" -- %s' % (objfile.filename, tmppath)
- symbols = gdb.execute(cmd, to_string=True)
- ns = ''
- with open(tmppath) as f:
- ns1re = re.compile(r'_ZN?(\d*)(\w*)L17msgHandlerGrabbedE? ')
- ns2re = re.compile(r'_ZN?(\d*)(\w*)L17currentThreadDataE? ')
- for line in f:
- if 'msgHandlerGrabbed ' in line:
- # [11] b 0x7ffff683c000 _ZN4MynsL17msgHandlerGrabbedE
- # section .tbss Myns::msgHandlerGrabbed qlogging.cpp
- ns = ns1re.split(line)[2]
- if len(ns):
- ns += '::'
- break
- if 'currentThreadData ' in line:
- # [ 0] b 0x7ffff67d3000 _ZN2UUL17currentThreadDataE
- # section .tbss UU::currentThreadData qthread_unix.cpp\\n
- ns = ns2re.split(line)[2]
- if len(ns):
- ns += '::'
- break
- os.remove(tmppath)
-
+ self.qtLoaded = True
+ # FIXME: Namespace auto-detection. Is it worth the price?
+ # fd, tmppath = tempfile.mkstemp()
+ # os.close(fd)
+ # cmd = 'maint print msymbols -objfile "%s" -- %s' % (objfile.filename, tmppath)
+ # symbols = gdb.execute(cmd, to_string=True)
+ # ns = ''
+ # with open(tmppath) as f:
+ # ns1re = re.compile(r'_ZN?(\d*)(\w*)L17msgHandlerGrabbedE? ')
+ # ns2re = re.compile(r'_ZN?(\d*)(\w*)L17currentThreadDataE? ')
+ # for line in f:
+ # if 'msgHandlerGrabbed ' in line:
+ # # [11] b 0x7ffff683c000 _ZN4MynsL17msgHandlerGrabbedE
+ # # section .tbss Myns::msgHandlerGrabbed qlogging.cpp
+ # ns = ns1re.split(line)[2]
+ # if len(ns):
+ # ns += '::'
+ # break
+ # if 'currentThreadData ' in line:
+ # # [ 0] b 0x7ffff67d3000 _ZN2UUL17currentThreadDataE
+ # # section .tbss UU::currentThreadData qthread_unix.cpp\\n
+ # ns = ns2re.split(line)[2]
+ # if len(ns):
+ # ns += '::'
+ # break
+ # os.remove(tmppath)
+
+ def fetchInternalFunctions(self):
+ ns = self.qtNamespace()
lenns = len(ns)
strns = ('%d%s' % (lenns - 2, ns[:lenns - 2])) if lenns else ''
-
if lenns:
- # This might be wrong, but we can't do better: We found
- # a libQt5Core and could not extract a namespace.
- # The best guess is that there isn't any.
- self.qtNamespaceToReport = ns
- self.qtNamespace = lambda: ns
-
sym = '_ZN%s7QObject11customEventEPNS_6QEventE' % strns
else:
sym = '_ZN7QObject11customEventEP6QEvent'
@@ -1091,6 +1105,8 @@ class Dumper(DumperBase):
if not self.isWindowsTarget(): # prevent calling the property function on windows
self.qtPropertyFunc = self.findSymbol(sym)
+ self.fetchInternalFunctions = lambda: None
+
def assignValue(self, args):
type_name = self.hexdecode(args['type'])
expr = self.hexdecode(args['expr'])
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 6b08ac3d322..3f7ec792a61 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -18,11 +18,7 @@ sys.path.insert(1, os.path.dirname(os.path.abspath(inspect.getfile(inspect.curre
# Simplify development of this module by reloading deps
if 'dumper' in sys.modules:
- if sys.version_info[0] >= 3:
- if sys.version_info[1] > 3:
- from importlib import reload
- else:
- def reload(m): print('Unsupported Python version - not reloading %s' % str(m))
+ from importlib import reload
reload(sys.modules['dumper'])
from dumper import DumperBase, SubItem, Children, TopLevelItem
@@ -34,16 +30,10 @@ from dumper import DumperBase, SubItem, Children, TopLevelItem
#######################################################################
qqWatchpointOffset = 10000
-_c_str_trans = None
-
-if sys.version_info[0] >= 3:
- _c_str_trans = str.maketrans({"\n": "\\n", '"':'\\"', "\\":"\\\\"})
+_c_str_trans = str.maketrans({"\n": "\\n", '"':'\\"', "\\":"\\\\"})
def toCString(s):
- if _c_str_trans is not None:
- return str(s).translate(_c_str_trans)
- else:
- return str(s).replace('\\', '\\\\').replace('\n', '\\n').replace('"', '\\"')
+ return str(s).translate(_c_str_trans)
def fileNameAsString(file):
return toCString(file) if file.IsValid() else ''
@@ -338,6 +328,15 @@ class Dumper(DumperBase):
self.ptrSize = lambda: result
return result
+ def is_qobject_based(self, nativeType):
+ if nativeType.GetName() == self.qtNamespace() + 'QObject':
+ return True
+ if nativeType.GetNumberOfDirectBaseClasses() > 0:
+ return self.is_qobject_based(nativeType.GetDirectBaseClassAtIndex(0).GetType())
+ if nativeType.GetNumberOfFields() > 0:
+ return False
+ return None # No info, can't drill deeper
+
def from_native_type(self, nativeType):
self.check(isinstance(nativeType, lldb.SBType))
@@ -458,8 +457,12 @@ class Dumper(DumperBase):
self.nativeTypeEnumDisplay(nativeType, intval, form)
elif code in (lldb.eTypeClassComplexInteger, lldb.eTypeClassComplexFloat):
type_code = TypeCode.Complex
- elif code in (lldb.eTypeClassClass, lldb.eTypeClassStruct, lldb.eTypeClassUnion):
+ elif code in (lldb.eTypeClassClass, lldb.eTypeClassStruct):
type_code = TypeCode.Struct
+ self.type_qobject_based_cache[typeid] = self.is_qobject_based(nativeType)
+ elif code == lldb.eTypeClassUnion:
+ type_code = TypeCode.Struct
+ self.type_qobject_based_cache[typeid] = False
elif code == lldb.eTypeClassFunction:
type_code = TypeCode.Function
elif code == lldb.eTypeClassMemberPointer:
@@ -768,7 +771,9 @@ class Dumper(DumperBase):
symbol = funcs[0].GetSymbol()
self.qtPropertyFunc = symbol.GetStartAddress().GetLoadAddress(self.target)
- def fetchQtVersionAndNamespace(self):
+ self.fetchInternalFunctions = lambda: None
+
+ def extractQtVersion(self):
for func in self.target.FindFunctions('qVersion'):
name = func.GetSymbol().GetName()
if name == None:
@@ -778,8 +783,8 @@ class Dumper(DumperBase):
if name.count(':') > 2:
continue
- qtNamespace = name[:name.find('qVersion')]
- self.qtNamespace = lambda: qtNamespace
+ #qtNamespace = name[:name.find('qVersion')]
+ #self.qtNamespace = lambda: qtNamespace
options = lldb.SBExpressionOptions()
res = self.target.EvaluateExpression(name + '()', options)
@@ -804,44 +809,17 @@ class Dumper(DumperBase):
(major, minor, patch) = version.split('.')
qtVersion = 0x10000 * int(major) + 0x100 * int(minor) + int(patch)
- self.qtVersion = lambda: qtVersion
-
- return (qtNamespace, qtVersion)
+ return qtVersion
try:
versionValue = self.target.EvaluateExpression('qtHookData[2]').GetNonSyntheticValue()
if versionValue.IsValid():
- return ('', versionValue.unsigned)
+ return versionValue.unsigned
except:
pass
- return ('', self.fallbackQtVersion)
-
- def qtVersionAndNamespace(self):
- qtVersionAndNamespace = None
- try:
- qtVersionAndNamespace = self.fetchQtVersionAndNamespace()
- self.report("Detected Qt Version: 0x%0x (namespace='%s')" %
- (qtVersionAndNamespace[1], qtVersionAndNamespace[0] or "no namespace"))
- except Exception as e:
- DumperBase.warn('[lldb] Error detecting Qt version: %s' % e)
-
- try:
- self.fetchInternalFunctions()
- self.report('Found function QObject::property: 0x%0x' % self.qtPropertyFunc)
- self.report('Found function QObject::customEvent: 0x%0x' % self.qtCustomEventFunc)
- except Exception as e:
- DumperBase.warn('[lldb] Error fetching internal Qt functions: %s' % e)
-
- # Cache version information by overriding this function.
- self.qtVersionAndNamespace = lambda: qtVersionAndNamespace
- return qtVersionAndNamespace
-
- def qtNamespace(self):
- return self.qtVersionAndNamespace()[0]
+ return None
- def qtVersion(self):
- return self.qtVersionAndNamespace()[1]
def handleCommand(self, command):
result = lldb.SBCommandReturnObject()
@@ -1360,6 +1338,9 @@ class Dumper(DumperBase):
self.setVariableFetchingOptions(args)
+ self.qtLoaded = True # FIXME: Do that elsewhere
+
+
# Reset certain caches whenever a step over / into / continue
# happens.
# FIXME: Caches are currently also cleared if currently
@@ -2369,9 +2350,6 @@ class SummaryProvider(LogMixin):
if encoding in text_encodings:
try:
decodedValue = Dumper.hexdecode(summaryValue, encoding)
- # LLDB expects UTF-8 for python 2
- if sys.version_info[0] < 3:
- return "\"%s\"" % (decodedValue.encode('utf8'))
return '"' + decodedValue + '"'
except:
return "<failed to decode '%s' as '%s': %s>" % (summaryValue, encoding, sys.exc_info()[1])
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index af99534c9b4..004779e06a2 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -33,7 +33,8 @@ def qedit__QByteArray(d, value, data):
def qdump__QByteArray(d, value):
- if d.qtVersion() >= 0x60000:
+ d.qtVersionPing(value.typeid)
+ if d.qtVersionAtLeast(0x060000):
dd, data, length = value.split('ppi')
if dd:
_, _, alloc = d.split('iii', dd)
@@ -76,7 +77,8 @@ def qdump__QByteArray(d, value):
def qdump__QBitArray(d, value):
- if d.qtVersion() >= 0x60000:
+ d.qtVersionPing(value.typeid)
+ if d.qtVersionAtLeast(0x060000):
_, data, basize = value.split('ppi')
else:
data, basize, _ = d.qArrayData(value['d'])
@@ -232,13 +234,28 @@ def qdump__QStandardItem(d, value):
#d.createType('@QStandardItem*')
vtable, dptr = value.split('pp')
- if d.qtVersion() >= 0x060000:
- model, parent, values, children, rows, cols, item = \
- d.split('pp{@QList<@QStandardItemData>}{@QList<@QStandardItem *>}IIp', dptr)
+ if d.qtVersionAtLeast(0x060000):
+ if d.isCdb:
+ if d.isDebugBuild is None:
+ try:
+ value["d_ptr"]
+ d.isDebugBuild = True
+ except Exception:
+ d.isDebugBuild = False
+ if d.isDebugBuild:
+ model = value["d_ptr"]["d"]["model"]
+ values = value["d_ptr"]["d"]["values"]
+ children = value["d_ptr"]["d"]["children"]
+ else:
+ model, parent, values, children, rows, cols, item = \
+ d.split('pp{@QList<@QStandardItemData>}{@QList<@QStandardItem *>}IIp', dptr)
+ else:
+ model, parent, values, children, rows, cols, item = \
+ d.split('pp{@QList<@QStandardItemData>}{@QList<@QStandardItem *>}IIp', dptr)
else:
# There used to be a virtual destructor that got removed in
# 88b6abcebf29b455438 on Apr 18 17:01:22 2017
- if d.qtVersion() < 0x050900 and not d.isMsvcTarget():
+ if not d.qtVersionAtLeast(0x050900) and not d.isMsvcTarget():
dptr += d.ptrSize();
model, parent, values, children, rows, cols, item = \
d.split('pp{@QVector<@QStandardItemData>}{@QVector<@QStandardItem *>}IIp', dptr)
@@ -247,7 +264,9 @@ def qdump__QStandardItem(d, value):
d.putExpandable()
if d.isExpanded():
with Children(d):
- d.putSubItem('[model]', d.createValue(model, '@QStandardItemModel'))
+ if isinstance(model, int): # Used as address.
+ model = d.createValue(model, '@QStandardItemModel')
+ d.putSubItem('[model]', model)
d.putSubItem('[values]', values)
d.putSubItem('[children]', children)
@@ -266,7 +285,7 @@ def qdump__QDate(d, value):
d.enumExpression('DateFormat', 'TextDate'))
d.putCallItem('(ISO)', '@QString', value, 'toString',
d.enumExpression('DateFormat', 'ISODate'))
- if d.qtVersion() < 0x060000:
+ if not d.qtVersionAtLeast(0x060000):
d.putCallItem('(SystemLocale)', '@QString', value, 'toString',
d.enumExpression('DateFormat', 'SystemLocaleDate'))
d.putCallItem('(Locale)', '@QString', value, 'toString',
@@ -286,7 +305,7 @@ def qdump__QTime(d, value):
d.enumExpression('DateFormat', 'TextDate'))
d.putCallItem('(ISO)', '@QString', value, 'toString',
d.enumExpression('DateFormat', 'ISODate'))
- if d.canCallLocale() and d.qtVersion() < 0x060000:
+ if d.canCallLocale() and not d.qtVersionAtLeast(0x060000):
d.putCallItem('(SystemLocale)', '@QString', value, 'toString',
d.enumExpression('DateFormat', 'SystemLocaleDate'))
d.putCallItem('(Locale)', '@QString', value, 'toString',
@@ -305,13 +324,12 @@ def qdump__QTimeZone(d, value):
def qdump__QDateTime(d, value):
- qtVersion = d.qtVersion()
isValid = False
# This relies on the Qt4/Qt5 internal structure layout:
# {sharedref(4), ...
base = d.extractPointer(value)
is32bit = d.ptrSize() == 4
- if qtVersion >= 0x050200:
+ if d.qtVersionAtLeast(0x050200):
tiVersion = d.qtTypeInfoVersion()
#DumperBase.warn('TI VERSION: %s' % tiVersion)
if tiVersion is None:
@@ -384,9 +402,9 @@ def qdump__QDateTime(d, value):
# - [QTime time;]
# - - uint mds;
# - Spec spec;
- dateSize = 8 if qtVersion >= 0x050000 else 4 # Qt5: qint64, Qt4 uint
+ dateSize = 8 if d.qtVersionAtLeast(0x050000) else 4 # Qt5: qint64, Qt4 uint
# 4 byte padding after 4 byte QAtomicInt if we are on 64 bit and QDate is 64 bit
- refPlusPadding = 8 if qtVersion >= 0x050000 and d.ptrSize() == 8 else 4
+ refPlusPadding = 8 if d.qtVersionAtLeast(0x050000) and d.ptrSize() == 8 else 4
dateBase = base + refPlusPadding
timeBase = dateBase + dateSize
mds = d.extractInt(timeBase)
@@ -410,7 +428,7 @@ def qdump__QDateTime(d, value):
d.enumExpression('DateFormat', 'ISODate'))
d.putCallItem('toUTC', '@QDateTime', value, 'toTimeSpec',
d.enumExpression('TimeSpec', 'UTC'))
- if d.qtVersion() < 0x060000:
+ if not d.qtVersionAtLeast(0x060000):
d.putCallItem('(SystemLocale)', '@QString', value, 'toString',
d.enumExpression('DateFormat', 'SystemLocaleDate'))
d.putCallItem('(Locale)', '@QString', value, 'toString',
@@ -756,7 +774,6 @@ def qdump__QFile(d, value):
def qdump__QFileInfo(d, value):
privAddress = d.extractPointer(value)
#bit32 = d.ptrSize() == 4
- #qt5 = d.qtVersion() >= 0x050000
#try:
# d.putStringValue(value['d_ptr']['d'].dereference()['fileNames'][3])
#except:
@@ -876,7 +893,7 @@ def qdump__QVariantHash(d, value):
def qdumpHelper_QHash(d, value, keyType, valueType):
- if d.qtVersion() >= 0x60000:
+ if d.qtVersionAtLeast(0x060000):
qdumpHelper_QHash_6(d, value, keyType, valueType)
else:
qdumpHelper_QHash_5(d, value, keyType, valueType)
@@ -918,7 +935,7 @@ def qdumpHelper_QHash_5(d, value, keyType, valueType):
d.putItemCount(size)
if d.isExpanded():
- isShort = d.qtVersion() < 0x050000 and keyType.name == 'int'
+ isShort = not d.qtVersionAtLeast(0x050000) and keyType.name == 'int'
with Children(d, size):
node = hashDataFirstNode()
for i in d.childRange():
@@ -994,7 +1011,7 @@ def qHashIteratorHelper(d, value):
if d.isExpanded():
with Children(d):
node = d.extractPointer(value)
- isShort = d.qtVersion() < 0x050000 and keyType.name == 'int'
+ isShort = not d.qtVersionAtLeast(0x050000) and keyType.name == 'int'
if isShort:
typeCode = 'P{%s}@{%s}' % (keyType.name, valueType.name)
(pnext, key, padding2, val) = d.split(typeCode, node)
@@ -1015,9 +1032,8 @@ def qdump__QHash__iterator(d, value):
def qdump__QHostAddress(d, value):
dd = d.extractPointer(value)
- qtVersion = d.qtVersion()
tiVersion = d.qtTypeInfoVersion()
- #DumperBase.warn('QT: %x, TI: %s' % (qtVersion, tiVersion))
+ #DumperBase.warn('QT: %x, TI: %s' % (d.qtVersion(), tiVersion))
mayNeedParse = True
if tiVersion is not None:
if tiVersion >= 16:
@@ -1032,14 +1048,14 @@ def qdump__QHostAddress(d, value):
else:
(ipString, scopeId, a4, pad, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}I16sI{bool}', dd)
- elif qtVersion >= 0x050600: # 5.6.0 at f3aabb42
+ elif d.qtVersionAtLeast(0x050600): # 5.6.0 at f3aabb42
if d.ptrSize() == 8 or d.isWindowsTarget():
(ipString, scopeId, a4, pad, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}I16sI{bool}', dd)
else:
(ipString, scopeId, a4, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}16sI{bool}', dd)
- elif qtVersion >= 0x050000: # 5.2.0 at 62feb088
+ elif d.qtVersionAtLeast(0x050000): # 5.2.0 at 62feb088
(ipString, scopeId, a4, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}16sI{bool}', dd)
else: # 4.8.7 at b05d05f
@@ -1104,7 +1120,8 @@ def qdumpHelper_QList(d, value, inner_typish):
data, size = d.listData(value, check=True)
d.putItemCount(size)
- if d.qtVersion() >= 0x60000:
+ d.qtVersionPing(value.typeid)
+ if d.qtVersionAtLeast(0x060000):
d.putPlotData(data, size, innerType)
return
@@ -1145,9 +1162,9 @@ def qform__QImage():
def qdump__QImage(d, value):
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
vtbl, painters, image_data = value.split('ppp')
- elif d.qtVersion() >= 0x050000:
+ elif d.qtVersionAtLeast(0x050000):
vtbl, painters, reserved, image_data = value.split('pppp')
else:
vtbl, painters, image_data = value.split('ppp')
@@ -1161,12 +1178,12 @@ def qdump__QImage(d, value):
d.putExpandable()
if d.isExpanded():
- if d.qtVersion() < 0x060000:
- (ref, width, height, depth, nbytes, pad, devicePixelRatio, colorTable,
- bits, iformat) = d.split('iiiii@dppi', image_data)
- else:
+ if d.qtVersionAtLeast(0x060000):
(ref, width, height, depth, nbytes, pad, devicePixelRatio, _, _, _,
bits, iformat) = d.split('iiiii@dppppi', image_data)
+ else:
+ (ref, width, height, depth, nbytes, pad, devicePixelRatio, colorTable,
+ bits, iformat) = d.split('iiiii@dppi', image_data)
with Children(d):
d.putIntItem('width', width)
d.putIntItem('height', height)
@@ -1222,8 +1239,7 @@ def qdump__QLocale(d, value):
# index = int(value['d']['d']['m_data']...)
#d.check(index >= 0)
#d.check(index <= qqLocalesCount)
- qtVersion = d.qtVersion()
- if qtVersion < 0x50000:
+ if not d.qtVersionAtLeast(0x50000):
d.putStringValue(d.call('const char *', value, 'name'))
d.putPlainChildren(value)
return
@@ -1240,7 +1256,7 @@ def qdump__QLocale(d, value):
prefix = ns + 'QLocale::'
try:
- if qtVersion >= 0x060700:
+ if qtVersionAtLeast(0x060700):
res = d.call('const char *', value, 'name', prefix + 'TagSeparator::Underscore')
else:
res = d.call('const char *', value, 'name')
@@ -1347,9 +1363,9 @@ def qdump__QMap(d, value):
def qdumpHelper_QMap(d, value, keyType, valueType):
- if d.qtVersion() >= 0x60000:
+ if d.qtVersionAtLeast(0x060000):
qdumpHelper_Qt6_QMap(d, value, keyType, valueType)
- elif d.qtVersion() >= 0x50000:
+ elif d.qtVersionAtLeast(0x50000):
qdumpHelper_Qt5_QMap(d, value, keyType, valueType)
else:
qdumpHelper_Qt4_QMap(d, value, keyType, valueType)
@@ -1369,7 +1385,7 @@ def qdumpHelper_Qt6_QMultiMap(d, value, keyType, valueType):
d.putBetterType('@QMultiMap<%s, %s>' % (keyType.name, valueType.name))
def qdump__QMultiMap(d, value):
- if d.qtVersion() >= 0x60000:
+ if d.qtVersionAtLeast(0x060000):
qdumpHelper_Qt6_QMultiMap(d, value, value.type[0], value.type[1])
else:
qdump__QMap(d, value)
@@ -1449,9 +1465,9 @@ def qdump__QProcEnvKey(d, value):
def qdump__QPixmap(d, value):
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
vtbl, painters, data = value.split('ppp')
- elif d.qtVersion() >= 0x050000:
+ elif d.qtVersionAtLeast(0x050000):
vtbl, painters, reserved, data = s = d.split('pppp', value)
else:
vtbl, painters, data = value.split('ppp')
@@ -1518,15 +1534,15 @@ def qdump__QRegion(d, value):
if d_ptr == 0:
d.putSpecialValue('empty')
else:
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
ref, _, rgn = d.split('i@p', d_ptr)
numRects, innerArea, rects, extents, innerRect = \
d.split('ii{@QList<@QRect>}{@QRect}{@QRect}', rgn)
- elif d.qtVersion() >= 0x050400: # Padding removed in ee324e4ed
+ elif d.qtVersionAtLeast(0x050400): # Padding removed in ee324e4ed
ref, _, rgn = d.split('i@p', d_ptr)
numRects, innerArea, rects, extents, innerRect = \
d.split('ii{@QVector<@QRect>}{@QRect}{@QRect}', rgn)
- elif d.qtVersion() >= 0x050000:
+ elif d.qtVersionAtLeast(0x050000):
ref, _, rgn = d.split('i@p', d_ptr)
numRects, _, rects, extents, innerRect, innerArea = \
d.split('i@{@QVector<@QRect>}{@QRect}{@QRect}i', rgn)
@@ -1564,7 +1580,7 @@ def qdump__QScopedPointer(d, value):
def qdump__QSet(d, value):
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
qdumpHelper_QSet6(d, value)
else:
qdumpHelper_QSet45(d, value)
@@ -1637,7 +1653,7 @@ def qdumpHelper_QSet45(d, value):
d.putItemCount(length)
if d.isExpanded():
keyType = value.type[0]
- isShort = d.qtVersion() < 0x050000 and keyType.name == 'int'
+ isShort = not d.qtVersionAtLeast(0x050000) and keyType.name == 'int'
with Children(d, length, childType=keyType):
node = hashDataFirstNode()
for i in d.childRange():
@@ -1714,7 +1730,7 @@ def qform__QStack():
def qdump__QStack(d, value):
- if d.qtVersion() >= 0x60000:
+ if d.qtVersionAtLeast(0x060000):
qdump__QList(d, value)
else:
qdump__QVector(d, value)
@@ -1734,7 +1750,7 @@ def qdump__QPolygon(d, value):
def qdump__QGraphicsPolygonItem(d, value):
(vtbl, dptr) = value.split('pp')
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
if d.ptrSize() == 8:
offset = 424 # sizeof(QGraphicsPolygonItemPrivate), the base
else:
@@ -1764,6 +1780,7 @@ def qform__QString():
def qdump__QString(d, value):
+ d.qtVersionPing(value.typeid)
d.putStringValue(value)
data, length, _ = d.stringData(value)
displayFormat = d.currentItemFormat()
@@ -1924,7 +1941,7 @@ def qdump__QUrl(d, value):
d.putValue('<invalid>')
return
- if d.qtVersion() < 0x050000:
+ if not d.qtVersionAtLeast(0x050000):
d.call('void', value, 'port') # Warm up internal cache.
d.call('void', value, 'path')
st = '{@QString}'
@@ -2154,7 +2171,8 @@ qdumpHelper_QVariants_F = [
def qdump__QVariant(d, value):
- if d.qtVersion() >= 0x060000:
+ d.qtVersionPing(value.typeid, 2 * d.ptrSize())
+ if d.qtVersionAtLeast(0x060000):
qdumpHelper__QVariant6(d, value)
else:
qdumpHelper__QVariant45(d, value)
@@ -2208,12 +2226,12 @@ def qdumpHelper__QVariant45(d, value):
return None
# Extended Core type (Qt 5)
- if variantType >= 31 and variantType <= 38 and d.qtVersion() >= 0x050000:
+ if variantType >= 31 and variantType <= 38 and d.qtVersionAtLeast(0x050000):
qdumpHelper_QVariants_D[variantType - 31](d, value)
return None
# Extended Core type (Qt 4)
- if variantType >= 128 and variantType <= 135 and d.qtVersion() < 0x050000:
+ if variantType >= 128 and variantType <= 135 and not d.qtVersionAtLeast(0x050000):
if variantType == 128:
d.putBetterType('@QVariant (void *)')
d.putValue('0x%x' % value.extractPointer())
@@ -2234,7 +2252,7 @@ def qdumpHelper__QVariant45(d, value):
innert = qdumpHelper_QVariants_B[variantType - 7]
elif variantType <= 74:
innert = qdumpHelper_QVariants_E[variantType - 64]
- elif d.qtVersion() < 0x050000:
+ elif not d.qtVersionAtLeast(0x050000):
innert = qdumpHelper_QVariants_F[variantType - 76]
else:
innert = qdumpHelper_QVariants_F[variantType - 75]
@@ -2308,7 +2326,8 @@ def qform__QVector():
def qdump__QVector(d, value):
- if d.qtVersion() >= 0x060000:
+ d.qtVersionPing(value.typeid)
+ if d.qtVersionAtLeast(0x060000):
data, length = d.listData(value)
d.putItemCount(length)
d.putPlotData(data, length, value.type.target()[0])
@@ -2330,7 +2349,7 @@ if False:
def qdump__QVarLengthArray(d, value):
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
cap, length, data = value.split('QQp')
else:
cap, length, data = value.split('iip')
@@ -2366,7 +2385,7 @@ def qdump_QWeakPointerHelper(d, value, isWeak, innerType=None):
d.putValue('<invalid>')
return
- if d.qtVersion() >= 0x050000:
+ if d.qtVersionAtLeast(0x050000):
(weakref, strongref) = d.split('ii', d_ptr)
else:
(vptr, weakref, strongref) = d.split('pii', d_ptr)
@@ -2872,7 +2891,7 @@ def qdump__QJSValue(d, value):
if d.ptrSize() == 4:
qdump_32__QJSValue(d, value)
else:
- if d.qtVersion() >= 0x60000:
+ if d.qtVersionAtLeast(0x060000):
qdump_64__QJSValue_6(d, value)
else:
qdump_64__QJSValue_5(d, value)
@@ -2906,7 +2925,7 @@ def qdump_64__QJSValue_6(d, value):
if dd == 0:
d.putValue('(undefined)')
d.putType(value.type.name + ' (undefined)')
- if d.qtVersion() < 0x60500:
+ if not d.qtVersionAtLeast(0x60500):
typ = dd >> 47
if typ == 5:
d.putValue('(null)')
@@ -3326,7 +3345,7 @@ def qdumpHelper_QJsonObject(d, data, obj):
def qdump__QJsonValue(d, value):
(data, dd, t) = value.split('QpI')
- if d.qtVersion() >= 0x050f00:
+ if d.qtVersionAtLeast(0x050f00):
value = d.createProxyValue((data, dd, t, False), 'QCborValue_proxy')
d.putItem(value)
return
@@ -3361,13 +3380,13 @@ def qdump__QJsonValue(d, value):
def qdump__QJsonArray(d, value):
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
dptr = d.extractPointer(value)
if not dptr:
d.putItemCount(0)
else:
qdumpHelper_QCbor_array(d, dptr, False)
- elif d.qtVersion() >= 0x050f00:
+ elif d.qtVersionAtLeast(0x050f00):
_, container_ptr = value.split('pp')
qdumpHelper_QCbor_array(d, container_ptr, False)
else:
@@ -3375,13 +3394,13 @@ def qdump__QJsonArray(d, value):
def qdump__QJsonObject(d, value):
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
dptr = d.extractPointer(value)
if not dptr:
d.putItemCount(0)
else:
qdumpHelper_QCbor_map(d, dptr, False)
- elif d.qtVersion() >= 0x050f00:
+ elif d.qtVersionAtLeast(0x050f00):
_, container_ptr = value.split('pp')
qdumpHelper_QCbor_map(d, container_ptr, False)
else:
@@ -3456,15 +3475,15 @@ def qdump__qfloat16(d, value):
def qdumpHelper_QCbor_string(d, container_ptr, element_index, is_bytes):
# d.split('i@{@QByteArray::size_type}pp', container_ptr) doesn't work with CDB,
# so be explicit:
- data_pos = container_ptr + (2 * d.ptrSize() if d.qtVersion() >= 0x060000 else 8)
- elements_pos = data_pos + (3 * d.ptrSize() if d.qtVersion() >= 0x060000 else d.ptrSize())
+ data_pos = container_ptr + (2 * d.ptrSize() if d.qtVersionAtLeast(0x060000) else 8)
+ elements_pos = data_pos + (3 * d.ptrSize() if d.qtVersionAtLeast(0x060000) else d.ptrSize())
elements_data_ptr, elements_size = d.vectorData(elements_pos)
element_at_n_addr = elements_data_ptr + element_index * 16 # sizeof(QtCbor::Element) == 16
element_value, _, element_flags = d.split('qII', element_at_n_addr)
enc = 'latin1' if is_bytes or (element_flags & 8) else 'utf16'
bytedata, _, _ = d.qArrayData(data_pos)
bytedata += element_value
- if d.qtVersion() >= 0x060000:
+ if d.qtVersionAtLeast(0x060000):
bytedata_len = d.extractInt64(bytedata)
bytedata_data = bytedata + 8
else:
@@ -3493,8 +3512,8 @@ def qdumpHelper_QCbor_array(d, container_ptr, is_cbor):
return
# d.split('i@{@QByteArray::size_type}pp', container_ptr) doesn't work with CDB,
# so be explicit:
- data_pos = container_ptr + (2 * d.ptrSize() if d.qtVersion() >= 0x060000 else 8)
- elements_pos = data_pos + (3 * d.ptrSize() if d.qtVersion() >= 0x060000 else d.ptrSize())
+ data_pos = container_ptr + (2 * d.ptrSize() if d.qtVersionAtLeast(0x060000) else 8)
+ elements_pos = data_pos + (3 * d.ptrSize() if d.qtVersionAtLeast(0x060000) else d.ptrSize())
elements_data_ptr, elements_size = d.vectorData(elements_pos)
d.putItemCount(elements_size)
if d.isExpanded():
@@ -3515,8 +3534,8 @@ def qdumpHelper_QCbor_map(d, container_ptr, is_cbor):
return
# d.split('i@{@QByteArray::size_type}pp', container_ptr) doesn't work with CDB,
# so be explicit:
- data_pos = container_ptr + (2 * d.ptrSize() if d.qtVersion() >= 0x060000 else 8)
- elements_pos = data_pos + (3 * d.ptrSize() if d.qtVersion() >= 0x060000 else d.ptrSize())
+ data_pos = container_ptr + (2 * d.ptrSize() if d.qtVersionAtLeast(0x060000) else 8)
+ elements_pos = data_pos + (3 * d.ptrSize() if d.qtVersionAtLeast(0x060000) else d.ptrSize())
elements_data_ptr, elements_size = d.vectorData(elements_pos)
elements_size = int(elements_size / 2)
d.putItemCount(elements_size)
diff --git a/share/qtcreator/jsonschemas/project.json b/share/qtcreator/jsonschemas/project.json
new file mode 100644
index 00000000000..df55dbd693a
--- /dev/null
+++ b/share/qtcreator/jsonschemas/project.json
@@ -0,0 +1,57 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Qt Creator workspace project definition",
+ "description": "A Qt Creator workspace project definition",
+ "type": "object",
+ "properties": {
+ "project.name": {
+ "type": "string",
+ "description": "The name of the project"
+ },
+ "files.exclude": {
+ "type": "array",
+ "items": [
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Files to exclude from the project"
+ },
+ "targets": {
+ "type": "array",
+ "description": "A list of targets",
+ "items": [
+ {
+ "type": "object",
+ "properties": {
+ "arguments": {
+ "type": "array",
+ "items": [
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Arguments to pass to the executable"
+ },
+ "executable": {
+ "type": "string",
+ "description": "The executable to run"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the target"
+ },
+ "workingDirectory": {
+ "type": "string",
+ "description": "The working directory to run the executable in"
+ }
+ },
+ "required": [
+ "executable",
+ "name"
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetsContextMenu.qml b/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetsContextMenu.qml
index a8eb5285f57..fe22d7ce51f 100644
--- a/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetsContextMenu.qml
+++ b/share/qtcreator/qmldesigner/assetsLibraryQmlSources/AssetsContextMenu.qml
@@ -249,7 +249,7 @@ StudioControls.Menu {
StudioControls.MenuItem {
text: qsTr("Add to Content Library")
- visible: root.rootView.userBundleEnabled() && root.__fileIndex && root.assetsModel.allFilePathsAreTextures(root.__selectedAssetPathsList)
+ visible: root.__fileIndex && root.assetsModel.allFilePathsAreTextures(root.__selectedAssetPathsList)
height: visible ? implicitHeight : 0
onTriggered: root.rootView.addAssetsToContentLibrary(root.__selectedAssetPathsList)
}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsEditDelegate.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsEditDelegate.qml
deleted file mode 100644
index fd969382e63..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsEditDelegate.qml
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import CollectionDetails 1.0 as CollectionDetails
-import StudioControls 1.0 as StudioControls
-import StudioHelpers as StudioHelpers
-import StudioTheme 1.0 as StudioTheme
-import QtQuick.Templates as T
-
-Item {
- id: root
-
- required property var columnType
-
- TableView.onCommit: {
- if (editorLoader.changesAccepted && edit !== editorLoader.acceptedValue)
- edit = editorLoader.acceptedValue
- }
-
- onActiveFocusChanged: {
- if (root.activeFocus && !editorLoader.triggered && editorLoader.item) {
- editorLoader.triggered = true
- editorLoader.item.open()
- }
-
- // active focus should be checked again, because it might be affected by editorLoader.item
- if (root.activeFocus && editorLoader.editor)
- editorLoader.editor.forceActiveFocus()
- }
-
- Loader {
- id: editorLoader
-
- active: true
-
- property var editor: editorLoader.item ? editorLoader.item.editor : null
- property var editValue: editorLoader.editor ? editorLoader.editor.editValue : null
- property var acceptedValue: null
- property bool changesAccepted: true
- property bool triggered: false
-
- Connections {
- id: modifierFocusConnection
-
- target: editorLoader.editor
- enabled: editorLoader.item !== undefined
-
- function onActiveFocusChanged() {
- if (!modifierFocusConnection.target.activeFocus) {
- editorLoader.acceptedValue = editorLoader.editValue
- root.TableView.commit()
- }
- }
- }
-
- Component {
- id: textEditor
-
- EditorPopup {
- editor: textField
-
- StudioControls.TextField {
- id: textField
-
- property alias editValue: textField.text
-
- actionIndicator.visible: false
- translationIndicatorVisible: false
-
- onRejected: editorLoader.changesAccepted = false
- }
- }
- }
-
- Component {
- id: realEditor
-
- EditorPopup {
-
- editor: realField
-
- StudioControls.RealSpinBox {
- id: realField
-
- property alias editValue: realField.realValue
-
- actionIndicator.visible: false
- realFrom: -9e9
- realTo: 9e9
- realStepSize: 1.0
- decimals: 6
- trailingZeroes: false
-
- onActiveFocusChanged: {
- if (realField.activeFocus)
- realField.contentItem.focus = true
- }
-
- textFromValue: function (value, locale) {
- locale.numberOptions = Locale.OmitGroupSeparator
- var decimals = realField.trailingZeroes ? realField.decimals : decimalCounter(realField.realValue)
- if (decimals > 0) {
- var text = Number(realField.realValue).toLocaleString(locale, 'f', decimals + 1)
- return text.substring(0, text.length - 1)
- }
- return Number(realField.realValue).toLocaleString(locale, 'f', decimals)
- }
- }
- }
- }
-
- Component {
- id: integerEditor
-
- EditorPopup {
-
- editor: integerField
-
- StudioControls.SpinBox {
- id: integerField
-
- property alias editValue: integerField.value
-
- actionIndicatorVisible: false
- spinBoxIndicatorVisible: true
- from: -2147483647
- to: 2147483647
- decimals: 0
-
- onActiveFocusChanged: {
- if (integerField.activeFocus)
- integerField.contentItem.focus = true
- }
- }
- }
- }
-
- Component {
- id: boolEditor
-
- EditorPopup {
-
- editor: boolField
-
- StudioControls.CheckBox {
- id: boolField
-
- property alias editValue: boolField.checked
-
- actionIndicatorVisible: false
- }
- }
- }
- }
-
- component EditorPopup: T.Popup {
- id: editorPopup
-
- required property Item editor
-
- implicitHeight: contentHeight
- implicitWidth: contentWidth
-
- focus: true
- visible: false
-
- Connections {
- target: editorPopup.editor
-
- function onActiveFocusChanged() {
- if (!editorPopup.editor.activeFocus)
- editorPopup.close()
- else if (edit)
- editorPopup.editor.editValue = edit
- }
- }
-
- Connections {
- target: editorPopup.editor.Keys
-
- function onEscapePressed() {
- editorLoader.changesAccepted = false
- editorPopup.close()
- }
-
- function onReturnPressed() {
- editorPopup.close()
- }
-
- function onEnterPressed() {
- editorPopup.close()
- }
- }
- }
-
- states: [
- State {
- name: "default"
- when: columnType !== CollectionDetails.DataType.Boolean
- && columnType !== CollectionDetails.DataType.Color
- && columnType !== CollectionDetails.DataType.Integer
- && columnType !== CollectionDetails.DataType.Real
-
- PropertyChanges {
- target: editorLoader
- sourceComponent: textEditor
- }
- },
- State {
- name: "integer"
- when: columnType === CollectionDetails.DataType.Integer
-
- PropertyChanges {
- target: editorLoader
- sourceComponent: integerEditor
- }
- },
- State {
- name: "real"
- when: columnType === CollectionDetails.DataType.Real
-
- PropertyChanges {
- target: editorLoader
- sourceComponent: realEditor
- }
- },
- State {
- name: "bool"
- when: columnType === CollectionDetails.DataType.Boolean
-
- PropertyChanges {
- target: editorLoader
- sourceComponent: boolEditor
- }
- },
- State {
- name: "color"
- when: columnType === CollectionDetails.DataType.Color
-
- PropertyChanges {
- target: editorLoader
- sourceComponent: null
- }
- }
- ]
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsToolbar.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsToolbar.qml
deleted file mode 100644
index e7997f7eae6..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsToolbar.qml
+++ /dev/null
@@ -1,291 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import Qt.labs.platform as PlatformWidgets
-import HelperWidgets 2.0 as HelperWidgets
-import StudioControls 1.0 as StudioControls
-import StudioTheme 1.0 as StudioTheme
-import CollectionDetails
-import CollectionEditorBackend
-
-Rectangle {
- id: root
-
- required property var model
- required property var backend
- property int selectedRow: -1
-
- implicitHeight: StudioTheme.Values.toolbarHeight
- color: StudioTheme.Values.themeToolbarBackground
-
- function addNewColumn() {
- addColumnDialog.popUp(root.model.columnCount())
- }
-
- function addNewRow() {
- root.model.insertRow(root.model.rowCount())
- }
-
- function closeDialogs() {
- addColumnDialog.reject()
- fileDialog.reject()
- }
-
- RowLayout {
- id: container
-
- anchors.fill: parent
- anchors.topMargin: StudioTheme.Values.toolbarVerticalMargin
- anchors.bottomMargin: StudioTheme.Values.toolbarVerticalMargin
-
- spacing: StudioTheme.Values.sectionRowSpacing
-
- RowLayout {
- id: leftSideToolbar
-
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- Layout.leftMargin: StudioTheme.Values.toolbarHorizontalMargin
- spacing: StudioTheme.Values.sectionRowSpacing
-
- IconButton {
- id: addColumnLeftButton
-
- buttonIcon: StudioTheme.Constants.addcolumnleft_medium
- tooltip: qsTr("Add column left")
- enabled: root.model.selectedColumn > -1
- onClicked: addColumnDialog.popUp(root.model.selectedColumn)
- }
-
- IconButton {
- id: addColumnRightButton
-
- buttonIcon: StudioTheme.Constants.addcolumnright_medium
- tooltip: qsTr("Add column right")
- enabled: root.model.selectedColumn > -1
- onClicked: addColumnDialog.popUp(root.model.selectedColumn + 1)
- }
-
- IconButton {
- id: deleteColumnButton
-
- buttonIcon: StudioTheme.Constants.deletecolumn_medium
- tooltip: qsTr("Delete selected column")
- enabled: root.model.selectedColumn > -1
- onClicked: root.model.removeColumn(root.model.selectedColumn)
- }
-
- Item { // spacer
- implicitWidth: StudioTheme.Values.toolbarSpacing
- implicitHeight: 1
- }
-
- IconButton {
- id: addRowBelowButton
-
- buttonIcon: StudioTheme.Constants.addrowbelow_medium
- tooltip: qsTr("Add row below")
- enabled: root.model.selectedRow > -1
- onClicked: root.model.insertRow(root.model.selectedRow + 1)
- }
-
- IconButton {
- id: addRowAboveButton
-
- buttonIcon: StudioTheme.Constants.addrowabove_medium
- tooltip: qsTr("Add row above")
- enabled: root.model.selectedRow > -1
- onClicked: root.model.insertRow(root.model.selectedRow)
- }
-
- IconButton {
- id: deleteSelectedRowButton
-
- buttonIcon: StudioTheme.Constants.deleterow_medium
- tooltip: qsTr("Delete selected row")
- enabled: root.model.selectedRow > -1
- onClicked: root.model.removeRow(root.model.selectedRow)
- }
- }
-
- RowLayout {
- id: rightSideToolbar
-
- spacing: StudioTheme.Values.sectionRowSpacing
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- Layout.rightMargin: StudioTheme.Values.toolbarHorizontalMargin
-
- IconButton {
- id: saveCollectionButton
-
- buttonIcon: StudioTheme.Constants.save_medium
- tooltip: qsTr("Save changes")
- enabled: root.model.collectionName !== "" && root.model.hasUnsavedChanges
- onClicked: root.model.saveDataStoreCollections()
-
- Rectangle {
- width: StudioTheme.Values.smallStatusIndicatorDiameter
- height: StudioTheme.Values.smallStatusIndicatorDiameter
- radius: StudioTheme.Values.smallStatusIndicatorDiameter / 2
- anchors.right: parent.right
- anchors.top: parent.top
- visible: root.model.hasUnsavedChanges
- color: StudioTheme.Values.themeIconColorSelected
- }
- }
-
- IconButton {
- id: exportCollectionButton
-
- buttonIcon: StudioTheme.Constants.export_medium
- tooltip: qsTr("Export model")
- enabled: root.model.collectionName !== ""
- onClicked: fileDialog.open()
- }
- }
- }
-
- PlatformWidgets.FileDialog {
- id: fileDialog
-
- fileMode: PlatformWidgets.FileDialog.SaveFile
-
- nameFilters: ["JSON Files (*.json)",
- "Comma-Separated Values (*.csv)"
- ]
-
- selectedNameFilter.index: 0
-
- onAccepted: {
- let filePath = fileDialog.file.toString()
- root.model.exportCollection(filePath)
- }
- }
-
- component IconButton: HelperWidgets.AbstractButton {
- style: StudioTheme.Values.viewBarButtonStyle
- }
-
- component Spacer: Item {
- implicitWidth: 1
- implicitHeight: StudioTheme.Values.columnGap
- }
-
- RegularExpressionValidator {
- id: nameValidator
- regularExpression: /^\w+$/
- }
-
- StudioControls.Dialog {
- id: addColumnDialog
-
- property int clickedIndex: -1
- property bool nameIsValid
-
- title: qsTr("Add Column")
-
- function popUp(index)
- {
- addColumnDialog.clickedIndex = index
- columnName.text = ""
- columnName.forceActiveFocus()
- addedPropertyType.currentIndex = addedPropertyType.find("String")
-
- addColumnDialog.open()
- }
-
- function addColumnName() {
- if (addColumnDialog.nameIsValid) {
- root.model.addColumn(addColumnDialog.clickedIndex, columnName.text, addedPropertyType.currentText)
- addColumnDialog.accept()
- } else {
- addColumnDialog.reject()
- }
- }
-
- contentItem: ColumnLayout {
- spacing: 2
-
- Text {
- text: qsTr("Column name:")
- color: StudioTheme.Values.themeTextColor
- }
-
- StudioControls.TextField {
- id: columnName
-
- Layout.fillWidth: true
-
- actionIndicator.visible: false
- translationIndicator.visible: false
- validator: nameValidator
-
- Keys.onEnterPressed: addColumnDialog.addColumnName()
- Keys.onReturnPressed: addColumnDialog.addColumnName()
- Keys.onEscapePressed: addColumnDialog.reject()
-
- onTextChanged: {
- addColumnDialog.nameIsValid = (columnName.text !== ""
- && !root.model.isPropertyAvailable(columnName.text))
- }
- }
-
- Spacer { implicitHeight: StudioTheme.Values.controlLabelGap }
-
- Label {
- Layout.fillWidth: true
-
- text: qsTr("The model already contains \"%1\"!").arg(columnName.text)
- visible: columnName.text !== "" && !addColumnDialog.nameIsValid
-
- color: StudioTheme.Values.themeTextColor
- wrapMode: Label.WordWrap
- padding: 5
-
- background: Rectangle {
- color: "transparent"
- border.width: StudioTheme.Values.border
- border.color: StudioTheme.Values.themeWarning
- }
- }
-
- Spacer {}
-
- Text {
- text: qsTr("Type:")
- color: StudioTheme.Values.themeTextColor
- }
-
- StudioControls.ComboBox {
- id: addedPropertyType
-
- Layout.fillWidth: true
-
- model: CollectionDataTypeModel{}
- textRole: "display"
- tooltipRole: "toolTip"
- actionIndicatorVisible: false
- }
-
- Spacer {}
-
- RowLayout {
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- spacing: StudioTheme.Values.sectionRowSpacing
-
- HelperWidgets.Button {
- enabled: addColumnDialog.nameIsValid
- text: qsTr("Add")
- onClicked: addColumnDialog.addColumnName()
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- onClicked: addColumnDialog.reject()
- }
- }
- }
- }
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsView.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsView.qml
deleted file mode 100644
index 2193bd1763e..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionDetailsView.qml
+++ /dev/null
@@ -1,727 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import CollectionDetails 1.0 as CollectionDetails
-import HelperWidgets 2.0 as HelperWidgets
-import StudioControls 1.0 as StudioControls
-import StudioTheme 1.0 as StudioTheme
-
-Rectangle {
- id: root
-
- required property var model
- required property var backend
- required property var sortedModel
-
- implicitWidth: 300
- implicitHeight: 400
- color: StudioTheme.Values.themeControlBackground
-
- function closeDialogs() {
- editPropertyDialog.reject()
- deleteColumnDialog.reject()
- toolbar.closeDialogs()
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: tableView.model.deselectAll()
- }
-
- Column {
- id: topRow
- readonly property real maxAvailableHeight: root.height
-
- visible: root.model.collectionName !== ""
- width: parent.width
- spacing: 10
-
- CollectionDetailsToolbar {
- id: toolbar
- model: root.model
- backend: root.backend
- width: parent.width
- }
-
- GridLayout {
- id: gridLayout
- readonly property real maxAvailableHeight: topRow.maxAvailableHeight
- - topRow.spacing
- - toolbar.height
-
- columns: 3
- rowSpacing: 1
- columnSpacing: 1
- width: parent.width
-
- anchors {
- left: parent.left
- leftMargin: StudioTheme.Values.collectionTableHorizontalMargin
- }
-
- Rectangle {
- id: tableTopLeftCorner
-
- clip: true
- visible: !tableView.model.isEmpty
- color: StudioTheme.Values.themeControlBackgroundInteraction
- border.color: StudioTheme.Values.themeControlBackgroundInteraction
- border.width: 2
-
- Layout.preferredWidth: rowIdView.width
- Layout.preferredHeight: headerView.height
- Layout.minimumWidth: rowIdView.width
- Layout.minimumHeight: headerView.height
-
- Text {
- anchors.fill: parent
- font: headerTextMetrics.font
- text: "#"
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- color: StudioTheme.Values.themeTextColor
- }
- }
-
- HorizontalHeaderView {
- id: headerView
-
- property real topPadding: 5
- property real bottomPadding: 5
-
- Layout.preferredHeight: headerTextMetrics.height + topPadding + bottomPadding
- Layout.columnSpan: 2
- syncView: tableView
- clip: true
-
- delegate: HeaderDelegate {
- selectedItem: tableView.model.selectedColumn
- color: StudioTheme.Values.themeControlBackgroundInteraction
-
- MouseArea {
- id: topHeaderMouseArea
-
- anchors.fill: parent
- anchors.leftMargin: StudioTheme.Values.borderHover
- anchors.rightMargin: StudioTheme.Values.borderHover
- acceptedButtons: Qt.LeftButton | Qt.RightButton
- hoverEnabled: true
- onClicked: (mouse) => {
- tableView.model.selectColumn(index)
-
- if (mouse.button === Qt.RightButton) {
- let posX = index === root.model.columnCount() - 1 ? parent.width - editPropertyDialog.width : 0
-
- headerMenu.clickedHeaderIndex = index
- headerMenu.dialogPos = parent.mapToGlobal(posX, parent.height)
- headerMenu.popup()
- } else {
- headerMenu.close()
- }
- }
- }
-
- ToolTip {
- id: topHeaderToolTip
-
- property bool expectedToBeShown: topHeaderMouseArea.containsMouse
- visible: expectedToBeShown && text !== ""
- delay: 1000
-
- onExpectedToBeShownChanged: {
- if (expectedToBeShown)
- text = root.model.propertyType(index)
- }
- }
- }
-
- StudioControls.Menu {
- id: headerMenu
-
- property int clickedHeaderIndex: -1
- property point dialogPos
-
- onClosed: {
- headerMenu.clickedHeaderIndex = -1
- }
-
- StudioControls.MenuItem {
- text: qsTr("Edit")
- onTriggered: editPropertyDialog.openDialog(headerMenu.clickedHeaderIndex,
- headerMenu.dialogPos)
- }
-
- StudioControls.MenuItem {
- text: qsTr("Delete")
- onTriggered: deleteColumnDialog.popUp(headerMenu.clickedHeaderIndex)
- }
-
- StudioControls.MenuItem {
- text: qsTr("Sort Ascending")
- onTriggered: {
- tableView.closeEditor()
- tableView.model.sort(headerMenu.clickedHeaderIndex, Qt.AscendingOrder)
- }
- }
-
- StudioControls.MenuItem {
- text: qsTr("Sort Descending")
- onTriggered: {
- tableView.closeEditor()
- tableView.model.sort(headerMenu.clickedHeaderIndex, Qt.DescendingOrder)
- }
- }
- }
- }
-
- VerticalHeaderView {
- id: rowIdView
-
- syncView: tableView
- clip: true
-
- Layout.preferredHeight: tableView.height
- Layout.rowSpan: 2
- Layout.alignment: Qt.AlignTop + Qt.AlignLeft
- width: implicitWidth // suppresses GridLayout warnings when resizing
-
- delegate: HeaderDelegate {
- selectedItem: tableView.model.selectedRow
- color: StudioTheme.Values.themeControlBackgroundHover
-
- MouseArea {
- anchors.fill: parent
- anchors.topMargin: StudioTheme.Values.borderHover
- anchors.bottomMargin: StudioTheme.Values.borderHover
- acceptedButtons: Qt.LeftButton
- onClicked: tableView.model.selectRow(index)
- }
- }
- }
-
- TableView {
- id: tableView
-
- model: root.sortedModel
- clip: true
-
- readonly property real maxAvailableHeight: gridLayout.maxAvailableHeight
- - addRowButton.height
- - headerView.height
- - (2 * gridLayout.rowSpacing)
- readonly property real maxAvailableWidth: gridLayout.width
- - StudioTheme.Values.collectionTableHorizontalMargin
- - rowIdView.width
- - addColumnButton.width
- - gridLayout.columnSpacing
-
- property real childrenWidth: tableView.contentItem.childrenRect.width
- property real childrenHeight: tableView.contentItem.childrenRect.height
-
- property int targetRow
- property int targetColumn
-
- Layout.alignment: Qt.AlignTop + Qt.AlignLeft
- Layout.preferredWidth: tableView.contentWidth
- Layout.preferredHeight: tableView.contentHeight
- Layout.minimumWidth: 100
- Layout.minimumHeight: 20
- Layout.maximumWidth: maxAvailableWidth
- Layout.maximumHeight: maxAvailableHeight
-
- columnWidthProvider: function(column) {
- if (!isColumnLoaded(column))
- return -1
- let w = explicitColumnWidth(column)
- if (w < 0)
- w = implicitColumnWidth(column)
- return Math.max(w, StudioTheme.Values.collectionCellMinimumWidth)
- }
-
- rowHeightProvider: function(row) {
- if (!isRowLoaded(row))
- return -1
- let h = explicitRowHeight(row)
- if (h < 0)
- h = implicitRowHeight(row)
- return Math.max(h, StudioTheme.Values.collectionCellMinimumHeight)
- }
-
- function ensureRowIsVisible(row) {
- let rows = tableView.model.rowCount()
- let rowIsLoaded = tableView.isRowLoaded(row)
-
- if (row < 0 || row >= rows || rowIsLoaded) {
- if (rowIsLoaded)
- tableView.positionViewAtRow(row, Qt.AlignLeft | Qt.AlignTop)
-
- tableView.targetRow = -1
- return
- }
-
- tableView.targetRow = row
- tableView.positionViewAtRow(row, Qt.AlignLeft | Qt.AlignTop)
- ensureTimer.start()
- }
-
- function ensureColumnIsVisible(column) {
- let columns = tableView.model.columnCount()
- let columnIsLoaded = tableView.isColumnLoaded(column)
-
- if (column < 0 || column >= columns || columnIsLoaded) {
- if (columnIsLoaded)
- tableView.positionViewAtColumn(column, Qt.AlignLeft | Qt.AlignTop)
-
- tableView.targetColumn = -1
- return
- }
-
- tableView.targetColumn = column
- tableView.positionViewAtColumn(column, Qt.AlignLeft | Qt.AlignTop)
- ensureTimer.start()
- }
-
- onMaxAvailableHeightChanged: resetSizeTimer.start()
- onMaxAvailableWidthChanged: resetSizeTimer.start()
- onChildrenWidthChanged: resetSizeTimer.start()
- onChildrenHeightChanged: resetSizeTimer.start()
-
- delegate: Rectangle {
- id: itemCell
-
- clip: true
- implicitWidth: 100
- implicitHeight: StudioTheme.Values.baseHeight
- color: itemSelected ? StudioTheme.Values.themeControlBackgroundInteraction
- : StudioTheme.Values.themeControlBackground
- border.width: 1
- border.color: {
- if (dataTypeWarning !== CollectionDetails.Warning.None)
- return StudioTheme.Values.themeWarning
-
- if (itemSelected)
- return StudioTheme.Values.themeControlOutlineInteraction
-
- return StudioTheme.Values.themeControlBackgroundInteraction
- }
-
- HelperWidgets.ToolTipArea {
- anchors.fill: parent
- text: root.model.warningToString(dataTypeWarning)
- enabled: dataTypeWarning !== CollectionDetails.Warning.None && text !== ""
- hoverEnabled: true
- acceptedButtons: Qt.NoButton
- }
-
- MouseArea {
- anchors.fill: parent
- acceptedButtons: Qt.RightButton
- onClicked: (mouse) => {
- let row = index % tableView.model.rowCount()
-
- tableView.model.selectRow(row)
- cellContextMenu.showMenu(row)
- }
- }
-
- Loader {
- id: cellContentLoader
-
- property int cellColumnType: columnType ? columnType : 0
-
- Component {
- id: cellText
-
- Text {
- text: display ?? ""
- color: itemSelected ? StudioTheme.Values.themeInteraction
- : StudioTheme.Values.themeTextColor
- leftPadding: 5
- topPadding: 3
- bottomPadding: 3
- font.pixelSize: StudioTheme.Values.baseFontSize
- horizontalAlignment: Text.AlignLeft
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
- }
-
- Component {
- id: colorEditorComponent
-
- ColorViewDelegate {}
- }
-
- function resetSource() {
- if (columnType === CollectionDetails.DataType.Color)
- cellContentLoader.sourceComponent = colorEditorComponent
- else
- cellContentLoader.sourceComponent = cellText
- }
-
- Component.onCompleted: resetSource()
- onCellColumnTypeChanged: resetSource()
- }
-
- TableView.editDelegate: CollectionDetailsEditDelegate {
- anchors {
- top: itemCell.top
- left: itemCell.left
- }
- Component.onCompleted: tableView.model.deselectAll()
- }
- }
-
- Timer {
- id: resetSizeTimer
-
- interval: 100
- repeat: false
- onTriggered: {
- let cWidth = Math.min(tableView.maxAvailableWidth, tableView.childrenWidth)
- let cHeight = Math.min(tableView.maxAvailableHeight, tableView.childrenHeight)
-
- if (tableView.contentWidth !== cWidth || tableView.contentHeight !== cHeight)
- tableView.returnToBounds()
- }
- }
-
- Timer {
- id: ensureTimer
-
- interval: 100
- repeat: false
- onTriggered: {
- tableView.ensureRowIsVisible(tableView.targetRow)
- tableView.ensureColumnIsVisible(tableView.targetColumn)
- }
- }
-
- Connections {
- target: tableView.model
-
- function onModelReset() {
- root.closeDialogs()
- tableView.clearColumnWidths()
- tableView.clearRowHeights()
- }
-
- function onRowsInserted(parent, first, last) {
- tableView.closeEditor()
- tableView.model.selectRow(first)
- tableView.ensureRowIsVisible(first)
- }
-
- function onColumnsInserted(parent, first, last) {
- tableView.closeEditor()
- tableView.model.selectColumn(first)
- tableView.ensureColumnIsVisible(first)
- }
-
- function onRowsRemoved(parent, first, last) {
- let nextRow = first - 1
- if (nextRow < 0 && tableView.model.rowCount(parent) > 0)
- nextRow = 0
-
- tableView.model.selectRow(nextRow)
- }
-
- function onColumnsRemoved(parent, first, last) {
- let nextColumn = first - 1
- if (nextColumn < 0 && tableView.model.columnCount(parent) > 0)
- nextColumn = 0
-
- tableView.model.selectColumn(nextColumn)
- }
- }
-
- HoverHandler { id: hoverHandler }
-
- ScrollBar.horizontal: StudioControls.TransientScrollBar {
- id: horizontalScrollBar
- style: StudioTheme.Values.viewStyle
- orientation: Qt.Horizontal
-
- show: (hoverHandler.hovered || tableView.focus || horizontalScrollBar.inUse)
- && horizontalScrollBar.isNeeded
- }
-
- ScrollBar.vertical: StudioControls.TransientScrollBar {
- id: verticalScrollBar
- style: StudioTheme.Values.viewStyle
- orientation: Qt.Vertical
-
- show: (hoverHandler.hovered || tableView.focus || verticalScrollBar.inUse)
- && verticalScrollBar.isNeeded
- }
- }
-
- HelperWidgets.IconButton {
- id: addColumnButton
-
- iconSize:16
- Layout.preferredWidth: 24
- Layout.preferredHeight: tableView.height
- Layout.minimumHeight: 24
- Layout.alignment: Qt.AlignLeft + Qt.AlignVCenter
-
- icon: StudioTheme.Constants.create_medium
- tooltip: "Add Column"
-
- onClicked: toolbar.addNewColumn()
- }
-
- HelperWidgets.IconButton {
- id: addRowButton
-
- iconSize:16
- Layout.preferredWidth: tableView.width
- Layout.preferredHeight: 24
- Layout.minimumWidth: 24
- Layout.alignment: Qt.AlignTop + Qt.AlignHCenter
-
- icon: StudioTheme.Constants.create_medium
- tooltip: "Add Row"
-
- onClicked: toolbar.addNewRow()
- }
-
- Item {
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- }
- }
-
- ColumnLayout {
- id: importsProblem
-
- visible: !topRow.visible && rootView.dataStoreExists && !rootView.projectImportExists
- width: parent.width
- anchors.verticalCenter: parent.verticalCenter
- clip: true
-
- Text {
- text: qsTr("Import the project to your design document to make the Model Editor enabled.")
- Layout.alignment: Qt.AlignCenter
- Layout.maximumWidth: parent.width
- leftPadding: StudioTheme.Values.collectionItemTextPadding
- rightPadding: StudioTheme.Values.collectionItemTextPadding
- color: StudioTheme.Values.themeTextColor
- font.pixelSize: StudioTheme.Values.mediumFontSize
- wrapMode: Text.Wrap
- }
-
- HelperWidgets.Button {
- text: qsTr("Enable DataStore (This will add the required import)")
- Layout.alignment: Qt.AlignCenter
- onClicked: rootView.addProjectImport()
- leftPadding: StudioTheme.Values.collectionItemTextPadding
- rightPadding: StudioTheme.Values.collectionItemTextPadding
- }
- }
-
- Text {
- anchors.centerIn: parent
- text: qsTr("There are no models in this project.\nAdd or import a model.")
- visible: !topRow.visible && !importsProblem.visible
- color: StudioTheme.Values.themeTextColor
- font.pixelSize: StudioTheme.Values.mediumFontSize
- }
-
- TextMetrics {
- id: headerTextMetrics
-
- font.pixelSize: StudioTheme.Values.baseFontSize
- text: "Xq"
- }
-
- StudioControls.Menu {
- id: cellContextMenu
-
- property int rowIndex: -1
-
- closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
-
- function showMenu(rowIndex) {
- cellContextMenu.rowIndex = rowIndex
- cellContextMenu.popup()
- }
-
- CellContextMenuItem {
- id: addRowAboveCellMenuItem
-
- itemText: qsTr("Add row above")
- itemIcon: StudioTheme.Constants.addrowabove_medium
- onTriggered: root.model.insertRow(cellContextMenu.rowIndex)
- }
- CellContextMenuItem {
- id: addRowBelowCellMenuItem
-
- itemText: qsTr("Add row below")
- itemIcon: StudioTheme.Constants.addrowbelow_medium
- onTriggered: root.model.insertRow(cellContextMenu.rowIndex + 1)
- }
- CellContextMenuItem {
- id: deleteRowCellMenuItem
-
- itemText: qsTr("Delete row")
- itemIcon: StudioTheme.Constants.deleterow_medium
- onTriggered: root.model.removeRows(cellContextMenu.rowIndex, 1)
- }
- }
-
- component HeaderDelegate: Rectangle {
- id: headerItem
-
- required property int selectedItem
- property alias horizontalAlignment: headerText.horizontalAlignment
- property alias verticalAlignment: headerText.verticalAlignment
-
- implicitWidth: headerText.implicitWidth
- implicitHeight: headerText.implicitHeight
- border.width: 1
- clip: true
-
- Text {
- id: headerText
-
- topPadding: headerView.topPadding
- bottomPadding: headerView.bottomPadding
- leftPadding: 5
- rightPadding: 5
- text: display
- font: headerTextMetrics.font
- color: StudioTheme.Values.themeTextColor
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- elide: Text.ElideRight
- }
-
- states: [
- State {
- name: "default"
- when: index !== selectedItem
- PropertyChanges {
- target: headerItem
- border.color: StudioTheme.Values.themeControlBackgroundInteraction
- }
-
- PropertyChanges {
- target: headerText
- font.bold: false
- }
- },
- State {
- name: "selected"
- when: index === selectedItem
-
- PropertyChanges {
- target: headerItem
- border.color: StudioTheme.Values.themeControlBackground
- }
-
- PropertyChanges {
- target: headerText
- font.bold: true
- }
- }
- ]
- }
-
- component CellContextMenuItem: StudioControls.MenuItem {
- id: cellContextMenuItemComponent
-
- property alias itemText: cellContextMenuText.text
- property alias itemIcon: cellContextMenuIcon.text
- text: ""
-
- implicitWidth: cellContextMenuRow.width
- implicitHeight: cellContextMenuRow.height
-
- Row {
- id: cellContextMenuRow
-
- property color textColor : cellContextMenuItemComponent.enabled
- ? cellContextMenuItemComponent.highlighted
- ? cellContextMenuItemComponent.style.text.selectedText
- : cellContextMenuItemComponent.style.text.idle
- : cellContextMenuItemComponent.style.text.disabled
-
- spacing: 2 * StudioTheme.Values.contextMenuHorizontalPadding
- height: StudioTheme.Values.defaultControlHeight
- leftPadding: StudioTheme.Values.contextMenuHorizontalPadding
- rightPadding: StudioTheme.Values.contextMenuHorizontalPadding
-
- Text {
- id: cellContextMenuIcon
-
- color: cellContextMenuRow.textColor
- text: StudioTheme.Constants.addrowabove_medium
- font.family: StudioTheme.Constants.iconFont.family
- font.pixelSize: StudioTheme.Values.myIconFontSize
- anchors.verticalCenter: parent.verticalCenter
- }
-
- Text {
- id: cellContextMenuText
-
- color: cellContextMenuRow.textColor
- anchors.verticalCenter: parent.verticalCenter
- }
- }
- }
-
- EditPropertyDialog {
- id: editPropertyDialog
- model: root.model
- }
-
- StudioControls.Dialog {
- id: deleteColumnDialog
-
- property int clickedIndex: -1
-
- title: qsTr("Delete Column")
- width: 400
-
- onAccepted: {
- root.model.removeColumn(clickedIndex)
- }
-
- function popUp(index)
- {
- deleteColumnDialog.clickedIndex = index
- deleteColumnDialog.open()
- }
-
- contentItem: ColumnLayout {
- spacing: StudioTheme.Values.sectionColumnSpacing
-
- Text {
- text: qsTr("Are you sure that you want to delete column \"%1\"?").arg(
- root.model.headerData(
- deleteColumnDialog.clickedIndex, Qt.Horizontal))
- color: StudioTheme.Values.themeTextColor
- }
-
- RowLayout {
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- spacing: StudioTheme.Values.sectionRowSpacing
-
- HelperWidgets.Button {
- text: qsTr("Delete")
- onClicked: deleteColumnDialog.accept()
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- onClicked: deleteColumnDialog.reject()
- }
- }
- }
- }
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionItem.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionItem.qml
deleted file mode 100644
index d963070536f..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionItem.qml
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import HelperWidgets 2.0 as HelperWidgets
-import StudioControls 1.0 as StudioControls
-import StudioTheme as StudioTheme
-import CollectionEditorBackend
-
-Item {
- id: root
-
- implicitWidth: 300
- implicitHeight: boundingRect.height + 3
-
- property color textColor
- readonly property string name: collectionName ?? ""
- readonly property bool isSelected: collectionIsSelected
- readonly property int id: index
-
- function rename(newName) {
- collectionName = newName
- }
-
- signal selectItem(int itemIndex)
- signal deleteItem()
- signal contextMenuRequested()
-
- Item {
- id: boundingRect
-
- width: parent.width
- height: itemLayout.height
- clip: true
-
- MouseArea {
- id: itemMouse
-
- anchors.fill: parent
- acceptedButtons: Qt.LeftButton
- propagateComposedEvents: true
- hoverEnabled: true
- onClicked: (event) => {
- if (!collectionIsSelected) {
- collectionIsSelected = true
- event.accepted = true
- }
- }
- }
-
- Rectangle {
- id: innerRect
- anchors.fill: parent
- }
-
- RowLayout {
- id: itemLayout
-
- width: parent.width
-
- Text {
- id: nameHolder
-
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- Layout.leftMargin: StudioTheme.Values.collectionItemTextSideMargin
- Layout.topMargin: StudioTheme.Values.collectionItemTextMargin
- Layout.bottomMargin: StudioTheme.Values.collectionItemTextMargin
-
- text: collectionName
- font.pixelSize: StudioTheme.Values.baseFontSize
- color: root.textColor
- topPadding: StudioTheme.Values.collectionItemTextPadding
- bottomPadding: StudioTheme.Values.collectionItemTextPadding
- elide: Text.ElideMiddle
- verticalAlignment: Text.AlignVCenter
- }
-
- Text {
- id: threeDots
-
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- Layout.topMargin: StudioTheme.Values.collectionItemTextMargin
- Layout.bottomMargin: StudioTheme.Values.collectionItemTextMargin
- Layout.rightMargin: StudioTheme.Values.collectionItemTextSideMargin
-
- text: StudioTheme.Constants.more_medium
- font.family: StudioTheme.Constants.iconFont.family
- font.pixelSize: StudioTheme.Values.baseIconFontSize
- color: root.textColor
- padding: StudioTheme.Values.collectionItemTextPadding
-
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
-
- MouseArea {
- anchors.fill: parent
- acceptedButtons: Qt.RightButton | Qt.LeftButton
- onClicked: contextMenuRequested()
- }
- }
- }
- }
-
- states: [
- State {
- name: "default"
- when: !collectionIsSelected && !itemMouse.containsMouse
-
- PropertyChanges {
- target: innerRect
- opacity: 0.6
- color: StudioTheme.Values.themeControlBackground
- }
-
- PropertyChanges {
- target: root
- textColor: StudioTheme.Values.themeTextColor
- }
- },
- State {
- name: "hovered"
- when: !collectionIsSelected && itemMouse.containsMouse
-
- PropertyChanges {
- target: innerRect
- opacity: 0.8
- color: StudioTheme.Values.themeControlBackgroundHover
- }
-
- PropertyChanges {
- target: root
- textColor: StudioTheme.Values.themeTextColor
- }
- },
- State {
- name: "selected"
- when: collectionIsSelected
-
- PropertyChanges {
- target: innerRect
- opacity: 1
- color: StudioTheme.Values.themeIconColorSelected
- }
-
- PropertyChanges {
- target: root
- textColor: StudioTheme.Values.themeTextSelectedTextColor
- }
- }
- ]
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionListView.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionListView.qml
deleted file mode 100644
index 2b95abfc4f4..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionListView.qml
+++ /dev/null
@@ -1,215 +0,0 @@
-// Copyright (C) 2024 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import HelperWidgets 2.0 as HelperWidgets
-import StudioControls 1.0 as StudioControls
-import StudioTheme as StudioTheme
-import CollectionEditorBackend
-
-ListView {
- id: root
-
- model: CollectionEditorBackend.model
- clip: true
-
- function closeDialogs() {
- currentCollection.dereference()
- collectionMenu.close()
- deleteDialog.reject()
- renameDialog.reject()
- }
-
- delegate: CollectionItem {
- implicitWidth: root.width
- onDeleteItem: root.model.removeRow(index)
- onContextMenuRequested: collectionMenu.openMenu(this)
- }
-
- QtObject {
- id: currentCollection
-
- property CollectionItem item
- readonly property string name: item ? item.name : ""
- readonly property bool selected: item ? item.isSelected : false
- readonly property int index: item ? item.id : -1
-
- function rename(newName) {
- if (item)
- item.rename(newName)
- }
-
- function deleteItem() {
- if (item)
- item.deleteItem()
- }
-
- function dereference() {
- item = null
- }
- }
-
- StudioControls.Menu {
- id: collectionMenu
-
- closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
-
- function openMenu(item) {
- currentCollection.item = item
- popup()
- }
-
- StudioControls.MenuItem {
- text: qsTr("Delete")
- shortcut: StandardKey.Delete
- onTriggered: deleteDialog.open()
- }
-
- StudioControls.MenuItem {
- text: qsTr("Rename")
- shortcut: StandardKey.Replace
- onTriggered: renameDialog.open()
- }
-
- StudioControls.MenuItem {
- text: qsTr("Assign to the selected node")
- enabled: CollectionEditorBackend.rootView.targetNodeSelected
- onTriggered: rootView.assignCollectionToSelectedNode(currentCollection.name)
- }
- }
-
- StudioControls.Dialog {
- id: deleteDialog
-
- title: qsTr("Deleting the model")
- clip: true
-
- onAccepted: currentCollection.deleteItem()
-
- contentItem: ColumnLayout {
- id: deleteDialogContent // Keep the id here even if it's not used, because the dialog might lose implicitSize
-
- width: 300
- spacing: 2
-
- Text {
- Layout.fillWidth: true
-
- wrapMode: Text.WordWrap
- color: StudioTheme.Values.themeTextColor
- text: qsTr("Are you sure that you want to delete model \"%1\"?"
- + "\nThe model will be deleted permanently.").arg(currentCollection.name)
-
- }
-
- Spacer {}
-
- RowLayout {
- spacing: StudioTheme.Values.sectionRowSpacing
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- Layout.fillWidth: true
- Layout.preferredHeight: 40
-
- HelperWidgets.Button {
- text: qsTr("Delete")
- onClicked: deleteDialog.accept()
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- onClicked: deleteDialog.reject()
- }
- }
- }
- }
-
- StudioControls.Dialog {
- id: renameDialog
-
- title: qsTr("Rename model")
-
- onAccepted: {
- if (newNameField.text !== "")
- currentCollection.rename(newNameField.text)
- }
-
- onOpened: {
- newNameField.text = currentCollection.name
- }
-
- contentItem: ColumnLayout {
- spacing: 2
-
- Text {
- text: qsTr("Previous name: " + currentCollection.name)
- color: StudioTheme.Values.themeTextColor
- }
-
- Spacer {}
-
- Text {
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- text: qsTr("New name:")
- color: StudioTheme.Values.themeTextColor
- }
-
- StudioControls.TextField {
- id: newNameField
-
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- Layout.fillWidth: true
-
- actionIndicator.visible: false
- translationIndicator.visible: false
- validator: newNameValidator
-
- Keys.onEnterPressed: renameDialog.accept()
- Keys.onReturnPressed: renameDialog.accept()
- Keys.onEscapePressed: renameDialog.reject()
-
- onTextChanged: {
- btnRename.enabled = newNameField.text !== ""
- }
- }
-
- Spacer {}
-
- RowLayout {
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- spacing: StudioTheme.Values.sectionRowSpacing
-
- HelperWidgets.Button {
- id: btnRename
-
- text: qsTr("Rename")
- onClicked: renameDialog.accept()
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- onClicked: renameDialog.reject()
- }
- }
- }
- }
-
- Connections {
- target: root.model
-
- function onModelReset() {
- root.closeDialogs()
- }
- }
-
- RegularExpressionValidator {
- id: newNameValidator
- regularExpression: /^\w+$/
- }
-
- component Spacer: Item {
- implicitWidth: 1
- implicitHeight: StudioTheme.Values.columnGap
- }
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionView.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionView.qml
deleted file mode 100644
index 9d483037ac8..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/CollectionView.qml
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import HelperWidgets as HelperWidgets
-import StudioTheme as StudioTheme
-import CollectionEditorBackend
-
-Item {
- id: root
- focus: true
-
- property var rootView: CollectionEditorBackend.rootView
- property var model: CollectionEditorBackend.model
- property var collectionDetailsModel: CollectionEditorBackend.collectionDetailsModel
- property var collectionDetailsSortFilterModel: CollectionEditorBackend.collectionDetailsSortFilterModel
-
- function showWarning(title, message) {
- warningDialog.title = title
- warningDialog.message = message
- warningDialog.open()
- }
-
- // called from C++ when using the delete key
- function deleteSelectedCollection() {
- print("TODO: deleteSelectedCollection")
- }
-
- function closeDialogs() {
- importDialog.reject()
- newCollection.reject()
- warningDialog.reject()
- }
-
- ImportDialog {
- id: importDialog
-
- backendValue: root.rootView
- anchors.centerIn: parent
- }
-
- NewCollectionDialog {
- id: newCollection
-
- anchors.centerIn: parent
- }
-
- Message {
- id: warningDialog
-
- title: ""
- message: ""
- }
-
- Rectangle {
- // Covers the toolbar color on top to prevent the background
- // color for the margin of splitter
-
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- height: topToolbar.height
- color: topToolbar.color
- }
-
- SplitView {
- id: splitView
-
- readonly property bool isHorizontal: splitView.orientation === Qt.Horizontal
-
- orientation: width >= 500 ? Qt.Horizontal : Qt.Vertical
- anchors.fill: parent
-
- onOrientationChanged: detailsView.closeDialogs()
-
- handle: Item {
- id: handleDelegate
-
- property color color: SplitHandle.pressed ? StudioTheme.Values.themeControlOutlineInteraction
- : SplitHandle.hovered ? StudioTheme.Values.themeControlOutlineHover
- : StudioTheme.Values.themeControlOutline
-
- implicitWidth: 1
- implicitHeight: 1
-
- Rectangle {
- id: handleRect
-
- property real verticalMargin: splitView.isHorizontal ? StudioTheme.Values.splitterMargin : 0
- property real horizontalMargin: splitView.isHorizontal ? 0 : StudioTheme.Values.splitterMargin
-
- anchors.fill: parent
- anchors.topMargin: handleRect.verticalMargin
- anchors.bottomMargin: handleRect.verticalMargin
- anchors.leftMargin: handleRect.horizontalMargin
- anchors.rightMargin: handleRect.horizontalMargin
-
- color: handleDelegate.color
- }
-
- containmentMask: Item {
- x: splitView.isHorizontal ? ((handleDelegate.width - width) / 2) : 0
- y: splitView.isHorizontal ? 0 : ((handleDelegate.height - height) / 2)
- height: splitView.isHorizontal ? handleDelegate.height : StudioTheme.Values.borderHover
- width: splitView.isHorizontal ? StudioTheme.Values.borderHover : handleDelegate.width
- }
- }
-
- ColumnLayout {
- id: collectionsSideBar
- spacing: 0
-
- SplitView.minimumWidth: 200
- SplitView.maximumWidth: 450
- SplitView.minimumHeight: 200
- SplitView.maximumHeight: 400
- SplitView.fillWidth: !splitView.isHorizontal
- SplitView.fillHeight: splitView.isHorizontal
-
- Rectangle {
- id: topToolbar
- color: StudioTheme.Values.themeToolbarBackground
-
- Layout.preferredHeight: StudioTheme.Values.toolbarHeight
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
-
- Text {
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- anchors.leftMargin: StudioTheme.Values.toolbarHorizontalMargin
-
- text: qsTr("Data Models")
- font.pixelSize: StudioTheme.Values.baseFontSize
- color: StudioTheme.Values.themeTextColor
- }
-
- HelperWidgets.AbstractButton {
- id: importCollectionButton
-
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
- anchors.rightMargin: StudioTheme.Values.toolbarHorizontalMargin
-
- style: StudioTheme.Values.viewBarButtonStyle
- buttonIcon: StudioTheme.Constants.import_medium
- tooltip: qsTr("Import a model")
-
- onClicked: importDialog.open()
- }
- }
-
- CollectionListView { // Model Groups
- id: collectionListView
-
- Layout.fillWidth: true
- Layout.minimumHeight: bottomSpacer.isExpanded ? 150 : 0
- Layout.fillHeight: !bottomSpacer.isExpanded
- Layout.preferredHeight: contentHeight
- Layout.maximumHeight: contentHeight
- Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
- }
-
- HelperWidgets.IconButton {
- id: addCollectionButton
-
- iconSize: 16
- Layout.fillWidth: true
- Layout.minimumWidth: 24
- Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
-
- tooltip: qsTr("Add a new model")
- icon: StudioTheme.Constants.create_medium
- onClicked: newCollection.open()
- }
-
- Item {
- id: bottomSpacer
-
- readonly property bool isExpanded: height > 0
- Layout.minimumWidth: 1
- Layout.fillHeight: true
- }
- }
-
- CollectionDetailsView {
- id: detailsView
-
- model: root.collectionDetailsModel
- backend: root.model
- sortedModel: root.collectionDetailsSortFilterModel
- SplitView.fillHeight: true
- SplitView.fillWidth: true
- }
- }
-
- Connections {
- target: root.model
-
- function onModelReset() {
- root.closeDialogs()
- }
- }
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/ColorViewDelegate.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/ColorViewDelegate.qml
deleted file mode 100644
index 16e55acfb43..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/ColorViewDelegate.qml
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright (C) 2024 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Shapes
-import QtQuick.Templates as T
-import HelperWidgets 2.0 as HelperWidgets
-import StudioTheme as StudioTheme
-import StudioControls as StudioControls
-import QtQuickDesignerTheme
-import QtQuickDesignerColorPalette
-
-Row {
- id: colorEditor
-
- property color color
- property bool supportGradient: false
-
- property QtObject backendValue: QtObject {
- property color value: edit
- readonly property color editColor: edit
-
- function resetValue() {
- if (value)
- value = ""
- }
-
- onValueChanged: {
- if (editColor !== value)
- edit = value
- }
- }
-
- property variant value: {
- if (!colorEditor.backendValue || !colorEditor.backendValue.value)
- return "white" // default color for Rectangle
-
- if (colorEditor.isVector3D) {
- return Qt.rgba(colorEditor.backendValue.value.x,
- colorEditor.backendValue.value.y,
- colorEditor.backendValue.value.z, 1)
- }
-
- return colorEditor.backendValue.value
- }
-
- property alias gradientPropertyName: popupDialog.gradientPropertyName
-
- property alias gradientThumbnail: gradientThumbnail
- property alias shapeGradientThumbnail: shapeGradientThumbnail
-
- property bool shapeGradients: false
- property bool isVector3D: false
- property color originalColor
-
- property bool __block: false
-
- function resetShapeColor() {
- colorEditor.backendValue.resetValue()
- }
-
- function writeColor() {
- if (colorEditor.isVector3D) {
- colorEditor.backendValue.value = Qt.vector3d(colorEditor.color.r,
- colorEditor.color.g,
- colorEditor.color.b)
- } else {
- colorEditor.backendValue.value = colorEditor.color
- }
- }
-
- function initEditor() {
- colorEditor.syncColor()
- }
-
- // Syncing color from backend to frontend and block reflection
- function syncColor() {
- colorEditor.__block = true
- colorEditor.color = colorEditor.value
- hexTextField.syncColor()
- colorEditor.__block = false
- }
-
- Connections {
- id: backendConnection
-
- target: colorEditor
-
- function onValueChanged() {
- if (popupDialog.isSolid())
- colorEditor.syncColor()
- }
-
- function onBackendValueChanged() {
- if (popupDialog.isSolid())
- colorEditor.syncColor()
- }
- }
-
- Timer {
- id: colorEditorTimer
-
- repeat: false
- interval: 100
- running: false
- onTriggered: {
- backendConnection.enabled = false
- colorEditor.writeColor()
- hexTextField.syncColor()
- backendConnection.enabled = true
- }
- }
-
- onColorChanged: {
- if (colorEditor.__block)
- return
-
- if (!popupDialog.isInValidState)
- return
-
- popupDialog.commitToGradient()
-
- // Delay setting the color to keep ui responsive
- if (popupDialog.isSolid())
- colorEditorTimer.restart()
- }
-
- Rectangle {
- id: preview
-
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- implicitHeight: StudioTheme.Values.height
- color: colorEditor.color
- border.color: StudioTheme.Values.themeControlOutline
- border.width: StudioTheme.Values.border
-
- Rectangle {
- id: gradientThumbnail
-
- anchors.fill: parent
- anchors.margins: StudioTheme.Values.border
- visible: !popupDialog.isSolid()
- && !colorEditor.shapeGradients
- && popupDialog.isLinearGradient()
- }
-
- Shape {
- id: shape
-
- anchors.fill: parent
- anchors.margins: StudioTheme.Values.border
- visible: !popupDialog.isSolid() && colorEditor.shapeGradients
-
- ShapePath {
- id: shapeGradientThumbnail
-
- startX: shape.x - 1
- startY: shape.y - 1
- strokeWidth: -1
- strokeColor: "green"
-
- PathLine {
- x: shape.x - 1
- y: shape.height
- }
- PathLine {
- x: shape.width
- y: shape.height
- }
- PathLine {
- x: shape.width
- y: shape.y - 1
- }
- }
- }
-
- Image {
- anchors.fill: parent
- source: "qrc:/navigator/icon/checkers.png"
- fillMode: Image.Tile
- z: -1
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- popupDialog.visibility ? popupDialog.close() : popupDialog.open()
- forceActiveFocus()
- }
- }
-
- StudioControls.PopupDialog {
- id: popupDialog
-
- property bool isInValidState: loader.active ? popupDialog.loaderItem.isInValidState : true
- property QtObject loaderItem: loader.item
- property string gradientPropertyName
-
- keepOpen: loader.item?.eyeDropperActive ?? false
-
- width: 260
-
- function commitToGradient() {
- if (!loader.active)
- return
-
- if (colorEditor.supportGradient && popupDialog.loaderItem.gradientModel.hasGradient) {
- var hexColor = convertColorToString(colorEditor.color)
- hexTextField.text = hexColor
- colorEditor.backendValue.value = hexColor
- popupDialog.loaderItem.commitGradientColor()
- }
- }
-
- function isSolid() {
- if (!loader.active)
- return true
-
- return popupDialog.loaderItem.isSolid()
- }
-
- function isLinearGradient(){
- if (!loader.active)
- return false
-
- return popupDialog.loaderItem.isLinearGradient()
- }
-
- function ensureLoader() {
- if (!loader.active)
- loader.active = true
- }
-
- function open() {
- popupDialog.ensureLoader()
- popupDialog.loaderItem.initEditor()
- popupDialog.show(preview)
- }
-
- function determineActiveColorMode() {
- if (loader.active && popupDialog.loaderItem)
- popupDialog.loaderItem.determineActiveColorMode()
- else
- colorEditor.syncColor()
- }
-
- Loader {
- id: loader
-
- active: colorEditor.supportGradient
-
- sourceComponent: HelperWidgets.ColorEditorPopup {
- shapeGradients: colorEditor.shapeGradients
- supportGradient: colorEditor.supportGradient
- width: popupDialog.contentWidth
- }
-
- onLoaded: {
- popupDialog.loaderItem.initEditor()
- popupDialog.titleBar = loader.item.titleBarContent
- }
- }
- }
- }
-
- HelperWidgets.LineEdit {
- id: hexTextField
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- width: hexTextField.implicitWidth
- enabled: popupDialog.isSolid()
- writeValueManually: true
- validator: RegularExpressionValidator {
- regularExpression: /#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?/g
- }
- showTranslateCheckBox: false
- showExtendedFunctionButton: false
- indicatorVisible: false
-
- onAccepted: colorEditor.color = hexTextField.text
- onCommitData: {
- colorEditor.color = hexTextField.text
- if (popupDialog.isSolid())
- colorEditor.writeColor()
- }
-
- function syncColor() {
- hexTextField.text = colorEditor.color
- }
- }
-
- Component.onCompleted: popupDialog.determineActiveColorMode()
-
- onBackendValueChanged: popupDialog.determineActiveColorMode()
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/EditPropertyDialog.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/EditPropertyDialog.qml
deleted file mode 100644
index 546dc5d770c..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/EditPropertyDialog.qml
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Layouts
-import StudioTheme 1.0 as StudioTheme
-import StudioControls 1.0 as StudioControls
-import HelperWidgets 2.0 as HelperWidgets
-import CollectionDetails
-
-StudioControls.Dialog {
- id: root
-
- required property var model
- property int __propertyIndex: -1
- property string __currentName
-
- title: qsTr("Edit Column")
-
- function openDialog(index, initialPosition) {
- root.__propertyIndex = index
-
- if (root.__propertyIndex < 0)
- return
-
- root.__currentName = root.model.propertyName(root.__propertyIndex)
- nameTextField.text = root.__currentName
- nameTextField.selectAll()
- nameTextField.forceActiveFocus()
-
- typeComboBox.initialType = root.model.propertyType(root.__propertyIndex)
- typeComboBox.currentIndex = typeComboBox.find(typeComboBox.initialType)
-
- let newPoint = mapFromGlobal(initialPosition.x, initialPosition.y)
- x = newPoint.x
- y = newPoint.y
-
- root.open()
- }
-
- onWidthChanged: {
- if (visible && x > parent.width)
- root.close()
- }
-
- onAccepted: {
- if (nameTextField.text !== "" && nameTextField.text !== root.__currentName)
- root.model.renameColumn(root.__propertyIndex, nameTextField.text)
-
- if (typeComboBox.initialType !== typeComboBox.currentText)
- root.model.setPropertyType(root.__propertyIndex, typeComboBox.currentText)
- }
-
- contentItem: Column {
- spacing: 5
-
- Grid {
- columns: 2
- rows: 2
- rowSpacing: 2
- columnSpacing: 25
- verticalItemAlignment: Grid.AlignVCenter
-
- Text {
- text: qsTr("Name")
- color: StudioTheme.Values.themeTextColor
- verticalAlignment: Text.AlignVCenter
- }
-
- StudioControls.TextField {
- id: nameTextField
-
- actionIndicator.visible: false
- translationIndicator.visible: false
-
- Keys.onEnterPressed: root.accept()
- Keys.onReturnPressed: root.accept()
- Keys.onEscapePressed: root.reject()
-
- validator: RegularExpressionValidator {
- regularExpression: /^\w+$/
- }
- }
-
- Text {
- text: qsTr("Type")
- color: StudioTheme.Values.themeTextColor
- }
-
- StudioControls.ComboBox {
- id: typeComboBox
-
- property string initialType
-
- model: CollectionDataTypeModel{}
- textRole: "display"
- tooltipRole: "toolTip"
- actionIndicatorVisible: false
- }
- }
-
- Rectangle {
- id: warningBox
-
- visible: typeComboBox.initialType !== typeComboBox.currentText
- color: "transparent"
- clip: true
- border.color: StudioTheme.Values.themeWarning
- width: parent.width
- height: warning.height
-
- Row {
- id: warning
-
- padding: 5
- spacing: 5
-
- HelperWidgets.IconLabel {
- icon: StudioTheme.Constants.warning_medium
- anchors.verticalCenter: parent.verticalCenter
- }
-
- Text {
- text: qsTr("Conversion from %1 to %2 may lead to data loss")
- .arg(typeComboBox.initialType)
- .arg(typeComboBox.currentText)
-
- width: warningBox.width - 20
-
- color: StudioTheme.Values.themeTextColor
- wrapMode: Text.WordWrap
- }
- }
- }
-
- Row {
- height: 40
- spacing: 5
-
- HelperWidgets.Button {
- id: editButton
-
- text: qsTr("Apply")
- enabled: nameTextField.text !== ""
- anchors.bottom: parent.bottom
-
- onClicked: root.accept()
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- anchors.bottom: parent.bottom
-
- onClicked: root.reject()
- }
- }
- }
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/IconTextButton.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/IconTextButton.qml
deleted file mode 100644
index fe9d094349c..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/IconTextButton.qml
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import StudioTheme as StudioTheme
-
-Rectangle {
- id: root
-
- required property string text
- required property string icon
-
- property alias tooltip: toolTip.text
- property StudioTheme.ControlStyle style: StudioTheme.Values.viewBarButtonStyle
- property int fontSize: StudioTheme.Values.baseFontSize
-
- implicitHeight: style.squareControlSize.height
- implicitWidth: rowAlign.width
-
- signal clicked()
-
- RowLayout {
- id: rowAlign
-
- anchors.verticalCenter: parent.verticalCenter
- spacing: StudioTheme.Values.inputHorizontalPadding
-
- Text {
- id: iconItem
-
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- text: root.icon
- color: StudioTheme.Values.themeTextColor
- font.family: StudioTheme.Constants.iconFont.family
- font.pixelSize: StudioTheme.Values.bigFont
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- leftPadding: StudioTheme.Values.inputHorizontalPadding
- }
-
- Text {
- id: textItem
-
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- text: root.text
- color: StudioTheme.Values.themeTextColor
- font.family: StudioTheme.Constants.font.family
- font.pixelSize: StudioTheme.Values.baseFontSize
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- rightPadding: StudioTheme.Values.inputHorizontalPadding
- }
- }
-
- MouseArea {
- id: mouseArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked: root.clicked()
- }
-
- ToolTip {
- id: toolTip
-
- visible: mouseArea.containsMouse && text !== ""
- delay: 1000
- }
-
- states: [
- State {
- name: "default"
- when: !mouseArea.pressed && !mouseArea.containsMouse
- PropertyChanges {
- target: root
- color: StudioTheme.Values.themeControlBackground
- }
- },
- State {
- name: "Pressed"
- when: mouseArea.pressed
- PropertyChanges {
- target: root
- color: StudioTheme.Values.themeControlBackgroundInteraction
- }
- },
- State {
- name: "Hovered"
- when: !mouseArea.pressed && mouseArea.containsMouse
- PropertyChanges {
- target: root
- color: StudioTheme.Values.themeControlBackgroundHover
- }
- }
- ]
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/ImportDialog.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/ImportDialog.qml
deleted file mode 100644
index 21a5e4e8e04..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/ImportDialog.qml
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import Qt.labs.platform as PlatformWidgets
-import HelperWidgets as HelperWidgets
-import StudioControls as StudioControls
-import StudioTheme as StudioTheme
-
-StudioControls.Dialog {
- id: root
-
- title: qsTr("Import a model")
- anchors.centerIn: parent
- closePolicy: Popup.CloseOnEscape
- modal: true
-
- required property var backendValue
-
- property bool fileExists: false
-
- onOpened: {
- collectionName.text = "Model"
- fileName.text = qsTr("Model path")
- fileName.selectAll()
- fileName.forceActiveFocus()
- }
-
- onRejected: {
- fileName.text = ""
- }
-
- function acceptIfIsValid() {
- if (btnImport.enabled)
- btnImport.onClicked()
- }
-
- RegularExpressionValidator {
- id: fileNameValidator
- regularExpression: /^(\w[^*><?|]*)[^/\\:*><?|]$/
- }
-
- PlatformWidgets.FileDialog {
- id: fileDialog
- nameFilters : ["All Model Files (*.json *.csv)",
- "JSON Files (*.json)",
- "Comma-Separated Values (*.csv)"]
-
- title: qsTr("Select a model file")
- fileMode: PlatformWidgets.FileDialog.OpenFile
- acceptLabel: qsTr("Open")
-
- onAccepted: fileName.text = fileDialog.file
- }
-
- Message {
- id: creationFailedDialog
-
- title: qsTr("Could not load the file")
- message: qsTr("An error occurred while trying to load the file.")
-
- onClosed: root.reject()
- }
-
- component Spacer: Item {
- implicitWidth: 1
- implicitHeight: StudioTheme.Values.columnGap
- }
-
- contentItem: ColumnLayout {
- spacing: 2
-
- Keys.onEnterPressed: root.acceptIfIsValid()
- Keys.onReturnPressed: root.acceptIfIsValid()
- Keys.onEscapePressed: root.reject()
-
- Text {
- text: qsTr("File name")
- color: StudioTheme.Values.themeTextColor
- }
-
- RowLayout {
- spacing: StudioTheme.Values.sectionRowSpacing
-
- Layout.fillWidth: true
-
- StudioControls.TextField {
- id: fileName
-
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- Layout.fillWidth: true
-
- actionIndicator.visible: false
- translationIndicator.visible: false
- validator: fileNameValidator
-
- onTextChanged: root.fileExists = root.backendValue.isValidUrlToImport(fileName.text)
- }
-
- HelperWidgets.Button {
- id: fileDialogButton
-
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
-
- text: qsTr("Open")
- onClicked: fileDialog.open()
- }
- }
-
- Spacer {}
-
- Text {
- text: qsTr("The model name")
- color: StudioTheme.Values.themeTextColor
- }
-
- StudioControls.TextField {
- id: collectionName
-
- Layout.fillWidth: true
-
- actionIndicator.visible: false
- translationIndicator.visible: false
- validator: RegularExpressionValidator {
- regularExpression: /^[\w ]+$/
- }
- }
-
- Spacer { implicitHeight: StudioTheme.Values.controlLabelGap }
-
- Label {
- id: fieldErrorText
-
- Layout.fillWidth: true
-
- color: StudioTheme.Values.themeTextColor
- wrapMode: Label.WordWrap
- padding: 5
-
- background: Rectangle {
- color: "transparent"
- border.width: StudioTheme.Values.border
- border.color: StudioTheme.Values.themeWarning
- }
-
- states: [
- State {
- name: "default"
- when: fileName.text !== "" && collectionName.text !== ""
-
- PropertyChanges {
- target: fieldErrorText
- text: ""
- visible: false
- }
- },
- State {
- name: "fileError"
- when: fileName.text === ""
-
- PropertyChanges {
- target: fieldErrorText
- text: qsTr("File name can not be empty")
- visible: true
- }
- },
- State {
- name: "collectionNameError"
- when: collectionName.text === ""
-
- PropertyChanges {
- target: fieldErrorText
- text: qsTr("The model name can not be empty")
- visible: true
- }
- }
- ]
- }
-
- Spacer {}
-
- StudioControls.CheckBox {
- id: csvFirstRowIsHeader
-
- visible: root.fileExists && fileName.text.endsWith(".csv")
- text: qsTr("Consider first row as headers")
- checked: true
- actionIndicatorVisible: false
- }
-
- Spacer {}
-
- RowLayout {
- spacing: StudioTheme.Values.sectionRowSpacing
-
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
-
- HelperWidgets.Button {
- id: btnImport
-
- text: qsTr("Import")
- enabled: root.fileExists && collectionName.text !== ""
-
- onClicked: {
- let collectionImported = root.backendValue.importFile(
- collectionName.text,
- fileName.text,
- csvFirstRowIsHeader.checked)
-
- if (collectionImported)
- root.accept()
- else
- creationFailedDialog.open()
- }
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- onClicked: root.reject()
- }
- }
- }
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/Message.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/Message.qml
deleted file mode 100644
index f6e7af4560c..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/Message.qml
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import HelperWidgets 2.0 as HelperWidgets
-import StudioControls 1.0 as StudioControls
-import StudioTheme as StudioTheme
-
-StudioControls.Dialog {
- id: root
-
- required property string message
-
- anchors.centerIn: parent
- closePolicy: Popup.CloseOnEscape
- implicitWidth: 300
- modal: true
-
- contentItem: ColumnLayout {
- spacing: StudioTheme.Values.sectionColumnSpacing
-
- Text {
- Layout.fillWidth: true
- text: root.message
- color: StudioTheme.Values.themeTextColor
- wrapMode: Text.WordWrap
- leftPadding: 10
- rightPadding: 10
- }
-
- HelperWidgets.Button {
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
-
- text: qsTr("Close")
- onClicked: root.reject()
- }
- }
-
- onOpened: root.forceActiveFocus()
-}
diff --git a/share/qtcreator/qmldesigner/collectionEditorQmlSource/NewCollectionDialog.qml b/share/qtcreator/qmldesigner/collectionEditorQmlSource/NewCollectionDialog.qml
deleted file mode 100644
index 6f567a775c6..00000000000
--- a/share/qtcreator/qmldesigner/collectionEditorQmlSource/NewCollectionDialog.qml
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Layouts
-import HelperWidgets as HelperWidgets
-import StudioControls as StudioControls
-import StudioTheme as StudioTheme
-import CollectionEditorBackend
-
-StudioControls.Dialog {
- id: root
-
- property bool nameExists: false
- readonly property bool isValid: collectionName.text !== "" && !root.nameExists
-
- title: qsTr("Add a new model")
-
- closePolicy: Popup.CloseOnEscape
- modal: true
-
- onOpened: {
- collectionName.text = CollectionEditorBackend.model.getUniqueCollectionName()
- }
-
- onRejected: {
- collectionName.text = ""
- }
-
- onAccepted: {
- if (root.isValid)
- root.CollectionEditorBackend.rootView.addCollectionToDataStore(collectionName.text);
- }
-
- ColumnLayout {
- spacing: 5
-
- NameField {
- text: qsTr("Name")
- }
-
- StudioControls.TextField {
- id: collectionName
-
- Layout.fillWidth: true
-
- actionIndicator.visible: false
- translationIndicator.visible: false
- validator: RegularExpressionValidator {
- regularExpression: /^[\w ]+$/
- }
-
- Keys.onEnterPressed: btnCreate.onClicked()
- Keys.onReturnPressed: btnCreate.onClicked()
- Keys.onEscapePressed: root.reject()
-
- onTextChanged: {
- root.nameExists = CollectionEditorBackend.model.collectionExists(collectionName.text)
- }
- }
-
- ErrorField {
- id: errorField
- text: {
- if (collectionName.text === "")
- return qsTr("Name can not be empty")
- else if (root.nameExists)
- return qsTr("Name '%1' already exists").arg(collectionName.text)
- else
- return ""
- }
- }
-
- Spacer {}
-
- Row {
- spacing: StudioTheme.Values.sectionRowSpacing
-
- HelperWidgets.Button {
- id: btnCreate
-
- text: qsTr("Create")
- enabled: root.isValid
- onClicked: root.accept()
- }
-
- HelperWidgets.Button {
- text: qsTr("Cancel")
- onClicked: root.reject()
- }
- }
- }
-
- component NameField: Text {
- color: StudioTheme.Values.themeTextColor
- font.family: StudioTheme.Constants.font.family
- font.pixelSize: StudioTheme.Values.baseIconFontSize
- }
-
- component ErrorField: Text {
- color: StudioTheme.Values.themeError
- font.family: StudioTheme.Constants.font.family
- font.pixelSize: StudioTheme.Values.baseIconFontSize
- }
-
- component Spacer: Item {
- width: 1
- height: StudioTheme.Values.columnGap
- }
-}
diff --git a/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialog.qml b/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialog.qml
index 965f31d21ab..299234127ad 100644
--- a/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialog.qml
+++ b/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialog.qml
@@ -11,6 +11,8 @@ StudioControls.PopupDialog {
property alias backend: form.backend
+ keepOpen: form.keepOpen
+
titleBar: Row {
spacing: 30 // TODO
anchors.fill: parent
@@ -43,6 +45,8 @@ StudioControls.PopupDialog {
ConnectionsDialogForm {
id: form
+ parentWindow: root.window
+
Connections {
target: root.backend
function onPopupShouldClose() {
diff --git a/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialogForm.qml b/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialogForm.qml
index 603903dbdd2..a799165375f 100644
--- a/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialogForm.qml
+++ b/share/qtcreator/qmldesigner/connectionseditor/ConnectionsDialogForm.qml
@@ -16,6 +16,9 @@ Column {
property var backend
+ property bool keepOpen: expressionDialogLoader.visible
+ property Window parentWindow: null
+
width: parent.width
spacing: root.verticalSpacing
@@ -267,10 +270,8 @@ Column {
horizontalAlignment: code.lineCount === 1 ? Text.AlignHCenter : Text.AlignLeft
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
-
}
-
Loader {
id: expressionDialogLoader
parent: editor
@@ -297,19 +298,19 @@ Column {
id: bindingEditor
onRejected: {
- hideWidget()
+ bindingEditor.hideWidget()
expressionDialogLoader.visible = false
}
onAccepted: {
backend.setNewSource(bindingEditor.text)
- hideWidget()
+ bindingEditor.hideWidget()
expressionDialogLoader.visible = false
}
}
}
- } // loader
- } // rect
- } //col 2
-}//col1
+ }
+ }
+ }
+}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml
index 2c98b58adc7..d3eb29563d2 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibrary.qml
@@ -115,25 +115,25 @@ Item {
width: parent.width
height: StudioTheme.Values.toolbarHeight
- Component.onCompleted: {
- var tabs = [
- { name: qsTr("Materials"), icon: StudioTheme.Constants.material_medium },
- { name: qsTr("Textures"), icon: StudioTheme.Constants.textures_medium },
- { name: qsTr("Environments"), icon: StudioTheme.Constants.languageList_medium },
- { name: qsTr("Effects"), icon: StudioTheme.Constants.effects }
- ];
- if (ContentLibraryBackend.rootView.userBundleEnabled())
- tabs.push({ name: qsTr("User Assets"), icon: StudioTheme.Constants.effects });
- tabBar.tabsModel = tabs;
- }
+ tabsModel: [
+ { name: qsTr("Materials"), icon: StudioTheme.Constants.material_medium },
+ { name: qsTr("Textures"), icon: StudioTheme.Constants.textures_medium },
+ { name: qsTr("Environments"), icon: StudioTheme.Constants.languageList_medium },
+ { name: qsTr("Effects"), icon: StudioTheme.Constants.effects },
+ { name: qsTr("User Assets"), icon: StudioTheme.Constants.effects } // TODO: update icon
+ ]
}
}
}
- UnimportBundleMaterialDialog {
+ UnimportBundleItemDialog {
id: confirmUnimportDialog
}
+ DeleteBundleItemDialog {
+ id: confirmDeleteDialog
+ }
+
StackLayout {
id: stackLayout
width: root.width
@@ -246,6 +246,12 @@ Item {
confirmUnimportDialog.open()
}
+ onRemoveFromContentLib: (bundleItem) => {
+ confirmDeleteDialog.targetBundleItem = bundleItem
+ confirmDeleteDialog.targetBundleLabel = "material"
+ confirmDeleteDialog.open()
+ }
+
onCountChanged: root.responsiveResize(stackLayout.width, stackLayout.height)
}
}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectContextMenu.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectContextMenu.qml
index 1e0bcf1eb40..008f99d4fa7 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectContextMenu.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectContextMenu.qml
@@ -12,7 +12,7 @@ StudioControls.Menu {
property var targetItem: null
- readonly property bool targetAvailable: targetItem && !ContentLibraryBackend.effectsModel.importerRunning
+ readonly property bool targetAvailable: targetItem && !ContentLibraryBackend.rootView.importerRunning
signal unimport(var bundleEff);
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectsView.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectsView.qml
index f6df99156bf..199f784db18 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectsView.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffectsView.qml
@@ -91,7 +91,7 @@ HelperWidgets.ScrollView {
id: repeater
model: bundleCategoryItems
- delegate: ContentLibraryEffect {
+ delegate: ContentLibraryItem {
width: root.cellWidth
height: root.cellHeight
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffect.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItem.qml
index b20cc71e156..e6e5cd05c30 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryEffect.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItem.qml
@@ -23,8 +23,8 @@ Item {
acceptedButtons: Qt.LeftButton | Qt.RightButton
onPressed: (mouse) => {
- if (mouse.button === Qt.LeftButton && !ContentLibraryBackend.effectsModel.importerRunning)
- ContentLibraryBackend.rootView.startDragEffect(modelData, mapToGlobal(mouse.x, mouse.y))
+ if (mouse.button === Qt.LeftButton && !ContentLibraryBackend.rootView.importerRunning)
+ ContentLibraryBackend.rootView.startDragItem(modelData, mapToGlobal(mouse.x, mouse.y))
else if (mouse.button === Qt.RightButton)
root.showContextMenu()
}
@@ -43,7 +43,7 @@ Item {
source: modelData.bundleItemIcon
cache: false
- Rectangle { // circular indicator for imported bundle effect
+ Rectangle { // circular indicator for imported bundle item
width: 10
height: 10
radius: 5
@@ -57,7 +57,7 @@ Item {
ToolTip {
visible: indicatorMouseArea.containsMouse
- text: qsTr("Effect is imported to project")
+ text: qsTr("Item is imported to the project")
delay: 1000
}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItemContextMenu.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItemContextMenu.qml
new file mode 100644
index 00000000000..6f505124300
--- /dev/null
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryItemContextMenu.qml
@@ -0,0 +1,71 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import StudioControls as StudioControls
+import StudioTheme as StudioTheme
+import ContentLibraryBackend
+
+StudioControls.Menu {
+ id: root
+
+ property var targetItem: null
+ property bool enableRemove: false // true: adds an option to remove targetItem
+
+ readonly property bool targetAvailable: targetItem && !ContentLibraryBackend.rootView.importerRunning
+
+ signal unimport();
+ signal addToProject()
+ signal applyToSelected(bool add)
+ signal removeFromContentLib()
+
+ function popupMenu(item = null)
+ {
+ root.targetItem = item
+
+ let isMaterial = root.targetItem.itemType === "material"
+ applyToSelectedReplace.visible = isMaterial
+ applyToSelectedAdd.visible = isMaterial
+
+ popup()
+ }
+
+ closePolicy: StudioControls.Menu.CloseOnEscape | StudioControls.Menu.CloseOnPressOutside
+
+ StudioControls.MenuItem {
+ id: applyToSelectedReplace
+ text: qsTr("Apply to selected (replace)")
+ height: visible ? implicitHeight : 0
+ enabled: root.targetAvailable && ContentLibraryBackend.rootView.hasModelSelection
+ onTriggered: root.applyToSelected(false)
+ }
+
+ StudioControls.MenuItem {
+ id: applyToSelectedAdd
+ text: qsTr("Apply to selected (add)")
+ height: visible ? implicitHeight : 0
+ enabled: root.targetAvailable && ContentLibraryBackend.rootView.hasModelSelection
+ onTriggered: root.applyToSelected(true)
+ }
+
+ StudioControls.MenuSeparator {}
+
+ StudioControls.MenuItem {
+ enabled: root.targetAvailable
+ text: qsTr("Add an instance to project")
+ onTriggered: root.addToProject()
+ }
+
+ StudioControls.MenuItem {
+ enabled: root.targetAvailable && root.targetItem.bundleItemImported
+ text: qsTr("Remove from project")
+ onTriggered: root.unimport()
+ }
+
+ StudioControls.MenuItem {
+ text: qsTr("Remove from Content Library")
+ visible: root.enableRemove && root.targetAvailable
+ height: visible ? implicitHeight : 0
+ onTriggered: root.removeFromContentLib()
+ }
+}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterial.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterial.qml
index 0e9fc4903eb..20ba17d8041 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterial.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterial.qml
@@ -16,8 +16,6 @@ Item {
// "failed"
property string downloadState: modelData.isDownloaded() ? "downloaded" : ""
- property bool importerRunning: false
-
signal showContextMenu()
signal addToProject()
@@ -32,7 +30,7 @@ Item {
acceptedButtons: Qt.LeftButton | Qt.RightButton
onPressed: (mouse) => {
- if (mouse.button === Qt.LeftButton && !root.importerRunning) {
+ if (mouse.button === Qt.LeftButton && !ContentLibraryBackend.rootView.importerRunning) {
if (root.downloadState === "downloaded")
ContentLibraryBackend.rootView.startDragMaterial(modelData, mapToGlobal(mouse.x, mouse.y))
} else if (mouse.button === Qt.RightButton && root.downloadState === "downloaded") {
@@ -74,7 +72,7 @@ Item {
color: "#00ff00"
border.color: "#555555"
border.width: 1
- visible: modelData.bundleMaterialImported
+ visible: modelData.bundleItemImported
ToolTip {
visible: indicatorMouseArea.containsMouse
@@ -99,7 +97,7 @@ Item {
pressColor: Qt.hsla(c.hslHue, c.hslSaturation, c.hslLightness, .4)
anchors.right: img.right
anchors.bottom: img.bottom
- enabled: !root.importerRunning
+ enabled: !ContentLibraryBackend.rootView.importerRunning
visible: root.downloadState === "downloaded"
&& (containsMouse || mouseArea.containsMouse)
@@ -186,7 +184,7 @@ Item {
baseUrl: modelData.bundleMaterialBaseWebUrl
files: modelData.bundleMaterialFiles
- targetDirPath: modelData.bundleMaterialParentPath
+ targetDirPath: modelData.bundleMaterialDirPath
onDownloadStarting: {
root.downloadState = "downloading"
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialContextMenu.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialContextMenu.qml
deleted file mode 100644
index b67ec311ef0..00000000000
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialContextMenu.qml
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
-
-import QtQuick 2.15
-import HelperWidgets 2.0
-import StudioControls 1.0 as StudioControls
-import StudioTheme 1.0 as StudioTheme
-
-StudioControls.Menu {
- id: root
-
- property var targetMaterial: null
- property bool hasModelSelection: false
- property bool importerRunning: false
-
- readonly property bool targetAvailable: targetMaterial && !importerRunning
-
- signal unimport();
- signal addToProject()
- signal applyToSelected(bool add)
-
- function popupMenu(targetMaterial = null)
- {
- this.targetMaterial = targetMaterial
- popup()
- }
-
- closePolicy: StudioControls.Menu.CloseOnEscape | StudioControls.Menu.CloseOnPressOutside
-
- StudioControls.MenuItem {
- text: qsTr("Apply to selected (replace)")
- enabled: root.targetAvailable && root.hasModelSelection
- onTriggered: root.applyToSelected(false)
- }
-
- StudioControls.MenuItem {
- text: qsTr("Apply to selected (add)")
- enabled: root.targetAvailable && root.hasModelSelection
- onTriggered: root.applyToSelected(true)
- }
-
- StudioControls.MenuSeparator {}
-
- StudioControls.MenuItem {
- enabled: root.targetAvailable
- text: qsTr("Add an instance to project")
-
- onTriggered: {
- root.addToProject()
- }
- }
-
- StudioControls.MenuItem {
- enabled: root.targetAvailable && root.targetMaterial.bundleMaterialImported
- text: qsTr("Remove from project")
-
- onTriggered: root.unimport()
- }
-}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialsView.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialsView.qml
index 9a0e33b8e5e..e9fca319736 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialsView.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryMaterialsView.qml
@@ -46,16 +46,13 @@ HelperWidgets.ScrollView {
}
Column {
- ContentLibraryMaterialContextMenu {
+ ContentLibraryItemContextMenu {
id: ctxMenu
- hasModelSelection: root.materialsModel.hasModelSelection
- importerRunning: root.materialsModel.importerRunning
+ onApplyToSelected: (add) => root.materialsModel.applyToSelected(ctxMenu.targetItem, add)
- onApplyToSelected: (add) => root.materialsModel.applyToSelected(ctxMenu.targetMaterial, add)
-
- onUnimport: root.unimport(ctxMenu.targetMaterial)
- onAddToProject: root.materialsModel.addToProject(ctxMenu.targetMaterial)
+ onUnimport: root.unimport(ctxMenu.targetItem)
+ onAddToProject: root.materialsModel.addToProject(ctxMenu.targetItem)
}
Repeater {
@@ -103,8 +100,6 @@ HelperWidgets.ScrollView {
width: root.cellWidth
height: root.cellHeight
- importerRunning: root.materialsModel.importerRunning
-
onShowContextMenu: ctxMenu.popupMenu(modelData)
onAddToProject: root.materialsModel.addToProject(modelData)
}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryTextureContextMenu.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryTextureContextMenu.qml
index f804f16d893..b1f690f10c9 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryTextureContextMenu.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryTextureContextMenu.qml
@@ -12,6 +12,7 @@ StudioControls.Menu {
property var targetTexture: null
property bool hasSceneEnv: false
+ property bool enableRemove: false // true: adds an option to remove targetTexture
property bool canUse3D: targetTexture && ContentLibraryBackend.rootView.hasQuick3DImport && ContentLibraryBackend.rootView.hasMaterialLibrary
@@ -32,13 +33,20 @@ StudioControls.Menu {
StudioControls.MenuItem {
text: qsTr("Add texture")
- enabled: canUse3D
+ enabled: root.canUse3D
onTriggered: ContentLibraryBackend.rootView.addTexture(root.targetTexture)
}
StudioControls.MenuItem {
text: qsTr("Add light probe")
- enabled: root.hasSceneEnv && canUse3D
+ enabled: root.hasSceneEnv && root.canUse3D
onTriggered: ContentLibraryBackend.rootView.addLightProbe(root.targetTexture)
}
+
+ StudioControls.MenuItem {
+ text: qsTr("Remove from Content Library")
+ visible: root.targetTexture && root.enableRemove
+ height: visible ? implicitHeight : 0
+ onTriggered: ContentLibraryBackend.userModel.removeTexture(root.targetTexture)
+ }
}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml
index 1288e14c2a7..cced9e5f095 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryUserView.qml
@@ -12,7 +12,7 @@ HelperWidgets.ScrollView {
id: root
clip: true
- interactive: !ctxMenuMaterial.opened && !ctxMenuTexture.opened
+ interactive: !ctxMenuItem.opened && !ctxMenuTexture.opened
&& !ContentLibraryBackend.rootView.isDragging && !HelperWidgets.Controller.contextMenuOpened
property real cellWidth: 100
@@ -31,9 +31,10 @@ HelperWidgets.ScrollView {
required property var searchBox
signal unimport(var bundleItem);
+ signal removeFromContentLib(var bundleItem);
function closeContextMenu() {
- ctxMenuMaterial.close()
+ ctxMenuItem.close()
ctxMenuTexture.close()
}
@@ -46,21 +47,22 @@ HelperWidgets.ScrollView {
}
Column {
- ContentLibraryMaterialContextMenu {
- id: ctxMenuMaterial
+ ContentLibraryItemContextMenu {
+ id: ctxMenuItem
- hasModelSelection: ContentLibraryBackend.userModel.hasModelSelection
- importerRunning: ContentLibraryBackend.userModel.importerRunning
+ enableRemove: true
- onApplyToSelected: (add) => ContentLibraryBackend.userModel.applyToSelected(ctxMenuMaterial.targetMaterial, add)
+ onApplyToSelected: (add) => ContentLibraryBackend.userModel.applyToSelected(ctxMenuItem.targetItem, add)
- onUnimport: root.unimport(ctxMenuMaterial.targetMaterial)
- onAddToProject: ContentLibraryBackend.userModel.addToProject(ctxMenuMaterial.targetMaterial)
+ onUnimport: root.unimport(ctxMenuItem.targetItem)
+ onAddToProject: ContentLibraryBackend.userModel.addToProject(ctxMenuItem.targetItem)
+ onRemoveFromContentLib: root.removeFromContentLib(ctxMenuItem.targetItem)
}
ContentLibraryTextureContextMenu {
id: ctxMenuTexture
+ enableRemove: true
hasSceneEnv: ContentLibraryBackend.texturesModel.hasSceneEnv
}
@@ -79,7 +81,7 @@ HelperWidgets.ScrollView {
bottomPadding: StudioTheme.Values.sectionPadding
caption: categoryName
- visible: categoryVisible
+ visible: categoryVisible && infoText.text === ""
category: "ContentLib_User"
function expandSection() {
@@ -90,8 +92,6 @@ HelperWidgets.ScrollView {
onCountChanged: root.assignMaxCount()
- property int numVisibleItem: 1 // initially, the tab is invisible so this will be 0
-
Grid {
width: section.width - section.leftPadding - section.rightPadding
spacing: StudioTheme.Values.sectionGridSpacing
@@ -110,14 +110,8 @@ HelperWidgets.ScrollView {
width: root.cellWidth
height: root.cellHeight
- importerRunning: ContentLibraryBackend.userModel.importerRunning
-
- onShowContextMenu: ctxMenuMaterial.popupMenu(modelData)
+ onShowContextMenu: ctxMenuItem.popupMenu(modelData)
onAddToProject: ContentLibraryBackend.userModel.addToProject(modelData)
-
- onVisibleChanged: {
- section.numVisibleItem += visible ? 1 : -1
- }
}
}
DelegateChoice {
@@ -129,6 +123,15 @@ HelperWidgets.ScrollView {
onShowContextMenu: ctxMenuTexture.popupMenu(modelData)
}
}
+ DelegateChoice {
+ roleValue: "item"
+ delegate: ContentLibraryItem {
+ width: root.cellWidth
+ height: root.cellHeight
+
+ onShowContextMenu: ctxMenuItem.popupMenu(modelData)
+ }
+ }
}
onCountChanged: root.assignMaxCount()
@@ -140,7 +143,7 @@ HelperWidgets.ScrollView {
color: StudioTheme.Values.themeTextColor
font.pixelSize: StudioTheme.Values.baseFontSize
leftPadding: 10
- visible: !searchBox.isEmpty() && section.numVisibleItem === 0
+ visible: infoText.text === "" && !searchBox.isEmpty() && categoryNoMatch
}
}
}
@@ -148,9 +151,7 @@ HelperWidgets.ScrollView {
Text {
id: infoText
text: {
- if (!ContentLibraryBackend.effectsModel.bundleExists)
- qsTr("User bundle couldn't be found.")
- else if (!ContentLibraryBackend.rootView.isQt6Project)
+ if (!ContentLibraryBackend.rootView.isQt6Project)
qsTr("<b>Content Library</b> is not supported in Qt5 projects.")
else if (!ContentLibraryBackend.rootView.hasQuick3DImport)
qsTr("To use <b>Content Library</b>, first add the QtQuick3D module in the <b>Components</b> view.")
@@ -163,7 +164,7 @@ HelperWidgets.ScrollView {
font.pixelSize: StudioTheme.Values.baseFontSize
topPadding: 10
leftPadding: 10
- visible: ContentLibraryBackend.effectsModel.isEmpty
+ visible: infoText.text !== ""
}
}
}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/DeleteBundleItemDialog.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/DeleteBundleItemDialog.qml
new file mode 100644
index 00000000000..d8f6551ae59
--- /dev/null
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/DeleteBundleItemDialog.qml
@@ -0,0 +1,65 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import HelperWidgets
+import StudioControls as StudioControls
+import StudioTheme as StudioTheme
+import ContentLibraryBackend
+
+StudioControls.Dialog {
+ id: root
+
+ property var targetBundleItem
+ property var targetBundleModel
+ property string targetBundleLabel // "effect" or "material"
+
+ title: qsTr("Remove bundle %1").arg(root.targetBundleLabel)
+ anchors.centerIn: parent
+ closePolicy: Popup.CloseOnEscape
+ implicitWidth: 300
+ modal: true
+
+ onOpened: warningText.forceActiveFocus()
+
+ contentItem: Column {
+ spacing: 20
+ width: parent.width
+
+ Text {
+ id: warningText
+
+ text: qsTr("Are you sure you? The action cannot be undone")
+ color: StudioTheme.Values.themeTextColor
+ wrapMode: Text.WordWrap
+ anchors.right: parent.right
+ anchors.left: parent.left
+ leftPadding: 10
+ rightPadding: 10
+
+ Keys.onEnterPressed: btnRemove.onClicked()
+ Keys.onReturnPressed: btnRemove.onClicked()
+ }
+
+ Row {
+ anchors.right: parent.right
+ Button {
+ id: btnRemove
+
+ text: qsTr("Remove")
+
+ onClicked: {
+ ContentLibraryBackend.userModel.removeFromContentLib(root.targetBundleItem)
+ root.accept()
+ }
+ }
+
+ Button {
+ text: qsTr("Cancel")
+ onClicked: root.reject()
+ }
+ }
+ }
+}
diff --git a/share/qtcreator/qmldesigner/contentLibraryQmlSource/UnimportBundleMaterialDialog.qml b/share/qtcreator/qmldesigner/contentLibraryQmlSource/UnimportBundleItemDialog.qml
index 4385e3bf82e..305e1018e37 100644
--- a/share/qtcreator/qmldesigner/contentLibraryQmlSource/UnimportBundleMaterialDialog.qml
+++ b/share/qtcreator/qmldesigner/contentLibraryQmlSource/UnimportBundleItemDialog.qml
@@ -13,8 +13,8 @@ StudioControls.Dialog {
id: root
property var targetBundleItem
- property var targetBundleLabel // "effect" or "material"
property var targetBundleModel
+ property string targetBundleLabel // "effect" or "material"
title: qsTr("Bundle %1 might be in use").arg(root.targetBundleLabel)
anchors.centerIn: parent
diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerTopBar.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerTopBar.qml
index 8f98ae25b25..799dbeeddc3 100644
--- a/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerTopBar.qml
+++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/EffectComposerTopBar.qml
@@ -89,8 +89,8 @@ Rectangle {
2. Adjust the effect nodes properties
3. Change the order of the effects, if you like
4. See the preview
-5. Save in the library, if you wish to reuse the effect later") // TODO: revise with doc engineer
+5. Save in the assets library, if you wish to reuse the effect later")
- onClicked: Qt.openUrlExternally("https://doc.qt.io/qtdesignstudio/qt-using-effect-maker-effects.html")
+ onClicked: Qt.openUrlExternally("https://doc.qt.io/qtdesignstudio/qtquick-effect-composer-view.html")
}
}
diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/ValueFloat.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/ValueFloat.qml
index 969d7e29492..6b723a9bc59 100644
--- a/share/qtcreator/qmldesigner/effectComposerQmlSources/ValueFloat.qml
+++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/ValueFloat.qml
@@ -42,8 +42,9 @@ Row {
to: uniformMaxValue
value: uniformValue
onMoved: {
- uniformValue = value
- spinBox.value = value // binding isn't working for this property so update it
+ let fixedValue = Number.parseFloat(value).toFixed(slider.decimals)
+ uniformValue = fixedValue
+ spinBox.value = fixedValue // binding isn't working for this property so update it
}
}
}
diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml
index b01aa7d2a3c..248e07bf6c4 100644
--- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml
+++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/MaterialBrowserContextMenu.qml
@@ -128,12 +128,10 @@ StudioControls.Menu {
onTriggered: materialBrowserModel.addNewMaterial()
}
- Component.onCompleted: {
- if (MaterialBrowserBackend.rootView.userBundleEnabled()) {
- var menuItem = Qt.createQmlObject("import StudioControls as StudioControls; StudioControls.MenuItem {}", root)
- menuItem.text = qsTr("Add to Content Library")
- menuItem.onTriggered.connect(MaterialBrowserBackend.rootView.addMaterialToContentLibrary)
- root.addItem(menuItem)
- }
+ StudioControls.MenuItem {
+ text: qsTr("Add to Content Library")
+ enabled: !materialBrowserModel.selectedMaterialIsComponent
+
+ onTriggered: MaterialBrowserBackend.rootView.addMaterialToContentLibrary()
}
}
diff --git a/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorPane.qml b/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorPane.qml
index dde7ecd0dc2..0ab7e59d01f 100644
--- a/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorPane.qml
+++ b/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorPane.qml
@@ -4,8 +4,8 @@
import QtQuick
import HelperWidgets
-PropertyEditorPane {
- id: itemPane
+Item {
+ id: root
width: 420
height: 420
@@ -17,63 +17,75 @@ PropertyEditorPane {
// invoked from C++ to refresh material preview image
function refreshPreview()
{
- topSection.refreshPreview()
+ itemPane.headerItem.refreshPreview()
}
// Called from C++ to close context menu on focus out
function closeContextMenu()
{
- topSection.closeContextMenu()
+ itemPane.headerItem.closeContextMenu()
Controller.closeContextMenu()
}
// Called from C++ to initialize preview menu checkmarks
function initPreviewData(env, model)
{
- topSection.previewEnv = env;
- topSection.previewModel = model
+ itemPane.headerItem.previewEnv = env
+ itemPane.headerItem.previewModel = model
}
- MaterialEditorTopSection {
- id: topSection
+ MaterialEditorToolBar {
+ id: toolbar
- onToolBarAction: (action) => itemPane.toolBarAction(action)
- onPreviewEnvChanged: itemPane.previewEnvChanged(previewEnv)
- onPreviewModelChanged: itemPane.previewModelChanged(previewModel)
+ width: parent.width
+
+ onToolBarAction: (action) => root.toolBarAction(action)
}
- Item { width: 1; height: 10 }
+ PropertyEditorPane {
+ id: itemPane
- DynamicPropertiesSection {
- propertiesModel: MaterialEditorDynamicPropertiesModel {}
- }
+ anchors.top: toolbar.bottom
+ anchors.bottom: parent.bottom
+ width: parent.width
+
+ clip: true
- Loader {
- id: specificsTwo
+ headerComponent: MaterialEditorTopSection {
+ onPreviewEnvChanged: root.previewEnvChanged(previewEnv)
+ onPreviewModelChanged: root.previewModelChanged(previewModel)
+ }
+
+ DynamicPropertiesSection {
+ propertiesModel: MaterialEditorDynamicPropertiesModel {}
+ }
- property string theSource: specificQmlData
+ Loader {
+ id: specificsTwo
- anchors.left: parent.left
- anchors.right: parent.right
- visible: specificsTwo.theSource !== ""
- sourceComponent: specificQmlComponent
+ property string theSource: specificQmlData
- onTheSourceChanged: {
- specificsTwo.active = false
- specificsTwo.active = true
+ width: parent.width
+ visible: specificsTwo.theSource !== ""
+ sourceComponent: specificQmlComponent
+
+ onTheSourceChanged: {
+ specificsTwo.active = false
+ specificsTwo.active = true
+ }
}
- }
- Item {
- width: 1
- height: 10
- visible: specificsTwo.visible
- }
+ Item { // spacer
+ width: 1
+ height: 10
+ visible: specificsTwo.visible
+ }
- Loader {
- id: specificsOne
- anchors.left: parent.left
- anchors.right: parent.right
- source: specificsUrl
+ Loader {
+ id: specificsOne
+ anchors.left: parent.left
+ anchors.right: parent.right
+ source: specificsUrl
+ }
}
}
diff --git a/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorTopSection.qml b/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorTopSection.qml
index 23311636bc2..d60c98933b6 100644
--- a/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorTopSection.qml
+++ b/share/qtcreator/qmldesigner/materialEditorQmlSources/MaterialEditorTopSection.qml
@@ -11,10 +11,11 @@ import StudioTheme as StudioTheme
Column {
id: root
- signal toolBarAction(int action)
-
property string previewEnv
property string previewModel
+
+ property real __horizontalSpacing: 5
+
property StudioTheme.ControlStyle buttonStyle: StudioTheme.ViewBarButtonStyle {
//This is how you can override stuff from the control styles
controlSize: Qt.size(previewOptions.width, previewOptions.width)
@@ -37,14 +38,7 @@ Column {
anchors.left: parent.left
anchors.right: parent.right
- MaterialEditorToolBar {
- width: root.width
-
- onToolBarAction: (action) => root.toolBarAction(action)
- }
-
- Item { width: 1; height: 10 } // spacer
-
+ Item { width: 1; height: 5 } // spacer
StudioControls.Menu {
id: modelMenu
@@ -129,6 +123,19 @@ Column {
width: parent.width
height: previewRect.height
+ StudioControls.AbstractButton {
+ id: pinButton
+
+ x: root.__horizontalSpacing
+
+ style: root.buttonStyle
+ iconSize: StudioTheme.Values.bigFont
+ buttonIcon: pinButton.checked ? StudioTheme.Constants.pin : StudioTheme.Constants.unpin
+ checkable: true
+ checked: itemPane.headerDocked
+ onCheckedChanged: itemPane.headerDocked = pinButton.checked
+ }
+
Rectangle {
id: previewRect
anchors.horizontalCenter: parent.horizontalCenter
@@ -153,6 +160,7 @@ Column {
height: previewRect.height
anchors.top: previewRect.top
anchors.left: previewRect.right
+ anchors.leftMargin: root.__horizontalSpacing
Column {
anchors.horizontalCenter: parent.horizontalCenter
@@ -172,7 +180,6 @@ Column {
}
}
}
-
}
HelperWidgets.Section {
@@ -214,6 +221,7 @@ Column {
model: possibleTypes
showExtendedFunctionButton: false
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ enabled: possibleTypes.length > 1
onActivated: changeTypeName(currentValue)
}
diff --git a/share/qtcreator/qmldesigner/projectstorage/fake.qmltypes b/share/qtcreator/qmldesigner/projectstorage/fake.qmltypes
index f6f21596899..60096cd7900 100644
--- a/share/qtcreator/qmldesigner/projectstorage/fake.qmltypes
+++ b/share/qtcreator/qmldesigner/projectstorage/fake.qmltypes
@@ -318,4 +318,13 @@ Component {
Component {
name: "QScxmlError"
}
+
+Component {
+ name: "QList<QQuickLayoutItemProxy*>"
+}
+
+Component {
+ name: "VertexColorMaskFlags"
+}
+
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/BusyIndicatorSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/BusyIndicatorSpecifics.qml
new file mode 100644
index 00000000000..2cc82d7fabd
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/BusyIndicatorSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.BusyIndicatorSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ButtonSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ButtonSpecifics.qml
new file mode 100644
index 00000000000..ea32a005941
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ButtonSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ButtonSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckBoxSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckBoxSpecifics.qml
new file mode 100644
index 00000000000..c38b75b327b
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckBoxSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.CheckBoxSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckDelegateSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckDelegateSpecifics.qml
new file mode 100644
index 00000000000..939433f5eaf
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/CheckDelegateSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.CheckDelegateSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ComboBoxSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ComboBoxSpecifics.qml
new file mode 100644
index 00000000000..13ad9346d40
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ComboBoxSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ComboBoxSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ControlSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ControlSpecifics.qml
new file mode 100644
index 00000000000..07cc704a071
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ControlSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ControlSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DelayButtonSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DelayButtonSpecifics.qml
new file mode 100644
index 00000000000..3818cebc33b
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DelayButtonSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.DelayButtonSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialSpecifics.qml
new file mode 100644
index 00000000000..c62608cd004
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.DialSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialogSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialogSpecifics.qml
new file mode 100644
index 00000000000..237cb418622
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DialogSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.DialogSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DrawerSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DrawerSpecifics.qml
new file mode 100644
index 00000000000..d5cf0a482eb
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/DrawerSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.DrawerSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/FrameSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/FrameSpecifics.qml
new file mode 100644
index 00000000000..ac1881a865d
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/FrameSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.FrameSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/GroupBoxSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/GroupBoxSpecifics.qml
new file mode 100644
index 00000000000..3067af76405
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/GroupBoxSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.GroupBoxSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ItemDelegateSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ItemDelegateSpecifics.qml
new file mode 100644
index 00000000000..6c7f5dc8127
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ItemDelegateSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ItemDelegateSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/LabelSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/LabelSpecifics.qml
new file mode 100644
index 00000000000..6c826e46ead
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/LabelSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.LabelSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageIndicatorSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageIndicatorSpecifics.qml
new file mode 100644
index 00000000000..7437975f960
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageIndicatorSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.PageIndicatorSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageSpecifics.qml
new file mode 100644
index 00000000000..16e8b51cb52
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PageSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.PageSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PaneSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PaneSpecifics.qml
new file mode 100644
index 00000000000..dd07a3cf7fa
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PaneSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.PaneSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PopupSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PopupSpecifics.qml
new file mode 100644
index 00000000000..788b2a43593
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/PopupSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.PopupSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ProgressBarSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ProgressBarSpecifics.qml
new file mode 100644
index 00000000000..a58f9e2f360
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ProgressBarSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ProgressBarSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioButtonSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioButtonSpecifics.qml
new file mode 100644
index 00000000000..fc2500dd1b7
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioButtonSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.RadioButtonSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioDelegateSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioDelegateSpecifics.qml
new file mode 100644
index 00000000000..d07f17b7e85
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RadioDelegateSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.RadioDelegateSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RangeSliderSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RangeSliderSpecifics.qml
new file mode 100644
index 00000000000..14e493e69e9
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RangeSliderSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.RangeSliderSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RoundButtonSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RoundButtonSpecifics.qml
new file mode 100644
index 00000000000..5bd8776f624
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/RoundButtonSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.RoundButtonSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ScrollViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ScrollViewSpecifics.qml
new file mode 100644
index 00000000000..2af497fcb71
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ScrollViewSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ScrollViewSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SliderSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SliderSpecifics.qml
new file mode 100644
index 00000000000..846ca8bb14f
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SliderSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.SliderSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SpinBoxSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SpinBoxSpecifics.qml
new file mode 100644
index 00000000000..f75983a9fad
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SpinBoxSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.SpinBoxSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/StackViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/StackViewSpecifics.qml
new file mode 100644
index 00000000000..593cba24d75
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/StackViewSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.StackViewSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeDelegateSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeDelegateSpecifics.qml
new file mode 100644
index 00000000000..40648a34313
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeDelegateSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.SwipeDelegateSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeViewSpecifics.qml
new file mode 100644
index 00000000000..eaf769135c1
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwipeViewSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.SwipeViewSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchDelegateSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchDelegateSpecifics.qml
new file mode 100644
index 00000000000..cba96b930f1
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchDelegateSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.SwitchDelegateSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchSpecifics.qml
new file mode 100644
index 00000000000..e6647f4f7d4
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/SwitchSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.SwitchSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabBarSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabBarSpecifics.qml
new file mode 100644
index 00000000000..c23580a25e9
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabBarSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.TabBarSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabButtonSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabButtonSpecifics.qml
new file mode 100644
index 00000000000..dc5bcb36e2e
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TabButtonSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.TabButtonSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextAreaSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextAreaSpecifics.qml
new file mode 100644
index 00000000000..a9871612a97
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextAreaSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.TextAreaSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextFieldSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextFieldSpecifics.qml
new file mode 100644
index 00000000000..fbcac9c3898
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TextFieldSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.TextFieldSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolBarSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolBarSpecifics.qml
new file mode 100644
index 00000000000..63d1f179eb0
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolBarSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ToolBarSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolButtonSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolButtonSpecifics.qml
new file mode 100644
index 00000000000..98aabdd2742
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolButtonSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ToolButtonSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolSeparatorSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolSeparatorSpecifics.qml
new file mode 100644
index 00000000000..060808a2a6d
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/ToolSeparatorSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.ToolSeparatorSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TumblerSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TumblerSpecifics.qml
new file mode 100644
index 00000000000..5ca82806427
--- /dev/null
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/Controls/Basic/TumblerSpecifics.qml
@@ -0,0 +1,6 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+import ".." as Original
+
+Original.TumblerSpecifics {}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/EffectsSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/EffectsSection.qml
index 2b7543f1d99..3e9a79f8e04 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/EffectsSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/EffectsSection.qml
@@ -33,7 +33,7 @@ Section {
if (!root.hasDesignerEffect)
return
- root.model = modelNodeBackend.allChildren(effect[0]) //ids for all effects
+ root.model = modelNodeBackend.allChildren(effect[0]) // ids for all effects
}
leftPadding: 0
@@ -50,6 +50,8 @@ Section {
}
SectionLayout {
+ x: StudioTheme.Values.sectionLeftPadding
+
PropertyLabel {}
SecondColumnLayout {
@@ -61,7 +63,7 @@ Section {
width: StudioTheme.Values.singleControlColumnWidth
buttonIcon: root.hasDesignerEffect ? qsTr("Remove Effects") : qsTr("Add Effects")
iconFont: StudioTheme.Constants.font
- tooltip: qsTr("Adds a note with a title to explain the component.")
+ tooltip: qsTr("Adds visual effects on the component.")
onClicked: {
if (root.hasDesignerEffect) {
root.effectNodeWrapper.deleteModelNode()
@@ -77,6 +79,7 @@ Section {
PropertyLabel {
text: qsTr("Visible")
+ tooltip: qsTr("Toggles the visibility of visual effects on the component.")
visible: root.hasDesignerEffect
}
@@ -192,7 +195,10 @@ Section {
SectionLayout {
- PropertyLabel { text: qsTr("Visible") }
+ PropertyLabel {
+ text: qsTr("Visible")
+ tooltip: qsTr("Toggles the visibility of the <b>Layer Blur</b> on the component.")
+ }
SecondColumnLayout {
CheckBox {
@@ -204,7 +210,10 @@ Section {
ExpandingSpacer {}
}
- PropertyLabel { text: qsTr("Blur") }
+ PropertyLabel {
+ text: qsTr("Blur")
+ tooltip: qsTr("Sets the intensity of the <b>Layer Blur</b> on the component.")
+ }
SecondColumnLayout {
SpinBox {
@@ -232,7 +241,10 @@ Section {
SectionLayout {
- PropertyLabel { text: qsTr("Visible") }
+ PropertyLabel {
+ text: qsTr("Visible")
+ tooltip: qsTr("Toggles the visibility of blur on the selected background component.")
+ }
SecondColumnLayout {
CheckBox {
@@ -244,7 +256,12 @@ Section {
ExpandingSpacer {}
}
- PropertyLabel { text: qsTr("Blur") }
+ PropertyLabel {
+ text: qsTr("Blur")
+ tooltip: qsTr("Sets the intensity of blur on the selected background component.\n"
+ + "The foreground component should be transparent, and the background "
+ + "component should be opaque.")
+ }
SecondColumnLayout {
SpinBox {
@@ -258,7 +275,12 @@ Section {
ExpandingSpacer {}
}
- PropertyLabel { text: qsTr("Background") }
+ PropertyLabel {
+ text: qsTr("Background")
+ tooltip: qsTr("Sets a component as the background of a transparent component."
+ + "The <b>Background Blur</b> works only on this component. The component should "
+ + "be solid.")
+ }
SecondColumnLayout {
ItemFilterComboBox {
@@ -362,7 +384,10 @@ Section {
id: controlContainer
property bool isDropShadow: shadowComboBox.currentValue === "DesignDropShadow"
- PropertyLabel { text: qsTr("Visible") }
+ PropertyLabel {
+ text: qsTr("Visible")
+ tooltip: qsTr("Toggles the visibility of the component shadow.")
+ }
SecondColumnLayout {
CheckBox {
@@ -374,7 +399,11 @@ Section {
ExpandingSpacer {}
}
- PropertyLabel { text: qsTr("Blur") }
+ PropertyLabel {
+ text: qsTr("Blur")
+ tooltip: qsTr("Sets the softness of the component shadow. A larger value"
+ + " causes the edges of the shadow to appear more blurry.")
+ }
SecondColumnLayout {
SpinBox {
@@ -390,6 +419,9 @@ Section {
PropertyLabel {
text: qsTr("Spread")
+ tooltip: modelNodeBackend.isInstanceOf("Rectangle")
+ ? qsTr("Resizes the base shadow of the component by pixels.")
+ : qsTr("Only supported for Rectangles.")
enabled: modelNodeBackend.isInstanceOf("Rectangle")
}
@@ -408,7 +440,7 @@ Section {
PropertyLabel {
text: qsTr("Color")
- tooltip: qsTr("Sets the color.")
+ tooltip: qsTr("Sets the color of the shadow.")
}
ColorEditor {
@@ -416,7 +448,11 @@ Section {
supportGradient: false
}
- PropertyLabel { text: qsTr("Offset") }
+ PropertyLabel {
+ text: qsTr("Offset")
+ tooltip: qsTr("Moves the shadow with respect to the component in "
+ + "X and Y coordinates by pixels.")
+ }
SecondColumnLayout {
SpinBox {
@@ -458,6 +494,7 @@ Section {
PropertyLabel {
visible: controlContainer.isDropShadow
text: qsTr("Show behind")
+ tooltip: qsTr("Toggles the visibility of the shadow behind a transparent component.")
}
SecondColumnLayout {
@@ -483,6 +520,7 @@ Section {
}
SectionLayout {
+ x: StudioTheme.Values.sectionLeftPadding
visible: root.hasDesignerEffect
PropertyLabel {}
@@ -496,7 +534,7 @@ Section {
width: StudioTheme.Values.singleControlColumnWidth
buttonIcon: qsTr("Add Shadow Effect")
iconFont: StudioTheme.Constants.font
- tooltip: qsTr("Adds a Design Drop Shadow.")
+ tooltip: qsTr("Adds <b>Drop Shadow</b> or <b>Inner Shadow</b> effects to a component.")
onClicked: {
modelNodeBackend.createModelNode(root.effectNode,
"effects",
@@ -504,6 +542,8 @@ Section {
root.invalidate()
}
}
+
+ ExpandingSpacer {}
}
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml
index 4b4d2b8dc6a..cc8247d7063 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml
@@ -38,6 +38,10 @@ SecondColumnLayout {
property alias showHexTextField: hexTextField.visible
property bool shapeGradients: false
+
+ //for now, gradients on MCUs are limited to Basic and Shape Linear Gradient:
+ property bool mcuGradients: false
+
property color originalColor
property bool isVector3D: false
@@ -219,7 +223,10 @@ SecondColumnLayout {
function open() {
popupDialog.ensureLoader()
+
popupDialog.show(preview)
+
+ popupDialog.loaderItem.aboutToBeShown() //need it for now
}
function determineActiveColorMode() {
@@ -235,9 +242,11 @@ SecondColumnLayout {
sourceComponent: ColorEditorPopup {
shapeGradients: colorEditor.shapeGradients
+ mcuGradients: colorEditor.mcuGradients
supportGradient: colorEditor.supportGradient
width: popupDialog.contentWidth
visible: popupDialog.visible
+ parentWindow: popupDialog.window
}
onLoaded: {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditorPopup.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditorPopup.qml
index 22be367c378..41f2c433fa9 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditorPopup.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditorPopup.qml
@@ -12,10 +12,20 @@ import QtQuickDesignerColorPalette
Column {
id: root
+ // There seems to be an issue on Windows and MacOS with ColorPickers
+ // Canvases not being painted on initialization
+ // because ColorEditorPopup is invisible at init time,
+ // so we use this signal to explicitly pass visibility status
+ signal aboutToBeShown
+
property bool eyeDropperActive: ColorPaletteBackend.eyeDropperActive
property bool supportGradient: false
property bool shapeGradients: false
+
+ //for now, gradients on MCUs are limited to Basic and Shape Linear Gradient:
+ property bool mcuGradients: false
+
property alias gradientLine: gradientLine
property alias popupHexTextField: popupHexTextField
property alias gradientPropertyName: root.gradientModel.gradientPropertyName
@@ -23,6 +33,8 @@ Column {
property alias gradientModel: gradientModel
+ property Window parentWindow: null
+
property bool isInValidState: false
readonly property real twoColumnWidth: (colorColumn.width - StudioTheme.Values.controlGap) * 0.5
@@ -224,12 +236,12 @@ Column {
ceMode.items.append({
value: "RadialGradient",
text: qsTr("Radial"),
- enabled: root.supportGradient && root.shapeGradients
+ enabled: root.supportGradient && root.shapeGradients && !root.mcuGradients
})
ceMode.items.append({
value: "ConicalGradient",
text: qsTr("Conical"),
- enabled: root.supportGradient && root.shapeGradients
+ enabled: root.supportGradient && root.shapeGradients && !root.mcuGradients
})
}
@@ -429,6 +441,13 @@ Column {
hsvValueSpinBox.value = colorPicker.value
hsvAlphaSpinBox.value = colorPicker.alpha
}
+
+ Connections {
+ target: root
+ onAboutToBeShown: {
+ colorPicker.aboutToBeShown()
+ }
+ }
}
Column {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml
index 88a0debae80..e0c70ff946b 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/DynamicPropertiesSection.qml
@@ -528,6 +528,8 @@ Section {
return intEditor
if (propertyType == "real")
return realEditor
+ if (propertyType == "double")
+ return realEditor
if (propertyType == "string")
return stringEditor
if (propertyType == "bool")
@@ -708,7 +710,7 @@ Section {
StudioControls.ComboBox {
id: comboBox
actionIndicator.visible: false
- model: ["int", "real", "color", "string", "bool", "url", "alias", "signal",
+ model: ["int", "real", "double", "color", "string", "bool", "url", "alias", "signal",
"TextureInput", "vector2d", "vector3d", "vector4d"]
width: cePopup.itemWidth
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ExtendedFunctionLogic.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ExtendedFunctionLogic.qml
index 76e6bd8f094..8a8c8c33ce6 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ExtendedFunctionLogic.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ExtendedFunctionLogic.qml
@@ -103,7 +103,7 @@ Item {
StudioControls.MenuItem {
text: qsTr("Insert Keyframe")
enabled: hasActiveTimeline
- onTriggered: insertKeyframe(backendValue.name)
+ onTriggered: backendValue.insertKeyframe()
}
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/PropertyEditorPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/PropertyEditorPane.qml
index 7046ca48e14..309d815d7aa 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/PropertyEditorPane.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/PropertyEditorPane.qml
@@ -19,30 +19,83 @@ Rectangle {
default property alias content: mainColumn.children
property alias scrollView: mainScrollView
+ property bool headerDocked: false
+ readonly property Item headerItem: headerDocked ? dockedHeaderLoader.item : undockedHeaderLoader.item
+
+ property Component headerComponent: null
+
// Called from C++ to close context menu on focus out
function closeContextMenu() {
Controller.closeContextMenu()
}
+ Loader {
+ id: dockedHeaderLoader
+
+ anchors.top: itemPane.top
+ z: parent.z + 1
+ height: item ? item.implicitHeight : 0
+ width: parent.width
+
+ active: itemPane.headerDocked
+ sourceComponent: itemPane.headerComponent
+
+ HeaderBackground{}
+ }
+
MouseArea {
anchors.fill: parent
- onClicked: forceActiveFocus()
+ onClicked: itemPane.forceActiveFocus()
}
HelperWidgets.ScrollView {
id: mainScrollView
- //clip: true
- anchors.fill: parent
+
+ clip: true
+ anchors {
+ top: dockedHeaderLoader.bottom
+ bottom: itemPane.bottom
+ left: itemPane.left
+ right: itemPane.right
+ }
interactive: !Controller.contextMenuOpened
- Column {
- id: mainColumn
- y: -1
- width: itemPane.width
+ ColumnLayout {
+ spacing: 2
+ width: mainScrollView.width
- onWidthChanged: StudioTheme.Values.responsiveResize(itemPane.width)
- Component.onCompleted: StudioTheme.Values.responsiveResize(itemPane.width)
+ Loader {
+ id: undockedHeaderLoader
+
+ Layout.fillWidth: true
+ Layout.preferredHeight: item ? item.implicitHeight : 0
+
+ active: !itemPane.headerDocked
+ sourceComponent: itemPane.headerComponent
+
+ HeaderBackground{}
+ }
+
+ Column {
+ id: mainColumn
+
+ Layout.fillWidth: true
+
+ onWidthChanged: StudioTheme.Values.responsiveResize(itemPane.width)
+ Component.onCompleted: StudioTheme.Values.responsiveResize(itemPane.width)
+ }
}
}
+
+ component HeaderBackground: Rectangle {
+ anchors.fill: parent
+ anchors.leftMargin: -StudioTheme.Values.border
+ anchors.rightMargin: -StudioTheme.Values.border
+ z: parent.z - 1
+
+ color: StudioTheme.Values.themeToolbarBackground
+ border.color: StudioTheme.Values.themePanelBackground
+ border.width: StudioTheme.Values.border
+ }
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml
index 0e42515c76c..8dadd1db2c2 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/UrlChooser.qml
@@ -451,7 +451,7 @@ Row {
// Prefer hiding generated component files rather than other project files
let listIndex = nameMap.get(item.fileName)
let absPath = comboBox.listModel.get(listIndex).absoluteFilePath
- if (absPath.includes("/GeneratedComponents/") || absPath.includes("/asset_imports/")) {
+ if (absPath.includes("/Generated/") || absPath.includes("/asset_imports/")) {
comboBox.listModel.set(listIndex, {
absoluteFilePath: item.absoluteFilePath,
relativeFilePath: item.relativeFilePath,
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml
index 573b78012f3..7e565e3a47d 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml
@@ -14,7 +14,6 @@ T.CheckBox {
// This property is used to indicate the global hover state
property bool hover: control.hovered && control.enabled
- property bool edit: false
property alias actionIndicatorVisible: actionIndicator.visible
property real __actionIndicatorWidth: control.style.actionIndicatorSize.width
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/MenuItem.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/MenuItem.qml
index 07265e41a73..28372e41be1 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/MenuItem.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/MenuItem.qml
@@ -9,7 +9,7 @@ import StudioTheme 1.0 as StudioTheme
T.MenuItem {
id: control
- property alias shortcut: itemAction.shortcut
+ property alias shortcut: shortcutObserver.shortcutWorkaround
property StudioTheme.ControlStyle style: StudioTheme.Values.controlStyle
@@ -24,9 +24,6 @@ T.MenuItem {
padding: 0
spacing: 0
horizontalPadding: control.style.contextMenuHorizontalPadding
- action: Action {
- id: itemAction
- }
contentItem: Item {
Text {
@@ -41,16 +38,23 @@ T.MenuItem {
Text {
id: shortcutLabel
+
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
text: shortcutObserver.nativeText
+ ? shortcutObserver.nativeText
+ : control.action
+ ? control.action.fakeShortcut ? control.action.fakeShortcut : ""
+ : ""
font: control.font
color: textLabel.color
Shortcut {
id: shortcutObserver
- property int shortcutWorkaround: control.shortcut ?? 0
+
+ property int shortcutWorkaround: 0
sequence: shortcutObserver.shortcutWorkaround
+ enabled: false
}
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/PopupDialog.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/PopupDialog.qml
index 40c35df27c7..821ba3a8491 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/PopupDialog.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/PopupDialog.qml
@@ -104,7 +104,7 @@ QtObject {
return root.maximumHeight + (2 * window.margin)
}
visible: false
- flags: Qt.FramelessWindowHint | Qt.Tool | Qt.WindowStaysOnTopHint
+ flags: Qt.FramelessWindowHint | Qt.Tool
color: "transparent"
onClosing: function (close) {
@@ -286,10 +286,8 @@ QtObject {
enabled: root.visible
function onFocusWindowChanged(focusWindow) {
- if (!focusWindow) {
- root.close()
+ if (!focusWindow)
return
- }
if (root.keepOpen)
return
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/impl/ColorPicker.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/impl/ColorPicker.qml
index cd525114268..fc2a0256644 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/impl/ColorPicker.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/impl/ColorPicker.qml
@@ -13,6 +13,8 @@ Column {
HSLA
}
+ signal aboutToBeShown
+
property int mode: ColorPicker.Mode.HSVA
property color color: "#303091"
@@ -206,6 +208,8 @@ Column {
target: root
function onHueChanged() { gradientOverlay.requestPaint() }
function onModeChanged() { gradientOverlay.requestPaint() }
+ function onAlphaChanged() { gradientOverlay.requestPaint() }
+ function onAboutToBeShown() { gradientOverlay.requestPaint() }
}
onPaint: {
@@ -249,6 +253,7 @@ Column {
function onColorInvalidated() { pickerCross.requestPaint() }
function onColorChanged() { pickerCross.requestPaint() }
function onModeChanged() { pickerCross.requestPaint() }
+ function onAboutToBeShown() { pickerCross.requestPaint() }
}
onPaint: {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml
index 1a04c8ebc30..69803cf3208 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml
@@ -243,16 +243,6 @@ QtObject {
property real dialogButtonSpacing: 10
property real dialogButtonPadding: 4
- // Collection Editor
- property real collectionItemTextSideMargin: 10
- property real collectionItemTextMargin: 5
- property real collectionItemTextPadding: 5
- property real collectionTableHorizontalMargin: 10
- property real collectionTableVerticalMargin: 10
- property real collectionCellMinimumWidth: 60
- property real collectionCellMinimumHeight: 20
- property real smallStatusIndicatorDiameter: 6
-
// NEW NEW NEW
readonly property int flowMargin: 7
readonly property int flowSpacing: 7 // Odd so cursor has a center location
diff --git a/share/qtcreator/qmldesigner/qt4mcu/metadata.qml b/share/qtcreator/qmldesigner/qt4mcu/metadata.qml
index b4ae840bddb..2df700e72ac 100644
--- a/share/qtcreator/qmldesigner/qt4mcu/metadata.qml
+++ b/share/qtcreator/qmldesigner/qt4mcu/metadata.qml
@@ -5,7 +5,7 @@
Metadata {
id: metadataFile
- defaultVersion: v26
+ defaultVersion: v27
VersionData {
id: v14
@@ -72,4 +72,10 @@ Metadata {
name: "Qt for MCUs 2.6"
path: "qul-26.qml"
}
+
+ VersionData {
+ id: v27
+ name: "Qt for MCUs 2.7"
+ path: "qul-27.qml"
+ }
}
diff --git a/share/qtcreator/qmldesigner/qt4mcu/qul-27.qml b/share/qtcreator/qmldesigner/qt4mcu/qul-27.qml
new file mode 100644
index 00000000000..6cb5640472a
--- /dev/null
+++ b/share/qtcreator/qmldesigner/qt4mcu/qul-27.qml
@@ -0,0 +1,227 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+// new import: QUL.Studio.Components
+// new types: ArcItem, Gradients, Basic and LinearGradient
+// new properties: gradients related
+// Layer Application renamed to ApplicationScreens
+
+VersionData {
+ name: "Qt for MCUs 2.7"
+
+ bannedItems: [
+ "QtQuick.AnimatedImage",
+ "QtQuick.Flow",
+ "QtQuick.FocusScope",
+ "QtQuick.Grid",
+ "QtQuick.GridView",
+ "QtQuick.PathView",
+ "QtQuick.TextEdit",
+ "QtQuick.TextInput",
+ "QtQuick.Controls",
+ "QtQuick.Controls.BusyIndicator",
+ "QtQuick.Controls.ButtonGroup",
+ "QtQuick.Controls.CheckDelegate",
+ "QtQuick.Controls.ComboBox",
+ "QtQuick.Controls.Container",
+ "QtQuick.Controls.DelayButton",
+ "QtQuick.Controls.Frame",
+ "QtQuick.Controls.GroupBox",
+ "QtQuick.Controls.ItemDelegate",
+ "QtQuick.Controls.Label",
+ "QtQuick.Controls.Page",
+ "QtQuick.Controls.PageIndicator",
+ "QtQuick.Controls.Pane",
+ "QtQuick.Controls.RadioDelegate",
+ "QtQuick.Controls.RangeSlider",
+ "QtQuick.Controls.RoundButton",
+ "QtQuick.Controls.ScrollView",
+ "QtQuick.Controls.SpinBox",
+ "QtQuick.Controls.StackView",
+ "QtQuick.Controls.SwipeDelegate",
+ "QtQuick.Controls.SwitchDelegate",
+ "QtQuick.Controls.TabBar",
+ "QtQuick.Controls.TabButton",
+ "QtQuick.Controls.TextArea",
+ "QtQuick.Controls.TextField",
+ "QtQuick.Controls.ToolBar",
+ "QtQuick.Controls.ToolButton",
+ "QtQuick.Controls.ToolSeparator",
+ "QtQuick.Controls.Tumbler",
+ "QtQuick.Shapes.ConicalGradient",
+ "QtQuick.Shapes.RadialGradient"
+ ]
+
+ allowedImports: [
+ "QtQuick",
+ "QtQuick.Controls",
+ "QtQuick.Shapes",
+ "QtQuick.Timeline",
+ "QtQuickUltralite.Extras",
+ "QtQuickUltralite.Layers",
+ "QtQuickUltralite.Profiling",
+ "QtQuickUltralite.Studio.Components"
+ ]
+
+ bannedImports: [
+ "FlowView",
+ "SimulinkConnector"
+ ]
+
+ //ComplexProperty is not a type, it's just a way to handle bigger props
+ ComplexProperty {
+ prefix: "font"
+ bannedProperties: ["wordSpacing", "letterSpacing", "hintingPreference",
+ "kerning", "preferShaping", "capitalization",
+ "strikeout", "underline", "styleName"]
+ }
+
+ QtQml.Timer {
+ bannedProperties: ["triggeredOnStart"]
+ }
+
+ QtQuick.Item {
+ bannedProperties: ["layer", "opacity", "smooth", "antialiasing",
+ "baselineOffset", "focus", "activeFocusOnTab",
+ "rotation", "scale", "transformOrigin"]
+ }
+
+ QtQuick.Rectangle {
+ bannedProperties: ["border"]
+ }
+
+ QtQuick.Flickable {
+ bannedProperties: ["boundsMovement", "flickDeceleration",
+ "leftMargin", "rightMargin", "bottomMargin", "topMargin",
+ "originX", "originY", "pixelAligned", "pressDelay", "synchronousDrag"]
+ }
+
+ QtQuick.MouseArea {
+ bannedProperties: ["propagateComposedEvents", "preventStealing", "cursorShape",
+ "scrollGestureEnabled", "drag", "acceptedButtons", "hoverEnabled"]
+ }
+
+ QtQuick.Image {
+ allowChildren: false
+ allowedProperties: ["rotation", "scale", "transformOrigin"]
+ bannedProperties: ["mirror", "mipmap", "cache", "autoTransform", "asynchronous",
+ "sourceSize", "smooth"]
+ }
+
+ QtQuick.BorderImage {
+ bannedProperties: ["asynchronous", "cache", "currentFrame", "frameCount",
+ "horizontalTileMode", "mirror", "progress", "smooth", "sourceSize",
+ "status", "verticalTileMode"]
+ }
+
+ QtQuick.Text {
+ allowChildren: false
+ allowedProperties: ["rotation", "scale", "transformOrigin"]
+ bannedProperties: ["lineHeight", "lineHeightMode", "style",
+ "styleColor", "minimumPointSize", "minimumPixelSize",
+ "fontSizeMode", "renderType", "renderTypeQuality", "maximumLineCount"]
+ }
+
+ QtQuick.Loader {
+ bannedProperties: ["asynchronous", "progress", "status"]
+ }
+
+ //Padding is not an actual item, but rather set of properties in Text
+ Padding {
+ bannedProperties: ["bottomPadding", "topPadding", "leftPadding", "rightPadding"]
+ }
+
+ QtQuick.Column {
+ bannedProperties: ["bottomPadding", "leftPadding", "rightPadding", "topPadding"]
+ }
+
+ QtQuick.Row {
+ bannedProperties: ["bottomPadding", "leftPadding", "rightPadding", "topPadding",
+ "effectiveLayoutDirection", "layoutDirection"]
+ }
+
+ QtQuick.ListView {
+ bannedProperties: ["cacheBuffer", "highlightRangeMode", "highlightMoveDuration",
+ "highlightResizeDuration", "preferredHighlightBegin", "layoutDirection",
+ "preferredHighlightEnd", "highlightFollowsCurrentItem", "keyNavigationWraps",
+ "snapMode", "highlightMoveVelocity", "highlightResizeVelocity"]
+ }
+
+ QtQuick.Animation {
+ bannedProperties: ["paused"]
+ }
+
+ QtQuick.AnimatedSprite {
+ allowedProperties: ["currentFrame", "frameCount", "paused"]
+ bannedProperties: ["finishBehavior", "frameRate", "frameSync",
+ "frameX", "frameY", "interpolate", "reverse"]
+ }
+
+ //Quick Controls2 Items and properties:
+
+ QtQuick.Controls.Control {
+ bannedProperties: ["focusPolicy", "hoverEnabled", "wheelEnabled"]
+ }
+
+ QtQuick.Controls.AbstractButton {
+ bannedProperties: ["display", "autoExclusive", "icon"]
+ }
+
+ QtQuick.Controls.ProgressBar {
+ bannedProperties: ["indeterminate"]
+ }
+
+ QtQuick.Controls.Slider {
+ bannedProperties: ["live", "snapMode", "touchDragThreshold"]
+ }
+
+ //Path and Shapes related:
+
+ QtQuick.Path {
+ bannedProperties: ["scale", "pathElements"]
+ }
+
+ QtQuick.PathArc {
+ bannedProperties: ["relativeX", "relativeY"]
+ }
+
+ QtQuick.PathLine {
+ bannedProperties: ["relativeX", "relativeY"]
+ }
+
+ QtQuick.PathMove {
+ bannedProperties: ["relativeX", "relativeY"]
+ }
+
+ QtQuick.PathQuad {
+ bannedProperties: ["relativeX", "relativeY",
+ "relativeControlX", "relativeControlY"]
+ }
+
+ QtQuick.PathCubic {
+ bannedProperties: ["relativeX", "relativeY",
+ "relativeControl1X", "relativeControl1Y",
+ "relativeControl2X", "relativeControl2Y"]
+ }
+
+ QtQuick.PathElement {
+ //nothing
+ }
+
+ QtQuick.PathSvg {
+ //nothing
+ }
+
+ QtQuick.Shapes.Shape {
+ bannedProperties: ["asynchronous", "containsMode", "data",
+ "renderType", "status", "vendorExtensionsEnabled"]
+ }
+
+ QtQuick.Shapes.ShapePath {
+ bannedProperties: ["dashOffset", "dashPattern", "strokeStyle"]
+ }
+
+ QtQuickUltralite.Extras.ItemBuffer {
+ allowedProperties: ["rotation", "scale", "transformOrigin"]
+ }
+}
diff --git a/share/qtcreator/qmldesigner/studio_templates/files/javascript/wizard.json b/share/qtcreator/qmldesigner/studio_templates/files/javascript/wizard.json
index 7ba90f75f6f..f70ed11c1da 100644
--- a/share/qtcreator/qmldesigner/studio_templates/files/javascript/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/files/javascript/wizard.json
@@ -9,13 +9,46 @@
"icon": "file_javascript.png",
"platformIndependent": true,
+ "options":
+ [
+ { "key": "JSFile", "value": "%{Class}.%{JS: Util.preferredSuffix('application/javascript')}" },
+ { "key": "ApplicationImport", "value": "%{QmlProjectName} 1.0" },
+ { "key": "RootItem", "value": "%{JS: %{RootItemCB}.RootItem}" },
+ { "key": "UseImportDefault", "value": "%{JS: false}" },
+ { "key": "UseQtQuickControls2Default", "value": "%{JS: true}" }
+ ],
"pages" :
- [
+ [
{
- "trDisplayName": "Location",
- "trShortTitle": "Location",
- "typeId": "File"
+ "trDisplayName": "Define Class",
+ "trShortTitle": "Details",
+ "typeId": "Fields",
+ "data" :
+ [
+ {
+ "name": "Class",
+ "trDisplayName": "Component name:",
+ "mandatory": true,
+ "type": "LineEdit",
+ "data": {
+ "validator": "(?:[A-Z_][a-zA-Z_0-9]*|)",
+ "fixup": "%{JS: '%{INPUT}'.charAt(0).toUpperCase() + '%{INPUT}'.slice(1) }"
+ }
+ },
+ {
+ "name": "TargetPath",
+ "type": "PathChooser",
+ "trDisplayName": "Path:",
+ "mandatory": true,
+ "data":
+ {
+ "kind": "existingDirectory",
+ "basePath": "%{InitialPath}",
+ "path": "%{InitialPath}"
+ }
+ }
+ ]
},
{
"trDisplayName": "Options",
@@ -34,21 +67,16 @@
}
}
]
- },
- {
- "trDisplayName": "Project Management",
- "trShortTitle": "Summary",
- "typeId": "Summary"
}
],
"generators" :
- [
+ [
{
"typeId": "File",
"data":
{
"source": "file.js.tpl",
- "target": "%{JS: Util.fileName('%{TargetPath}', '%{JS: Util.preferredSuffix('application/javascript')}')}",
+ "target": "%{TargetPath}/%{JSFile}",
"openInEditor": true
}
}
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/wizard.json
index a5d0d7539c0..a897fa421ae 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/application-3d/wizard.json
@@ -18,7 +18,7 @@
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
{ "key": "IsQt6Project", "value": "%{JS: value('QtQuickVersion') !== '2.15' }" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "UIClassName", "value": "Screen01" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application-extended-3d/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/application-extended-3d/wizard.json
index 5f2e5bfcafd..ccd522f7c84 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/application-extended-3d/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/application-extended-3d/wizard.json
@@ -18,7 +18,7 @@
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
{ "key": "IsQt6Project", "value": "%{JS: value('QtQuickVersion') !== '2.15' }" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "UIClassName", "value": "Screen01" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/app_mcu.qmlproject.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/app_mcu.qmlproject.tpl
index f17d608f96c..7c4453752a6 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/app_mcu.qmlproject.tpl
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/application-mcu/app_mcu.qmlproject.tpl
@@ -42,7 +42,9 @@ Project {
"Controls",
"ControlsTemplates",
"Timeline",
- "Shapes"
+ "Shapes",
+ "Profiling",
+ "StudioComponents"
]
}
@@ -55,8 +57,8 @@ Project {
QDS.qtForMCUs: true
QDS.qt6Project: true
- QDS.qdsVersion: "4.3"
- QDS.quickVersion: "6.5"
+ QDS.qdsVersion: "4.5"
+ QDS.quickVersion: "6.7"
/* List of plugin directories passed to QML runtime */
importPaths: [ "imports" ]
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/application/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/application/wizard.json
index 41fe2df289a..f0f98c33315 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/application/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/application/wizard.json
@@ -17,7 +17,7 @@
{ "key": "ProjectPluginName", "value": "%{ProjectName}plugin" },
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "UIClassName", "value": "Screen01" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/wizard.json
index ddaf5021543..c15d4dbf744 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/desktop-launcher/wizard.json
@@ -17,7 +17,7 @@
{ "key": "ProjectPluginName", "value": "%{ProjectName}plugin" },
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "UIClassName", "value": "Screen01" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/wizard.json
index 585a73aa907..d9e4b979083 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-scroll/wizard.json
@@ -17,7 +17,7 @@
{ "key": "ProjectPluginName", "value": "%{ProjectName}plugin" },
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "UIClassName", "value": "Screen01" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/wizard.json
index a44a1429bee..910c32a42cf 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-stack/wizard.json
@@ -17,7 +17,7 @@
{ "key": "ProjectPluginName", "value": "%{ProjectName}plugin" },
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "IsQt6Project", "value": "%{JS: value('QtQuickVersion') !== '2.15' }" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/wizard.json b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/wizard.json
index b3f70a8b797..1f5be300e16 100644
--- a/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/wizard.json
+++ b/share/qtcreator/qmldesigner/studio_templates/projects/mobile-swipe/wizard.json
@@ -17,7 +17,7 @@
{ "key": "ProjectPluginName", "value": "%{ProjectName}plugin" },
{ "key": "ProjectPluginClassName", "value": "%{ProjectName}Plugin" },
{ "key": "QmlProjectFileName", "value": "%{JS: Util.fileName('%{ProjectName}', 'qmlproject')}" },
- { "key": "AssetDir", "value": "GeneratedComponents" },
+ { "key": "AssetDir", "value": "Generated" },
{ "key": "ContentDir", "value": "%{ProjectName}Content" },
{ "key": "ImportModuleName", "value": "%{ProjectName}" },
{ "key": "IsQt6Project", "value": "%{JS: value('QtQuickVersion') !== '2.15' }" },
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/Colors.json.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/Colors.json.tpl
deleted file mode 100644
index 052b7abd015..00000000000
--- a/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/Colors.json.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "colorCode": "#ff0000",
- "name": "Red"
- },
- {
- "colorCode": "#00ff00",
- "name": "Green"
- },
- {
- "colorCode": "#0000ff",
- "name": "Blue"
- },
- {
- "colorCode": "#ffffff",
- "name": "White"
- }
-]
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/DataStore.qml.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/DataStore.qml.tpl
deleted file mode 100644
index ca8b45ede08..00000000000
--- a/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/DataStore.qml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-
-pragma Singleton
-import QtQuick 6.5
-import QtQuick.Studio.Utils 1.0
-
-JsonListModel {
- id: models
- source: Qt.resolvedUrl("models.json")
-
- property ChildListModel book: ChildListModel {
- modelName: "book"
- }
-
- property JsonData backend: JsonData {}
-}
diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/models.json.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/models.json.tpl
deleted file mode 100644
index ca9c1736517..00000000000
--- a/share/qtcreator/qmldesigner/studio_templates/projects/shared-plugin/name/models.json.tpl
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "book": {
- "columns": [
- {
- "name": "author",
- "type": "String"
- },
- {
- "name": "category",
- "type": "String"
- },
- {
- "name": "isbn",
- "type": "String"
- },
- {
- "name": "price",
- "type": "Real"
- },
- {
- "name": "title",
- "type": "String"
- }
- ],
- "data": [
- [
- "Nigel Rees",
- "reference",
- "",
- 8.95,
- "Sayings of the Century"
- ],
- [
- "Evelyn Waugh",
- "fiction",
- "",
- 12.99,
- "Sword of Honor"
- ],
- [
- "Herman Melville",
- "fiction",
- "0-553-21311-3",
- 8.99,
- "Moby Dick"
- ],
- [
- "J. R. R. Tolkien",
- "fiction",
- "0-395-19395-8",
- 22.99,
- "The Lord of the Rings"
- ]
- ]
- }
-}
diff --git a/share/qtcreator/templates/wizards/autotest/boosttest/wizard.json b/share/qtcreator/templates/wizards/autotest/boosttest/wizard.json
index 01b79081268..525752701e5 100644
--- a/share/qtcreator/templates/wizards/autotest/boosttest/wizard.json
+++ b/share/qtcreator/templates/wizards/autotest/boosttest/wizard.json
@@ -26,9 +26,6 @@
"key": "CMakeFileName",
"value": "%{ProjectDirectory}/CMakeLists.txt"
},
- { "key": "IsTopLevelProject",
- "value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }"
- },
{ "key": "MainCppName",
"value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src') }"
},
@@ -118,6 +115,7 @@
"trDisplayName": "Build system:",
"type": "ComboBox",
"persistenceKey": "BuildSystemType",
+ "visible": "%{JS: !value('IsSubproject')}",
"data":
{
"index": 1,
@@ -147,7 +145,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{IsTopLevelProject}",
"data": {
"projectFilePath": "%{ProjectFilePath}",
"requiredFeatures": [ "%{JS: value('BuildSystem') === 'qmake' ? 'QtSupport.Wizards.FeatureQt' : 'DeviceType.Desktop' }" ]
@@ -199,7 +196,7 @@
{
"source": "../../projects/git.ignore",
"target": ".gitignore",
- "condition": "%{JS: ( %{IsTopLevelProject} && value('VersionControl') === 'G.Git' )}"
+ "condition": "%{JS: ( !value('IsSubproject') && value('VersionControl') === 'G.Git' )}"
}
]
}
diff --git a/share/qtcreator/templates/wizards/autotest/catch/wizard.json b/share/qtcreator/templates/wizards/autotest/catch/wizard.json
index 1aa35ed0ec3..03ee5ff68ff 100644
--- a/share/qtcreator/templates/wizards/autotest/catch/wizard.json
+++ b/share/qtcreator/templates/wizards/autotest/catch/wizard.json
@@ -26,9 +26,6 @@
"key": "CMakeFileName",
"value": "%{ProjectDirectory}/CMakeLists.txt"
},
- { "key": "IsTopLevelProject",
- "value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }"
- },
{ "key": "MainCppName",
"value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src') }"
},
@@ -128,6 +125,7 @@
"trDisplayName": "Build system:",
"type": "ComboBox",
"persistenceKey": "BuildSystemType",
+ "visible": "%{JS: !value('IsSubproject')}",
"data":
{
"index": 1,
@@ -157,7 +155,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{IsTopLevelProject}",
"data": {
"projectFilePath": "%{ProjectFilePath}",
"requiredFeatures": [ "%{JS: (value('Catch2NeedsQt') == 'true' || value('BuildSystem') === 'qmake') ? 'QtSupport.Wizards.FeatureQt' : 'DeviceType.Desktop' }" ]
@@ -222,7 +219,7 @@
{
"source": "../../projects/git.ignore",
"target": ".gitignore",
- "condition": "%{JS: ( %{IsTopLevelProject} && value('VersionControl') === 'G.Git' )}"
+ "condition": "%{JS: ( !value('IsSubproject') && value('VersionControl') === 'G.Git' )}"
}
]
}
diff --git a/share/qtcreator/templates/wizards/autotest/files/tst.txt b/share/qtcreator/templates/wizards/autotest/files/tst.txt
index f0eeb813392..18653bdc32c 100644
--- a/share/qtcreator/templates/wizards/autotest/files/tst.txt
+++ b/share/qtcreator/templates/wizards/autotest/files/tst.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{TestCaseName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/autotest/gtest/wizard.json b/share/qtcreator/templates/wizards/autotest/gtest/wizard.json
index 7d8b88b552e..643dd95f0ab 100644
--- a/share/qtcreator/templates/wizards/autotest/gtest/wizard.json
+++ b/share/qtcreator/templates/wizards/autotest/gtest/wizard.json
@@ -26,9 +26,6 @@
"key": "CMakeFileName",
"value": "%{ProjectDirectory}/CMakeLists.txt"
},
- { "key": "IsTopLevelProject",
- "value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }"
- },
{ "key": "MainCppName",
"value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src') }"
},
@@ -122,6 +119,7 @@
"trDisplayName": "Build system:",
"type": "ComboBox",
"persistenceKey": "BuildSystemType",
+ "visible": "%{JS: !value('IsSubproject')}",
"data":
{
"index": 1,
@@ -151,7 +149,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{IsTopLevelProject}",
"data": {
"projectFilePath": "%{ProjectFilePath}",
"requiredFeatures": [ "%{JS: value('BuildSystem') === 'qmake' ? 'QtSupport.Wizards.FeatureQt' : 'DeviceType.Desktop' }" ]
@@ -215,7 +212,7 @@
{
"source": "../../projects/git.ignore",
"target": ".gitignore",
- "condition": "%{JS: ( %{IsTopLevelProject} && value('VersionControl') === 'G.Git' )}"
+ "condition": "%{JS: ( !value('IsSubproject') && value('VersionControl') === 'G.Git' )}"
}
]
}
diff --git a/share/qtcreator/templates/wizards/autotest/qttest/wizard.json b/share/qtcreator/templates/wizards/autotest/qttest/wizard.json
index 0236a24a5ab..e9b0a782c47 100644
--- a/share/qtcreator/templates/wizards/autotest/qttest/wizard.json
+++ b/share/qtcreator/templates/wizards/autotest/qttest/wizard.json
@@ -29,9 +29,6 @@
"key": "CMakeFileName",
"value": "%{ProjectDirectory}/CMakeLists.txt"
},
- { "key": "IsTopLevelProject",
- "value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }"
- },
{
"key": "GUARD",
"value": "%{JS: value('TestCaseFileWithHeaderSuffix').toUpperCase().replace('.', '_') }"
@@ -95,6 +92,7 @@
"trDisplayName": "Build system:",
"type": "ComboBox",
"persistenceKey": "BuildSystemType",
+ "visible": "%{JS: !value('IsSubproject')}",
"data":
{
"index": 1,
@@ -124,7 +122,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{IsTopLevelProject}",
"data": {
"projectFilePath": "%{ProjectFilePath}",
"requiredFeatures": [ "QtSupport.Wizards.FeatureQt", "DeviceType.Desktop" ]
@@ -171,7 +168,7 @@
{
"source": "../../projects/git.ignore",
"target": ".gitignore",
- "condition": "%{JS: ( %{IsTopLevelProject} && value('VersionControl') === 'G.Git' )}"
+ "condition": "%{JS: ( !value('IsSubproject') && value('VersionControl') === 'G.Git' )}"
}
]
}
diff --git a/share/qtcreator/templates/wizards/autotest/quicktest/wizard.json b/share/qtcreator/templates/wizards/autotest/quicktest/wizard.json
index bbcf7c41479..a5411c61b1b 100644
--- a/share/qtcreator/templates/wizards/autotest/quicktest/wizard.json
+++ b/share/qtcreator/templates/wizards/autotest/quicktest/wizard.json
@@ -29,9 +29,6 @@
"key": "CMakeFileName",
"value": "%{ProjectDirectory}/CMakeLists.txt"
},
- { "key": "IsTopLevelProject",
- "value": "%{JS: !'%{Exists:ProjectExplorer.Profile.Ids}' }"
- },
{ "key": "MainCppName",
"value": "%{JS: 'main.' + Util.preferredSuffix('text/x-c++src') }"
},
@@ -90,6 +87,7 @@
"trDisplayName": "Build system:",
"type": "ComboBox",
"persistenceKey": "BuildSystemType",
+ "visible": "%{JS: !value('IsSubproject')}",
"data":
{
"index": 1,
@@ -119,7 +117,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{IsTopLevelProject}",
"data": {
"projectFilePath": "%{ProjectFilePath}",
"requiredFeatures": [ "QtSupport.Wizards.FeatureQtQuick.2", "DeviceType.Desktop" ]
@@ -183,7 +180,7 @@
{
"source": "../../projects/git.ignore",
"target": ".gitignore",
- "condition": "%{JS: ( %{IsTopLevelProject} && value('VersionControl') === 'G.Git' )}"
+ "condition": "%{JS: ( !value('IsSubproject') && value('VersionControl') === 'G.Git' )}"
}
]
}
diff --git a/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt b/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt
index 0e923c87945..b411048ef28 100644
--- a/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} VERSION 0.1 LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/codesnippet/wizard.json b/share/qtcreator/templates/wizards/codesnippet/wizard.json
index ddcd41295fc..e5ba8bbdc73 100644
--- a/share/qtcreator/templates/wizards/codesnippet/wizard.json
+++ b/share/qtcreator/templates/wizards/codesnippet/wizard.json
@@ -78,7 +78,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data":
{
"projectFilePath": "%{ProjectFile}"
diff --git a/share/qtcreator/templates/wizards/files/form/wizard.json b/share/qtcreator/templates/wizards/files/form/wizard.json
index ec5fd422a36..d0d826b6c6d 100644
--- a/share/qtcreator/templates/wizards/files/form/wizard.json
+++ b/share/qtcreator/templates/wizards/files/form/wizard.json
@@ -3,8 +3,8 @@
"supportedProjectTypes": [ ],
"id": "D.Form",
"category": "R.Qt",
- "trDescription": "Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.",
- "trDisplayName": "Qt Designer Form",
+ "trDescription": "Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.",
+ "trDisplayName": "Qt Widgets Designer Form",
"trDisplayCategory": "Qt",
"iconText": "ui",
"enabled": "%{JS: value('Plugins').indexOf('Designer') >= 0}",
diff --git a/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt
index a6f956127dd..d548d199a3c 100644
--- a/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/consoleapp/wizard.json b/share/qtcreator/templates/wizards/projects/consoleapp/wizard.json
index 1817b79d938..5e99f262b19 100644
--- a/share/qtcreator/templates/wizards/projects/consoleapp/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/consoleapp/wizard.json
@@ -34,7 +34,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: !value('IsSubproject')}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -81,7 +81,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt
index 4391af9678c..ef67bd5f7ad 100644
--- a/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json b/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json
index 39a25fa2f63..5bb6749fee6 100644
--- a/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json
@@ -49,7 +49,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: !value('IsSubproject')}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -290,7 +290,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/templates/wizards/projects/nim/wizard.json b/share/qtcreator/templates/wizards/projects/nim/wizard.json
index 68970d4d9ac..6a84ca3d463 100644
--- a/share/qtcreator/templates/wizards/projects/nim/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/nim/wizard.json
@@ -29,7 +29,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/templates/wizards/projects/nimble/wizard.json b/share/qtcreator/templates/wizards/projects/nimble/wizard.json
index 8a0a14b8304..657aad71bb7 100644
--- a/share/qtcreator/templates/wizards/projects/nimble/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/nimble/wizard.json
@@ -177,7 +177,6 @@
"trDisplayName":"Kit Selection",
"trShortTitle":"Kits",
"typeId":"Kits",
- "enabled":"%{JS: !value('IsSubproject')}",
"data":{
"projectFilePath":"%{ProjectFile}"
}
diff --git a/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt
index 1a0a570e66f..bc89ded9d0b 100644
--- a/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES C)
diff --git a/share/qtcreator/templates/wizards/projects/plainc/wizard.json b/share/qtcreator/templates/wizards/projects/plainc/wizard.json
index c2814ac9473..a0d3bf3ec20 100644
--- a/share/qtcreator/templates/wizards/projects/plainc/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/plainc/wizard.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "supportedProjectTypes": [ "CMakeProjectManager.CMakeProject", "Qbs.QbsProject", "Qt4ProjectManager.Qt4Project" ],
+ "supportedProjectTypes": [ "MesonProjectManager.MesonProject", "CMakeProjectManager.CMakeProject", "Qbs.QbsProject", "Qt4ProjectManager.Qt4Project" ],
"id": "A.Plain C Application",
"category": "I.Projects",
"trDescription": "Creates a simple C application with no dependencies.",
@@ -31,7 +31,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: !value('IsSubproject')}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -73,7 +73,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt
index df5ef8a5cce..e8ba55ff43d 100644
--- a/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/plaincpp/wizard.json b/share/qtcreator/templates/wizards/projects/plaincpp/wizard.json
index 0e1ca061dc8..cffdb7bb78d 100644
--- a/share/qtcreator/templates/wizards/projects/plaincpp/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/plaincpp/wizard.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "supportedProjectTypes": [ "CMakeProjectManager.CMakeProject", "Qbs.QbsProject", "Qt4ProjectManager.Qt4Project" ],
+ "supportedProjectTypes": [ "MesonProjectManager.MesonProject", "CMakeProjectManager.CMakeProject", "Qbs.QbsProject", "Qt4ProjectManager.Qt4Project" ],
"id": "R.Plain Cpp Application",
"category": "I.Projects",
"trDescription": "Creates a simple C++ application with no dependencies.",
@@ -31,7 +31,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: ! %{IsSubproject}}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -73,7 +73,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: ! %{IsSubproject}}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/templates/wizards/projects/qmake/empty/wizard.json b/share/qtcreator/templates/wizards/projects/qmake/empty/wizard.json
index 1c449e0c0d3..c43a6deffc5 100644
--- a/share/qtcreator/templates/wizards/projects/qmake/empty/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qmake/empty/wizard.json
@@ -13,7 +13,6 @@
"options":
[
{ "key": "ProFileName", "value": "%{JS: Util.fileName(value('ProjectDirectory') + '/' + value('ProjectName'), 'pro')}" },
- { "key": "IsTopLevelProject", "value": "%{JS: !value('Exists:ProjectExplorer.Profile.Ids')}" }
],
"pages":
@@ -28,7 +27,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{IsTopLevelProject}",
"data": { "projectFilePath": "%{ProFileName}" }
},
{
@@ -52,7 +50,7 @@
{
"source": "../../git.ignore",
"target": "%{ProjectDirectory}/.gitignore",
- "condition": "%{JS: value('IsTopLevelProject') && value('VersionControl') === 'G.Git'}"
+ "condition": "%{JS: !value('IsSubproject') && value('VersionControl') === 'G.Git'}"
}
]
}
diff --git a/share/qtcreator/templates/wizards/projects/qtforpythonapplication/widget/wizard.json b/share/qtcreator/templates/wizards/projects/qtforpythonapplication/widget/wizard.json
index c52c05c12cb..6d3f968c1bf 100644
--- a/share/qtcreator/templates/wizards/projects/qtforpythonapplication/widget/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qtforpythonapplication/widget/wizard.json
@@ -3,7 +3,7 @@
"supportedProjectTypes": [ "PythonProject" ],
"id": "F.QtForPythonApplicationWindowWidget",
"category": "F.ApplicationPySide",
- "trDescription": "Creates a Qt for Python application that includes a Qt Designer-based widget (ui file). Requires .ui to Python conversion.",
+ "trDescription": "Creates a Qt for Python application that includes a Qt Widgets Designer-based widget (ui file). Requires .ui to Python conversion.",
"trDisplayName": "Window UI",
"trDisplayCategory": "Application (Qt for Python)",
"icon": "../icons/icon.png",
diff --git a/share/qtcreator/templates/wizards/projects/qtquick2-extension/wizard.json b/share/qtcreator/templates/wizards/projects/qtquick2-extension/wizard.json
index 0164a9f3d57..c2692ee641e 100644
--- a/share/qtcreator/templates/wizards/projects/qtquick2-extension/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qtquick2-extension/wizard.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "supportedProjectTypes": [ "Qt4ProjectManager.Qt4Project" ],
+ "supportedProjectTypes": [ "Qt4ProjectManager.Qt4Project", "CMakeProjectManager.CMakeProject" ],
"id": "M.QtQuick2ExtensionPlugin",
"category": "G.Library",
"trDescription": "Creates a C++ plugin to load Qt Quick extensions dynamically into applications using the QQmlEngine class.",
@@ -23,8 +23,8 @@
{ "key": "ObjectHdr", "value": "%{JS: Cpp.classToFileName(value('ObjectName'), Util.preferredSuffix('text/x-c++hdr'))}" },
{ "key": "ObjectQml", "value": "%{JS: Util.fileName(value('ObjectName') + 'Controls', 'qml')}" },
{ "key": "PluginName", "value": "%{JS: value('ProjectName').charAt(0).toUpperCase() + value('ProjectName').slice(1) + 'Plugin' }" },
- { "key": "PLUGINGUARD", "value": "%{JS: Cpp.classToHeaderGuard(value('PluginBaseFileName'), Util.preferredSuffix('text/x-c++hdr'))}" },
- { "key": "OBJECTGUARD", "value": "%{JS: Cpp.classToHeaderGuard(value('ObjectName'), Util.preferredSuffix('text/x-c++hdr'))}" },
+ { "key": "PLUGINGUARD", "value": "%{JS: Cpp.headerGuard(value('PluginHdr'))}" },
+ { "key": "OBJECTGUARD", "value": "%{JS: Cpp.headerGuard(value('ObjectHdr'))}" },
{ "key": "IsQt6", "value": "%{JS: value('QtVersion').IsQt6}" },
{ "key": "QtQuickVersion", "value": "%{JS: value('QtVersion').QtQuickVersion}" },
{ "key": "QtQuickFeature", "value": "%{JS: (value('QtQuickVersion')=='') ? 'QtSupport.Wizards.FeatureQt.6.2' : 'QtSupport.Wizards.FeatureQtQuick.%{QtQuickVersion}'}" },
@@ -43,7 +43,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: !value('IsSubproject')}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -173,7 +173,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": {
"projectFilePath": "%{ProjectFile}",
"requiredFeatures": [ "QtSupport.Wizards.FeatureQtQuick", "%{QtQuickFeature}" ]
diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication/wizard.json b/share/qtcreator/templates/wizards/projects/qtquickapplication/wizard.json
index 2e885c2bb63..ac1d5dec91e 100644
--- a/share/qtcreator/templates/wizards/projects/qtquickapplication/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qtquickapplication/wizard.json
@@ -96,7 +96,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": {
"projectFilePath": "%{ProjectFile}",
"requiredFeatures": [ "QtSupport.Wizards.FeatureQtQmlCMakeApi", "%{FeatureQt}" ]
diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt
index b7afb831a77..de5e6850c23 100644
--- a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} VERSION 0.1 LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/empty/wizard.json b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/empty/wizard.json
index c2365108daa..d721e0e6191 100644
--- a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/empty/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/empty/wizard.json
@@ -42,7 +42,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: !value('IsSubproject')}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -165,7 +165,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": {
"projectFilePath": "%{ProjectFile}",
"requiredFeatures": [ "QtSupport.Wizards.FeatureQt", "%{QtQuickFeature}" ]
diff --git a/share/qtcreator/templates/wizards/projects/qtquickuiprototype/wizard.json b/share/qtcreator/templates/wizards/projects/qtquickuiprototype/wizard.json
index 251500b4949..f8d9373e69d 100644
--- a/share/qtcreator/templates/wizards/projects/qtquickuiprototype/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qtquickuiprototype/wizard.json
@@ -46,7 +46,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: ! %{IsSubproject}}",
"data": {
"projectFilePath": "%{QmlProjectFileName}",
"requiredFeatures": [ "QtSupport.Wizards.FeatureQtQuickProject", "QtSupport.Wizards.FeatureQtQuick.6" ]
diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt
index 9d854899c36..d2ca81d463b 100644
--- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} VERSION 0.1 LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json
index 098cb4f0ec0..b2b0528fd5f 100644
--- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json
+++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json
@@ -3,7 +3,7 @@
"supportedProjectTypes": [ "MesonProjectManager.MesonProject","CMakeProjectManager.CMakeProject", "Qt4ProjectManager.Qt4Project", "Qbs.QbsProject" ],
"id": "C.QtWidgets",
"category": "D.ApplicationQt",
- "trDescription": "Creates a widget-based Qt application that contains a Qt Designer-based main window and C++ source and header files to implement the application logic.\n\nPreselects a desktop Qt for building the application if available.",
+ "trDescription": "Creates a widget-based Qt application that contains a Qt Widgets Designer-based main window and C++ source and header files to implement the application logic.\n\nPreselects a desktop Qt for building the application if available.",
"trDisplayName": "Qt Widgets Application",
"trDisplayCategory": "Application (Qt)",
"icon": "../../global/guiapplication.png",
@@ -37,7 +37,7 @@
"trDisplayName": "Define Build System",
"trShortTitle": "Build System",
"typeId": "Fields",
- "enabled": "%{JS: !value('IsSubproject')}",
+ "skipForSubprojects": true,
"data":
[
{
@@ -157,7 +157,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt
index be6f16a3fb6..13f9592fba1 100644
--- a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
# Remove when sharing with others.
@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources')}
diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.json b/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.json
index e1feaa53bbb..5b4c6cec604 100644
--- a/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.json
+++ b/share/qtcreator/templates/wizards/qtcreatorplugin/wizard.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "supportedProjectTypes": [ "Qt4ProjectManager.Qt4Project" ],
+ "supportedProjectTypes": [ "CMakeProjectManager.CMakeProject" ],
"id": "R.QtCreatorPlugin",
"category": "G.Library",
"trDescription": "Creates a custom Qt Creator plugin.",
@@ -135,7 +135,6 @@
"trDisplayName": "Kit Selection",
"trShortTitle": "Kits",
"typeId": "Kits",
- "enabled": "%{JS: !value('IsSubproject')}",
"data": { "projectFilePath": "%{ProjectFile}" }
},
{
diff --git a/share/qtcreator/themes/dark.figmatokens b/share/qtcreator/themes/dark.figmatokens
index 194ce7fab25..d65ae21fa3f 100644
--- a/share/qtcreator/themes/dark.figmatokens
+++ b/share/qtcreator/themes/dark.figmatokens
@@ -36,3 +36,8 @@ Token_Notification_Alert=ffc98014
Token_Notification_Success=ff1f9b5d
Token_Notification_Neutral=ff016876
Token_Notification_Danger=ffb22245
+
+Token_Gradient01_Start=ff016876
+Token_Gradient01_End=ff1F9B5D
+Token_Gradient02_Start=ff3A3A3A
+Token_Gradient02_End=ff838383
diff --git a/share/qtcreator/themes/light.figmatokens b/share/qtcreator/themes/light.figmatokens
index 138ad74afdf..8bbe56319d3 100644
--- a/share/qtcreator/themes/light.figmatokens
+++ b/share/qtcreator/themes/light.figmatokens
@@ -35,3 +35,8 @@ Token_Notification_Alert=ffeb991f
Token_Notification_Success=ff23b26a
Token_Notification_Neutral=ff0e7887
Token_Notification_Danger=ffdc1343
+
+Token_Gradient01_Start=ff23B26A
+Token_Gradient01_End=ff0E7887
+Token_Gradient02_Start=ff949494
+Token_Gradient02_End=ff474747
diff --git a/share/qtcreator/translations/README.md b/share/qtcreator/translations/README.md
index ff9caddf2a6..7261305a4b7 100644
--- a/share/qtcreator/translations/README.md
+++ b/share/qtcreator/translations/README.md
@@ -80,9 +80,9 @@ How To add translations to Qt Creator
*Note:* `.qm` files are generated as part of the regular build. They are not
submitted to the repository.
-*Note:* QmlDesigner contains code from the Gradient Editor of Qt Designer. If an
-official translation of Qt for your language exists, you can re-use the
-translation of those messages by merging Qt Creator's and Qt Designer's
+*Note:* QmlDesigner contains code from the Gradient Editor of Qt Widgets Designer.
+If an official translation of Qt for your language exists, you can re-use the
+translation of those messages by merging Qt Creator's and Qt Widgets Designer's
translation using `lconvert`:
lconvert qtcreator_<LANG>.ts $QTDIR/translations/designer_<LANG>.ts > temp.ts
@@ -91,6 +91,6 @@ Move the temporary file back to `qtcreator_<LANG>.ts`, complete the Gradient
Editor's translations and update the file, passing the additional option
`-noobsolete` to `lupdate` (by temporarily modifying
`<qtcreator>/cmake/QtCreatorTranslations.cmake`). This will remove the now
-redundant messages originating from Qt Designer.
+redundant messages originating from Qt Widgets Designer.
[1]: https://lists.qt-project.org/listinfo/localization
diff --git a/share/qtcreator/translations/qtcreator_cs.ts b/share/qtcreator/translations/qtcreator_cs.ts
index 94bbf49d0b3..23d62545e10 100644
--- a/share/qtcreator/translations/qtcreator_cs.ts
+++ b/share/qtcreator/translations/qtcreator_cs.ts
@@ -764,7 +764,7 @@
<translation type="obsolete">Automaticky vkládat středníky a uzavírající závorky, kulaté závorky, složené závorky a uvozovky, když je to vhodné.</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation type="obsolete">&amp;Automaticky vložit odpovídající znaky</translation>
</message>
<message>
@@ -2008,7 +2008,7 @@ Chcete je nechat přepsat?</translation>
<translation>Když je to vhodné, automaticky vkládat středníky a uzavírající závorky, kulaté závorky, složené závorky a uvozovky.</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Automaticky vložit odpovídající znaky</translation>
</message>
<message>
@@ -4278,8 +4278,8 @@ Rebuilding the project might help.</source>
Zkuste projekt vytvořit znovu.</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Třída formuláře programu Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Třída formuláře programu Qt Widgets Designer</translation>
</message>
<message>
<source>Form Template</source>
@@ -4326,8 +4326,8 @@ Zkuste projekt vytvořit znovu.</translation>
<translation>Shift+F4</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Formulář programu Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Formulář programu Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
@@ -4458,8 +4458,8 @@ Zkuste projekt vytvořit znovu.</translation>
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>O přídavných modulech programu Qt Designer...</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>O přídavných modulech programu Qt Widgets Designer...</translation>
</message>
<message>
<source>Views</source>
@@ -10752,8 +10752,8 @@ Vybere pro sestavení programu verzi Qt pro stolní počítač, je-li dostupná.
<translation>Tento průvodce vytvoří projekt konzolové aplikace v Qt4. Aplikace je odvozena z QCoreApplication a nemá žádné uživatelské rozhraní.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer neodpovídá (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer neodpovídá (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -16025,8 +16025,8 @@ Toho se dosáhne vložením této zkratky v zadávacím poli vyhledávače, nás
<translation type="obsolete">Editor .qmlproject</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -17504,7 +17504,7 @@ Důvod: %2</translation>
</message>
<message>
<source>Qt Custom Designer Widget</source>
- <translation>Uživatelsky stanovený prvek pro Qt Designer</translation>
+ <translation>Uživatelsky stanovený prvek pro Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source>
@@ -40550,7 +40550,7 @@ Určuje chování odsazení se zřetelem k navazujícím řádkům.
<translation>Nastavit znovu</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Oblast prohledávání</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_da.ts b/share/qtcreator/translations/qtcreator_da.ts
index ca9e8e47a43..53c0246ee3c 100644
--- a/share/qtcreator/translations/qtcreator_da.ts
+++ b/share/qtcreator/translations/qtcreator_da.ts
@@ -338,12 +338,12 @@ Minimum API-niveauet krævet af kittet er %1.</translation>
</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-Afinstallation af den installerede pakke løser måske problemstillingen.
-Vil du afinstallere den eksisterende pakke?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>Afinstallation af den installerede pakke løser måske problemstillingen.</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>Vil du afinstallere den eksisterende pakke?</translation>
</message>
<message>
<source>Install failed</source>
@@ -13547,8 +13547,8 @@ Det hjælper måske at genbygge projektet.</translation>
<translation>Designer</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Qt Designer-udformningsklasse</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Qt Widgets Designer-udformningsklasse</translation>
</message>
<message>
<source>Choose a Class Name</source>
@@ -13571,8 +13571,8 @@ Det hjælper måske at genbygge projektet.</translation>
<translation>Skift kilde/udformning</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
- <translation>Opretter en Qt Designer-udformning sammen med en matchende klasse (C++-header og kildefil) til implementeringsformål. Du kan tilføje udformningen og klassen til et eksisterende Qt widget-projekt.</translation>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <translation>Opretter en Qt Widgets Designer-udformning sammen med en matchende klasse (C++-header og kildefil) til implementeringsformål. Du kan tilføje udformningen og klassen til et eksisterende Qt widget-projekt.</translation>
</message>
<message>
<source>For&amp;m Editor</source>
@@ -14990,8 +14990,8 @@ når de ikke kræves, hvilket i de fleste tilfælde vil forbedre ydelsen.</trans
<translation>Alt+Skift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>Om Qt Designer-plugins...</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>Om Qt Widgets Designer-plugins...</translation>
</message>
<message>
<source>Preview in</source>
@@ -19970,8 +19970,8 @@ Fejl: %5</translation>
<translation>Python-redigering</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -23386,12 +23386,12 @@ til projektet &quot;%2&quot;.</translation>
<translation>Udformningsskabelon</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Opretter en Qt Designer-udformning som du kan tilføje til et Qt widget-projekt. Dette er nyttigt hvis du allerede har en eksisterende klasse til brugerflade travlhedslogik.</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Opretter en Qt Widgets Designer-udformning som du kan tilføje til et Qt widget-projekt. Dette er nyttigt hvis du allerede har en eksisterende klasse til brugerflade travlhedslogik.</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Qt Designer-udformning</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Qt Widgets Designer-udformning</translation>
</message>
<message>
<source>Creates a Java file with boilerplate code.</source>
@@ -26266,12 +26266,12 @@ Opdater venligst dit kit eller vælg en mkspec for qmake som matcher dit mål-mi
<translation>Opretter et Qt brugerdefineret Designer-widget eller en brugerdefineret widget-samling.</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translation>Denne assistent genererer en Qt Designer brugerdefineret widget eller et Qt Designer brugerdefineret widget-samling-projekt.</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translation>Denne assistent genererer en Qt Widgets Designer brugerdefineret widget eller et Qt Widgets Designer brugerdefineret widget-samling-projekt.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer svarer ikke (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer svarer ikke (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -26342,10 +26342,10 @@ Opdater venligst dit kit eller vælg en mkspec for qmake som matcher dit mål-mi
<translation>Qt widgets-program</translation>
</message>
<message>
- <source>Creates a Qt application for the desktop. Includes a Qt Designer-based main window.
+ <source>Creates a Qt application for the desktop. Includes a Qt Widgets Designer-based main window.
Preselects a desktop Qt for building the application if available.</source>
- <translation>Opretter et Qt-program til desktop. Inkluderer et Qt Designer-baseret hovedvindue.
+ <translation>Opretter et Qt-program til desktop. Inkluderer et Qt Widgets Designer-baseret hovedvindue.
Prævælger en desktop Qt til bygning af programmet, hvis tilgængeligt.</translation>
</message>
@@ -33804,7 +33804,7 @@ Derudover indsætter Skift+Enter et undvigetegn ved markørens placering og flyt
<translation>Opdel strenge automatisk</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Indsæt automatisk matchende tegn</translation>
</message>
<message>
@@ -33984,7 +33984,7 @@ Derudover indsætter Skift+Enter et undvigetegn ved markørens placering og flyt
<translation>Justeret til højre side</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>Linjeannotationer</translation>
</message>
<message>
@@ -35591,7 +35591,7 @@ Vil blive anvendt på blanktegn i kommentarer og strenge.</translation>
<translation>Nulstil</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Skanningsområde</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts
index 888a8bb7650..3dc80d58d94 100644
--- a/share/qtcreator/translations/qtcreator_de.ts
+++ b/share/qtcreator/translations/qtcreator_de.ts
@@ -10495,7 +10495,7 @@ Locked components cannot be modified or selected.</source>
<translation>Pfad des JDK existiert und ist schreibbar.</translation>
</message>
<message>
- <source>Android OpenSSL settings (Optional)</source>
+ <source>Android OpenSSL Settings (Optional)</source>
<translation>OpenSSL-Einstellungen für Android (optional)</translation>
</message>
<message>
@@ -11245,12 +11245,12 @@ Das Kit unterstützt &quot;%2&quot;, aber das Gerät verwendet &quot;%3&quot;.</
</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-Das installierte Paket zu deinstallieren könnte das Problem lösen.
-Möchten Sie das vorhandene Paket deinstallieren?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>Das installierte Paket zu deinstallieren könnte das Problem lösen.</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>Möchten Sie das vorhandene Paket deinstallieren?</translation>
</message>
<message>
<source>The deployment AVD &quot;%1&quot; cannot be started.</source>
@@ -13108,7 +13108,7 @@ Dies könnte Probleme während der Ausführung verursachen.
<translation>Tests wiederholen</translation>
</message>
<message>
- <source>Run in parallel</source>
+ <source>Run in Parallel</source>
<translation>Parallel ausführen</translation>
</message>
<message>
@@ -16992,8 +16992,8 @@ Das integrierte Codemodell übernimmt das Einrücken.</translation>
<translation>Beachten Sie, dass das aktuelle Projekt eine .clang-format-Datei enthält, welche für das Einrücken und die Formatierung von Code verwendet werden wird.</translation>
</message>
<message>
- <source>ClangFormat settings:</source>
- <translation>Einstellungen für ClangFormat:</translation>
+ <source>ClangFormat Settings</source>
+ <translation>Einstellungen für ClangFormat</translation>
</message>
<message>
<source>Indenting only</source>
@@ -19523,8 +19523,8 @@ Wenn die Systemzeiger für das Verändern der Größe von Ansichten nicht korrek
<translation>QMLJS-Editor</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -22427,7 +22427,7 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern.</translation>
<translation>#include %1 hinzufügen</translation>
</message>
<message>
- <source>Add forward declaration for %1</source>
+ <source>Add Forward Declaration for %1</source>
<translation>Vorwärtsdeklaration für %1 hinzufügen</translation>
</message>
<message>
@@ -23349,9 +23349,9 @@ Diese Präfixe werden zusätzlich zum Dateinamen beim Wechseln zwischen Header-
<translation>Normalerweise werden Argumente als konstante Referenz übergeben. Das Argument wird als Wert übergeben, wenn der Typ einer der folgenden ist. Namensräume und Vorlagenargumente werden entfernt. Der wirkliche Typ muss den angegebenen Typ enthalten. Zum Beispiel passt &quot;int&quot; zu &quot;int32_t&quot;, aber nicht zu &quot;vector&lt;int&gt;&quot;. &quot;vector&quot; passt zu &quot;std::pmr::vector&lt;int&gt;&quot;, aber nicht zu &quot;std::optional&lt;vector&lt;int&gt;&gt;&quot;</translation>
</message>
<message>
- <source>Value types:</source>
+ <source>Value Types</source>
<translatorcomment>https://learn.microsoft.com/de-de/cpp/cpp/value-types-modern-cpp</translatorcomment>
- <translation>Werttypen:</translation>
+ <translation>Werttypen</translation>
</message>
<message>
<source>Return non-value types by const reference</source>
@@ -23725,7 +23725,7 @@ Das integrierte Codemodell übernimmt Syntaxhervorhebung, Code-Vervollständigun
<translation>Zeitabstand für das Aktualisieren von Dokumenten:</translation>
</message>
<message>
- <source>Sessions with a single clangd instance</source>
+ <source>Sessions with a Single Clangd Instance</source>
<translation>Sitzungen mit einer einzigen Clangd-Instanz</translation>
</message>
<message>
@@ -28977,8 +28977,8 @@ Rebuilding the project might help.</source>
Versuchen Sie, das Projekt neu zu erstellen.</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Qt-Designer-Formularklasse</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Qt-Widgets-Designer-Formularklasse</translation>
</message>
<message>
<source>Class Details</source>
@@ -29009,8 +29009,8 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
<translation>Shift+F4</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
- <translation>Erstellt ein Qt-Designer-Formular mit zugehörigem Klassenrumpf (bestehend aus C++-Header- und -Quelldatei) für Implementierungszwecke. Sie können Formular und Klasse zu einem existierenden Qt-Widget-Projekt hinzufügen.</translation>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <translation>Erstellt ein Qt-Widgets-Designer-Formular mit zugehörigem Klassenrumpf (bestehend aus C++-Header- und -Quelldatei) für Implementierungszwecke. Sie können Formular und Klasse zu einem existierenden Qt-Widget-Projekt hinzufügen.</translation>
</message>
<message>
<source>Choose a Form Template</source>
@@ -29161,8 +29161,8 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>Über Qt Designer-Plugins...</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>Über Qt Widgets Designer-Plugins...</translation>
</message>
<message>
<source>Preview in</source>
@@ -41285,10 +41285,10 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen.
<translation>Pfad</translation>
</message>
<message>
- <source>Creates a widget-based Qt application that contains a Qt Designer-based main window and C++ source and header files to implement the application logic.
+ <source>Creates a widget-based Qt application that contains a Qt Widgets Designer-based main window and C++ source and header files to implement the application logic.
Preselects a desktop Qt for building the application if available.</source>
- <translation>Erstellt eine Widget-basierte Qt-Anwendung mit einem Qt Designer-basierten Hauptfenster und C++-Quell- und Headerdateien zur Implementierung der Applikationslogik.
+ <translation>Erstellt eine Widget-basierte Qt-Anwendung mit einem Qt Widgets Designer-basierten Hauptfenster und C++-Quell- und Headerdateien zur Implementierung der Applikationslogik.
Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern verfügbar.</translation>
</message>
@@ -41381,11 +41381,11 @@ Wahlweise können Sie ein Projekt erstellen, das in Qt Design Studio geöffnet w
<translation>Formularvorlage</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Erstellt ein Qt-Designer-Formular, das Sie zu einem Qt Widget-Projekt hinzufügen können. Dies ist nützlich, wenn Sie bereits eine Klasse für die Anwendungslogik haben.</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Erstellt ein Qt-Widgets-Designer-Formular, das Sie zu einem Qt Widget-Projekt hinzufügen können. Dies ist nützlich, wenn Sie bereits eine Klasse für die Anwendungslogik haben.</translation>
</message>
<message>
- <source>Qt Designer Form</source>
+ <source>Qt Widgets Designer Form</source>
<translation>Qt-Designer-Formular</translation>
</message>
<message>
@@ -41899,8 +41899,8 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen.</translatio
<translation>Leeres Fenster</translation>
</message>
<message>
- <source>Creates a Qt for Python application that includes a Qt Designer-based widget (ui file). Requires .ui to Python conversion.</source>
- <translation>Erstellt eine Qt for Python-Anwendung, die ein Qt Designer-basiertes Widget (ui-Datei) enthält. Erfordert Umwandlung von .ui nach Python.</translation>
+ <source>Creates a Qt for Python application that includes a Qt Widgets Designer-based widget (ui file). Requires .ui to Python conversion.</source>
+ <translation>Erstellt eine Qt for Python-Anwendung, die ein Qt Widgets Designer-basiertes Widget (ui-Datei) enthält. Erfordert Umwandlung von .ui nach Python.</translation>
</message>
<message>
<source>Window UI</source>
@@ -45526,15 +45526,15 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D
</message>
<message>
<source>Qt Custom Designer Widget</source>
- <translation>Benutzerdefiniertes Widget für Qt Designer</translation>
+ <translation>Benutzerdefiniertes Widget für Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source>
- <translation>Erstellt ein oder mehrere benutzerdefinierte Widgets für Qt Designer.</translation>
+ <translation>Erstellt ein oder mehrere benutzerdefinierte Widgets für Qt Widgets Designer.</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translation>Dieser Assistent erstellt ein Projekt mit einem oder mehreren benutzerdefinierten Widgets für Qt Designer.</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translation>Dieser Assistent erstellt ein Projekt mit einem oder mehreren benutzerdefinierten Widgets für Qt Widgets Designer.</translation>
</message>
<message>
<source>Creating multiple widget libraries (%1, %2) in one project (%3) is not supported.</source>
@@ -45553,8 +45553,8 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D
<translation>Die Anwendung &quot;%1&quot; konnte nicht gefunden werden.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer antwortet nicht (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer antwortet nicht (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -53709,7 +53709,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält.
<translation>Rechtsbündig</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>Zeilenannotationen</translation>
</message>
<message>
@@ -54643,7 +54643,7 @@ Drücken Sie zusätzlich die Umschalttaste, wird ein Escape-Zeichen an der aktue
<translation>Zeichenketten automatisch teilen</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Passende Zeichen automatisch einfügen</translation>
</message>
<message>
@@ -55682,7 +55682,7 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten.</translation>
<translation>Zurücksetzen</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Suchbereich</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_es.ts b/share/qtcreator/translations/qtcreator_es.ts
index 623ffc7e0ae..d9de9393a9b 100644
--- a/share/qtcreator/translations/qtcreator_es.ts
+++ b/share/qtcreator/translations/qtcreator_es.ts
@@ -3777,8 +3777,8 @@ Es recomendado usar gdb 6.7 o posterior.</translation>
<translation type="obsolete">Editor de signals/slots</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Clase del formulario Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Clase del formulario Qt Widgets Designer</translation>
</message>
<message>
<source>%1 - Error</source>
@@ -3825,20 +3825,20 @@ Es recomendado usar gdb 6.7 o posterior.</translation>
<translation></translation>
</message>
<message>
- <source>Qt Designer Form</source>
+ <source>Qt Widgets Designer Form</source>
<translation>Diseñador de formularios de Qt</translation>
</message>
<message>
- <source>Creates a Qt Designer form file (.ui).</source>
- <translation>Crea un archivo de formulario de Qt Designer (.ui).</translation>
+ <source>Creates a Qt Widgets Designer form file (.ui).</source>
+ <translation>Crea un archivo de formulario de Qt Widgets Designer (.ui).</translation>
</message>
<message>
- <source>Creates a Qt Designer form file (.ui) with a matching class.</source>
- <translation>Crea un archivo de formulario de Qt Designer (.ui) para una clase.</translation>
+ <source>Creates a Qt Widgets Designer form file (.ui) with a matching class.</source>
+ <translation>Crea un archivo de formulario de Qt Widgets Designer (.ui) para una clase.</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Clase del formulario de Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Clase del formulario de Qt Widgets Designer</translation>
</message>
<message>
<source>Object inspector</source>
@@ -3953,8 +3953,8 @@ Es recomendado usar gdb 6.7 o posterior.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <source>About Qt Designer plugins....</source>
- <translation>Acerca de los plugins de Qt Designer...</translation>
+ <source>About Qt Widgets Designer plugins....</source>
+ <translation>Acerca de los plugins de Qt Widgets Designer...</translation>
</message>
<message>
<source>Preview in</source>
@@ -3989,8 +3989,8 @@ Es recomendado usar gdb 6.7 o posterior.</translation>
<translation>Imposible escribir a %1: %2</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Formulario de Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Formulario de Qt Widgets Designer</translation>
</message>
<message>
<source>The class definition of &apos;%1&apos; could not be found in %2.</source>
@@ -7459,8 +7459,8 @@ al control de versiones (%2)?</translation>
<translation>Este asistente genera un proyecto de aplicación Qt4 para consola. La aplicación es derivada de QCoreApplication y no provee interfaz gráfica de usuario.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer no está respondiendo (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer no está respondiendo (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts
index c7057fc09ec..ff5318759a9 100644
--- a/share/qtcreator/translations/qtcreator_fr.ts
+++ b/share/qtcreator/translations/qtcreator_fr.ts
@@ -10730,7 +10730,7 @@ dans le navigateur système pour un téléchargement manuel.</translation>
<translation>Liste des NDK Android&#xa0;:</translation>
</message>
<message>
- <source>Android OpenSSL settings (Optional)</source>
+ <source>Android OpenSSL Settings (Optional)</source>
<translation>Paramètres Android d&apos;OpenSSL (optionnel)</translation>
</message>
<message>
@@ -11066,12 +11066,12 @@ Le kit supporte «&#xa0;%2&#xa0;», mais le périphérique utilise «&#xa0;%3&#x
</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-La désinstallation du paquet installé peut résoudre le problème.
-Voulez-vous désinstaller le paquet existant&#xa0;?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>La désinstallation du paquet installé peut résoudre le problème.</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>Voulez-vous désinstaller le paquet existant&#xa0;?</translation>
</message>
<message>
<source>Install failed</source>
@@ -12712,7 +12712,7 @@ Exécutable&#xa0;: %2</translation>
<translation>Répétition des tests</translation>
</message>
<message>
- <source>Run in parallel</source>
+ <source>Run in Parallel</source>
<translation>Exécuter en parallèle</translation>
</message>
<message>
@@ -20440,8 +20440,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
<translation>Éditeur QMLJS</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -22228,7 +22228,7 @@ Le modèle de code intégré gèrera le surlignage, la complétion, etc.</transl
<translation>Seuil de mise à jour du document :</translation>
</message>
<message>
- <source>Sessions with a single clangd instance</source>
+ <source>Sessions with a Single Clangd Instance</source>
<translation>Sessions avec une seule instance de clangd</translation>
</message>
<message>
@@ -22450,7 +22450,7 @@ devraient être gérés par le même processus clangd, ajoutez-les ici.</transla
<translation>Convertir en Camel Case</translation>
</message>
<message>
- <source>Add forward declaration for %1</source>
+ <source>Add Forward Declaration for %1</source>
<translation>Ajouter la déclaration préalable pour %1</translation>
</message>
<message>
@@ -22982,8 +22982,8 @@ p.ex. nom = «&#xa0;m_test_toto_&#xa0;» :
<translation>Modèles de getters et setters personnalisés</translation>
</message>
<message>
- <source>Value types:</source>
- <translation>Types de valeur :</translation>
+ <source>Value Types</source>
+ <translation>Types de valeur</translation>
</message>
<message>
<source>Projects only</source>
@@ -28811,8 +28811,8 @@ L’accès au module ou la mise en place de points d’arrêt par fichier et par
<translation>Éditeur d’interface graphique</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Classe d’interface graphique Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Classe d’interface graphique Qt Widgets Designer</translation>
</message>
<message>
<source>Form Template</source>
@@ -28835,12 +28835,12 @@ L’accès au module ou la mise en place de points d’arrêt par fichier et par
<translation>Sélectionner un nom de classe</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
- <translation>Crée un formulaire Qt Designer avec une classe correspondante (en-tête C++ et fichier source) pour implémentation. Vous pouvez ajouter le formulaire et la classe à un projet Qt Widget existant.</translation>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <translation>Crée un formulaire Qt Widgets Designer avec une classe correspondante (en-tête C++ et fichier source) pour implémentation. Vous pouvez ajouter le formulaire et la classe à un projet Qt Widget existant.</translation>
</message>
<message>
<source>Widget Box</source>
- <translatorcomment>this translation must coherent with the translation of Qt Designer</translatorcomment>
+ <translatorcomment>this translation must coherent with the translation of Qt Widgets Designer</translatorcomment>
<translation>Boite de widget</translation>
</message>
<message>
@@ -28937,8 +28937,8 @@ L’accès au module ou la mise en place de points d’arrêt par fichier et par
<translation>Maj+F4</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>À propos des greffons de Qt Designer…</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>À propos des greffons de Qt Widgets Designer…</translation>
</message>
<message>
<source>Signals &amp;&amp; Slots Editor</source>
@@ -40386,8 +40386,8 @@ Présélectionne un Qt optimisé pour le bureau pour compiler l&apos;application
<translation>Définir l&apos;interpréteur Python</translation>
</message>
<message>
- <source>Creates a Qt for Python application that includes a Qt Designer-based widget (ui file). Requires .ui to Python conversion.</source>
- <translation>Génère une application Qt pour Python qui inclût un widget basé sur Qt Designer (fichier ui). Nécessite une conversion de .ui vers Python.</translation>
+ <source>Creates a Qt for Python application that includes a Qt Widgets Designer-based widget (ui file). Requires .ui to Python conversion.</source>
+ <translation>Génère une application Qt pour Python qui inclût un widget basé sur Qt Widgets Designer (fichier ui). Nécessite une conversion de .ui vers Python.</translation>
</message>
<message>
<source>Creates a Qt Quick UI project for previewing and prototyping designs.
@@ -40910,10 +40910,10 @@ Utilisez cette version «&#xa0;de compatibilité&#xa0;» si vous souhaitez utili
<translation>Application Qt Quick (compatibilité)</translation>
</message>
<message>
- <source>Creates a widget-based Qt application that contains a Qt Designer-based main window and C++ source and header files to implement the application logic.
+ <source>Creates a widget-based Qt application that contains a Qt Widgets Designer-based main window and C++ source and header files to implement the application logic.
Preselects a desktop Qt for building the application if available.</source>
- <translation>Génère une application basée sur les widgets qui contient une fenêtre principale basée sur Qt Designer et un ensemble de fichiers d&apos;entêtes et de sources C++ pour implémenter la logique de l&apos;application.
+ <translation>Génère une application basée sur les widgets qui contient une fenêtre principale basée sur Qt Widgets Designer et un ensemble de fichiers d&apos;entêtes et de sources C++ pour implémenter la logique de l&apos;application.
Sélectionne un Qt optimisé pour bureaux pour compiler l&apos;application, si disponible.</translation>
</message>
@@ -41254,12 +41254,12 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l&apos;application, si d
<translation>Modèle d’interface graphique</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Crée un formulaire Qt Designer que l’on peut ajouter à un projet Qt Widget. Ceci est utile si vous utilisez déjà une classe pour la logique métier de l’interface.</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Crée un formulaire Qt Widgets Designer que l’on peut ajouter à un projet Qt Widget. Ceci est utile si vous utilisez déjà une classe pour la logique métier de l’interface.</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Interface graphique Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Interface graphique Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a source file that you can add to a C/C++ project.</source>
@@ -45032,8 +45032,8 @@ Les fichiers affectés sont :
<context>
<name>QtC::QmakeProjectManager</name>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer ne répond pas (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer ne répond pas (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -45404,9 +45404,9 @@ Les fichiers affectés sont :
<translation>Crée un widget personnalisé ou une collection de widgets personnalisés pour Qt4 Designer.</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translatorcomment>lourd ? &quot;contenant un widget ou une collection de widgets, personnalisé pour Qt Designer&quot; ?</translatorcomment>
- <translation>Cet assistant génère un projet contenant un widget ou une collection de widgets personnalisés pour Qt Designer.</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translatorcomment>lourd ? &quot;contenant un widget ou une collection de widgets, personnalisé pour Qt Widgets Designer&quot; ?</translatorcomment>
+ <translation>Cet assistant génère un projet contenant un widget ou une collection de widgets personnalisés pour Qt Widgets Designer.</translation>
</message>
<message>
<source>Custom Widgets</source>
@@ -52717,7 +52717,7 @@ si le commentaire débute avec «&#xa0;/*!&#xa0;» ou «&#xa0;//!&#xa0;».</tran
<translation>À la demande</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>Insérer &amp;automatiquement les caractères correspondants</translation>
</message>
<message>
@@ -54974,7 +54974,7 @@ francis : en effet, une erreur de ma part --&gt; validé.</translatorcomment>
<translation>Entre les lignes</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>Annotations de ligne</translation>
</message>
<message>
@@ -55417,7 +55417,7 @@ Influence l’indentation des lignes de continuation.
<translation>Scanner le sous-projet actuel</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Portée de la recherche</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_hr.ts b/share/qtcreator/translations/qtcreator_hr.ts
index ad756fc8eff..acd2770cab3 100644
--- a/share/qtcreator/translations/qtcreator_hr.ts
+++ b/share/qtcreator/translations/qtcreator_hr.ts
@@ -8025,7 +8025,7 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
<translation>Automatski rastavi znakovne nizove</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Automatski umetni poklapajuće znakove</translation>
</message>
<message>
@@ -8193,7 +8193,7 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
<translation>Označi promjene u &amp;tekstu</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>Napomene za retke</translation>
</message>
<message>
@@ -8443,7 +8443,7 @@ Utječe na uvlačenje neprekinutih redaka.
<translation>Resetiraj</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Raspon pretrage</translation>
</message>
<message>
@@ -13221,9 +13221,11 @@ The minimum API level required by the kit is %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -15304,8 +15306,8 @@ Check the test environment.</source>
<translation>Python uređivač</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -20900,8 +20902,8 @@ Rebuilding the project might help.</source>
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>O Qt Designer dodacima …</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>O Qt Widgets Designer dodacima …</translation>
</message>
<message>
<source>Preview in</source>
diff --git a/share/qtcreator/translations/qtcreator_hu.ts b/share/qtcreator/translations/qtcreator_hu.ts
index 9f29949c84d..23c59c4d416 100644
--- a/share/qtcreator/translations/qtcreator_hu.ts
+++ b/share/qtcreator/translations/qtcreator_hu.ts
@@ -5235,8 +5235,8 @@ A projekt újraépítése talán segít.</translation>
<translation>Qt modulnevek használata az #include irányelvekben</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Qt Designer forma osztály</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Qt Widgets Designer forma osztály</translation>
</message>
<message>
<source>Choose a class name</source>
@@ -5259,16 +5259,16 @@ A projekt újraépítése talán segít.</translation>
<translation>Qt</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Qt Designer forma</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Qt Widgets Designer forma</translation>
</message>
<message>
- <source>Creates a Qt Designer form file (.ui).</source>
- <translation>Qt Designer forma fájl (.ui) létrehozása.</translation>
+ <source>Creates a Qt Widgets Designer form file (.ui).</source>
+ <translation>Qt Widgets Designer forma fájl (.ui) létrehozása.</translation>
</message>
<message>
- <source>Creates a Qt Designer form file (.ui) with a matching class.</source>
- <translation>Qt Designer forma fájl(.ui) létrehozása illeszkedő osztályokkal.</translation>
+ <source>Creates a Qt Widgets Designer form file (.ui) with a matching class.</source>
+ <translation>Qt Widgets Designer forma fájl(.ui) létrehozása illeszkedő osztályokkal.</translation>
</message>
<message>
<source>Widget Box</source>
@@ -5371,8 +5371,8 @@ A projekt újraépítése talán segít.</translation>
<translation>Ctrl+Alt+R</translation>
</message>
<message>
- <source>About Qt Designer plugins....</source>
- <translation>Névjegy a Qt Designer beépülő moduljairól...</translation>
+ <source>About Qt Widgets Designer plugins....</source>
+ <translation>Névjegy a Qt Widgets Designer beépülő moduljairól...</translation>
</message>
<message>
<source>Preview in</source>
@@ -8651,8 +8651,8 @@ SOURCES *= .../ide/main/bin/dumper/dumper.cpp(new line)
<translation>CVS feltöltési sablon</translation>
</message>
<message>
- <source>Qt Designer file</source>
- <translation>Qt Designer fájl</translation>
+ <source>Qt Widgets Designer file</source>
+ <translation>Qt Widgets Designer fájl</translation>
</message>
<message>
<source>Generic Qt Creator Project file</source>
@@ -12834,8 +12834,8 @@ p, li { white-space: pre-wrap; }
<translation>Ez a varázsló egy Qt4 Designer szokásos Widget-t vagy Qt4 Designer szokásos Widget gyűjtemény projektet generál.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>A Qt Designer nem válaszol (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>A Qt Widgets Designer nem válaszol (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
diff --git a/share/qtcreator/translations/qtcreator_it.ts b/share/qtcreator/translations/qtcreator_it.ts
index 549bf8f77b7..211f4099556 100644
--- a/share/qtcreator/translations/qtcreator_it.ts
+++ b/share/qtcreator/translations/qtcreator_it.ts
@@ -3652,8 +3652,8 @@ L&apos;utilizzo di gdb 6.7 o successivi è fortemente consigliato.</translation>
<translation type="obsolete">Editor di segnali e slot</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Classe Form di Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Classe Form di Qt Widgets Designer</translation>
</message>
<message>
<source>Choose a class name</source>
@@ -3700,16 +3700,16 @@ L&apos;utilizzo di gdb 6.7 o successivi è fortemente consigliato.</translation>
<translation>Qt</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Form di Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Form di Qt Widgets Designer</translation>
</message>
<message>
- <source>Creates a Qt Designer form file (.ui).</source>
- <translation>Crea un file form Qt Designer (.ui).</translation>
+ <source>Creates a Qt Widgets Designer form file (.ui).</source>
+ <translation>Crea un file form Qt Widgets Designer (.ui).</translation>
</message>
<message>
- <source>Creates a Qt Designer form file (.ui) with a matching class.</source>
- <translation>Crea un file form Qt Designer (.ui) e la relativa classe.</translation>
+ <source>Creates a Qt Widgets Designer form file (.ui) with a matching class.</source>
+ <translation>Crea un file form Qt Widgets Designer (.ui) e la relativa classe.</translation>
</message>
<message>
<source>Designer widgetbox</source>
@@ -3824,8 +3824,8 @@ L&apos;utilizzo di gdb 6.7 o successivi è fortemente consigliato.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <source>About Qt Designer plugins....</source>
- <translation>Informazioni sui plugin Qt Designer...</translation>
+ <source>About Qt Widgets Designer plugins....</source>
+ <translation>Informazioni sui plugin Qt Widgets Designer...</translation>
</message>
<message>
<source>Preview in</source>
@@ -7309,8 +7309,8 @@ al VCS (%2)?</translation>
<translation>Questa procedura guidata genera un progetto per applicazione console Qt4. L&apos;applicazione deriva da QCoreApplication e non include una GUI.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer non risponde (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer non risponde (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
diff --git a/share/qtcreator/translations/qtcreator_ja.ts b/share/qtcreator/translations/qtcreator_ja.ts
index 74f505017d7..22f040580f6 100644
--- a/share/qtcreator/translations/qtcreator_ja.ts
+++ b/share/qtcreator/translations/qtcreator_ja.ts
@@ -785,7 +785,7 @@
<translation>SDK のセットアップ</translation>
</message>
<message>
- <source>Android OpenSSL settings (Optional)</source>
+ <source>Android OpenSSL Settings (Optional)</source>
<translation>Android OpenSSL の設定 (オプション)</translation>
</message>
<message>
@@ -1895,7 +1895,7 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
<translation>文字列を自動的に分割する</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>マッチング文字を自動的に挿入する(&amp;A)</translation>
</message>
<message>
@@ -6322,7 +6322,7 @@ Backspace キーが押された時のインデントの動作を指定します
<translation>ファイル内のナビゲーションをアニメーション化する</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>ラインアノテーション</translation>
</message>
<message>
@@ -6678,7 +6678,7 @@ Influences the indentation of continuation lines.
<translation>リセット</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>スキャンする範囲</translation>
</message>
<message>
@@ -10949,12 +10949,12 @@ with a password, which you can enter below.</source>
</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-インストールされているパッケージをアンインストールすると、問題が解決する場合があります。
-既存のパッケージをアンインストールしますか?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>インストールされているパッケージをアンインストールすると、問題が解決する場合があります。</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>既存のパッケージをアンインストールしますか?</translation>
</message>
<message>
<source>Package deploy: Running command &quot;%1&quot;.</source>
@@ -12152,8 +12152,8 @@ in the system&apos;s browser for manual download.</source>
<translation>Python エディタ</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -14319,7 +14319,7 @@ to version control (%2)
<translation>#include %1 を追加</translation>
</message>
<message>
- <source>Add forward declaration for %1</source>
+ <source>Add Forward Declaration for %1</source>
<translation>%1 の前方宣言を追加する</translation>
</message>
<message>
@@ -18978,8 +18978,8 @@ Rebuilding the project might help.</source>
プロジェクトのリビルドをお奨めします。</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Qt Designer フォームクラス</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Qt Widgets Designer フォームクラス</translation>
</message>
<message>
<source>Switch Source/Form</source>
@@ -18994,8 +18994,8 @@ Rebuilding the project might help.</source>
<translation>Shift+F4</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
- <translation>既存の Qt ウィジェットプロジェクトに追加可能な Qt Designer フォームとそれに対応したクラス (C++ ヘッダとソースファイル) を作成します。</translation>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <translation>既存の Qt ウィジェットプロジェクトに追加可能な Qt Widgets Designer フォームとそれに対応したクラス (C++ ヘッダとソースファイル) を作成します。</translation>
</message>
<message>
<source>Choose a Form Template</source>
@@ -25088,8 +25088,8 @@ Neither the path to the library nor the path to its includes is added to the .pr
<translation>Qt カスタム Designer ウィジェットかカスタムウィジェットコレクションを作成します。</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translation>このウィザードは Qt Designer カスタムウィジェットあるいは Qt Designer カスタムウィジェットコレクションプロジェクトを生成します。</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translation>このウィザードは Qt Widgets Designer カスタムウィジェットあるいは Qt Widgets Designer カスタムウィジェットコレクションプロジェクトを生成します。</translation>
</message>
<message>
<source>Creating multiple widget libraries (%1, %2) in one project (%3) is not supported.</source>
@@ -25140,8 +25140,8 @@ Neither the path to the library nor the path to its includes is added to the .pr
<translation>アプリケーション &quot;%1&quot; が見つかりませんでした。</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer が無応答です(%1)。</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer が無応答です(%1)。</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -25612,10 +25612,10 @@ Neither the path to the library nor the path to its includes is added to the .pr
<translation>Qt ウィジェットアプリケーション</translation>
</message>
<message>
- <source>Creates a Qt application for the desktop. Includes a Qt Designer-based main window.
+ <source>Creates a Qt application for the desktop. Includes a Qt Widgets Designer-based main window.
Preselects a desktop Qt for building the application if available.</source>
- <translation>Qt Designer ベースのメインウィンドウを持つデスクトップ用 Qt アプリケーションを作成します。
+ <translation>Qt Widgets Designer ベースのメインウィンドウを持つデスクトップ用 Qt アプリケーションを作成します。
デスクトップ用 Qt が存在する場合、アプリケーションのビルド用に選択します。</translation>
</message>
@@ -37181,8 +37181,8 @@ Affected are breakpoints %1</source>
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>Qt Designer プラグインについて...</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>Qt Widgets Designer プラグインについて...</translation>
</message>
<message>
<source>Preview in</source>
@@ -37506,12 +37506,12 @@ Affected are breakpoints %1</source>
<translation>フォームテンプレート</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Qt ウィジェットプロジェクトに追加可能な Qt Designer フォームを作成します。これは既に UI ビジネスロジックを実装したクラスを持っている場合に役立ちます。</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Qt ウィジェットプロジェクトに追加可能な Qt Widgets Designer フォームを作成します。これは既に UI ビジネスロジックを実装したクラスを持っている場合に役立ちます。</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Qt Designer フォーム</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Qt Widgets Designer フォーム</translation>
</message>
<message>
<source>Creates a Java file with boilerplate code.</source>
diff --git a/share/qtcreator/translations/qtcreator_pl.ts b/share/qtcreator/translations/qtcreator_pl.ts
index 465f3f32d3a..00278fb998f 100644
--- a/share/qtcreator/translations/qtcreator_pl.ts
+++ b/share/qtcreator/translations/qtcreator_pl.ts
@@ -9917,7 +9917,7 @@ in the system&apos;s browser for manual download.</source>
<translation>Lista Android NDK:</translation>
</message>
<message>
- <source>Android OpenSSL settings (Optional)</source>
+ <source>Android OpenSSL Settings (Optional)</source>
<translation>Ustawienia Android OpenSSL (opcjonalne)</translation>
</message>
<message>
@@ -10692,12 +10692,12 @@ The kit supports &quot;%2&quot;, but the device uses &quot;%3&quot;.</source>
<translation>Błąd instalacji, przyczyna nieznana.</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-Deinstalacja uprzednio zainstalowanego pakietu może rozwiązać problem.
-Czy zdeinstalować istniejący pakiet?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>Deinstalacja uprzednio zainstalowanego pakietu może rozwiązać problem.</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>Czy zdeinstalować istniejący pakiet?</translation>
</message>
<message>
<source>The deployment AVD &quot;%1&quot; cannot be started.</source>
@@ -12496,7 +12496,7 @@ See also Google Test settings.</source>
<translation>Powtarzanie testów</translation>
</message>
<message>
- <source>Run in parallel</source>
+ <source>Run in Parallel</source>
<translation>Uruchomianie równoległe</translation>
</message>
<message>
@@ -15958,8 +15958,8 @@ tylko przez wbudowane narzędzie.</translation>
<translation>Użyj globalnych ustawień</translation>
</message>
<message>
- <source>ClangFormat settings:</source>
- <translation>Ustawienia ClangFormat:</translation>
+ <source>ClangFormat Settings</source>
+ <translation>Ustawienia ClangFormat</translation>
</message>
<message>
<source>Indenting only</source>
@@ -17866,8 +17866,8 @@ Otherwise you need to specify the path to the %2 file from the Copilot neovim pl
<translation>Edytor QMLJS</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -21384,7 +21384,7 @@ The built-in code model will handle highlighting, completion and so on.</source>
<translation>Próg uaktualniania dokumentu:</translation>
</message>
<message>
- <source>Sessions with a single clangd instance</source>
+ <source>Sessions with a Single Clangd Instance</source>
<translation>Sesje z pojedynczą instancją clangd</translation>
</message>
<message>
@@ -21537,7 +21537,7 @@ managed by the same clangd process, add them here.</source>
<translation>Skonwertuj do pliku binarnego</translation>
</message>
<message>
- <source>Add forward declaration for %1</source>
+ <source>Add Forward Declaration for %1</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -22069,8 +22069,8 @@ e.g. name = &quot;m_test_foo_&quot;:
<translation>Własne szablony pobieraczy i ustawiaczy</translation>
</message>
<message>
- <source>Value types:</source>
- <translation>Typy wartości:</translation>
+ <source>Value Types</source>
+ <translation>Typy wartości</translation>
</message>
<message>
<source>Projects only</source>
@@ -27865,8 +27865,8 @@ Please select a 64 bit Debugger in the kit settings for this kit.</source>
<translation>Podaj nazwę klasy</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Klasa formularza Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Klasa formularza Qt Widgets Designer</translation>
</message>
<message>
<source>Designer</source>
@@ -27901,8 +27901,8 @@ Spróbuj ponownie przebudować projekt.</translation>
<translation>Shift+F4</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
- <translation>Tworzy formularz Qt Designera wraz z klasą implementującą (plik nagłówkowy i źródłowy C++). Utworzony formularz i klasę można dodać do istniejącego projektu Qt Widget.</translation>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <translation>Tworzy formularz Qt Widgets Designera wraz z klasą implementującą (plik nagłówkowy i źródłowy C++). Utworzony formularz i klasę można dodać do istniejącego projektu Qt Widget.</translation>
</message>
<message>
<source>Choose a Form Template</source>
@@ -28053,8 +28053,8 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation>
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>Informacje o wtyczkach Qt Designera...</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>Informacje o wtyczkach Qt Widgets Designera...</translation>
</message>
<message>
<source>Preview in</source>
@@ -40741,10 +40741,10 @@ You can select an option to create a project that you can open in Qt Design Stud
<translation>Informacje o klasie</translation>
</message>
<message>
- <source>Creates a widget-based Qt application that contains a Qt Designer-based main window and C++ source and header files to implement the application logic.
+ <source>Creates a widget-based Qt application that contains a Qt Widgets Designer-based main window and C++ source and header files to implement the application logic.
Preselects a desktop Qt for building the application if available.</source>
- <translation>Tworzy aplikację Qt bazującą na widżetach, zawierającą główne okno do edycji w Qt Designerze wraz z plikami: źródłowym oraz nagłówkowym C++, przeznaczonymi do zaimplementowania logiki aplikacji.
+ <translation>Tworzy aplikację Qt bazującą na widżetach, zawierającą główne okno do edycji w Qt Widgets Designerze wraz z plikami: źródłowym oraz nagłówkowym C++, przeznaczonymi do zaimplementowania logiki aplikacji.
Wstępnie wybiera platformę desktopową Qt do budowania aplikacji, jeśli jest ona dostępna.</translation>
</message>
@@ -41115,12 +41115,12 @@ You should not mix multiple test frameworks in a project.</source>
<translation>Szablon formularza</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Tworzy formularz Qt Designer, który można dodać do projektu typu Qt Widget. Jest to przydatne w sytuacji, kiedy istnieje już klasa zarządzająca logiką UI.</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Tworzy formularz Qt Widgets Designer, który można dodać do projektu typu Qt Widget. Jest to przydatne w sytuacji, kiedy istnieje już klasa zarządzająca logiką UI.</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Formularz Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Formularz Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Java file with boilerplate code.</source>
@@ -43958,15 +43958,15 @@ The affected files are:
</message>
<message>
<source>Qt Custom Designer Widget</source>
- <translation>Własny widżet Qt Designera</translation>
+ <translation>Własny widżet Qt Widgets Designera</translation>
</message>
<message>
<source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source>
- <translation>Tworzy własny widżet Qt Designera lub kolekcję własnych widżetów.</translation>
+ <translation>Tworzy własny widżet Qt Widgets Designera lub kolekcję własnych widżetów.</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translation>Ten kreator generuje projekt własnego widżetu Qt Designera lub projekt kolekcji własnych widżetów Qt4 Designera.</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translation>Ten kreator generuje projekt własnego widżetu Qt Widgets Designera lub projekt kolekcji własnych widżetów Qt4 Widget Designera.</translation>
</message>
<message>
<source>Creating multiple widget libraries (%1, %2) in one project (%3) is not supported.</source>
@@ -43985,8 +43985,8 @@ The affected files are:
<translation>Nie można odnaleźć aplikacji &quot;%1&quot;.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer nie odpowiada (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer nie odpowiada (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -52771,7 +52771,7 @@ Ustala, jak klawisz &quot;Backspace&quot; reaguje na wcięcia.
<translation>Pomiędzy liniami</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>Adnotacje linii</translation>
</message>
<message>
@@ -53749,7 +53749,7 @@ po naciśnięciu klawisza Enter</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Automatyczne wstawianie znaków</translation>
</message>
<message>
@@ -54144,7 +54144,7 @@ if the comment starts with &quot;/*!&quot; or &quot;//!&quot;.</source>
<translation>Zresetuj</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Zakres skanowania</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts
index 8b7bfee3dc8..7f57fe4f12d 100644
--- a/share/qtcreator/translations/qtcreator_ru.ts
+++ b/share/qtcreator/translations/qtcreator_ru.ts
@@ -933,12 +933,12 @@ The files in the Android package source directory are copied to the build direct
</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-Удаление установленного пакета может решить проблему.
-Желаете его удалить?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>Удаление установленного пакета может решить проблему.</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>Желаете его удалить?</translation>
</message>
<message>
<source>Pulling files necessary for debugging.</source>
@@ -2169,7 +2169,7 @@ To hide a sticky splash screen, invoke QtAndroid::hideSplashScreen().</source>
<translation>Настроить SDK</translation>
</message>
<message>
- <source>Android OpenSSL settings (Optional)</source>
+ <source>Android OpenSSL Settings (Optional)</source>
<translation>Настройки Android OpenSSL (опционально)</translation>
</message>
<message>
@@ -11815,7 +11815,7 @@ Flags: %3</source>
<translation>Добавить #include %1</translation>
</message>
<message>
- <source>Add forward declaration for %1</source>
+ <source>Add Forward Declaration for %1</source>
<translation>Добавление предъобъявления %1</translation>
</message>
<message>
@@ -16950,8 +16950,8 @@ Rebuilding the project might help.</source>
Пересборка проекта может помочь.</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Класс формы Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Класс формы Qt Widgets Designer</translation>
</message>
<message>
<source>Class Details</source>
@@ -16982,7 +16982,7 @@ Rebuilding the project might help.</source>
<translation>Shift+F4</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
<translation>Создание формы дизайнера Qt и соответствующего класса (исходный и заголовочный файлы C++) для реализации. Их можно будет добавить к существующему проекту Qt Widget.</translation>
</message>
<message>
@@ -18681,8 +18681,8 @@ when they are not required, which will improve performance in most cases.</sourc
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>О модулях Qt Designer...</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>О модулях Qt Widgets Designer...</translation>
</message>
<message>
<source>Preview in</source>
@@ -25534,8 +25534,8 @@ If set to false, the target will be moved straight to the current mouse position
<translation>Редактор QMLJS</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -29867,12 +29867,12 @@ Enable this if you plan to create 32-bit x86 binaries without using a dedicated
<translation>Шаблон формы</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Создание формы Qt Designer, которую можно добавить в проект Qt Widget. Имеет смысл, если у вас уже есть класс с бизнес-логикой.</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Создание формы Qt Widgets Designer, которую можно добавить в проект Qt Widget. Имеет смысл, если у вас уже есть класс с бизнес-логикой.</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Форма Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Форма Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Java file with boilerplate code.</source>
@@ -30627,7 +30627,7 @@ Use this only if you are prototyping. You cannot create a full application with
<translation>Информация о классе</translation>
</message>
<message>
- <source>Creates a Qt application for the desktop. Includes a Qt Designer-based main window.
+ <source>Creates a Qt application for the desktop. Includes a Qt Widgets Designer-based main window.
Preselects a desktop Qt for building the application if available.</source>
<translation>Создание приложения Qt для настольных компьютеров. Включает основное окно в виде формы дизайнера Qt.
@@ -30707,8 +30707,8 @@ Preselects a desktop Qt for building the application if available.</source>
<translation>Qt для Python - Приложение Qt Quick - Пустое</translation>
</message>
<message>
- <source>Creates a Qt for Python application that includes a Qt Designer-based widget (ui file)</source>
- <translation>Создание приложения на Qt для Python, включающее виджет Qt Designer (файл ui)</translation>
+ <source>Creates a Qt for Python application that includes a Qt Widgets Designer-based widget (ui file)</source>
+ <translation>Создание приложения на Qt для Python, включающее виджет Qt Widgets Designer (файл ui)</translation>
</message>
<message>
<source>Qt for Python - Window (UI file)</source>
@@ -33657,19 +33657,19 @@ Please update your kit (%3) or choose a mkspec for qmake that matches your targe
</message>
<message>
<source>Qt Custom Designer Widget</source>
- <translation>Пользовательский виджет Qt Designer</translation>
+ <translation>Пользовательский виджет Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source>
- <translation>Создание пользовательского виджета Qt Designer или набора пользовательских виджетов.</translation>
+ <translation>Создание пользовательского виджета Qt Widgets Designer или набора пользовательских виджетов.</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translation>Этот мастер создаст пользовательский виджет или набор пользовательских виджетов для Qt Designer.</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translation>Этот мастер создаст пользовательский виджет или набор пользовательских виджетов для Qt Widgets Designer.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer не отвечает (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer не отвечает (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -35211,7 +35211,7 @@ Neither the path to the library nor the path to its includes is added to the .pr
</message>
<message>
<source>Warn about unsupported features of Qt Quick Designer in the code editor</source>
- <translation>Предупреждать о неподдерживаемых особенностях Qt Designer в редакторе кода</translation>
+ <translation>Предупреждать о неподдерживаемых особенностях Qt Quick Designer в редакторе кода</translation>
</message>
<message>
<source>Debugging</source>
@@ -43125,7 +43125,7 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
<translation>Автоматически разделять строки</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Автоматически вставлять парные символы</translation>
</message>
<message>
@@ -43309,7 +43309,7 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
<translation>Прижать к правому краю</translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation>Построчная аннотация</translation>
</message>
<message>
@@ -45131,7 +45131,7 @@ The trace data is lost.</source>
<translation>Сбросить</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Область поиска</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_sl.ts b/share/qtcreator/translations/qtcreator_sl.ts
index 9dba0e365ae..837f8267ded 100644
--- a/share/qtcreator/translations/qtcreator_sl.ts
+++ b/share/qtcreator/translations/qtcreator_sl.ts
@@ -3532,8 +3532,8 @@ Morda lahko pomaga ponovna gradnja projekta.</translation>
<translation type="obsolete">Urejevalnik XML</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Razred obrazca Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Razred obrazca Qt Widgets Designer</translation>
</message>
<message>
<source>Form Template</source>
@@ -3560,8 +3560,8 @@ Morda lahko pomaga ponovna gradnja projekta.</translation>
<translation type="obsolete">Nastavitve …</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Obrazec Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Obrazec Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
@@ -3676,8 +3676,8 @@ Morda lahko pomaga ponovna gradnja projekta.</translation>
<translation>Urejevalnik signalov in rež</translation>
</message>
<message>
- <source>About Qt Designer plugins....</source>
- <translation>O vstavkih za Qt Designer …</translation>
+ <source>About Qt Widgets Designer plugins....</source>
+ <translation>O vstavkih za Qt Widgets Designer …</translation>
</message>
<message>
<source>Preview in</source>
@@ -10725,8 +10725,8 @@ Za uporabo v polje Iskalnika vtipkajte to bližnjico in presledek ter nato iskan
<translation>Urejevalniku QMLJS</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designerju</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designerju</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -11571,15 +11571,15 @@ Razlog: %2</translation>
</message>
<message>
<source>Qt Custom Designer Widget</source>
- <translation>Gradnik za Qt Designer po meri</translation>
+ <translation>Gradnik za Qt Widgets Designer po meri</translation>
</message>
<message>
<source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source>
- <translation>Ustvari gradnik za Qt Designer po meri ali pa zbirko gradnikov po meri</translation>
+ <translation>Ustvari gradnik za Qt Widgets Designer po meri ali pa zbirko gradnikov po meri</translation>
</message>
<message>
<source>This wizard generates a Qt4 Designer Custom Widget or a Qt4 Designer Custom Widget Collection project.</source>
- <translation>Ta čarovnik ustvari projekt gradnika po meri za Qt Designer ali pa projekt zbirke gradnikov po meri za Qt Designer.</translation>
+ <translation>Ta čarovnik ustvari projekt gradnika po meri za Qt Widgets Designer ali pa projekt zbirke gradnikov po meri za Qt Widgets Designer.</translation>
</message>
<message>
<source>Custom Widgets</source>
@@ -11610,8 +11610,8 @@ Razlog: %2</translation>
<translation>Programa »%1« ni bilo moč najti.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer se ne odziva (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer se ne odziva (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -16004,8 +16004,8 @@ Projekte programov QML izvede pregledovalnik QML in jih ni potrebno zgraditi.</t
<translation>Predloga pošiljanja za CVS</translation>
</message>
<message>
- <source>Qt Designer file</source>
- <translation>Datoteka za Qt Designer</translation>
+ <source>Qt Widgets Designer file</source>
+ <translation>Datoteka za Qt Widgets Designer</translation>
</message>
<message>
<source>Generic Qt Creator Project file</source>
diff --git a/share/qtcreator/translations/qtcreator_uk.ts b/share/qtcreator/translations/qtcreator_uk.ts
index bf9deb0e7ff..d3da748f62e 100644
--- a/share/qtcreator/translations/qtcreator_uk.ts
+++ b/share/qtcreator/translations/qtcreator_uk.ts
@@ -3153,7 +3153,7 @@ to version control (%2)
<translation type="vanished">Автоматично вставляти крапки з комами, закриваючі квадратні, круглі, фігурні дужки та лапки, коли необхідно.</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>&amp;Автоматично вставляти парні символи</translation>
</message>
<message>
@@ -6843,8 +6843,8 @@ Rebuilding the project might help.</source>
<translation type="vanished">Додавати версію Qt в #ifdef для імен модулів</translation>
</message>
<message>
- <source>Qt Designer Form Class</source>
- <translation>Клас форми Qt Designer</translation>
+ <source>Qt Widgets Designer Form Class</source>
+ <translation>Клас форми Qt Widgets Designer</translation>
</message>
<message>
<source>Choose a Class Name</source>
@@ -6883,8 +6883,8 @@ Rebuilding the project might help.</source>
<translation type="vanished">Створює форму Qt Designer, яку ви можете додати до проекту Qt Widget. Це корисно, якщо ви вже маєте існуючий клас для бізнес-логіки UI.</translation>
</message>
<message>
- <source>Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
- <translation>Створює форму Qt Designer разом з відповідним класом (файли заголовку та коду C++) з метою реалізації.. Ви можете додати форму та клас до існуючого проекту Qt Widget.</translation>
+ <source>Creates a Qt Widgets Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project.</source>
+ <translation>Створює форму Qt Widgets Designer разом з відповідним класом (файли заголовку та коду C++) з метою реалізації.. Ви можете додати форму та клас до існуючого проекту Qt Widget.</translation>
</message>
<message>
<source>Location</source>
@@ -11142,8 +11142,8 @@ Ids must begin with a lowercase letter.</source>
<translation>Редактор QMLJS</translation>
</message>
<message>
- <source>Qt Designer</source>
- <translation>Qt Designer</translation>
+ <source>Qt Widgets Designer</source>
+ <translation>Qt Widgets Designer</translation>
</message>
<message>
<source>Qt Linguist</source>
@@ -15626,19 +15626,19 @@ Preselects a desktop Qt for building the application if available.</source>
</message>
<message>
<source>Qt Custom Designer Widget</source>
- <translation>Користувацький віджет Qt Designer</translation>
+ <translation>Користувацький віджет Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Qt Custom Designer Widget or a Custom Widget Collection.</source>
- <translation>Створює користувацький віджет Qt Designer або колекцію користувацьких віджетів.</translation>
+ <translation>Створює користувацький віджет Qt Widgets Designer або колекцію користувацьких віджетів.</translation>
</message>
<message>
- <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
- <translation>Цей майстер генерує проект користувацького віджета Qt Designer або колекції користувацьких віджетів Qt Designer.</translation>
+ <source>This wizard generates a Qt Widgets Designer Custom Widget or a Qt Widgets Designer Custom Widget Collection project.</source>
+ <translation>Цей майстер генерує проект користувацького віджета Qt Widgets Designer або колекції користувацьких віджетів Qt Widgets Designer.</translation>
</message>
<message>
- <source>Qt Designer is not responding (%1).</source>
- <translation>Qt Designer не відповідає (%1).</translation>
+ <source>Qt Widgets Designer is not responding (%1).</source>
+ <translation>Qt Widgets Designer не відповідає (%1).</translation>
</message>
<message>
<source>Unable to create server socket: %1</source>
@@ -15717,10 +15717,10 @@ Preselects a desktop Qt for building the application if available.</source>
<translation>Програма Qt Widgets</translation>
</message>
<message>
- <source>Creates a Qt application for the desktop. Includes a Qt Designer-based main window.
+ <source>Creates a Qt application for the desktop. Includes a Qt Widgets Designer-based main window.
Preselects a desktop Qt for building the application if available.</source>
- <translation>Створює програму Qt для стаціонарного комп&apos;ютера. Включає головне вікно на основі Qt Designer.
+ <translation>Створює програму Qt для стаціонарного комп&apos;ютера. Включає головне вікно на основі Qt Widgets Designer.
Обирає Qt для стільниці для збірки програми, якщо доступно.</translation>
</message>
@@ -21894,7 +21894,7 @@ Influences the indentation of continuation lines.
<translation>Скинути</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>Область пошуку</translation>
</message>
<message>
@@ -37378,8 +37378,8 @@ The statements may not contain &apos;{&apos; nor &apos;}&apos; characters.</sour
<translation>Alt+Shift+R</translation>
</message>
<message>
- <source>About Qt Designer Plugins...</source>
- <translation>Про додатки Qt Designer....</translation>
+ <source>About Qt Widgets Designer Plugins...</source>
+ <translation>Про додатки Qt Widgets Designer....</translation>
</message>
<message>
<source>Preview in</source>
@@ -37719,12 +37719,12 @@ The statements may not contain &apos;{&apos; nor &apos;}&apos; characters.</sour
<translation>Шаблон форми</translation>
</message>
<message>
- <source>Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
- <translation>Створює форму Qt Designer, яку ви можете додати до проекту Qt Widget. Це корисно, якщо ви вже маєте існуючий клас для бізнес-логіки UI.</translation>
+ <source>Creates a Qt Widgets Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic.</source>
+ <translation>Створює форму Qt Widgets Designer, яку ви можете додати до проекту Qt Widget. Це корисно, якщо ви вже маєте існуючий клас для бізнес-логіки UI.</translation>
</message>
<message>
- <source>Qt Designer Form</source>
- <translation>Форма Qt Designer</translation>
+ <source>Qt Widgets Designer Form</source>
+ <translation>Форма Qt Widgets Designer</translation>
</message>
<message>
<source>Creates a Java file with boilerplate code.</source>
diff --git a/share/qtcreator/translations/qtcreator_zh_CN.ts b/share/qtcreator/translations/qtcreator_zh_CN.ts
index 3a1b29ef6a9..66a622a4259 100644
--- a/share/qtcreator/translations/qtcreator_zh_CN.ts
+++ b/share/qtcreator/translations/qtcreator_zh_CN.ts
@@ -787,12 +787,12 @@ The kit supports &quot;%2&quot;, but the device uses &quot;%3&quot;.</source>
</translation>
</message>
<message>
- <source>
-Uninstalling the installed package may solve the issue.
-Do you want to uninstall the existing package?</source>
- <translation>
-卸载已安装的包可能解决这个问题。
-你想卸载已经存在的包吗?</translation>
+ <source>Uninstalling the installed package may solve the issue.</source>
+ <translation>卸载已安装的包可能解决这个问题。</translation>
+ </message>
+ <message>
+ <source>Do you want to uninstall the existing package?</source>
+ <translation>你想卸载已经存在的包吗?</translation>
</message>
<message>
<source>Install failed</source>
@@ -1900,7 +1900,7 @@ in the system&apos;s browser for manual download.</source>
<translation>安卓 NDK 列表:</translation>
</message>
<message>
- <source>Android OpenSSL settings (Optional)</source>
+ <source>Android OpenSSL Settings (Optional)</source>
<translation>安卓 OpenSSL 设置(可选)</translation>
</message>
<message>
@@ -2714,7 +2714,7 @@ Executable: %2</source>
<translation>重复测试</translation>
</message>
<message>
- <source>Run in parallel</source>
+ <source>Run in Parallel</source>
<translation>并行运行</translation>
</message>
<message>
@@ -11600,7 +11600,7 @@ The built-in code model will handle highlighting, completion and so on.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sessions with a single clangd instance</source>
+ <source>Sessions with a Single Clangd Instance</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -12511,7 +12511,7 @@ Flags: %3</source>
<translation type="unfinished">添加#include %1</translation>
</message>
<message>
- <source>Add forward declaration for %1</source>
+ <source>Add Forward Declaration for %1</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -12767,7 +12767,7 @@ Flags: %3</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Value types:</source>
+ <source>Value Types:</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -42591,7 +42591,7 @@ Specifies how backspace interacts with indentation.
<translation type="unfinished"></translation>
</message>
<message>
- <source>Line annotations</source>
+ <source>Line Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -42978,7 +42978,7 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -44774,7 +44774,7 @@ Will not be applied to whitespace in comments and strings.</source>
<translation>重置</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>扫描范围</translation>
</message>
<message>
diff --git a/share/qtcreator/translations/qtcreator_zh_TW.ts b/share/qtcreator/translations/qtcreator_zh_TW.ts
index d21d4d9bca2..7b5f5cfba84 100644
--- a/share/qtcreator/translations/qtcreator_zh_TW.ts
+++ b/share/qtcreator/translations/qtcreator_zh_TW.ts
@@ -1715,7 +1715,7 @@
<translation>在適當的時候自動插入分號、結束的括號、大括號與引號等等。</translation>
</message>
<message>
- <source>&amp;Automatically insert matching characters</source>
+ <source>&amp;Automatically Insert Matching Characters</source>
<translation>自動插入對應的字元(&amp;A)</translation>
</message>
<message>
@@ -25376,7 +25376,7 @@ Influences the indentation of continuation lines.
<translation>重置</translation>
</message>
<message>
- <source>Scanning scope</source>
+ <source>Scanning Scope</source>
<translation>掃描範圍</translation>
</message>
<message>