Commit 33210099 authored by Eike Ziller's avatar Eike Ziller
Browse files

Merge remote-tracking branch 'origin/4.0'

Change-Id: I9793f0f9019b16f3725c5a9708a5ccf81557cdc6
parents 8fd12818 c7419c1f
......@@ -12,6 +12,7 @@ CMake Projects
* Added notification when `CMakeCache.txt` changes and introduces a
conflict with the build configuration settings, with the option
to adapt the build configuration settings
* Made it possible to add arbitrary CMake variables (QTCREATORBUG-16238)
* Fixed that build configurations could not override kit settings, and added
a warning to build configurations that override kit settings
* Fixed that `yes` was not considered as boolean `true` value
......@@ -28,6 +29,11 @@ Debugging
* Fixed QObject property expansion (QTCREATORBUG-15798)
* Fixed updating evaluated expressions
* Fixed crash on spontaneous debugger exit (QTCREATORBUG-16233)
* GDB
* Fixed issues with restarting debugger (QTCREATORBUG-16355)
* QML
* Restored expression evaluation by using the selection tool
(QTCREATORBUG-16300)
Valgrind
......@@ -51,3 +57,9 @@ Platform Specific
Windows
* Fixed detection of Microsoft Visual C++ Build Tools
* Fixed that tool tips could stay visible even after switching applications
(QTCREATORBUG-15882)
iOS
* Added missing human readable error messages (QTCREATORBUG-16328)
......@@ -951,7 +951,7 @@ bool JsonFieldPage::isComplete() const
showError(message);
hasErrorMessage = true;
}
if (f->isMandatory())
if (f->isMandatory() && !f->widget()->isHidden())
result = false;
}
}
......
......@@ -23,6 +23,7 @@
#
############################################################################
import __builtin__
import operator
# for easier re-usage (because Python hasn't an enum type)
......@@ -177,26 +178,65 @@ class Qt5Path:
@staticmethod
def getPaths(pathSpec):
qt5targets = [Targets.DESKTOP_521_DEFAULT, Targets.DESKTOP_531_DEFAULT]
if platform.system() != 'Darwin':
qt5targets.append(Targets.DESKTOP_541_GCC)
if pathSpec == Qt5Path.DOCS:
path52 = "/doc"
path53 = "/Docs/Qt-5.3"
path54 = "/Docs/Qt-5.4"
return map(lambda target: Qt5Path.docsPath(target), qt5targets)
elif pathSpec == Qt5Path.EXAMPLES:
path52 = "/examples"
path53 = "/Examples/Qt-5.3"
path54 = "/Examples/Qt-5.4"
return map(lambda target: Qt5Path.examplesPath(target), qt5targets)
else:
test.fatal("Unknown pathSpec given: %s" % str(pathSpec))
return []
@staticmethod
def __preCheckAndExtractQtVersionStr__(target):
if target not in Targets.ALL_TARGETS:
raise Exception("Unexpected target '%s'" % str(target))
matcher = re.match("^Desktop (5\\d{2}).*$", Targets.getStringForTarget(target))
if matcher is None:
raise Exception("Currently this is supported for Desktop Qt5 only, got target '%s'"
% str(Targets.getStringForTarget(target)))
return matcher.group(1)
@staticmethod
def __createPlatformQtPath__(qt5Minor):
# special handling for Qt5.2
if qt5Minor == 2:
if platform.system() in ('Microsoft', 'Windows'):
return "C:/Qt/Qt5.2.1/5.2.1/msvc2010"
elif platform.system() == 'Linux':
if __is64BitOS__():
return os.path.expanduser("~/Qt5.2.1/5.2.1/gcc_64")
else:
return os.path.expanduser("~/Qt5.2.1/5.2.1/gcc")
else:
return os.path.expanduser("~/Qt5.2.1/5.2.1/clang_64")
# Qt5.3+
if platform.system() in ('Microsoft', 'Windows'):
return ["C:/Qt/Qt5.2.1/5.2.1/msvc2010" + path52,
"C:/Qt/Qt5.3.1" + path53, "C:/Qt/Qt5.4.1" + path54]
elif platform.system() == 'Linux':
if __is64BitOS__():
return map(os.path.expanduser, ["~/Qt5.2.1/5.2.1/gcc_64" + path52,
"~/Qt5.3.1" + path53, "~/Qt5.4.1" + path54])
return map(os.path.expanduser, ["~/Qt5.2.1/5.2.1/gcc" + path52,
"~/Qt5.3.1" + path53, "~/Qt5.4.1" + path54])
return "C:/Qt/Qt5.%d.1" % qt5Minor
else:
return os.path.expanduser("~/Qt5.%d.1" % qt5Minor)
@staticmethod
def examplesPath(target):
qtVersionStr = Qt5Path.__preCheckAndExtractQtVersionStr__(target)
qtMinorVersion = __builtin__.int(qtVersionStr[1])
if qtMinorVersion == 2:
path = "examples"
else:
return map(os.path.expanduser, ["~/Qt5.2.1/5.2.1/clang_64" + path52,
"~/Qt5.3.1" + path53])
path = "Examples/Qt-5.%d" % qtMinorVersion
return os.path.join(Qt5Path.__createPlatformQtPath__(qtMinorVersion), path)
@staticmethod
def docsPath(target):
qtVersionStr = Qt5Path.__preCheckAndExtractQtVersionStr__(target)
qtMinorVersion = __builtin__.int(qtVersionStr[1])
if qtMinorVersion == 2:
path = "doc"
else:
path = "Docs/Qt-5.%d" % qtMinorVersion
return os.path.join(Qt5Path.__createPlatformQtPath__(qtMinorVersion), path)
......@@ -316,7 +316,8 @@ def __configureFW__(workingDir, projectName, isReleaseBuild, addToFW=True):
# Needs admin privileges on Windows 7
# Using the deprecated "netsh firewall" because the newer
# "netsh advfirewall" would need admin privileges on Windows Vista, too.
return subprocess.call('netsh firewall %s allowedprogram "%s.exe" %s %s' % (mode, path, projectName, enable))
return subprocess.call(["netsh", "firewall", mode, "allowedprogram",
"%s.exe" % path, projectName, enable])
# helper to check whether win firewall is running or not
# this doesn't check for other firewalls!
......@@ -333,11 +334,6 @@ def __isWinFirewallRunning__():
return __isWinFirewallRunning__.fireWallState
return None
def __fixQuotes__(string):
if platform.system() in ('Windows', 'Microsoft'):
string = '"' + string + '"'
return string
# this function adds the given executable as an attachable AUT
# Bad: executable/port could be empty strings - you should be aware of this
def addExecutableAsAttachableAUT(executable, port, host=None):
......@@ -348,8 +344,8 @@ def addExecutableAsAttachableAUT(executable, port, host=None):
squishSrv = __getSquishServer__()
if (squishSrv == None):
return False
result = subprocess.call(__fixQuotes__('"%s" --config addAttachableAUT "%s" %s:%s')
% (squishSrv, executable, host, port), shell=True)
result = subprocess.call([squishSrv, "--config", "addAttachableAUT",
executable, "%s:%s" % (host, port)])
if result == 0:
test.passes("Added %s as attachable AUT" % executable)
else:
......@@ -366,8 +362,8 @@ def removeExecutableAsAttachableAUT(executable, port, host=None):
squishSrv = __getSquishServer__()
if (squishSrv == None):
return False
result = subprocess.call(__fixQuotes__('"%s" --config removeAttachableAUT "%s" %s:%s')
% (squishSrv, executable, host, port), shell=True)
result = subprocess.call([squishSrv, "--config", "removeAttachableAUT",
executable, "%s:%s" % (host, port)])
if result == 0:
test.passes("Removed %s as attachable AUT" % executable)
else:
......
......@@ -99,9 +99,8 @@ def waitForCleanShutdown(timeOut=10):
# following work-around because os.kill() works for win not until python 2.7
if appCtxt.pid==-1:
break
tasks = subprocess.Popen("tasklist /FI \"PID eq %d\"" % appCtxt.pid, shell=True,stdout=subprocess.PIPE)
output = tasks.communicate()[0]
tasks.stdout.close()
output = getOutputFromCmdline(["tasklist", "/FI", "PID eq %d" % appCtxt.pid],
acceptedError=1)
if (output=="INFO: No tasks are running which match the specified criteria."
or output=="" or output.find("ERROR")==0):
shutdownDone=True
......@@ -131,14 +130,11 @@ def waitForCleanShutdown(timeOut=10):
def checkForStillRunningQmlExecutable(possibleNames):
for qmlHelper in possibleNames:
tasks = subprocess.Popen("tasklist /FI \"IMAGENAME eq %s\"" % qmlHelper, shell=True,
stdout=subprocess.PIPE)
output = tasks.communicate()[0]
tasks.stdout.close()
output = getOutputFromCmdline(["tasklist", "/FI", "IMAGENAME eq %s" % qmlHelper])
if "INFO: No tasks are running which match the specified criteria." in output:
continue
else:
if subprocess.call("taskkill /F /FI \"IMAGENAME eq %s\"" % qmlHelper, shell=True) == 0:
if subprocess.call(["taskkill", "/F", "/FI", "IMAGENAME eq %s" % qmlHelper]) == 0:
print "Killed still running %s" % qmlHelper
else:
print "%s is still running - failed to kill it" % qmlHelper
......
......@@ -26,7 +26,8 @@
source("../../shared/qtcreator.py")
def main():
sourceExample = os.path.abspath(Qt5Path.getPaths(Qt5Path.EXAMPLES)[0] + "/declarative/keyinteraction/focus")
target = Targets.DESKTOP_521_DEFAULT
sourceExample = os.path.join(Qt5Path.examplesPath(target), "declarative/keyinteraction/focus")
proFile = "focus.pro"
if not neededFilePresent(os.path.join(sourceExample, proFile)):
return
......@@ -34,9 +35,9 @@ def main():
if not startedWithoutPluginError():
return
# add docs to have the correct tool tips
addHelpDocumentation([os.path.join(Qt5Path.getPaths(Qt5Path.DOCS)[0], "qtquick.qch")])
addHelpDocumentation([os.path.join(Qt5Path.docsPath(target), "qtquick.qch")])
templateDir = prepareTemplate(sourceExample, "/../../helper")
openQmakeProject(os.path.join(templateDir, proFile), Targets.DESKTOP_521_DEFAULT)
openQmakeProject(os.path.join(templateDir, proFile), target)
openDocument("focus.QML.qml" + os.sep + "focus.focus\\.qml")
testRenameId()
testFindUsages()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment