Merge remote-tracking branch 'origin/14.0'
Conflicts: cmake/QtCreatorIDEBranding.cmake qbs/modules/qtc/qtc.qbs Change-Id: If39fe80197537c489361810e91ee221c6c52ea01
2
.github/workflows/build_cmake.yml
vendored
@@ -744,7 +744,7 @@ jobs:
|
|||||||
name: ${{ steps.ccache.outputs.archive_name }}
|
name: ${{ steps.ccache.outputs.archive_name }}
|
||||||
|
|
||||||
- name: Upload Release Changelog
|
- name: Upload Release Changelog
|
||||||
if: contains(github.ref, 'tags/v')
|
if: runner.os == 'macOS' && contains(github.ref, 'tags/v')
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: ./release/changelog.md
|
path: ./release/changelog.md
|
||||||
|
8
dist/changelog/changes-14.0.0.md
vendored
@@ -246,10 +246,12 @@ Version Control Systems
|
|||||||
Test Integration
|
Test Integration
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* Made the test timeout optional
|
* Made the test timeout optional in `Preferences` > `Testing` > `General`
|
||||||
([QTCREATORBUG-30668](https://bugreports.qt.io/browse/QTCREATORBUG-30668))
|
([QTCREATORBUG-30668](https://bugreports.qt.io/browse/QTCREATORBUG-30668))
|
||||||
* Added a project specific option `Limit Files to Path Patterns` for restricting
|
([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-preferences-testing.html))
|
||||||
the search for tests
|
* Added the project specific `Limit Files to Path Patterns` option in `Projects` >
|
||||||
|
`Project Settings` > `Testing` for restricting the search for tests
|
||||||
|
([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-how-to-limit-files-to-path-patterns.html))
|
||||||
|
|
||||||
### Qt Test
|
### Qt Test
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 4.4 KiB |
@@ -141,13 +141,16 @@
|
|||||||
\li Always communicates with the default instance.
|
\li Always communicates with the default instance.
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
\section1 Profile Qt Quick applications
|
\section1 Analyze the applications
|
||||||
|
|
||||||
You can use the \l{Profiling QML Applications}{QML Profiler} to find causes
|
Use the \l{Profiling QML Applications}{QML Profiler} to find causes
|
||||||
for typical performance problems in your Qt Quick applications, such as
|
for typical performance problems in Qt Quick applications, such as
|
||||||
slowness and unresponsive, stuttering user interfaces. You cannot profile an
|
slowness and unresponsive, stuttering user interfaces. You cannot profile an
|
||||||
in-process runtime as an individual process.
|
in-process runtime as an individual process.
|
||||||
|
|
||||||
|
Use the \l{Performance Analyzer} to analyze the CPU and memory usage of an
|
||||||
|
application.
|
||||||
|
|
||||||
\sa {Activate kits for a project}, {Enable and disable plugins},
|
\sa {Activate kits for a project}, {Enable and disable plugins},
|
||||||
{\B2Q}{How To: Develop for \B2Q},
|
{\B2Q}{How To: Develop for \B2Q},
|
||||||
{Remote Linux}{How To: Develop for remote Linux},
|
{Remote Linux}{How To: Develop for remote Linux},
|
||||||
|
@@ -515,7 +515,7 @@
|
|||||||
By default, \QC groups tests that are in the same directory.
|
By default, \QC groups tests that are in the same directory.
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
To select the testing framework for the current project, go to
|
To override some preferences for the current project, go to
|
||||||
\uicontrol Projects > \uicontrol {Project Settings} > \uicontrol {Testing}.
|
\uicontrol Projects > \uicontrol {Project Settings} > \uicontrol {Testing}.
|
||||||
|
|
||||||
\section1 Qt Tests
|
\section1 Qt Tests
|
||||||
@@ -715,7 +715,7 @@
|
|||||||
\li Disable statistical analysis and bootstrapping.
|
\li Disable statistical analysis and bootstrapping.
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
\section2 Specifying Settings for Running CTest-Based Tests
|
\section1 CTest-Based Tests
|
||||||
|
|
||||||
To specify settings for running CTest-based tests, go to \preferences >
|
To specify settings for running CTest-based tests, go to \preferences >
|
||||||
\uicontrol {Testing} > \uicontrol {CTest}.
|
\uicontrol {Testing} > \uicontrol {CTest}.
|
||||||
|
@@ -96,7 +96,7 @@
|
|||||||
\li \l{Link projects with GitLab}{GitLab}
|
\li \l{Link projects with GitLab}{GitLab}
|
||||||
\li \l{Configure language server workspace}{Language Server}
|
\li \l{Configure language server workspace}{Language Server}
|
||||||
\li \l{Specify settings for quick fixes}{Quick Fixes}
|
\li \l{Specify settings for quick fixes}{Quick Fixes}
|
||||||
\li \l{Testing}
|
\li \l{Apply filters before scanning for tests}{Testing}
|
||||||
\li \l{Exclude files from to-do lists}{To-Do} (experimental)
|
\li \l{Exclude files from to-do lists}{To-Do} (experimental)
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
|
@@ -0,0 +1,32 @@
|
|||||||
|
// Copyright (C) 2024 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\page creator-how-to-limit-files-to-path-patterns.html
|
||||||
|
\previouspage creator-how-tos.html
|
||||||
|
|
||||||
|
\ingroup creator-how-to-test
|
||||||
|
\ingroup creator-how-to-projects-configure
|
||||||
|
|
||||||
|
\title Apply filters before scanning for tests
|
||||||
|
|
||||||
|
To override testing preferences for the current project:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li Go to \uicontrol Projects > \uicontrol {Project Settings} >
|
||||||
|
\uicontrol {Testing}.
|
||||||
|
\image qtcreator-projects-settings-testing.webp {Testing settings in Projects mode}
|
||||||
|
\li Clear \uicontrol {Use global settings} to select the tests to handle
|
||||||
|
for the project.
|
||||||
|
\li To automatically run all or selected tests after successfully
|
||||||
|
building the current project, select \uicontrol All or
|
||||||
|
\uicontrol Selected in \uicontrol {Automatically run tests after build}.
|
||||||
|
\li To apply path filters before scanning for tests, select
|
||||||
|
\uicontrol {Limit Files to Path Patterns}.
|
||||||
|
\li Select \uicontrol Add to add the filters as wildcard expressions.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
To remove the selected filter, select \uicontrol Remove.
|
||||||
|
|
||||||
|
\sa {Test}{How To: Test}, {Test Results}, {Testing}
|
||||||
|
*/
|
@@ -8,7 +8,7 @@
|
|||||||
"Vendor" : "MyCompany",
|
"Vendor" : "MyCompany",
|
||||||
"Copyright" : "(C) MyCompany",
|
"Copyright" : "(C) MyCompany",
|
||||||
"License" : "Put short license information here",
|
"License" : "Put short license information here",
|
||||||
"Description" : "Put a short description of your plugin here",
|
"Description" : "Put a short description of your plugin here.",
|
||||||
"Url" : "https://www.mycompany.com",
|
"Url" : "https://www.mycompany.com",
|
||||||
//! [2]
|
//! [2]
|
||||||
//! [3]
|
//! [3]
|
||||||
|
@@ -479,7 +479,7 @@ class Dumper(DumperBase):
|
|||||||
else:
|
else:
|
||||||
val = self.Value(self)
|
val = self.Value(self)
|
||||||
val.laddress = value.pointer()
|
val.laddress = value.pointer()
|
||||||
val.typeid = self.typeid_for_string(value.type.targetName)
|
val.typeid = self.type_target(value.typeid)
|
||||||
val.nativeValue = value.nativeValue
|
val.nativeValue = value.nativeValue
|
||||||
|
|
||||||
return val
|
return val
|
||||||
@@ -501,293 +501,8 @@ class Dumper(DumperBase):
|
|||||||
res = self.nativeParseAndEvaluate(symbolName)
|
res = self.nativeParseAndEvaluate(symbolName)
|
||||||
return None if res is None else res.address()
|
return None if res is None else res.address()
|
||||||
|
|
||||||
def putItem(self, value: DumperBase.Value):
|
def wantQObjectNames(self):
|
||||||
|
return self.showQObjectNames and self.qtCoreModuleName() is not None
|
||||||
typeobj = value.type # unqualified()
|
|
||||||
typeName = typeobj.name
|
|
||||||
|
|
||||||
if not value.lIsInScope:
|
|
||||||
self.putSpecialValue('optimizedout')
|
|
||||||
#self.putType(typeobj)
|
|
||||||
#self.putSpecialValue('outofscope')
|
|
||||||
self.putNumChild(0)
|
|
||||||
return
|
|
||||||
|
|
||||||
if not isinstance(value, self.Value):
|
|
||||||
raise RuntimeError('WRONG TYPE IN putItem: %s' % type(self.Value))
|
|
||||||
|
|
||||||
# Try on possibly typedefed type first.
|
|
||||||
if self.tryPutPrettyItem(typeName, value):
|
|
||||||
if typeobj.code == TypeCode.Pointer:
|
|
||||||
self.putOriginalAddress(value.address())
|
|
||||||
else:
|
|
||||||
self.putAddress(value.address())
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Pointer:
|
|
||||||
self.putFormattedPointer(value)
|
|
||||||
return
|
|
||||||
|
|
||||||
self.putAddress(value.address())
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Function:
|
|
||||||
#DumperBase.warn('FUNCTION VALUE: %s' % value)
|
|
||||||
self.putType(typeobj)
|
|
||||||
self.putSymbolValue(value.pointer())
|
|
||||||
self.putNumChild(0)
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Enum:
|
|
||||||
#DumperBase.warn('ENUM VALUE: %s' % value.stringify())
|
|
||||||
self.putType(typeobj.name)
|
|
||||||
self.putValue(value.display())
|
|
||||||
self.putNumChild(0)
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Array:
|
|
||||||
#DumperBase.warn('ARRAY VALUE: %s' % value)
|
|
||||||
self.putCStyleArray(value)
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Integral:
|
|
||||||
#DumperBase.warn('INTEGER: %s %s' % (value.name, value))
|
|
||||||
val = value.value()
|
|
||||||
self.putNumChild(0)
|
|
||||||
self.putValue(val)
|
|
||||||
self.putType(typeName)
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Float:
|
|
||||||
#DumperBase.warn('FLOAT VALUE: %s' % value)
|
|
||||||
self.putValue(value.value())
|
|
||||||
self.putNumChild(0)
|
|
||||||
self.putType(typeobj.name)
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code in (TypeCode.Reference, TypeCode.RValueReference):
|
|
||||||
#DumperBase.warn('REFERENCE VALUE: %s' % value)
|
|
||||||
val = value.dereference()
|
|
||||||
if val.laddress != 0:
|
|
||||||
self.putItem(val)
|
|
||||||
else:
|
|
||||||
self.putSpecialValue('nullreference')
|
|
||||||
self.putBetterType(typeName)
|
|
||||||
return
|
|
||||||
|
|
||||||
if typeobj.code == TypeCode.Complex:
|
|
||||||
self.putType(typeobj)
|
|
||||||
self.putValue(value.display())
|
|
||||||
self.putNumChild(0)
|
|
||||||
return
|
|
||||||
|
|
||||||
self.putType(typeName)
|
|
||||||
|
|
||||||
if value.summary is not None and self.useFancy:
|
|
||||||
self.putValue(self.hexencode(value.summary), 'utf8:1:0')
|
|
||||||
self.putNumChild(0)
|
|
||||||
return
|
|
||||||
|
|
||||||
self.putExpandable()
|
|
||||||
self.putEmptyValue()
|
|
||||||
#DumperBase.warn('STRUCT GUTS: %s ADDRESS: 0x%x ' % (value.name, value.address()))
|
|
||||||
if self.showQObjectNames:
|
|
||||||
#with self.timer(self.currentIName):
|
|
||||||
self.putQObjectNameValue(value)
|
|
||||||
if self.isExpanded():
|
|
||||||
self.putField('sortable', 1)
|
|
||||||
with Children(self):
|
|
||||||
baseIndex = 0
|
|
||||||
for item in self.listValueChildren(value):
|
|
||||||
if item.name.startswith('__vfptr'):
|
|
||||||
with SubItem(self, '[vptr]'):
|
|
||||||
# int (**)(void)
|
|
||||||
self.putType(' ')
|
|
||||||
self.putSortGroup(20)
|
|
||||||
self.putValue(item.name)
|
|
||||||
n = 100
|
|
||||||
if self.isExpanded():
|
|
||||||
with Children(self):
|
|
||||||
n = self.putVTableChildren(item, n)
|
|
||||||
self.putNumChild(n)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if item.isBaseClass:
|
|
||||||
baseIndex += 1
|
|
||||||
# We cannot use nativeField.name as part of the iname as
|
|
||||||
# it might contain spaces and other strange characters.
|
|
||||||
with UnnamedSubItem(self, "@%d" % baseIndex):
|
|
||||||
self.putField('iname', self.currentIName)
|
|
||||||
self.putField('name', '[%s]' % item.name)
|
|
||||||
self.putSortGroup(1000 - baseIndex)
|
|
||||||
self.putAddress(item.address())
|
|
||||||
self.putItem(item)
|
|
||||||
continue
|
|
||||||
|
|
||||||
|
|
||||||
with SubItem(self, item.name):
|
|
||||||
self.putItem(item)
|
|
||||||
if self.showQObjectNames:
|
|
||||||
self.tryPutQObjectGuts(value)
|
|
||||||
|
|
||||||
def putCStyleArray(self, value: DumperBase.Value):
|
|
||||||
arrayType = value.type
|
|
||||||
innerType = arrayType.target()
|
|
||||||
address = value.address()
|
|
||||||
if address:
|
|
||||||
self.putValue('@0x%x' % address, priority=-1)
|
|
||||||
else:
|
|
||||||
self.putEmptyValue()
|
|
||||||
self.putType(arrayType)
|
|
||||||
|
|
||||||
displayFormat = self.currentItemFormat()
|
|
||||||
arrayByteSize = arrayType.size()
|
|
||||||
n = self.arrayItemCountFromTypeName(value.type.name, 100)
|
|
||||||
|
|
||||||
p = value.address()
|
|
||||||
if displayFormat != DisplayFormat.Raw and p:
|
|
||||||
if innerType.name.strip() in (
|
|
||||||
'char',
|
|
||||||
'int8_t',
|
|
||||||
'qint8',
|
|
||||||
'wchar_t',
|
|
||||||
'unsigned char',
|
|
||||||
'uint8_t',
|
|
||||||
'quint8',
|
|
||||||
'signed char',
|
|
||||||
'CHAR',
|
|
||||||
'WCHAR',
|
|
||||||
'char8_t',
|
|
||||||
'char16_t',
|
|
||||||
'char32_t'
|
|
||||||
):
|
|
||||||
self.putCharArrayHelper(p, n, innerType, self.currentItemFormat(),
|
|
||||||
makeExpandable=False)
|
|
||||||
else:
|
|
||||||
self.tryPutSimpleFormattedPointer(p, arrayType, innerType,
|
|
||||||
displayFormat, arrayByteSize)
|
|
||||||
self.putNumChild(n)
|
|
||||||
|
|
||||||
if self.isExpanded():
|
|
||||||
if n > 100:
|
|
||||||
addrStep = innerType.size()
|
|
||||||
with Children(self, n, innerType, addrBase=address, addrStep=addrStep):
|
|
||||||
for i in self.childRange():
|
|
||||||
self.putSubItem(i, self.createValue(address + i * addrStep, innerType))
|
|
||||||
else:
|
|
||||||
with Children(self):
|
|
||||||
n = 0
|
|
||||||
for item in self.listValueChildren(value):
|
|
||||||
with SubItem(self, n):
|
|
||||||
n += 1
|
|
||||||
self.putItem(item)
|
|
||||||
|
|
||||||
|
|
||||||
def putArrayData(self, base, n, innerType, childNumChild=None):
|
|
||||||
self.checkIntType(base)
|
|
||||||
self.checkIntType(n)
|
|
||||||
addrBase = base
|
|
||||||
innerType = self.createType(innerType)
|
|
||||||
innerSize = innerType.size()
|
|
||||||
self.putNumChild(n)
|
|
||||||
#DumperBase.warn('ADDRESS: 0x%x INNERSIZE: %s INNERTYPE: %s' % (addrBase, innerSize, innerType))
|
|
||||||
enc = self.type_encoding_cache.get(innerType.typeid, None)
|
|
||||||
maxNumChild = self.maxArrayCount()
|
|
||||||
if enc:
|
|
||||||
self.put('childtype="%s",' % innerType.name)
|
|
||||||
self.put('addrbase="0x%x",' % addrBase)
|
|
||||||
self.put('addrstep="0x%x",' % innerSize)
|
|
||||||
self.put('arrayencoding="%s",' % enc)
|
|
||||||
self.put('endian="%s",' % self.packCode)
|
|
||||||
if n > maxNumChild:
|
|
||||||
self.put('childrenelided="%s",' % n)
|
|
||||||
n = maxNumChild
|
|
||||||
self.put('arraydata="')
|
|
||||||
self.put(self.readMemory(addrBase, n * innerSize))
|
|
||||||
self.put('",')
|
|
||||||
else:
|
|
||||||
with Children(self, n, innerType, childNumChild, maxNumChild,
|
|
||||||
addrBase=addrBase, addrStep=innerSize):
|
|
||||||
for i in self.childRange():
|
|
||||||
self.putSubItem(i, self.createValue(addrBase + i * innerSize, innerType))
|
|
||||||
|
|
||||||
def tryPutSimpleFormattedPointer(self, ptr, typeName, innerType, displayFormat, limit):
|
|
||||||
if isinstance(innerType, self.Type):
|
|
||||||
innerType = innerType.name
|
|
||||||
if displayFormat == DisplayFormat.Automatic:
|
|
||||||
if innerType in ('char', 'signed char', 'unsigned char', 'uint8_t', 'CHAR'):
|
|
||||||
# Use UTF-8 as default for char *.
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, shown, data) = self.readToFirstZero(ptr, 1, limit)
|
|
||||||
self.putValue(data, 'utf8', length=length)
|
|
||||||
if self.isExpanded():
|
|
||||||
self.putArrayData(ptr, shown, innerType)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if innerType in ('wchar_t', 'WCHAR'):
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 2, limit)
|
|
||||||
self.putValue(data, 'utf16', length=length)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.Latin1String:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 1, limit)
|
|
||||||
self.putValue(data, 'latin1', length=length)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.SeparateLatin1String:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 1, limit)
|
|
||||||
self.putValue(data, 'latin1', length=length)
|
|
||||||
self.putDisplay('latin1:separate', data)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.Utf8String:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 1, limit)
|
|
||||||
self.putValue(data, 'utf8', length=length)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.SeparateUtf8String:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 1, limit)
|
|
||||||
self.putValue(data, 'utf8', length=length)
|
|
||||||
self.putDisplay('utf8:separate', data)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.Local8BitString:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 1, limit)
|
|
||||||
self.putValue(data, 'local8bit', length=length)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.Utf16String:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 2, limit)
|
|
||||||
self.putValue(data, 'utf16', length=length)
|
|
||||||
return True
|
|
||||||
|
|
||||||
if displayFormat == DisplayFormat.Ucs4String:
|
|
||||||
self.putType(typeName)
|
|
||||||
(length, data) = self.encodeCArray(ptr, 4, limit)
|
|
||||||
self.putValue(data, 'ucs4', length=length)
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
def putDerefedPointer(self, value):
|
|
||||||
derefValue = value.dereference()
|
|
||||||
savedCurrentChildType = self.currentChildType
|
|
||||||
self.currentChildType = value.type.targetName
|
|
||||||
self.putType(value.type.targetName)
|
|
||||||
derefValue.name = '*'
|
|
||||||
derefValue.autoDerefCount = value.autoDerefCount + 1
|
|
||||||
|
|
||||||
if derefValue.type.code == TypeCode.Pointer:
|
|
||||||
self.putField('autoderefcount', '{}'.format(derefValue.autoDerefCount))
|
|
||||||
|
|
||||||
self.putItem(derefValue)
|
|
||||||
self.currentChildType = savedCurrentChildType
|
|
||||||
|
|
||||||
def fetchInternalFunctions(self):
|
def fetchInternalFunctions(self):
|
||||||
coreModuleName = self.qtCoreModuleName()
|
coreModuleName = self.qtCoreModuleName()
|
||||||
|
@@ -1305,14 +1305,17 @@ class DumperBase():
|
|||||||
|
|
||||||
displayFormat = self.currentItemFormat()
|
displayFormat = self.currentItemFormat()
|
||||||
arrayByteSize = arrayType.size()
|
arrayByteSize = arrayType.size()
|
||||||
|
n = self.arrayItemCountFromTypeName(value.type.name, 100)
|
||||||
if arrayByteSize == 0:
|
if arrayByteSize == 0:
|
||||||
# This should not happen. But it does, see QTCREATORBUG-14755.
|
# This should not happen. But it does, see QTCREATORBUG-14755.
|
||||||
# GDB/GCC produce sizeof == 0 for QProcess arr[3]
|
# GDB/GCC produce sizeof == 0 for QProcess arr[3]
|
||||||
# And in the Nim string dumper.
|
# And in the Nim string dumper.
|
||||||
itemCount = self.arrayItemCountFromTypeName(value.type.name, 100)
|
arrayByteSize = n * innerType.size()
|
||||||
arrayByteSize = int(itemCount) * innerType.size()
|
elif not self.isCdb:
|
||||||
|
# Do not check the inner type size for cdb since this requires a potentially expensive
|
||||||
|
# type lookup
|
||||||
n = arrayByteSize // innerType.size()
|
n = arrayByteSize // innerType.size()
|
||||||
|
|
||||||
p = value.address()
|
p = value.address()
|
||||||
if displayFormat != DisplayFormat.Raw and p:
|
if displayFormat != DisplayFormat.Raw and p:
|
||||||
if innerType.name in (
|
if innerType.name in (
|
||||||
@@ -1428,8 +1431,9 @@ class DumperBase():
|
|||||||
# This is shared by pointer and array formatting.
|
# This is shared by pointer and array formatting.
|
||||||
def tryPutSimpleFormattedPointer(self, ptr, typename, innerType, displayFormat, limit):
|
def tryPutSimpleFormattedPointer(self, ptr, typename, innerType, displayFormat, limit):
|
||||||
if displayFormat == DisplayFormat.Automatic:
|
if displayFormat == DisplayFormat.Automatic:
|
||||||
|
if self.isCdb or innerType.code is not TypeCode.Typedef:
|
||||||
targetType = innerType
|
targetType = innerType
|
||||||
if innerType.code == TypeCode.Typedef:
|
else:
|
||||||
targetType = innerType.target()
|
targetType = innerType.target()
|
||||||
|
|
||||||
if targetType.name in ('char', 'signed char', 'unsigned char', 'uint8_t', 'CHAR'):
|
if targetType.name in ('char', 'signed char', 'unsigned char', 'uint8_t', 'CHAR'):
|
||||||
@@ -3407,13 +3411,6 @@ typename))
|
|||||||
def target(self):
|
def target(self):
|
||||||
return self.dumper.Type(self.dumper, self.dumper.type_target(self.typeid))
|
return self.dumper.Type(self.dumper, self.dumper.type_target(self.typeid))
|
||||||
|
|
||||||
@property
|
|
||||||
def targetName(self):
|
|
||||||
target = self.target()
|
|
||||||
if target is None:
|
|
||||||
return ''
|
|
||||||
return target if isinstance(target, str) else target.name
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def moduleName(self):
|
def moduleName(self):
|
||||||
return self.dumper.type_modulename_cache.get(self.typeid, None)
|
return self.dumper.type_modulename_cache.get(self.typeid, None)
|
||||||
|
0
share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/qmldir
Executable file → Normal file
4
src/libs/3rdparty/libptyqt/conptyprocess.cpp
vendored
@@ -1132,10 +1132,6 @@ qint64 ConPtyProcess::write(const QByteArray &byteArray)
|
|||||||
|
|
||||||
bool ConPtyProcess::isAvailable()
|
bool ConPtyProcess::isAvailable()
|
||||||
{
|
{
|
||||||
#ifdef TOO_OLD_WINSDK
|
|
||||||
return false; //very importnant! ConPty can be built, but it doesn't work if built with old sdk and Win10 < 1903
|
|
||||||
#endif
|
|
||||||
|
|
||||||
qint32 buildNumber = QSysInfo::kernelVersion().split(".").last().toInt();
|
qint32 buildNumber = QSysInfo::kernelVersion().split(".").last().toInt();
|
||||||
if (buildNumber < CONPTY_MINIMAL_WINDOWS_VERSION)
|
if (buildNumber < CONPTY_MINIMAL_WINDOWS_VERSION)
|
||||||
return false;
|
return false;
|
||||||
|
1
src/libs/3rdparty/libptyqt/conptyprocess.h
vendored
@@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
typedef VOID* HPCON;
|
typedef VOID* HPCON;
|
||||||
|
|
||||||
#define TOO_OLD_WINSDK
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class QWinEventNotifier;
|
class QWinEventNotifier;
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop applications for Android devices",
|
"Description" : "Develop applications for Android devices.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Connect devices with USB to run, debug, and analyze applications built for them.",
|
"Connect devices with USB to run, debug, and analyze applications built for them.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Visualize CPU and Memory consumption for running applications",
|
"Description" : "Visualize CPU and Memory consumption for running applications.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Select an application to monitor its performance in real-time."
|
"Select an application to monitor its performance in real-time."
|
||||||
],
|
],
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Create code based tests and build system based tests",
|
"Description" : "Create code based tests and build system based tests.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Code based testing offers special handling for particular testing frameworks that strongly ties to the underlying code models or specialized parsers.",
|
"Code based testing offers special handling for particular testing frameworks that strongly ties to the underlying code models or specialized parsers.",
|
||||||
"Build system based testing is independent from any testing frameworks. It retrieves information directly from the underlying build system and uses it or even the build system as such to execute the respective tests."
|
"Build system based testing is independent from any testing frameworks. It retrieves information directly from the underlying build system and uses it or even the build system as such to execute the respective tests."
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
"Description" : "Open Autotools-based projects in Qt Creator",
|
"Description" : "Open Autotools-based projects in Qt Creator.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Autotools",
|
"- Autotools",
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Code Analyzer",
|
"Category" : "Code Analyzer",
|
||||||
"Description" : "Access an Axivion dashboard server",
|
"Description" : "Access an Axivion dashboard server.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Protect software from erosion with static code analysis, architecture analysis, and code-smells-detection."
|
"Protect software from erosion with static code analysis, architecture analysis, and code-smells-detection."
|
||||||
],
|
],
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop applications for bare metal devices",
|
"Description" : "Develop applications for bare metal devices.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Adds a target for bare metal development.",
|
"Adds a target for bare metal development.",
|
||||||
"Connect devices with debug server providers to run, debug, and analyze applications built for them.",
|
"Connect devices with debug server providers to run, debug, and analyze applications built for them.",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access the Bazaar version control system",
|
"Description" : "Access the Bazaar version control system.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Bazaar"
|
"- Bazaar"
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "C++",
|
"Category" : "C++",
|
||||||
"Description" : "Apply indentation and style to source code files",
|
"Description" : "Apply indentation and style to source code files.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need one of the following tools:",
|
"You also need one of the following tools:",
|
||||||
"- Artistic Style",
|
"- Artistic Style",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Creator",
|
"Category" : "Qt Creator",
|
||||||
"Description" : "Edit binary files",
|
"Description" : "Edit binary files.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
],
|
],
|
||||||
|
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop applications for Boot to Qt devices",
|
"Description" : "Develop applications for Boot to Qt devices.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Connect devices with a USB cable, or a wired or wireless connection, depending on the device to run, debug, and analyze applications built for them.",
|
"Connect devices with a USB cable, or a wired or wireless connection, depending on the device to run, debug, and analyze applications built for them.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "C++",
|
"Category" : "C++",
|
||||||
"Description" : "Use Clang code model instead of the built-in code model",
|
"Description" : "Use Clang code model instead of the built-in code model.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"The code model is the part of an IDE that understands the programming language you are using to write your application. With it, Qt Creator can help you code faster and avoid errors."
|
"The code model is the part of an IDE that understands the programming language you are using to write your application. With it, Qt Creator can help you code faster and avoid errors."
|
||||||
],
|
],
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "C++",
|
"Category" : "C++",
|
||||||
"Description" : "Indent and format C++ code",
|
"Description" : "Indent and format C++ code.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"ClangFormat is an alternative for the built-in indenter."
|
"ClangFormat is an alternative for the built-in indenter."
|
||||||
],
|
],
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Code Analyzer",
|
"Category" : "Code Analyzer",
|
||||||
"Description" : "Find problems in C, C++, and Objective-C source code",
|
"Description" : "Find problems in C, C++, and Objective-C source code.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Use Clang Tools for static code analysis:",
|
"Use Clang Tools for static code analysis:",
|
||||||
"- Clang-Tidy has diagnostics and fixes for typical programming errors, such as style violations or interface misuse.",
|
"- Clang-Tidy has diagnostics and fixes for typical programming errors, such as style violations or interface misuse.",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "C++",
|
"Category" : "C++",
|
||||||
"Description" : "View the class hierarchy of currently open projects",
|
"Description" : "View the class hierarchy of currently open projects.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access an IBM Rational ClearCase server",
|
"Description" : "Access an IBM Rational ClearCase server.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- ClearCase"
|
"- ClearCase"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
"Description" : "Automate the configuration of build systems with CMake",
|
"Description" : "Automate the configuration of build systems with CMake.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"CMake controls the software compilation process by using simple configuration files, called CMakeLists.txt files.",
|
"CMake controls the software compilation process by using simple configuration files, called CMakeLists.txt files.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -158,6 +158,7 @@ private:
|
|||||||
|
|
||||||
QPushButton *m_batchEditButton = nullptr;
|
QPushButton *m_batchEditButton = nullptr;
|
||||||
QPushButton *m_kitConfiguration = nullptr;
|
QPushButton *m_kitConfiguration = nullptr;
|
||||||
|
CMakeConfig m_configurationChanges;
|
||||||
};
|
};
|
||||||
|
|
||||||
static QModelIndex mapToSource(const QAbstractItemView *view, const QModelIndex &idx)
|
static QModelIndex mapToSource(const QAbstractItemView *view, const QModelIndex &idx)
|
||||||
@@ -416,6 +417,11 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
updateButtonState();
|
updateButtonState();
|
||||||
m_showProgressTimer.stop();
|
m_showProgressTimer.stop();
|
||||||
m_progressIndicator->hide();
|
m_progressIndicator->hide();
|
||||||
|
|
||||||
|
if (!m_configurationChanges.isEmpty()) {
|
||||||
|
m_configModel->setBatchEditConfiguration(m_configurationChanges);
|
||||||
|
m_configurationChanges.clear();
|
||||||
|
}
|
||||||
updateConfigurationStateSelection();
|
updateConfigurationStateSelection();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -502,8 +508,9 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
connect(bs, &CMakeBuildSystem::warningOccurred,
|
connect(bs, &CMakeBuildSystem::warningOccurred,
|
||||||
this, &CMakeBuildSettingsWidget::setWarning);
|
this, &CMakeBuildSettingsWidget::setWarning);
|
||||||
|
|
||||||
connect(bs, &CMakeBuildSystem::configurationChanged,
|
connect(bs, &CMakeBuildSystem::configurationChanged, this, [this](const CMakeConfig &config) {
|
||||||
m_configModel, &ConfigModel::setBatchEditConfiguration);
|
m_configurationChanges = config;
|
||||||
|
});
|
||||||
|
|
||||||
updateFromKit();
|
updateFromKit();
|
||||||
connect(m_buildConfig->target(), &Target::kitChanged,
|
connect(m_buildConfig->target(), &Target::kitChanged,
|
||||||
|
@@ -1488,6 +1488,11 @@ void CMakeBuildSystem::updateFallbackProjectData()
|
|||||||
Tr::tr("Scan \"%1\" project tree")
|
Tr::tr("Scan \"%1\" project tree")
|
||||||
.arg(project()->displayName()),
|
.arg(project()->displayName()),
|
||||||
"CMake.Scan.Tree");
|
"CMake.Scan.Tree");
|
||||||
|
|
||||||
|
// A failed configuration could be the result of an compiler update
|
||||||
|
// which then would cause CMake to fail. Make sure to offer an upgrade path
|
||||||
|
// to the new Kit compiler values.
|
||||||
|
updateInitialCMakeExpandableVars();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildSystem::updateCMakeConfiguration(QString &errorMessage)
|
void CMakeBuildSystem::updateCMakeConfiguration(QString &errorMessage)
|
||||||
@@ -2323,6 +2328,18 @@ void CMakeBuildSystem::updateInitialCMakeExpandableVars()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle MSVC C/C++ compiler update, by udating also the linker, otherwise projects
|
||||||
|
// will fail to compile by using a linker that doesn't exist
|
||||||
|
const FilePath cxxCompiler = config.filePathValueOf("CMAKE_CXX_COMPILER");
|
||||||
|
if (!cxxCompiler.isEmpty() && cxxCompiler.fileName() == "cl.exe") {
|
||||||
|
const FilePath linker = cm.filePathValueOf("CMAKE_LINKER");
|
||||||
|
if (!linker.exists())
|
||||||
|
config << CMakeConfigItem(
|
||||||
|
"CMAKE_LINKER",
|
||||||
|
CMakeConfigItem::FILEPATH,
|
||||||
|
cxxCompiler.parentDir().pathAppended(linker.fileName()).path().toUtf8());
|
||||||
|
}
|
||||||
|
|
||||||
if (!config.isEmpty())
|
if (!config.isEmpty())
|
||||||
emit configurationChanged(config);
|
emit configurationChanged(config);
|
||||||
}
|
}
|
||||||
|
@@ -97,6 +97,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QVariant defaultValue(const Kit *k) const;
|
QVariant defaultValue(const Kit *k) const;
|
||||||
|
bool isNinjaPresent(const Kit *k, const CMakeTool *tool) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CMakeConfigurationKitAspectFactory : public KitAspectFactory
|
class CMakeConfigurationKitAspectFactory : public KitAspectFactory
|
||||||
@@ -556,6 +557,17 @@ CMakeGeneratorKitAspectFactory::CMakeGeneratorKitAspectFactory()
|
|||||||
setDescription(Tr::tr("CMake generator defines how a project is built when using CMake.<br>"
|
setDescription(Tr::tr("CMake generator defines how a project is built when using CMake.<br>"
|
||||||
"This setting is ignored when using other build systems."));
|
"This setting is ignored when using other build systems."));
|
||||||
setPriority(19000);
|
setPriority(19000);
|
||||||
|
|
||||||
|
auto updateKits = [this] {
|
||||||
|
if (KitManager::isLoaded()) {
|
||||||
|
for (Kit *k : KitManager::kits())
|
||||||
|
fix(k);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//make sure the default value is set if a new default CMake is set
|
||||||
|
connect(CMakeToolManager::instance(), &CMakeToolManager::defaultCMakeChanged,
|
||||||
|
this, updateKits);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CMakeGeneratorKitAspect::generator(const Kit *k)
|
QString CMakeGeneratorKitAspect::generator(const Kit *k)
|
||||||
@@ -664,18 +676,7 @@ QVariant CMakeGeneratorKitAspectFactory::defaultValue(const Kit *k) const
|
|||||||
return g.matches("Ninja");
|
return g.matches("Ninja");
|
||||||
});
|
});
|
||||||
if (it != known.constEnd()) {
|
if (it != known.constEnd()) {
|
||||||
const bool hasNinja = [k, tool] {
|
if (isNinjaPresent(k, tool))
|
||||||
if (Internal::settings(nullptr).ninjaPath().isEmpty()) {
|
|
||||||
auto findNinja = [](const Environment &env) -> bool {
|
|
||||||
return !env.searchInPath("ninja").isEmpty();
|
|
||||||
};
|
|
||||||
if (!findNinja(tool->filePath().deviceEnvironment()))
|
|
||||||
return findNinja(k->buildEnvironment());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}();
|
|
||||||
|
|
||||||
if (hasNinja)
|
|
||||||
return GeneratorInfo("Ninja").toVariant();
|
return GeneratorInfo("Ninja").toVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -725,6 +726,18 @@ QVariant CMakeGeneratorKitAspectFactory::defaultValue(const Kit *k) const
|
|||||||
return GeneratorInfo(it->name).toVariant();
|
return GeneratorInfo(it->name).toVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CMakeGeneratorKitAspectFactory::isNinjaPresent(const Kit *k, const CMakeTool *tool) const
|
||||||
|
{
|
||||||
|
if (Internal::settings(nullptr).ninjaPath().isEmpty()) {
|
||||||
|
auto findNinja = [](const Environment &env) -> bool {
|
||||||
|
return !env.searchInPath("ninja").isEmpty();
|
||||||
|
};
|
||||||
|
if (!findNinja(tool->filePath().deviceEnvironment()))
|
||||||
|
return findNinja(k->buildEnvironment());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Tasks CMakeGeneratorKitAspectFactory::validate(const Kit *k) const
|
Tasks CMakeGeneratorKitAspectFactory::validate(const Kit *k) const
|
||||||
{
|
{
|
||||||
CMakeTool *tool = CMakeKitAspect::cmakeTool(k);
|
CMakeTool *tool = CMakeKitAspect::cmakeTool(k);
|
||||||
@@ -783,7 +796,7 @@ void CMakeGeneratorKitAspectFactory::fix(Kit *k)
|
|||||||
[info](const CMakeTool::Generator &g) {
|
[info](const CMakeTool::Generator &g) {
|
||||||
return g.matches(info.generator);
|
return g.matches(info.generator);
|
||||||
});
|
});
|
||||||
if (it == known.constEnd()) {
|
if (it == known.constEnd() || (info.generator == "Ninja" && !isNinjaPresent(k, tool))) {
|
||||||
GeneratorInfo dv;
|
GeneratorInfo dv;
|
||||||
dv.fromVariant(defaultValue(k));
|
dv.fromVariant(defaultValue(k));
|
||||||
setGeneratorInfo(k, dv);
|
setGeneratorInfo(k, dv);
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Access the Coco CoverageBrowser",
|
"Description" : "Access the Coco CoverageBrowser.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"View the results from the Coco CoverageBrowser to make tests more efficient and complete."
|
"View the results from the Coco CoverageBrowser to make tests more efficient and complete."
|
||||||
],
|
],
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
"Description" : "Open compilation databases as projects",
|
"Description" : "Open compilation databases as projects.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"The JSON compilation database format replays single builds independently of the build system.",
|
"The JSON compilation database format replays single builds independently of the build system.",
|
||||||
"A compilation database is a list of files and the compiler flags that are used to compile the files. It feeds the code model with the necessary information for correctly parsing the code when you open a file for editing.",
|
"A compilation database is a list of files and the compiler flags that are used to compile the files. It feeds the code model with the necessary information for correctly parsing the code when you open a file for editing.",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
"Description" : "Integrate C or C++ libraries into projects",
|
"Description" : "Integrate C or C++ libraries into projects.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Conan"
|
"- Conan"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "View suggestions from GitHub Copilot in code editor",
|
"Description" : "View suggestions from GitHub Copilot in code editor.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- An active GitHub Copilot subscription",
|
"- An active GitHub Copilot subscription",
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Access code-pasting services",
|
"Description" : "Access code-pasting services.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Paste snippets of text, such as code or diffs, to a server or fetch them from the server."
|
"Paste snippets of text, such as code or diffs, to a server or fetch them from the server."
|
||||||
],
|
],
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Code Analyzer",
|
"Category" : "Code Analyzer",
|
||||||
"Description" : "Find errors in C++ code with static analysis",
|
"Description" : "Find errors in C++ code with static analysis.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- cppcheck"
|
"- cppcheck"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "C++",
|
"Category" : "C++",
|
||||||
"Description" : "Edit C++ source and header files",
|
"Description" : "Edit C++ source and header files.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES},
|
${IDE_PLUGIN_DEPENDENCIES},
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Code Analyzer",
|
"Category" : "Code Analyzer",
|
||||||
"Description" : "View Chrome Trace Format (CTF) files",
|
"Description" : "View Chrome Trace Format (CTF) files.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- CTF files (in Trace Event Format)"
|
"- CTF files (in Trace Event Format)"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access the CVS open source version control system",
|
"Description" : "Access the CVS open source version control system.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Creator",
|
"Category" : "Qt Creator",
|
||||||
"Description" : "Debug applications with native debuggers",
|
"Description" : "Debug applications with native debuggers.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Debug an application to see what happens inside it while it runs or when it crashes.",
|
"Debug an application to see what happens inside it while it runs or when it crashes.",
|
||||||
"The debugger extension acts as an interface between the Qt Creator core and native debuggers.",
|
"The debugger extension acts as an interface between the Qt Creator core and native debuggers.",
|
||||||
|
@@ -125,6 +125,9 @@ public:
|
|||||||
// Used by Valgrind
|
// Used by Valgrind
|
||||||
QStringList expectedSignals;
|
QStringList expectedSignals;
|
||||||
|
|
||||||
|
// For QNX debugging
|
||||||
|
bool useCtrlCStub = false;
|
||||||
|
|
||||||
// Used by Android to avoid false positives on warnOnRelease
|
// Used by Android to avoid false positives on warnOnRelease
|
||||||
bool skipExecutableValidation = false;
|
bool skipExecutableValidation = false;
|
||||||
bool useTargetAsync = false;
|
bool useTargetAsync = false;
|
||||||
|
@@ -276,6 +276,11 @@ void DebuggerRunTool::setSkipExecutableValidation(bool on)
|
|||||||
m_runParameters.skipExecutableValidation = on;
|
m_runParameters.skipExecutableValidation = on;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebuggerRunTool::setUseCtrlCStub(bool on)
|
||||||
|
{
|
||||||
|
m_runParameters.useCtrlCStub = on;
|
||||||
|
}
|
||||||
|
|
||||||
void DebuggerRunTool::setBreakOnMain(bool on)
|
void DebuggerRunTool::setBreakOnMain(bool on)
|
||||||
{
|
{
|
||||||
m_runParameters.breakOnMain = on;
|
m_runParameters.breakOnMain = on;
|
||||||
|
@@ -100,6 +100,7 @@ protected:
|
|||||||
void setRemoteChannel(const QUrl &url);
|
void setRemoteChannel(const QUrl &url);
|
||||||
void setUseTargetAsync(bool on);
|
void setUseTargetAsync(bool on);
|
||||||
void setSkipExecutableValidation(bool on);
|
void setSkipExecutableValidation(bool on);
|
||||||
|
void setUseCtrlCStub(bool on);
|
||||||
|
|
||||||
void setIosPlatform(const QString &platform);
|
void setIosPlatform(const QString &platform);
|
||||||
void setDeviceSymbolsRoot(const QString &deviceSymbolsRoot);
|
void setDeviceSymbolsRoot(const QString &deviceSymbolsRoot);
|
||||||
|
@@ -126,7 +126,6 @@ const char notCompatibleMessage[] = "is not compatible with target architecture"
|
|||||||
GdbEngine::GdbEngine()
|
GdbEngine::GdbEngine()
|
||||||
{
|
{
|
||||||
m_gdbProc.setProcessMode(ProcessMode::Writer);
|
m_gdbProc.setProcessMode(ProcessMode::Writer);
|
||||||
m_gdbProc.setUseCtrlCStub(true);
|
|
||||||
|
|
||||||
setObjectName("GdbEngine");
|
setObjectName("GdbEngine");
|
||||||
setDebuggerName("GDB");
|
setDebuggerName("GDB");
|
||||||
@@ -471,7 +470,7 @@ void GdbEngine::handleAsyncOutput(const QStringView asyncClass, const GdbMi &res
|
|||||||
Module module;
|
Module module;
|
||||||
module.startAddress = 0;
|
module.startAddress = 0;
|
||||||
module.endAddress = 0;
|
module.endAddress = 0;
|
||||||
module.hostPath = Utils::FilePath::fromString(result["host-name"].data());
|
module.hostPath = Utils::FilePath::fromUserInput(result["host-name"].data());
|
||||||
const QString target = result["target-name"].data();
|
const QString target = result["target-name"].data();
|
||||||
module.modulePath = runParameters().inferior.command.executable().withNewPath(target);
|
module.modulePath = runParameters().inferior.command.executable().withNewPath(target);
|
||||||
module.moduleName = module.hostPath.baseName();
|
module.moduleName = module.hostPath.baseName();
|
||||||
@@ -676,9 +675,30 @@ void GdbEngine::interruptInferior()
|
|||||||
} else {
|
} else {
|
||||||
showStatusMessage(Tr::tr("Stop requested..."), 5000);
|
showStatusMessage(Tr::tr("Stop requested..."), 5000);
|
||||||
showMessage("TRYING TO INTERRUPT INFERIOR");
|
showMessage("TRYING TO INTERRUPT INFERIOR");
|
||||||
|
// Ctrl+C events are only handled properly for console applications on Windows
|
||||||
|
// when gdb debugs a GUI application the CTRL+C events are not handled
|
||||||
|
if (HostOsInfo::isWindowsHost() && !m_isQnxGdb) {
|
||||||
|
IDevice::ConstPtr dev = device();
|
||||||
|
QTC_ASSERT(dev, notifyInferiorStopFailed(); return);
|
||||||
|
DeviceProcessSignalOperation::Ptr signalOperation = dev->signalOperation();
|
||||||
|
QTC_ASSERT(signalOperation, notifyInferiorStopFailed(); return);
|
||||||
|
connect(signalOperation.get(), &DeviceProcessSignalOperation::finished,
|
||||||
|
this, [this, signalOperation](const QString &error) {
|
||||||
|
if (error.isEmpty()) {
|
||||||
|
showMessage("Interrupted " + QString::number(inferiorPid()));
|
||||||
|
notifyInferiorStopOk();
|
||||||
|
} else {
|
||||||
|
showMessage(error, LogError);
|
||||||
|
notifyInferiorStopFailed();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
signalOperation->setDebuggerCommand(runParameters().debugger.command.executable());
|
||||||
|
signalOperation->interruptProcess(inferiorPid());
|
||||||
|
} else {
|
||||||
interruptInferior2();
|
interruptInferior2();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GdbEngine::runCommand(const DebuggerCommand &command)
|
void GdbEngine::runCommand(const DebuggerCommand &command)
|
||||||
{
|
{
|
||||||
@@ -1249,11 +1269,9 @@ void GdbEngine::handleStopResponse(const GdbMi &data)
|
|||||||
handleStop1(data);
|
handleStop1(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList stopSignals(const Abi &abi)
|
static QString stopSignal(const Abi &abi)
|
||||||
{
|
{
|
||||||
static QStringList winSignals = { "SIGTRAP", "SIGINT" };
|
return QLatin1String(abi.os() == Abi::WindowsOS ? "SIGTRAP" : "SIGINT");
|
||||||
static QStringList unixSignals = { "SIGINT" };
|
|
||||||
return abi.os() == Abi::WindowsOS ? winSignals : unixSignals;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::handleStop1(const GdbMi &data)
|
void GdbEngine::handleStop1(const GdbMi &data)
|
||||||
@@ -1402,7 +1420,7 @@ void GdbEngine::handleStop2(const GdbMi &data)
|
|||||||
QString meaning = data["signal-meaning"].data();
|
QString meaning = data["signal-meaning"].data();
|
||||||
// Ignore these as they are showing up regularly when
|
// Ignore these as they are showing up regularly when
|
||||||
// stopping debugging.
|
// stopping debugging.
|
||||||
if (stopSignals(rp.toolChainAbi).contains(name) || rp.expectedSignals.contains(name)) {
|
if (name == stopSignal(rp.toolChainAbi) || rp.expectedSignals.contains(name)) {
|
||||||
showMessage(name + " CONSIDERED HARMLESS. CONTINUING.");
|
showMessage(name + " CONSIDERED HARMLESS. CONTINUING.");
|
||||||
} else if (m_isQnxGdb && name == "0" && meaning == "Signal 0") {
|
} else if (m_isQnxGdb && name == "0" && meaning == "Signal 0") {
|
||||||
showMessage("SIGNAL 0 CONSIDERED BOGUS.");
|
showMessage("SIGNAL 0 CONSIDERED BOGUS.");
|
||||||
@@ -3807,6 +3825,9 @@ void GdbEngine::setupEngine()
|
|||||||
CHECK_STATE(EngineSetupRequested);
|
CHECK_STATE(EngineSetupRequested);
|
||||||
showMessage("TRYING TO START ADAPTER");
|
showMessage("TRYING TO START ADAPTER");
|
||||||
|
|
||||||
|
if (isRemoteEngine())
|
||||||
|
m_gdbProc.setUseCtrlCStub(runParameters().useCtrlCStub); // This is only set for QNX
|
||||||
|
|
||||||
const DebuggerRunParameters &rp = runParameters();
|
const DebuggerRunParameters &rp = runParameters();
|
||||||
CommandLine gdbCommand = rp.debugger.command;
|
CommandLine gdbCommand = rp.debugger.command;
|
||||||
|
|
||||||
@@ -4301,6 +4322,7 @@ void GdbEngine::interruptLocalInferior(qint64 pid)
|
|||||||
showMessage("TRYING TO INTERRUPT INFERIOR BEFORE PID WAS OBTAINED", LogError);
|
showMessage("TRYING TO INTERRUPT INFERIOR BEFORE PID WAS OBTAINED", LogError);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
QString errorMessage;
|
||||||
if (runParameters().runAsRoot) {
|
if (runParameters().runAsRoot) {
|
||||||
Environment env = Environment::systemEnvironment();
|
Environment env = Environment::systemEnvironment();
|
||||||
RunControl::provideAskPassEntry(env);
|
RunControl::provideAskPassEntry(env);
|
||||||
@@ -4309,8 +4331,11 @@ void GdbEngine::interruptLocalInferior(qint64 pid)
|
|||||||
proc.setEnvironment(env);
|
proc.setEnvironment(env);
|
||||||
proc.start();
|
proc.start();
|
||||||
proc.waitForFinished();
|
proc.waitForFinished();
|
||||||
|
} else if (interruptProcess(pid, &errorMessage)) {
|
||||||
|
showMessage("Interrupted " + QString::number(pid));
|
||||||
} else {
|
} else {
|
||||||
m_gdbProc.interrupt();
|
showMessage(errorMessage, LogError);
|
||||||
|
notifyInferiorStopFailed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Creator",
|
"Category" : "Qt Creator",
|
||||||
"Description" : "Design Qt-widgets based UIs",
|
"Description" : "Design Qt-widgets based UIs.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Create widgets and forms that are integrated with Qt C++ code."
|
"Create widgets and forms that are integrated with Qt C++ code."
|
||||||
],
|
],
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Compare two files or two versions of a file",
|
"Description" : "Compare two files or two versions of a file.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Experimental" : true,
|
"Experimental" : true,
|
||||||
"Description" : "Create Docker devices from Docker images",
|
"Description" : "Create Docker devices from Docker images.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Docker CLI"
|
"- Docker CLI"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Core",
|
"Category" : "Core",
|
||||||
"Description" : "Extension Manager",
|
"Description" : "Manage ${IDE_DISPLAY_NAME} extensions.",
|
||||||
"Experimental": true,
|
"Experimental": true,
|
||||||
"DisabledByDefault": false,
|
"DisabledByDefault": false,
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
|
@@ -4,6 +4,7 @@ QtcPlugin {
|
|||||||
name: "ExtensionManager"
|
name: "ExtensionManager"
|
||||||
|
|
||||||
Depends { name: "Core" }
|
Depends { name: "Core" }
|
||||||
|
Depends { name: "Spinner" }
|
||||||
Depends { name: "Tasking" }
|
Depends { name: "Tasking" }
|
||||||
Depends { name: "Qt.network" }
|
Depends { name: "Qt.network" }
|
||||||
|
|
||||||
|
@@ -53,6 +53,8 @@ using namespace WelcomePageHelpers;
|
|||||||
|
|
||||||
namespace ExtensionManager::Internal {
|
namespace ExtensionManager::Internal {
|
||||||
|
|
||||||
|
Q_LOGGING_CATEGORY(widgetLog, "qtc.extensionmanager.widget", QtWarningMsg)
|
||||||
|
|
||||||
constexpr TextFormat h5TF
|
constexpr TextFormat h5TF
|
||||||
{Theme::Token_Text_Default, UiElement::UiElementH5};
|
{Theme::Token_Text_Default, UiElement::UiElementH5};
|
||||||
constexpr TextFormat h6TF
|
constexpr TextFormat h6TF
|
||||||
@@ -111,7 +113,6 @@ private:
|
|||||||
|
|
||||||
class HeadingWidget : public QWidget
|
class HeadingWidget : public QWidget
|
||||||
{
|
{
|
||||||
static constexpr QSize iconBgS{68, 68};
|
|
||||||
static constexpr int dividerH = 16;
|
static constexpr int dividerH = 16;
|
||||||
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -121,7 +122,7 @@ public:
|
|||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
m_icon = new QLabel;
|
m_icon = new QLabel;
|
||||||
m_icon->setFixedSize(iconBgS);
|
m_icon->setFixedSize(iconBgSizeBig);
|
||||||
|
|
||||||
static const TextFormat titleTF
|
static const TextFormat titleTF
|
||||||
{Theme::Token_Text_Default, UiElementH4};
|
{Theme::Token_Text_Default, UiElementH4};
|
||||||
@@ -198,7 +199,7 @@ public:
|
|||||||
if (!current.isValid())
|
if (!current.isValid())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_icon->setPixmap(icon(current));
|
m_icon->setPixmap(itemIcon(current, SizeBig));
|
||||||
|
|
||||||
const QString name = current.data(RoleName).toString();
|
const QString name = current.data(RoleName).toString();
|
||||||
m_title->setText(name);
|
m_title->setText(name);
|
||||||
@@ -234,32 +235,6 @@ signals:
|
|||||||
void vendorClicked(const QString &vendor);
|
void vendorClicked(const QString &vendor);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static QPixmap icon(const QModelIndex &index)
|
|
||||||
{
|
|
||||||
const qreal dpr = qApp->devicePixelRatio();
|
|
||||||
QPixmap pixmap(iconBgS * dpr);
|
|
||||||
pixmap.fill(Qt::transparent);
|
|
||||||
pixmap.setDevicePixelRatio(dpr);
|
|
||||||
const QRect bgR(QPoint(), pixmap.deviceIndependentSize().toSize());
|
|
||||||
|
|
||||||
QPainter p(&pixmap);
|
|
||||||
QLinearGradient gradient(bgR.topRight(), bgR.bottomLeft());
|
|
||||||
gradient.setStops(iconGradientStops(index));
|
|
||||||
constexpr int iconRectRounding = 4;
|
|
||||||
WelcomePageHelpers::drawCardBackground(&p, bgR, gradient, Qt::NoPen, iconRectRounding);
|
|
||||||
|
|
||||||
// Icon
|
|
||||||
constexpr Theme::Color color = Theme::Token_Basic_White;
|
|
||||||
static const QIcon pack = Icon({{":/extensionmanager/images/packbig.png", color}},
|
|
||||||
Icon::Tint).icon();
|
|
||||||
static const QIcon extension = Icon({{":/extensionmanager/images/extensionbig.png",
|
|
||||||
color}}, Icon::Tint).icon();
|
|
||||||
const ItemType itemType = index.data(RoleItemType).value<ItemType>();
|
|
||||||
(itemType == ItemTypePack ? pack : extension).paint(&p, bgR);
|
|
||||||
|
|
||||||
return pixmap;
|
|
||||||
}
|
|
||||||
|
|
||||||
QLabel *m_icon;
|
QLabel *m_icon;
|
||||||
QLabel *m_title;
|
QLabel *m_title;
|
||||||
Button *m_vendor;
|
Button *m_vendor;
|
||||||
@@ -735,8 +710,10 @@ void ExtensionManagerWidget::fetchAndDisplayImage(const QUrl &url)
|
|||||||
storage->url = url;
|
storage->url = url;
|
||||||
query.setRequest(QNetworkRequest(url));
|
query.setRequest(QNetworkRequest(url));
|
||||||
query.setNetworkAccessManager(NetworkAccessManager::instance());
|
query.setNetworkAccessManager(NetworkAccessManager::instance());
|
||||||
|
qCDebug(widgetLog).noquote() << "Sending image request:" << url.toDisplayString();
|
||||||
};
|
};
|
||||||
const auto onFetchDone = [storage](const NetworkQuery &query, DoneWith result) {
|
const auto onFetchDone = [storage](const NetworkQuery &query, DoneWith result) {
|
||||||
|
qCDebug(widgetLog) << "Got image QNetworkReply:" << query.reply()->error();
|
||||||
if (result == DoneWith::Success)
|
if (result == DoneWith::Success)
|
||||||
storage->imageData = query.reply()->readAll();
|
storage->imageData = query.reply()->readAll();
|
||||||
};
|
};
|
||||||
@@ -745,6 +722,9 @@ void ExtensionManagerWidget::fetchAndDisplayImage(const QUrl &url)
|
|||||||
if (storage->imageData.isEmpty())
|
if (storage->imageData.isEmpty())
|
||||||
return;
|
return;
|
||||||
m_imageDataBuffer.setData(storage->imageData);
|
m_imageDataBuffer.setData(storage->imageData);
|
||||||
|
qCDebug(widgetLog).noquote() << "Image reponse size:"
|
||||||
|
<< QLocale::system().formattedDataSize(
|
||||||
|
m_imageDataBuffer.size());
|
||||||
if (!m_imageDataBuffer.open(QIODevice::ReadOnly))
|
if (!m_imageDataBuffer.open(QIODevice::ReadOnly))
|
||||||
return;
|
return;
|
||||||
QImageReader reader(&m_imageDataBuffer);
|
QImageReader reader(&m_imageDataBuffer);
|
||||||
@@ -756,6 +736,8 @@ void ExtensionManagerWidget::fetchAndDisplayImage(const QUrl &url)
|
|||||||
const QPixmap pixmap = QPixmap::fromImage(reader.read());
|
const QPixmap pixmap = QPixmap::fromImage(reader.read());
|
||||||
m_image->setPixmap(pixmap);
|
m_image->setPixmap(pixmap);
|
||||||
}
|
}
|
||||||
|
qCDebug(widgetLog) << "Image dimensions:" << reader.size();
|
||||||
|
qCDebug(widgetLog) << "Image is animated:" << animated;
|
||||||
};
|
};
|
||||||
|
|
||||||
Group group{
|
Group group{
|
||||||
|
@@ -34,6 +34,7 @@
|
|||||||
#include <utils/networkaccessmanager.h>
|
#include <utils/networkaccessmanager.h>
|
||||||
#include <utils/stylehelper.h>
|
#include <utils/stylehelper.h>
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
#include <QItemDelegate>
|
#include <QItemDelegate>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QListView>
|
#include <QListView>
|
||||||
@@ -61,7 +62,6 @@ class ExtensionItemDelegate : public QItemDelegate
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
constexpr static QSize dividerS{1, 16};
|
constexpr static QSize dividerS{1, 16};
|
||||||
constexpr static QSize iconBgS{50, 50};
|
|
||||||
constexpr static TextFormat itemNameTF
|
constexpr static TextFormat itemNameTF
|
||||||
{Theme::Token_Text_Default, UiElement::UiElementH6};
|
{Theme::Token_Text_Default, UiElement::UiElementH6};
|
||||||
constexpr static TextFormat countTF
|
constexpr static TextFormat countTF
|
||||||
@@ -102,15 +102,15 @@ public:
|
|||||||
const QRect bgRGlobal = option.rect.adjusted(0, 0, -gapSize, -gapSize);
|
const QRect bgRGlobal = option.rect.adjusted(0, 0, -gapSize, -gapSize);
|
||||||
const QRect bgR = bgRGlobal.translated(-option.rect.topLeft());
|
const QRect bgR = bgRGlobal.translated(-option.rect.topLeft());
|
||||||
|
|
||||||
const int middleColumnW = bgR.width() - ExPaddingGapL - iconBgS.width() - ExPaddingGapL
|
const int middleColumnW = bgR.width() - ExPaddingGapL - iconBgSizeSmall.width()
|
||||||
- ExPaddingGapL;
|
- ExPaddingGapL - ExPaddingGapL;
|
||||||
|
|
||||||
int x = bgR.x();
|
int x = bgR.x();
|
||||||
int y = bgR.y();
|
int y = bgR.y();
|
||||||
x += ExPaddingGapL;
|
x += ExPaddingGapL;
|
||||||
const QRect iconBgR(x, y + (bgR.height() - iconBgS.height()) / 2,
|
const QRect iconBgR(x, y + (bgR.height() - iconBgSizeSmall.height()) / 2,
|
||||||
iconBgS.width(), iconBgS.height());
|
iconBgSizeSmall.width(), iconBgSizeSmall.height());
|
||||||
x += iconBgS.width() + ExPaddingGapL;
|
x += iconBgSizeSmall.width() + ExPaddingGapL;
|
||||||
y += ExPaddingGapL;
|
y += ExPaddingGapL;
|
||||||
const QRect itemNameR(x, y, middleColumnW, itemNameTF.lineHeight());
|
const QRect itemNameR(x, y, middleColumnW, itemNameTF.lineHeight());
|
||||||
const QString itemName = index.data().toString();
|
const QString itemName = index.data().toString();
|
||||||
@@ -142,18 +142,8 @@ public:
|
|||||||
WelcomePageHelpers::drawCardBackground(painter, bgR, fillColor, strokeColor);
|
WelcomePageHelpers::drawCardBackground(painter, bgR, fillColor, strokeColor);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
QLinearGradient gradient(iconBgR.topRight(), iconBgR.bottomLeft());
|
const QPixmap icon = itemIcon(index, SizeSmall);
|
||||||
gradient.setStops(iconGradientStops(index));
|
painter->drawPixmap(iconBgR.topLeft(), icon);
|
||||||
constexpr int iconRectRounding = 4;
|
|
||||||
drawCardBackground(painter, iconBgR, gradient, Qt::NoPen, iconRectRounding);
|
|
||||||
|
|
||||||
// Icon
|
|
||||||
constexpr Theme::Color color = Theme::Token_Basic_White;
|
|
||||||
static const QIcon pack = Icon({{":/extensionmanager/images/packsmall.png", color}},
|
|
||||||
Icon::Tint).icon();
|
|
||||||
static const QIcon extension = Icon({{":/extensionmanager/images/extensionsmall.png",
|
|
||||||
color}}, Icon::Tint).icon();
|
|
||||||
(isPack ? pack : extension).paint(painter, iconBgR);
|
|
||||||
}
|
}
|
||||||
if (isPack) {
|
if (isPack) {
|
||||||
constexpr int circleSize = 18;
|
constexpr int circleSize = 18;
|
||||||
@@ -241,7 +231,7 @@ public:
|
|||||||
+ tagsTF.lineHeight();
|
+ tagsTF.lineHeight();
|
||||||
const int height =
|
const int height =
|
||||||
ExPaddingGapL
|
ExPaddingGapL
|
||||||
+ qMax(iconBgS.height(), middleColumnH)
|
+ qMax(iconBgSizeSmall.height(), middleColumnH)
|
||||||
+ ExPaddingGapL;
|
+ ExPaddingGapL;
|
||||||
return {cellWidth, height + gapSize};
|
return {cellWidth, height + gapSize};
|
||||||
}
|
}
|
||||||
@@ -341,6 +331,7 @@ ExtensionsBrowser::ExtensionsBrowser(QWidget *parent)
|
|||||||
Theme::Token_Background_Default);
|
Theme::Token_Background_Default);
|
||||||
|
|
||||||
d->m_spinner = new SpinnerSolution::Spinner(SpinnerSolution::SpinnerSize::Large, this);
|
d->m_spinner = new SpinnerSolution::Spinner(SpinnerSolution::SpinnerSize::Large, this);
|
||||||
|
d->m_spinner->hide();
|
||||||
|
|
||||||
auto updateModel = [this] {
|
auto updateModel = [this] {
|
||||||
d->filterProxyModel->sort(0);
|
d->filterProxyModel->sort(0);
|
||||||
@@ -417,18 +408,20 @@ void ExtensionsBrowser::fetchExtensions()
|
|||||||
= R"({"version":"%1","host_os":"%2","host_os_version":"%3","host_architecture":"%4","page_size":200})";
|
= R"({"version":"%1","host_os":"%2","host_os_version":"%3","host_architecture":"%4","page_size":200})";
|
||||||
const QString request = url.arg(host) + requestTemplate
|
const QString request = url.arg(host) + requestTemplate
|
||||||
.arg(QCoreApplication::applicationVersion())
|
.arg(QCoreApplication::applicationVersion())
|
||||||
.arg(QSysInfo::productType())
|
.arg(osTypeToString(HostOsInfo::hostOs()))
|
||||||
.arg(QSysInfo::productVersion())
|
.arg(QSysInfo::productVersion())
|
||||||
.arg(QSysInfo::currentCpuArchitecture());
|
.arg(QSysInfo::currentCpuArchitecture());
|
||||||
query.setRequest(QNetworkRequest(QUrl::fromUserInput(request)));
|
query.setRequest(QNetworkRequest(QUrl::fromUserInput(request)));
|
||||||
query.setNetworkAccessManager(NetworkAccessManager::instance());
|
query.setNetworkAccessManager(NetworkAccessManager::instance());
|
||||||
qCDebug(browserLog).noquote() << "Sending request:" << request;
|
qCDebug(browserLog).noquote() << "Sending JSON request:" << request;
|
||||||
d->m_spinner->show();
|
d->m_spinner->show();
|
||||||
};
|
};
|
||||||
const auto onQueryDone = [this](const NetworkQuery &query, DoneWith result) {
|
const auto onQueryDone = [this](const NetworkQuery &query, DoneWith result) {
|
||||||
const QByteArray response = query.reply()->readAll();
|
const QByteArray response = query.reply()->readAll();
|
||||||
qCDebug(browserLog).noquote() << "Got result" << result;
|
qCDebug(browserLog).noquote() << "Got JSON QNetworkReply:" << query.reply()->error();
|
||||||
if (result == DoneWith::Success) {
|
if (result == DoneWith::Success) {
|
||||||
|
qCDebug(browserLog).noquote() << "JSON response size:"
|
||||||
|
<< QLocale::system().formattedDataSize(response.size());
|
||||||
d->model->setExtensionsJson(response);
|
d->model->setExtensionsJson(response);
|
||||||
} else {
|
} else {
|
||||||
qCDebug(browserLog).noquote() << response;
|
qCDebug(browserLog).noquote() << response;
|
||||||
@@ -459,20 +452,48 @@ QLabel *tfLabel(const TextFormat &tf, bool singleLine)
|
|||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
QGradientStops iconGradientStops(const QModelIndex &index)
|
QPixmap itemIcon(const QModelIndex &index, Size size)
|
||||||
{
|
{
|
||||||
const PluginSpec *ps = pluginSpecForName(index.data(RoleName).toString());
|
const QSize iconBgS = size == SizeSmall ? iconBgSizeSmall : iconBgSizeBig;
|
||||||
const bool greenGradient = ps != nullptr && ps->isEffectivelyEnabled();
|
const qreal dpr = qApp->devicePixelRatio();
|
||||||
|
QPixmap pixmap(iconBgS * dpr);
|
||||||
|
pixmap.fill(Qt::transparent);
|
||||||
|
pixmap.setDevicePixelRatio(dpr);
|
||||||
|
const QRect iconBgR(QPoint(), pixmap.deviceIndependentSize().toSize());
|
||||||
|
|
||||||
const QColor startColor = creatorColor(greenGradient ? Theme::Token_Gradient01_Start
|
const PluginSpec *ps = pluginSpecForName(index.data(RoleName).toString());
|
||||||
: Theme::Token_Gradient02_Start);
|
const bool isEnabled = ps == nullptr || ps->isEffectivelyEnabled();
|
||||||
const QColor endColor = creatorColor(greenGradient ? Theme::Token_Gradient01_End
|
const QGradientStops gradientStops = {
|
||||||
: Theme::Token_Gradient02_End);
|
{0, creatorColor(isEnabled ? Theme::Token_Gradient01_Start
|
||||||
const QGradientStops gradient = {
|
: Theme::Token_Gradient02_Start)},
|
||||||
{0, startColor},
|
{1, creatorColor(isEnabled ? Theme::Token_Gradient01_End
|
||||||
{1, endColor},
|
: Theme::Token_Gradient02_End)},
|
||||||
};
|
};
|
||||||
return gradient;
|
|
||||||
|
const Theme::Color color = Theme::Token_Basic_White;
|
||||||
|
static const QIcon packS = Icon({{":/extensionmanager/images/packsmall.png", color}},
|
||||||
|
Icon::Tint).icon();
|
||||||
|
static const QIcon packB = Icon({{":/extensionmanager/images/packbig.png", color}},
|
||||||
|
Icon::Tint).icon();
|
||||||
|
static const QIcon extensionS = Icon({{":/extensionmanager/images/extensionsmall.png",
|
||||||
|
color}}, Icon::Tint).icon();
|
||||||
|
static const QIcon extensionB = Icon({{":/extensionmanager/images/extensionbig.png",
|
||||||
|
color}}, Icon::Tint).icon();
|
||||||
|
const ItemType itemType = index.data(RoleItemType).value<ItemType>();
|
||||||
|
const QIcon &icon = (itemType == ItemTypePack) ? (size == SizeSmall ? packS : packB)
|
||||||
|
: (size == SizeSmall ? extensionS : extensionB);
|
||||||
|
const int iconRectRounding = 4;
|
||||||
|
const qreal iconOpacityDisabled = 0.6;
|
||||||
|
|
||||||
|
QPainter p(&pixmap);
|
||||||
|
QLinearGradient gradient(iconBgR.topRight(), iconBgR.bottomLeft());
|
||||||
|
gradient.setStops(gradientStops);
|
||||||
|
WelcomePageHelpers::drawCardBackground(&p, iconBgR, gradient, Qt::NoPen, iconRectRounding);
|
||||||
|
if (!isEnabled)
|
||||||
|
p.setOpacity(iconOpacityDisabled);
|
||||||
|
icon.paint(&p, iconBgR);
|
||||||
|
|
||||||
|
return pixmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // ExtensionManager::Internal
|
} // ExtensionManager::Internal
|
||||||
|
@@ -40,6 +40,13 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
QLabel *tfLabel(const Core::WelcomePageHelpers::TextFormat &tf, bool singleLine = true);
|
QLabel *tfLabel(const Core::WelcomePageHelpers::TextFormat &tf, bool singleLine = true);
|
||||||
QGradientStops iconGradientStops(const QModelIndex &index);
|
|
||||||
|
constexpr static QSize iconBgSizeSmall{50, 50};
|
||||||
|
constexpr static QSize iconBgSizeBig{68, 68};
|
||||||
|
enum Size {
|
||||||
|
SizeSmall,
|
||||||
|
SizeBig,
|
||||||
|
};
|
||||||
|
QPixmap itemIcon(const QModelIndex &index, Size size);
|
||||||
|
|
||||||
} // ExtensionManager::Internal
|
} // ExtensionManager::Internal
|
||||||
|
@@ -261,7 +261,7 @@ public:
|
|||||||
void ExtensionsModelPrivate::setExtensions(const Extensions &extensions)
|
void ExtensionsModelPrivate::setExtensions(const Extensions &extensions)
|
||||||
{
|
{
|
||||||
this->extensions = extensions;
|
this->extensions = extensions;
|
||||||
qCDebug(modelLog) << "Number of extensions from json:" << this->extensions.count();
|
qCDebug(modelLog) << "Number of extensions from JSON:" << this->extensions.count();
|
||||||
addUnlistedLocalExtensions();
|
addUnlistedLocalExtensions();
|
||||||
qCDebug(modelLog) << "Number of extensions with added local ones:" << this->extensions.count();
|
qCDebug(modelLog) << "Number of extensions with added local ones:" << this->extensions.count();
|
||||||
}
|
}
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Run the main editor in a manner similar to the Vim editor",
|
"Description" : "Run the main editor in a manner similar to the Vim editor.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access the Fossil version control system",
|
"Description" : "Access the Fossil version control system.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Fossil"
|
"- Fossil"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access the Git version control system",
|
"Description" : "Access the Git version control system.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Git"
|
"- Git"
|
||||||
|
@@ -101,7 +101,7 @@ void GerritPushDialog::initRemoteBranches()
|
|||||||
int refBranchIndex = ref.indexOf('/');
|
int refBranchIndex = ref.indexOf('/');
|
||||||
qint64 timeT = entries.at(1).left(entries.at(1).indexOf(' ')).toLongLong();
|
qint64 timeT = entries.at(1).left(entries.at(1).indexOf(' ')).toLongLong();
|
||||||
BranchDate bd(ref.mid(refBranchIndex + 1), QDateTime::fromSecsSinceEpoch(timeT).date());
|
BranchDate bd(ref.mid(refBranchIndex + 1), QDateTime::fromSecsSinceEpoch(timeT).date());
|
||||||
m_remoteBranches.insertMulti(ref.left(refBranchIndex), bd);
|
m_remoteBranches.insert(ref.left(refBranchIndex), bd);
|
||||||
}
|
}
|
||||||
m_remoteComboBox->updateRemotes(false);
|
m_remoteComboBox->updateRemotes(false);
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@ void GerritPushDialog::setRemoteBranches(bool includeOld)
|
|||||||
const QStringList remoteBranches =
|
const QStringList remoteBranches =
|
||||||
gitClient().synchronousRepositoryBranches(remoteName, m_workingDir);
|
gitClient().synchronousRepositoryBranches(remoteName, m_workingDir);
|
||||||
for (const QString &branch : remoteBranches)
|
for (const QString &branch : remoteBranches)
|
||||||
m_remoteBranches.insertMulti(remoteName, {branch, {}});
|
m_remoteBranches.insert(remoteName, {branch, {}});
|
||||||
if (remoteBranches.isEmpty()) {
|
if (remoteBranches.isEmpty()) {
|
||||||
m_targetBranchComboBox->setEditable(true);
|
m_targetBranchComboBox->setEditable(true);
|
||||||
m_targetBranchComboBox->setToolTip(
|
m_targetBranchComboBox->setToolTip(
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Create connections to GitLab servers",
|
"Description" : "Create connections to GitLab servers.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- GitLab account"
|
"- GitLab account"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Other Languages",
|
"Category" : "Other Languages",
|
||||||
"Description" : "Create OpenGL fragment and vertex shaders",
|
"Description" : "Create OpenGL fragment and vertex shaders.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Use the shaders to display hardware-accelerated 3D graphics alongside a more conventional UI."
|
"Use the shaders to display hardware-accelerated 3D graphics alongside a more conventional UI."
|
||||||
],
|
],
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
"Vendor" : "Eike Ziller",
|
"Vendor" : "Eike Ziller",
|
||||||
"Copyright" : "(C) Eike Ziller",
|
"Copyright" : "(C) Eike Ziller",
|
||||||
"License" : "MIT",
|
"License" : "MIT",
|
||||||
"Description" : "Write source code in the Haskell language",
|
"Description" : "Write source code in the Haskell language.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://haskell.org",
|
"Url" : "https://haskell.org",
|
||||||
${IDE_PLUGIN_DEPENDENCIES},
|
${IDE_PLUGIN_DEPENDENCIES},
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Core",
|
"Category" : "Core",
|
||||||
"Description" : "Get help for Qt API and read Qt and other documentation",
|
"Description" : "Get help for Qt API and read Qt and other documentation.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Qt documentation as help files (.qch)"
|
"- Qt documentation as help files (.qch)"
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "View images, and create pixmaps from SVG images",
|
"Description" : "View images, and create pixmaps from SVG images.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES},
|
${IDE_PLUGIN_DEPENDENCIES},
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Spend less time on building C++ code",
|
"Description" : "Spend less time on building C++ code.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- IncrediBuild Agent"
|
"- IncrediBuild Agent"
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Quick",
|
"Category" : "Qt Quick",
|
||||||
"Description" : "Collect information about how an application is used",
|
"Description" : "Collect information about how an application is used.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Use Qt Insight with Qt Design Studio.",
|
"Use Qt Insight with Qt Design Studio.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop applications for iOS devices",
|
"Description" : "Develop applications for iOS devices.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Connect devices with USB or use the iOS simulator to run, debug, and analyze applications built for iOS.",
|
"Connect devices with USB or use the iOS simulator to run, debug, and analyze applications built for iOS.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Other Languages",
|
"Category" : "Other Languages",
|
||||||
"Description" : "Get code editing services",
|
"Description" : "Get code editing services.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Offers code completion, highlighting of the symbol under cursor, and jumping to the symbol definition, as well as diagnostics from the language server."
|
"Offers code completion, highlighting of the symbol under cursor, and jumping to the symbol definition, as well as diagnostics from the language server."
|
||||||
],
|
],
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Scripting",
|
"Category" : "Scripting",
|
||||||
"Description" : "Lua Language Client scripting support",
|
"Description" : "Lua Language Client scripting support.",
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
}
|
}
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Record and play macros in text editors",
|
"Description" : "Record and play macros in text editors.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"When you have a file open in the code editor, you can record a keyboard sequence as a macro. You can then play the macro to repeat the sequence. You can save the latest macro and assign a keyboard shortcut for running it or run it from the locator."
|
"When you have a file open in the code editor, you can record a keyboard sequence as a macro. You can then play the macro to repeat the sequence. You can save the latest macro and assign a keyboard shortcut for running it or run it from the locator."
|
||||||
],
|
],
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this file may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this file. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Install applications from Qt Marketplace",
|
"Description" : "Install applications from Qt Marketplace.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop for microcontrollers",
|
"Description" : "Develop for microcontrollers.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Use subsets of QML and Qt Quick Controls to create user interfaces for devices that are powered by microcontrollers (MCU).",
|
"Use subsets of QML and Qt Quick Controls to create user interfaces for devices that are powered by microcontrollers (MCU).",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access the Mercurial source control management tool",
|
"Description" : "Access the Mercurial source control management tool.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Mercurial"
|
"- Mercurial"
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
"Description" : "Generate build systems with Meson",
|
"Description" : "Generate build systems with Meson.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Generate build systems with Meson using Ninja as the main backend.",
|
"Generate build systems with Meson using Ninja as the main backend.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Modeling",
|
"Category" : "Modeling",
|
||||||
"Description" : "Create Universal Modeling Language (UML) style models",
|
"Description" : "Create Universal Modeling Language (UML) style models.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Create structured and behavioral diagrams that offer different views to your system. However, the editor uses a variant of UML and has only a subset of properties for specifying the appearance of model elements."
|
"Create structured and behavioral diagrams that offer different views to your system. However, the editor uses a variant of UML and has only a subset of properties for specifying the appearance of model elements."
|
||||||
],
|
],
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Other Languages",
|
"Category" : "Other Languages",
|
||||||
"Description" : "Develop applications using the Nim programming language",
|
"Description" : "Develop applications using the Nim programming language.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Nimble packaging manager"
|
"- Nimble packaging manager"
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Version Control",
|
"Category" : "Version Control",
|
||||||
"Description" : "Access the Perforce software configuration management system",
|
"Description" : "Access the Perforce software configuration management system.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Perforce"
|
"- Perforce"
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Code Analyzer",
|
"Category" : "Code Analyzer",
|
||||||
"Description" : "Analyze the CPU and memory usage of an application",
|
"Description" : "Analyze the CPU and memory usage of an application.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Works on embedded devices and, to a limited extent, on Linux desktop platforms.",
|
"Works on embedded devices and, to a limited extent, on Linux desktop platforms.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 347 B |
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Other Languages",
|
"Category" : "Other Languages",
|
||||||
"Description" : "Develop applications using the Qt bindings for the Python programming language",
|
"Description" : "Develop applications using the Qt bindings for the Python programming language.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Qt for Python",
|
"- Qt for Python",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
"Description" : "Build applications with Qbs",
|
"Description" : "Build applications with Qbs.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Generate a build graph from a high-level project description (like with qmake or CMake) and execute the commands in the low-level build graph (like with make)."
|
"Generate a build graph from a high-level project description (like with qmake or CMake) and execute the commands in the low-level build graph (like with make)."
|
||||||
],
|
],
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Build Systems",
|
"Category" : "Build Systems",
|
||||||
"Description" : "Build applications with qmake",
|
"Description" : "Build applications with qmake.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Use .pro project configuration files and tools that automate the generation of Makefiles."
|
"Use .pro project configuration files and tools that automate the generation of Makefiles."
|
||||||
],
|
],
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Quick",
|
"Category" : "Qt Quick",
|
||||||
"Description" : "Qml Designer Lite",
|
"Description" : "Qml Designer Lite.",
|
||||||
"LongDescription": "Qml Designer Lite is a lightweight version of Qt Design Studio, providing a subset of the features of the full Qt Design Studio.",
|
"LongDescription": "Qml Designer Lite is a lightweight version of Qt Design Studio, providing a subset of the features of the full Qt Design Studio.",
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
"Experimental": true,
|
"Experimental": true,
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Quick",
|
"Category" : "Qt Quick",
|
||||||
"Description" : "Edit QML and JavaScript files",
|
"Description" : "Edit QML and JavaScript files.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Quick",
|
"Category" : "Qt Quick",
|
||||||
"Description" : "Preview QML files and Qt Quick applications",
|
"Description" : "Preview QML files and Qt Quick applications.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Quick",
|
"Category" : "Qt Quick",
|
||||||
"Description" : "Profile Qt Quick applications",
|
"Description" : "Profile Qt Quick applications.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Find causes for typical performance problems, such as slowness and unresponsive, stuttering user interfaces."
|
"Find causes for typical performance problems, such as slowness and unresponsive, stuttering user interfaces."
|
||||||
],
|
],
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Quick",
|
"Category" : "Qt Quick",
|
||||||
"Description" : "Qt Quick support",
|
"Description" : "Qt Quick support.",
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES},
|
${IDE_PLUGIN_DEPENDENCIES},
|
||||||
|
|
||||||
|
@@ -49,6 +49,10 @@ QmlMainFileAspect::QmlMainFileAspect(AspectContainer *container)
|
|||||||
this, &QmlMainFileAspect::changeCurrentFile);
|
this, &QmlMainFileAspect::changeCurrentFile);
|
||||||
connect(EditorManager::instance(), &EditorManager::currentDocumentStateChanged,
|
connect(EditorManager::instance(), &EditorManager::currentDocumentStateChanged,
|
||||||
this, [this] { changeCurrentFile(); });
|
this, [this] { changeCurrentFile(); });
|
||||||
|
connect(ProjectExplorerPlugin::instance(),
|
||||||
|
&ProjectExplorerPlugin::fileListChanged,
|
||||||
|
this,
|
||||||
|
&QmlMainFileAspect::updateFileComboBox);
|
||||||
}
|
}
|
||||||
|
|
||||||
QmlMainFileAspect::~QmlMainFileAspect()
|
QmlMainFileAspect::~QmlMainFileAspect()
|
||||||
@@ -63,9 +67,6 @@ void QmlMainFileAspect::addToLayout(Layouting::Layout &parent)
|
|||||||
m_fileListCombo->setModel(&m_fileListModel);
|
m_fileListCombo->setModel(&m_fileListModel);
|
||||||
|
|
||||||
updateFileComboBox();
|
updateFileComboBox();
|
||||||
|
|
||||||
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::fileListChanged,
|
|
||||||
this, &QmlMainFileAspect::updateFileComboBox);
|
|
||||||
connect(m_fileListCombo, &QComboBox::activated, this, &QmlMainFileAspect::setMainScript);
|
connect(m_fileListCombo, &QComboBox::activated, this, &QmlMainFileAspect::setMainScript);
|
||||||
|
|
||||||
parent.addItems({Tr::tr("Main QML file:"), m_fileListCombo.data()});
|
parent.addItems({Tr::tr("Main QML file:"), m_fileListCombo.data()});
|
||||||
@@ -93,7 +94,7 @@ void QmlMainFileAspect::updateFileComboBox()
|
|||||||
const FilePath projectDir = m_target->project()->projectDirectory();
|
const FilePath projectDir = m_target->project()->projectDirectory();
|
||||||
|
|
||||||
if (mainScriptSource() == FileInProjectFile) {
|
if (mainScriptSource() == FileInProjectFile) {
|
||||||
const FilePath mainScriptInFilePath = projectDir.relativeChildPath(mainScript());
|
const FilePath mainScriptInFilePath = mainScript().relativePathFrom(projectDir);
|
||||||
m_fileListModel.clear();
|
m_fileListModel.clear();
|
||||||
m_fileListModel.appendRow(new QStandardItem(mainScriptInFilePath.toString()));
|
m_fileListModel.appendRow(new QStandardItem(mainScriptInFilePath.toString()));
|
||||||
if (m_fileListCombo)
|
if (m_fileListCombo)
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop for QNX Neutrino devices",
|
"Description" : "Develop for QNX Neutrino devices.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Connect devices with USB or over a network to run, debug, and analyze applications built for them.",
|
"Connect devices with USB or over a network to run, debug, and analyze applications built for them.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -126,6 +126,7 @@ public:
|
|||||||
|
|
||||||
setStartMode(AttachToRemoteServer);
|
setStartMode(AttachToRemoteServer);
|
||||||
setCloseMode(KillAtClose);
|
setCloseMode(KillAtClose);
|
||||||
|
setUseCtrlCStub(true);
|
||||||
setSolibSearchPath(FileUtils::toFilePathList(searchPaths(k)));
|
setSolibSearchPath(FileUtils::toFilePathList(searchPaths(k)));
|
||||||
if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(k))) {
|
if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(k))) {
|
||||||
setSysRoot(qtVersion->qnxTarget());
|
setSysRoot(qtVersion->qnxTarget());
|
||||||
@@ -195,6 +196,7 @@ public:
|
|||||||
{
|
{
|
||||||
setId("QnxAttachDebugSupport");
|
setId("QnxAttachDebugSupport");
|
||||||
setUsePortsGatherer(isCppDebugging(), isQmlDebugging());
|
setUsePortsGatherer(isCppDebugging(), isQmlDebugging());
|
||||||
|
setUseCtrlCStub(true);
|
||||||
|
|
||||||
if (isCppDebugging()) {
|
if (isCppDebugging()) {
|
||||||
auto pdebugRunner = new PDebugRunner(runControl, portsGatherer());
|
auto pdebugRunner = new PDebugRunner(runControl, portsGatherer());
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Run applications in Qt Application Manager",
|
"Description" : "Run applications in Qt Application Manager.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"You also need:",
|
"You also need:",
|
||||||
"- Qt Application Manager"
|
"- Qt Application Manager"
|
||||||
|
@@ -28,12 +28,14 @@
|
|||||||
#include <utils/stylehelper.h>
|
#include <utils/stylehelper.h>
|
||||||
|
|
||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
#include <algorithm>
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
|
const int kQtVersionIdRole = Qt::UserRole;
|
||||||
|
const int kExtraSetIndexRole = Qt::UserRole + 1;
|
||||||
|
const int kVersionRole = Qt::UserRole + 2;
|
||||||
|
|
||||||
namespace QtSupport {
|
namespace QtSupport {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -112,43 +114,66 @@ ExampleSetModel::ExampleSetModel()
|
|||||||
&ExampleSetModel::helpManagerInitialized);
|
&ExampleSetModel::helpManagerInitialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExampleSetModel::recreateModel(const QtVersions &qtVersions)
|
void ExampleSetModel::recreateModel(const QtVersions &qtVersionsIn)
|
||||||
{
|
{
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
QHash<FilePath, int> extraManifestDirs;
|
QHash<FilePath, int> extraManifestDirs;
|
||||||
|
for (int i = 0; i < m_extraExampleSets.size(); ++i)
|
||||||
|
extraManifestDirs.insert(FilePath::fromUserInput(m_extraExampleSets.at(i).manifestPath), i);
|
||||||
|
|
||||||
|
// Sanitize away qt versions that have already been added through extra sets.
|
||||||
|
// This way we do not have entries for Qt/Android, Qt/Desktop, Qt/MinGW etc pp,
|
||||||
|
// but only the one "QtX X.Y.Z" entry that is registered as an example set by the installer.
|
||||||
|
const QtVersions qtVersions
|
||||||
|
= Utils::filtered(qtVersionsIn, [this, &extraManifestDirs](QtVersion *v) {
|
||||||
|
if (extraManifestDirs.contains(v->docsPath())) {
|
||||||
|
m_extraExampleSets[extraManifestDirs.value(v->docsPath())].qtVersion
|
||||||
|
= v->qtVersion();
|
||||||
|
qCDebug(log) << "Not showing Qt version because manifest path is already added "
|
||||||
|
"through InstalledExamples settings:"
|
||||||
|
<< v->displayName();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
QList<QStandardItem *> items;
|
||||||
for (int i = 0; i < m_extraExampleSets.size(); ++i) {
|
for (int i = 0; i < m_extraExampleSets.size(); ++i) {
|
||||||
const ExtraExampleSet &set = m_extraExampleSets.at(i);
|
const ExtraExampleSet &set = m_extraExampleSets.at(i);
|
||||||
auto newItem = new QStandardItem();
|
auto newItem = new QStandardItem();
|
||||||
newItem->setData(set.displayName, Qt::DisplayRole);
|
newItem->setData(set.displayName, Qt::DisplayRole);
|
||||||
newItem->setData(set.displayName, Qt::UserRole + 1);
|
newItem->setData(QVariant(), kQtVersionIdRole);
|
||||||
newItem->setData(QVariant(), Qt::UserRole + 2);
|
newItem->setData(i, kExtraSetIndexRole);
|
||||||
newItem->setData(i, Qt::UserRole + 3);
|
newItem->setData(QVariant::fromValue(set.qtVersion), kVersionRole);
|
||||||
appendRow(newItem);
|
items.append(newItem);
|
||||||
|
|
||||||
extraManifestDirs.insert(FilePath::fromUserInput(set.manifestPath), i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (QtVersion *version : qtVersions) {
|
|
||||||
// Sanitize away qt versions that have already been added through extra sets.
|
|
||||||
// This way we do not have entries for Qt/Android, Qt/Desktop, Qt/MinGW etc pp,
|
|
||||||
// but only the one "QtX X.Y.Z" entry that is registered as an example set by the installer.
|
|
||||||
if (extraManifestDirs.contains(version->docsPath())) {
|
|
||||||
m_extraExampleSets[extraManifestDirs.value(version->docsPath())].qtVersion
|
|
||||||
= version->qtVersion();
|
|
||||||
qCDebug(log) << "Not showing Qt version because manifest path is already added "
|
|
||||||
"through InstalledExamples settings:"
|
|
||||||
<< version->displayName();
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
items += Utils::transform(qtVersions, [](QtVersion *v) {
|
||||||
auto newItem = new QStandardItem();
|
auto newItem = new QStandardItem();
|
||||||
newItem->setData(version->displayName(), Qt::DisplayRole);
|
newItem->setData(v->displayName(), Qt::DisplayRole);
|
||||||
newItem->setData(version->displayName(), Qt::UserRole + 1);
|
newItem->setData(v->uniqueId(), kQtVersionIdRole);
|
||||||
newItem->setData(version->uniqueId(), Qt::UserRole + 2);
|
newItem->setData(QVariant(), kExtraSetIndexRole);
|
||||||
newItem->setData(QVariant(), Qt::UserRole + 3);
|
newItem->setData(QVariant::fromValue(v->qtVersion()), kVersionRole);
|
||||||
appendRow(newItem);
|
return newItem;
|
||||||
}
|
});
|
||||||
|
|
||||||
|
// Sort by Qt version, example sets not associated to Qt last
|
||||||
|
Utils::sort(items, [](QStandardItem *a, QStandardItem *b) {
|
||||||
|
const QVersionNumber versionB = b->data(kVersionRole).value<QVersionNumber>();
|
||||||
|
if (versionB.isNull())
|
||||||
|
return true;
|
||||||
|
const QVersionNumber versionA = a->data(kVersionRole).value<QVersionNumber>();
|
||||||
|
if (versionA.isNull())
|
||||||
|
return false;
|
||||||
|
if (versionA == versionB)
|
||||||
|
return a->data(Qt::DisplayRole).toString() < b->data(Qt::DisplayRole).toString();
|
||||||
|
return versionA < versionB;
|
||||||
|
});
|
||||||
|
|
||||||
|
for (QStandardItem *item : std::as_const(items))
|
||||||
|
appendRow(item);
|
||||||
|
|
||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +204,7 @@ QVariant ExampleSetModel::getDisplayName(int i) const
|
|||||||
{
|
{
|
||||||
if (i < 0 || i >= rowCount())
|
if (i < 0 || i >= rowCount())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
return data(index(i, 0), Qt::UserRole + 1);
|
return data(index(i, 0), Qt::DisplayRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
// id is either the Qt version uniqueId, or the display name of the extra example set
|
// id is either the Qt version uniqueId, or the display name of the extra example set
|
||||||
@@ -188,7 +213,7 @@ QVariant ExampleSetModel::getId(int i) const
|
|||||||
if (i < 0 || i >= rowCount())
|
if (i < 0 || i >= rowCount())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
QModelIndex modelIndex = index(i, 0);
|
QModelIndex modelIndex = index(i, 0);
|
||||||
QVariant variant = data(modelIndex, Qt::UserRole + 2);
|
QVariant variant = data(modelIndex, kQtVersionIdRole);
|
||||||
if (variant.isValid()) // set from qt version
|
if (variant.isValid()) // set from qt version
|
||||||
return variant;
|
return variant;
|
||||||
return getDisplayName(i);
|
return getDisplayName(i);
|
||||||
@@ -199,7 +224,7 @@ ExampleSetModel::ExampleSetType ExampleSetModel::getType(int i) const
|
|||||||
if (i < 0 || i >= rowCount())
|
if (i < 0 || i >= rowCount())
|
||||||
return InvalidExampleSet;
|
return InvalidExampleSet;
|
||||||
QModelIndex modelIndex = index(i, 0);
|
QModelIndex modelIndex = index(i, 0);
|
||||||
QVariant variant = data(modelIndex, Qt::UserRole + 2); /*Qt version uniqueId*/
|
QVariant variant = data(modelIndex, kQtVersionIdRole); /*Qt version uniqueId*/
|
||||||
if (variant.isValid())
|
if (variant.isValid())
|
||||||
return QtExampleSet;
|
return QtExampleSet;
|
||||||
return ExtraExampleSetType;
|
return ExtraExampleSetType;
|
||||||
@@ -209,7 +234,7 @@ int ExampleSetModel::getQtId(int i) const
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(i >= 0, return -1);
|
QTC_ASSERT(i >= 0, return -1);
|
||||||
QModelIndex modelIndex = index(i, 0);
|
QModelIndex modelIndex = index(i, 0);
|
||||||
QVariant variant = data(modelIndex, Qt::UserRole + 2);
|
QVariant variant = data(modelIndex, kQtVersionIdRole);
|
||||||
QTC_ASSERT(variant.isValid(), return -1);
|
QTC_ASSERT(variant.isValid(), return -1);
|
||||||
QTC_ASSERT(variant.canConvert<int>(), return -1);
|
QTC_ASSERT(variant.canConvert<int>(), return -1);
|
||||||
return variant.toInt();
|
return variant.toInt();
|
||||||
@@ -224,7 +249,7 @@ int ExampleSetModel::getExtraExampleSetIndex(int i) const
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(i >= 0, return -1);
|
QTC_ASSERT(i >= 0, return -1);
|
||||||
QModelIndex modelIndex = index(i, 0);
|
QModelIndex modelIndex = index(i, 0);
|
||||||
QVariant variant = data(modelIndex, Qt::UserRole + 3);
|
QVariant variant = data(modelIndex, kExtraSetIndexRole);
|
||||||
QTC_ASSERT(variant.isValid(), return -1);
|
QTC_ASSERT(variant.isValid(), return -1);
|
||||||
QTC_ASSERT(variant.canConvert<int>(), return -1);
|
QTC_ASSERT(variant.canConvert<int>(), return -1);
|
||||||
return variant.toInt();
|
return variant.toInt();
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Develop applications for embedded Linux devices",
|
"Description" : "Develop applications for embedded Linux devices.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Connect devices with USB or over a network to run, debug, and analyze applications built for them.",
|
"Connect devices with USB or over a network to run, debug, and analyze applications built for them.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Qt Creator",
|
"Category" : "Qt Creator",
|
||||||
"Description" : "Edit Qt Resource System (.qrc) files",
|
"Description" : "Edit Qt Resource System (.qrc) files.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Store files in the application's executable with the platform-independent Qt Resource System."
|
"Store files in the application's executable with the platform-independent Qt Resource System."
|
||||||
],
|
],
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Device Support",
|
"Category" : "Device Support",
|
||||||
"Description" : "Render safety-critical items in functional safety systems",
|
"Description" : "Render safety-critical items in functional safety systems.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Qt Safe Renderer separates the safety-critical rendering from the other parts of the system, so it can render safety-critical UI elements even if there are failures in the main UI. Therefore, you can use Qt in a system requiring certification without changing the Qt libraries.",
|
"Qt Safe Renderer separates the safety-critical rendering from the other parts of the system, so it can render safety-critical UI elements even if there are failures in the main UI. Therefore, you can use Qt in a system requiring certification without changing the Qt libraries.",
|
||||||
"You also need:",
|
"You also need:",
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
],
|
],
|
||||||
"DisabledByDefault" : true,
|
"DisabledByDefault" : true,
|
||||||
"SoftLoadable" : true,
|
"SoftLoadable" : true,
|
||||||
"Description" : "Record screens",
|
"Description" : "Record screens.",
|
||||||
"LongDescription" : [],
|
"LongDescription" : [],
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Category" : "Modeling",
|
"Category" : "Modeling",
|
||||||
"Description" : "Create SCXML (State Chart XML) files",
|
"Description" : "Create SCXML (State Chart XML) files.",
|
||||||
"LongDescription" : [
|
"LongDescription" : [
|
||||||
"Visualize how a system reacts to events. State charts define the states that the system can be in, and how the system can move from one state to another."
|
"Visualize how a system reacts to events. State charts define the states that the system can be in, and how the system can move from one state to another."
|
||||||
],
|
],
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
"",
|
"",
|
||||||
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html."
|
||||||
],
|
],
|
||||||
"Description" : "Serial Port Terminal",
|
"Description" : "Serial Port Terminal.",
|
||||||
"Url" : "https://www.qt.io",
|
"Url" : "https://www.qt.io",
|
||||||
${IDE_PLUGIN_DEPENDENCIES}
|
${IDE_PLUGIN_DEPENDENCIES}
|
||||||
}
|
}
|
||||||
|