Merge remote-tracking branch 'origin/2.6'

Conflicts:
	src/plugins/coreplugin/editormanager/openeditorsview.cpp
	src/plugins/debugger/qml/qmlengine.cpp
	src/plugins/debugger/qml/qmlinspectoradapter.cpp
	src/plugins/qtsupport/exampleslistmodel.cpp
	src/plugins/qtsupport/exampleslistmodel.h
	src/plugins/welcome/welcomeplugin.cpp

Change-Id: I92b542af23ceb7cf7dac84b12439e5f819f2dc39
This commit is contained in:
Eike Ziller
2012-11-30 16:38:22 +01:00
54 changed files with 15167 additions and 5902 deletions

View File

@@ -45,15 +45,16 @@ Component.prototype.beginInstallation = function()
registerWindowsFileTypeExtensions = function() registerWindowsFileTypeExtensions = function()
{ {
var headerExtensions = new Array("h", "hh", "hxx", "h++", "hpp", "hpp"); var headerExtensions = new Array("h", "hh", "hxx", "h++", "hpp");
for (var i = 0; i < headerExtensions.length; ++i) { for (var i = 0; i < headerExtensions.length; ++i) {
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
headerExtensions[i], headerExtensions[i],
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"C++ Header file", "C++ Header file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,3"); "@TargetDir@\\bin\\qtcreator.exe,3",
"ProgId=QtProject.QtCreator." + headerExtensions[i]);
} }
var cppExtensions = new Array("cc", "cxx", "c++", "cp", "cpp"); var cppExtensions = new Array("cc", "cxx", "c++", "cp", "cpp");
@@ -63,46 +64,53 @@ registerWindowsFileTypeExtensions = function()
cppExtensions[i], cppExtensions[i],
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"C++ Source file", "C++ Source file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,2"); "@TargetDir@\\bin\\qtcreator.exe,2",
"ProgId=QtProject.QtCreator." + cppExtensions[i]);
} }
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
"c", "c",
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"C Source file", "C Source file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,1"); "@TargetDir@\\bin\\qtcreator.exe,1",
"ProgId=QtProject.QtCreator.c");
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
"ui", "ui",
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"Qt UI file", "Qt UI file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,4"); "@TargetDir@\\bin\\qtcreator.exe,4",
"ProgId=QtProject.QtCreator.ui");
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
"pro", "pro",
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"Qt Project file", "Qt Project file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,5"); "@TargetDir@\\bin\\qtcreator.exe,5",
"ProgId=QtProject.QtCreator.pro");
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
"pri", "pri",
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"Qt Project Include file", "Qt Project Include file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,6"); "@TargetDir@\\bin\\qtcreator.exe,6",
"ProgId=QtProject.QtCreator.pri");
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
"qs", "qs",
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"Qt Script file", "Qt Script file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,0"); "@TargetDir@\\bin\\qtcreator.exe,0",
"ProgId=QtProject.QtCreator.qs");
component.addOperation( "RegisterFileType", component.addOperation( "RegisterFileType",
"qml", "qml",
"@TargetDir@\\bin\\qtcreator.exe -client '%1'", "@TargetDir@\\bin\\qtcreator.exe -client '%1'",
"Qt Quick Markup language file", "Qt Quick Markup language file",
"", "text/plain",
"@TargetDir@\\bin\\qtcreator.exe,0"); "@TargetDir@\\bin\\qtcreator.exe,0",
"ProgId=QtProject.QtCreator.qml");
} }
Component.prototype.createOperations = function() Component.prototype.createOperations = function()

View File

@@ -32,7 +32,7 @@ isEmpty(IDE_BUILD_TREE):IDE_BUILD_TREE=/Users/example/qtcreator-build
## <localappdata>/plugins/<ideversion> ## <localappdata>/plugins/<ideversion>
## where <localappdata> is e.g. ## where <localappdata> is e.g.
## "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later ## "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
## "$XDG_DATA_HOME/QtProject/qtcreator" or "~/.local/share/QtProject/qtcreator" on Linux ## "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
## "~/Library/Application Support/QtProject/Qt Creator" on Mac ## "~/Library/Application Support/QtProject/Qt Creator" on Mac
# USE_USER_DESTDIR = yes # USE_USER_DESTDIR = yes
#! [4] #! [4]

View File

@@ -30,8 +30,8 @@ macx {
APPBUNDLE = "$$OUT_PWD/bin/Qt Creator.app" APPBUNDLE = "$$OUT_PWD/bin/Qt Creator.app"
BINDIST_SOURCE = "$$OUT_PWD/bin/Qt Creator.app" BINDIST_SOURCE = "$$OUT_PWD/bin/Qt Creator.app"
BINDIST_INSTALLER_SOURCE = $$BINDIST_SOURCE BINDIST_INSTALLER_SOURCE = $$BINDIST_SOURCE
deployqt.commands = $$PWD/scripts/deployqtHelper_mac.sh \"$${APPBUNDLE}\" deployqt.commands = $$PWD/scripts/deployqtHelper_mac.sh \"$${APPBUNDLE}\" \"$$[QT_INSTALL_TRANSLATIONS]\"
codesign.commands = codesign -s \"$(SIGNING_IDENTITY)\" \"$${APPBUNDLE}\" codesign.commands = codesign -s \"$(SIGNING_IDENTITY)\" $(SIGNING_FLAGS) \"$${APPBUNDLE}\"
dmg.commands = $$PWD/scripts/makedmg.sh $$OUT_PWD/bin qt-creator-$${PATTERN}.dmg dmg.commands = $$PWD/scripts/makedmg.sh $$OUT_PWD/bin qt-creator-$${PATTERN}.dmg
dmg.depends = deployqt dmg.depends = deployqt
QMAKE_EXTRA_TARGETS += codesign dmg QMAKE_EXTRA_TARGETS += codesign dmg

View File

@@ -186,6 +186,13 @@ def copy_qt_libs(install_dir, qt_libs_dir, qt_plugin_dir, qt_import_dir, plugins
shutil.rmtree(target) shutil.rmtree(target)
shutil.copytree(os.path.join(qt_import_dir, qtimport), target, ignore=copy_ignore_func, symlinks=True) shutil.copytree(os.path.join(qt_import_dir, qtimport), target, ignore=copy_ignore_func, symlinks=True)
def add_qt_conf(install_dir):
print "Creating qt.conf:"
f = open(install_dir + '/bin/qt.conf', 'w')
f.write('[Paths]\n')
f.write('Libraries=../lib/qtcreator\n')
f.close()
def copy_translations(install_dir, qt_tr_dir, tr_catalogs): def copy_translations(install_dir, qt_tr_dir, tr_catalogs):
langs = [] langs = []
tr_dir = os.path.join(install_dir, 'share', 'qtcreator', 'translations') tr_dir = os.path.join(install_dir, 'share', 'qtcreator', 'translations')
@@ -252,7 +259,7 @@ def main():
QT_INSTALL_IMPORTS = readQmakeVar(qmake_bin, 'QT_INSTALL_IMPORTS') QT_INSTALL_IMPORTS = readQmakeVar(qmake_bin, 'QT_INSTALL_IMPORTS')
QT_INSTALL_TRANSLATIONS = readQmakeVar(qmake_bin, 'QT_INSTALL_TRANSLATIONS') QT_INSTALL_TRANSLATIONS = readQmakeVar(qmake_bin, 'QT_INSTALL_TRANSLATIONS')
plugins = ['accessible', 'designer', 'iconengines', 'imageformats', 'platforms', 'sqldrivers'] plugins = ['accessible', 'designer', 'iconengines', 'imageformats', 'platforms', 'printsupport', 'sqldrivers']
imports = ['Qt', 'QtWebKit'] imports = ['Qt', 'QtWebKit']
tr_catalogs = ['assistant', 'designer', 'qt', 'qt_help'] tr_catalogs = ['assistant', 'designer', 'qt', 'qt_help']
@@ -268,6 +275,7 @@ def main():
if not sys.platform.startswith('win'): if not sys.platform.startswith('win'):
fix_rpaths(chrpath_bin, install_dir) fix_rpaths(chrpath_bin, install_dir)
add_qt_conf(install_dir)
if __name__ == "__main__": if __name__ == "__main__":
if sys.platform == 'darwin': if sys.platform == 'darwin':

View File

@@ -1,8 +1,15 @@
#!/bin/bash #!/bin/bash
[ $# -lt 2 ] && echo "Usage: $(basename $0) <app folder> <qt translations folder>" && exit 2
[ $(uname -s) != "Darwin" ] && echo "Run this script on Mac OS X" && exit 2;
macdeployqt "$1" \ macdeployqt "$1" \
"-executable=$1/Contents/MacOS/qmlpuppet.app/Contents/MacOS/qmlpuppet" \ "-executable=$1/Contents/MacOS/qmlpuppet.app/Contents/MacOS/qmlpuppet" \
"-executable=$1/Contents/Resources/qtpromaker" \ "-executable=$1/Contents/Resources/qtpromaker" \
"-executable=$1/Contents/Resources/sdktool" || exit 1 "-executable=$1/Contents/Resources/sdktool" || exit 1
qmlpuppetResources="$1/Contents/MacOS/qmlpuppet.app/Contents/Resources" qmlpuppetResources="$1/Contents/MacOS/qmlpuppet.app/Contents/Resources"
test -d "$qmlpuppetResources" || mkdir -p "$qmlpuppetResources" test -d "$qmlpuppetResources" || mkdir -p "$qmlpuppetResources"
cp "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/qmlpuppet_qt.conf" "$qmlpuppetResources/qt.conf" cp "$(dirname "${BASH_SOURCE[0]}")/../dist/installer/mac/qmlpuppet_qt.conf" "$qmlpuppetResources/qt.conf"
# copy Qt translations
cp "$2"/qt_*.qm "$1/Contents/Resources/translations/"

View File

@@ -25,7 +25,7 @@ isEmpty(IDE_BUILD_TREE):IDE_BUILD_TREE=%QtCreatorBuild%
## <localappdata>/plugins/<ideversion> ## <localappdata>/plugins/<ideversion>
## where <localappdata> is e.g. ## where <localappdata> is e.g.
## "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later ## "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
## "$XDG_DATA_HOME/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux ## "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
## "~/Library/Application Support/QtProject/Qt Creator" on Mac ## "~/Library/Application Support/QtProject/Qt Creator" on Mac
%DestDir%USE_USER_DESTDIR = yes %DestDir%USE_USER_DESTDIR = yes

View File

@@ -2301,7 +2301,7 @@ Local pulls are not applied to the master branch.</source>
<name>CMakeProjectManager::Internal::CMakeManager</name> <name>CMakeProjectManager::Internal::CMakeManager</name>
<message> <message>
<source>Run CMake</source> <source>Run CMake</source>
<translation>Запуск CMake</translation> <translation>Запустить CMake</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -2314,8 +2314,8 @@ Local pulls are not applied to the master branch.</source>
<context> <context>
<name>CMakeProjectManager::Internal::CMakeRunConfiguration</name> <name>CMakeProjectManager::Internal::CMakeRunConfiguration</name>
<message> <message>
<source>Run CMake target</source> <source>Run CMake kit</source>
<translation>Запустить цель CMake</translation> <translation>Запуск инструментария CMake</translation>
</message> </message>
<message> <message>
<source>Clean Environment</source> <source>Clean Environment</source>
@@ -2385,7 +2385,7 @@ Local pulls are not applied to the master branch.</source>
<name>CMakeProjectManager::Internal::CMakeRunPage</name> <name>CMakeProjectManager::Internal::CMakeRunPage</name>
<message> <message>
<source>Run CMake</source> <source>Run CMake</source>
<translation>Запуск CMake</translation> <translation>Запустить CMake</translation>
</message> </message>
<message> <message>
<source>The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments and rerun CMake. Or simply finish the wizard directly.</source> <source>The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments and rerun CMake. Or simply finish the wizard directly.</source>
@@ -2453,6 +2453,10 @@ Local pulls are not applied to the master branch.</source>
</context> </context>
<context> <context>
<name>CMakeProjectManager::Internal::ChooseCMakePage</name> <name>CMakeProjectManager::Internal::ChooseCMakePage</name>
<message>
<source>cmake Executable:</source>
<translation>Исполняемый файл cmake:</translation>
</message>
<message> <message>
<source>Choose Cmake Executable</source> <source>Choose Cmake Executable</source>
<translation>Выбор исполняемого файла Cmake</translation> <translation>Выбор исполняемого файла Cmake</translation>
@@ -2512,18 +2516,18 @@ Local pulls are not applied to the master branch.</source>
<translation>Дополнительные параметры:</translation> <translation>Дополнительные параметры:</translation>
</message> </message>
<message> <message>
<source>Targets:</source> <source>Kits:</source>
<translation>Цели:</translation> <translation>Инструментарии:</translation>
</message>
<message>
<source>&lt;b&gt;No build configuration found on this kit.&lt;/b&gt;</source>
<translation>&lt;b&gt;Для этого инструментария отсутствует конфигурация сборки.&lt;/b&gt;</translation>
</message> </message>
<message> <message>
<source>Make</source> <source>Make</source>
<comment>CMakeProjectManager::MakeStepConfigWidget display name.</comment> <comment>CMakeProjectManager::MakeStepConfigWidget display name.</comment>
<translation>Сборка</translation> <translation>Сборка</translation>
</message> </message>
<message>
<source>&lt;b&gt;No build configuration found on this target.&lt;/b&gt;</source>
<translation>&lt;b&gt;Для этой цели отсутствует конфигурация сборки.&lt;/b&gt;</translation>
</message>
</context> </context>
<context> <context>
<name>CMakeProjectManager::Internal::MakeStepFactory</name> <name>CMakeProjectManager::Internal::MakeStepFactory</name>
@@ -2552,6 +2556,13 @@ Local pulls are not applied to the master branch.</source>
<translation>Каталог сборки</translation> <translation>Каталог сборки</translation>
</message> </message>
</context> </context>
<context>
<name>CPlusPlus::CheckSymbols</name>
<message>
<source>Expected a namespace-name</source>
<translation>Требуется название пространства имён</translation>
</message>
</context>
<context> <context>
<name>CPlusPlus::OverviewModel</name> <name>CPlusPlus::OverviewModel</name>
<message> <message>
@@ -2564,10 +2575,22 @@ Local pulls are not applied to the master branch.</source>
</message> </message>
</context> </context>
<context> <context>
<name>CheckUndefinedSymbols</name> <name>CPlusplus::CheckSymbols</name>
<message> <message>
<source>Expected a namespace-name</source> <source>Only virtual methods can be marked `override&apos;</source>
<translation>Ожидается название пространства имён</translation> <translation>Только виртуальные методы можно отмечать «override»</translation>
</message>
<message>
<source>Only virtual methods can be marked `final&apos;</source>
<translation>Только виртуальные методы можно отмечать «final»</translation>
</message>
<message>
<source>Too few arguments</source>
<translation>Слишком мало параметров</translation>
</message>
<message>
<source>Too many arguments</source>
<translation>Слишком много параметров</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -2849,7 +2872,7 @@ Local pulls are not applied to the master branch.</source>
</message> </message>
<message> <message>
<source>The comment check failed. Do you want to check in the files?</source> <source>The comment check failed. Do you want to check in the files?</source>
<translation>Возникла ошибка при проверке комментария. Зафиксировать файлы?</translation> <translation>Ошибка при проверке комментария. Зафиксировать файлы?</translation>
</message> </message>
<message> <message>
<source>Do you want to undo the check out of &apos;%1&apos;?</source> <source>Do you want to undo the check out of &apos;%1&apos;?</source>
@@ -8519,15 +8542,15 @@ Qt Creator не может подключиться к нему.</translation>
</message> </message>
<message> <message>
<source>An error occurred when attempting to write to the gdb process. For example, the process may not be running, or it may have closed its input channel.</source> <source>An error occurred when attempting to write to the gdb process. For example, the process may not be running, or it may have closed its input channel.</source>
<translation>Возникла ошибка при отправке данных процессу gdb. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation> <translation>Ошибка при отправке данных процессу gdb. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
</message> </message>
<message> <message>
<source>An error occurred when attempting to read from the gdb process. For example, the process may not be running.</source> <source>An error occurred when attempting to read from the gdb process. For example, the process may not be running.</source>
<translation>Возникла ошибка при получении данных от процесса gdb. Например, процесс может уже не работать.</translation> <translation>Ошибка при получении данных от процесса gdb. Например, процесс может уже не работать.</translation>
</message> </message>
<message> <message>
<source>An unknown error in the gdb process occurred. </source> <source>An unknown error in the gdb process occurred. </source>
<translation>Неизвестная ошибка возникла у процесса gdb. </translation> <translation>У процесса gdb возникла неизвестная ошибка. </translation>
</message> </message>
<message> <message>
<source>Library %1 unloaded</source> <source>Library %1 unloaded</source>
@@ -9111,11 +9134,11 @@ receives a signal like SIGSEGV during debugging.</source>
</message> </message>
<message> <message>
<source>An error occurred when attempting to write to the upload process. For example, the process may not be running, or it may have closed its input channel.</source> <source>An error occurred when attempting to write to the upload process. For example, the process may not be running, or it may have closed its input channel.</source>
<translation>Возникла ошибка при отправке данных процессу выгрузки. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation> <translation>Ошибка при отправке данных процессу выгрузки. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
</message> </message>
<message> <message>
<source>An error occurred when attempting to read from the upload process. For example, the process may not be running.</source> <source>An error occurred when attempting to read from the upload process. For example, the process may not be running.</source>
<translation>Возникла ошибка при получении данных от процесса выгрузки. Например, процесс может уже не работать.</translation> <translation>Ошибка при получении данных от процесса выгрузки. Например, процесс может уже не работать.</translation>
</message> </message>
<message> <message>
<source>An unknown error in the upload process occurred. This is the default return value of error().</source> <source>An unknown error in the upload process occurred. This is the default return value of error().</source>
@@ -9507,15 +9530,15 @@ Stepping into the module or setting breakpoints by file and is expected to work.
</message> </message>
<message> <message>
<source>An error occurred when attempting to write to the Pdb process. For example, the process may not be running, or it may have closed its input channel.</source> <source>An error occurred when attempting to write to the Pdb process. For example, the process may not be running, or it may have closed its input channel.</source>
<translation>Возникла ошибка при отправке данных процессу Pdb. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation> <translation>Ошибка при отправке данных процессу Pdb. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
</message> </message>
<message> <message>
<source>An error occurred when attempting to read from the Pdb process. For example, the process may not be running.</source> <source>An error occurred when attempting to read from the Pdb process. For example, the process may not be running.</source>
<translation>Возникла ошибка при получении данных от процесса Pdb. Например, процесс может уже не работать.</translation> <translation>Ошибка при получении данных от процесса Pdb. Например, процесс может уже не работать.</translation>
</message> </message>
<message> <message>
<source>An unknown error in the Pdb process occurred. </source> <source>An unknown error in the Pdb process occurred. </source>
<translation>Неизвестная ошибка возникла у процесса Pdb. </translation> <translation>У процесса Pdb возникла неизвестная ошибка. </translation>
</message> </message>
</context> </context>
<context> <context>
@@ -15372,7 +15395,7 @@ Do you want to kill it?</source>
</message> </message>
<message> <message>
<source>An error occurred while replaying the macro, execution stopped.</source> <source>An error occurred while replaying the macro, execution stopped.</source>
<translation>Возникла ошибка при воспроизведении сценария, оно остановлено.</translation> <translation>Ошибка при воспроизведении сценария, оно остановлено.</translation>
</message> </message>
<message> <message>
<source>Macro mode. Type &quot;%1&quot; to stop recording and &quot;%2&quot; to play it</source> <source>Macro mode. Type &quot;%1&quot; to stop recording and &quot;%2&quot; to play it</source>
@@ -15431,8 +15454,8 @@ Do you want to kill it?</source>
<translation>Не удалось создать пакет: не задан профил Qt.</translation> <translation>Не удалось создать пакет: не задан профил Qt.</translation>
</message> </message>
<message> <message>
<source>No Qt4 build configuration</source> <source>No Qt build configuration</source>
<translation>Нет конфигурации сборки Qt4</translation> <translation>Нет конфигурации сборки Qt</translation>
</message> </message>
<message> <message>
<source>Creating package file...</source> <source>Creating package file...</source>
@@ -16026,6 +16049,14 @@ We will try to work around that, but you may experience problems.</source>
</context> </context>
<context> <context>
<name>Madde::Internal::MaemoMakeInstallToSysrootStep</name> <name>Madde::Internal::MaemoMakeInstallToSysrootStep</name>
<message>
<source>Cannot deploy: No active build dconfiguration.</source>
<translation>Невозможно установить: нет активной конфигурации сборки.</translation>
</message>
<message>
<source>Cannot deploy: Unusable build configuration.</source>
<translation>Невозможно установить: конфигурация сборки некорректна.</translation>
</message>
<message> <message>
<source>Copy files to sysroot</source> <source>Copy files to sysroot</source>
<translation>Скопировать файлы в sysroot</translation> <translation>Скопировать файлы в sysroot</translation>
@@ -16449,6 +16480,10 @@ We will try to work around that, but you may experience problems.</source>
</context> </context>
<context> <context>
<name>Madde::Internal::MaemoQemuManager</name> <name>Madde::Internal::MaemoQemuManager</name>
<message>
<source>MeeGo Emulator</source>
<translation>Эмулятор MeeGo</translation>
</message>
<message> <message>
<source>Start MeeGo Emulator</source> <source>Start MeeGo Emulator</source>
<translation>Запустить эмулятор MeeGo</translation> <translation>Запустить эмулятор MeeGo</translation>
@@ -18339,8 +18374,8 @@ Preselects Qt for Simulator and mobile targets if available.</source>
<translation>Сборка/установка была отменена.</translation> <translation>Сборка/установка была отменена.</translation>
</message> </message>
<message> <message>
<source>Error while building/deploying project %1 (target: %2)</source> <source>Error while building/deploying project %1 (kit: %2)</source>
<translation>Возникла ошибка при сборке/установке проекта %1 (цель: %2)</translation> <translation>Ошибка при сборке/установке проекта %1 (инструментарий: %2)</translation>
</message> </message>
<message> <message>
<source>When executing step &apos;%1&apos;</source> <source>When executing step &apos;%1&apos;</source>
@@ -18423,10 +18458,6 @@ Preselects Qt for Simulator and mobile targets if available.</source>
<source>Creates a C++ plugin that makes it possible to offer extensions that can be loaded dynamically into applications using the QDeclarativeEngine class.</source> <source>Creates a C++ plugin that makes it possible to offer extensions that can be loaded dynamically into applications using the QDeclarativeEngine class.</source>
<translation>Создание подключаемого модуля на C++, являющегося расширением, которое может быть динамически загружено в приложения через класс QDeclarativeEngine.</translation> <translation>Создание подключаемого модуля на C++, являющегося расширением, которое может быть динамически загружено в приложения через класс QDeclarativeEngine.</translation>
</message> </message>
<message>
<source>Custom QML Extension Plugin</source>
<translation>Особый модуль расширяющий QML</translation>
</message>
<message> <message>
<source>Custom QML Extension Plugin Parameters</source> <source>Custom QML Extension Plugin Parameters</source>
<translation>Параметры особого модуля расширяющего QML</translation> <translation>Параметры особого модуля расширяющего QML</translation>
@@ -18535,6 +18566,18 @@ Preselects Qt for Simulator and mobile targets if available.</source>
<source>Libraries</source> <source>Libraries</source>
<translation>Библиотеки</translation> <translation>Библиотеки</translation>
</message> </message>
<message>
<source>Qt Quick 1 Extension Plugin</source>
<translation>Модуль, расширяющий Qt Quick 1</translation>
</message>
<message>
<source>Creates a C++ plugin that makes it possible to offer extensions that can be loaded dynamically into applications using the QQmlEngine class.</source>
<translation>Создание подключаемого модуля на C++, являющегося расширением, которое может быть динамически загружено в приложения через класс QQmlEngine.</translation>
</message>
<message>
<source>Qt Quick 2 Extension Plugin</source>
<translation>Модуль, расширяющий Qt Quick 2</translation>
</message>
<message> <message>
<source>Qt Creator Plugin</source> <source>Qt Creator Plugin</source>
<translation>Модуль Qt Creator</translation> <translation>Модуль Qt Creator</translation>
@@ -19472,8 +19515,8 @@ Remote error output was: %1</source>
<translation>&lt;b&gt;Проект:&lt;/b&gt; %1</translation> <translation>&lt;b&gt;Проект:&lt;/b&gt; %1</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Target:&lt;/b&gt; %1</source> <source>&lt;b&gt;Kit:&lt;/b&gt; %1</source>
<translation>&lt;b&gt;Цель:&lt;/b&gt; %1</translation> <translation>&lt;b&gt;Инструментарий:&lt;/b&gt; %1</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Build:&lt;/b&gt; %1</source> <source>&lt;b&gt;Build:&lt;/b&gt; %1</source>
@@ -20286,11 +20329,11 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>New Project...</source> <source>New Project...</source>
<translation>Новый проект...</translation> <translation>Создать проект...</translation>
</message> </message>
<message> <message>
<source>Ctrl+Shift+N</source> <source>Ctrl+Shift+N</source>
<translation></translation> <translation>Ctrl+Shift+N</translation>
</message> </message>
<message> <message>
<source>Load Project...</source> <source>Load Project...</source>
@@ -20298,7 +20341,7 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>Ctrl+Shift+O</source> <source>Ctrl+Shift+O</source>
<translation></translation> <translation>Ctrl+Shift+O</translation>
</message> </message>
<message> <message>
<source>Open File</source> <source>Open File</source>
@@ -20326,7 +20369,7 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>Ctrl+Shift+B</source> <source>Ctrl+Shift+B</source>
<translation></translation> <translation>Ctrl+Shift+B</translation>
</message> </message>
<message> <message>
<source>Rebuild All</source> <source>Rebuild All</source>
@@ -20350,7 +20393,7 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>Ctrl+B</source> <source>Ctrl+B</source>
<translation></translation> <translation>Ctrl+B</translation>
</message> </message>
<message> <message>
<source>Rebuild Project</source> <source>Rebuild Project</source>
@@ -20406,7 +20449,7 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>Ctrl+R</source> <source>Ctrl+R</source>
<translation></translation> <translation>Ctrl+R</translation>
</message> </message>
<message> <message>
<source>Cancel Build</source> <source>Cancel Build</source>
@@ -20422,7 +20465,7 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>Remove File...</source> <source>Remove File...</source>
<translation>Убрать файл...</translation> <translation>Удалить файл...</translation>
</message> </message>
<message> <message>
<source>Remove Project...</source> <source>Remove Project...</source>
@@ -20499,6 +20542,14 @@ to project &apos;%2&apos;.</source>
<source>Do Not Close</source> <source>Do Not Close</source>
<translation>Не закрывать</translation> <translation>Не закрывать</translation>
</message> </message>
<message>
<source>The project &apos;%1&apos; has no active kit.</source>
<translation>У проекта «%1» нет активного инструментария.</translation>
</message>
<message>
<source>The kit &apos;%1&apos; for the project &apos;%2&apos; has no active run configuration.</source>
<translation>Для инструментария «%1» проекта «%2» нет активной конфигурации запуска.</translation>
</message>
<message> <message>
<source>A build is still in progress.</source> <source>A build is still in progress.</source>
<translation>Сборка ещё выполняется.</translation> <translation>Сборка ещё выполняется.</translation>
@@ -20530,11 +20581,7 @@ to project &apos;%2&apos;.</source>
</message> </message>
<message> <message>
<source>New Subproject...</source> <source>New Subproject...</source>
<translation>Новый подпроект...</translation> <translation>Создать подпроект...</translation>
</message>
<message>
<source>Quick Switch Target Selector</source>
<translation>Выбор быстрого переключения целей</translation>
</message> </message>
<message> <message>
<source>Ctrl+T</source> <source>Ctrl+T</source>
@@ -20565,7 +20612,7 @@ Do you want to ignore them?</source>
</message> </message>
<message> <message>
<source>Clean</source> <source>Clean</source>
<translation>Очистка</translation> <translation>Очистить</translation>
</message> </message>
<message> <message>
<source>Close All Projects and Editors</source> <source>Close All Projects and Editors</source>
@@ -20573,7 +20620,7 @@ Do you want to ignore them?</source>
</message> </message>
<message> <message>
<source>Build</source> <source>Build</source>
<translation>Сборка</translation> <translation>Собрать</translation>
</message> </message>
<message> <message>
<source>Rebuild</source> <source>Rebuild</source>
@@ -20581,7 +20628,7 @@ Do you want to ignore them?</source>
</message> </message>
<message> <message>
<source>Deploy</source> <source>Deploy</source>
<translation>Установка</translation> <translation>Установить</translation>
</message> </message>
<message> <message>
<source>Set &quot;%1&quot; as Active Project</source> <source>Set &quot;%1&quot; as Active Project</source>
@@ -20591,6 +20638,10 @@ Do you want to ignore them?</source>
<source>Open Build and Run Kit Selector...</source> <source>Open Build and Run Kit Selector...</source>
<translation>Открыть выбор инструментария для сборки и запуска...</translation> <translation>Открыть выбор инструментария для сборки и запуска...</translation>
</message> </message>
<message>
<source>Quick Switch Kit Selector</source>
<translation>Выбор быстрого переключения инструментариев</translation>
</message>
<message> <message>
<source>Full build path of the current project&apos;s active build configuration.</source> <source>Full build path of the current project&apos;s active build configuration.</source>
<translation>Полный путь к каталогу сборки активной конфигурации текущего проекта.</translation> <translation>Полный путь к каталогу сборки активной конфигурации текущего проекта.</translation>
@@ -20648,14 +20699,6 @@ Do you want to ignore them?</source>
<source>No active project.</source> <source>No active project.</source>
<translation>Нет активного проекта.</translation> <translation>Нет активного проекта.</translation>
</message> </message>
<message>
<source>The project &apos;%1&apos; has no active target.</source>
<translation>У проекта «%1» нет активной цели.</translation>
</message>
<message>
<source>The target &apos;%1&apos; for the project &apos;%2&apos; has no active run configuration.</source>
<translation>У цели «%1» проекта «%2» нет активной конфигурации запуска.</translation>
</message>
<message> <message>
<source>Cannot run &apos;%1&apos;.</source> <source>Cannot run &apos;%1&apos;.</source>
<translation>Не удалось запустить «%1».</translation> <translation>Не удалось запустить «%1».</translation>
@@ -20671,7 +20714,7 @@ Do you want to ignore them?</source>
</message> </message>
<message> <message>
<source>Add Existing Files</source> <source>Add Existing Files</source>
<translation>Добавить существующие файлы</translation> <translation>Добавление существующих файлов</translation>
</message> </message>
<message> <message>
<source>Could not add following files to project %1: <source>Could not add following files to project %1:
@@ -20689,19 +20732,19 @@ Do you want to ignore them?</source>
</message> </message>
<message> <message>
<source>Could not remove file %1 from project %2.</source> <source>Could not remove file %1 from project %2.</source>
<translation>Не удалось убрать файл %1 из проекта %2.</translation> <translation>Не удалось удалить файл «%1» из проекта «%2».</translation>
</message> </message>
<message> <message>
<source>Could not delete file %1.</source> <source>Could not delete file %1.</source>
<translation>Не удалось удалить файл %1.</translation> <translation>Не удалось удалить файл «%1».</translation>
</message> </message>
<message> <message>
<source>Delete File</source> <source>Delete File</source>
<translation>Удалить файл</translation> <translation>Удаление файла</translation>
</message> </message>
<message> <message>
<source>Delete %1 from file system?</source> <source>Delete %1 from file system?</source>
<translation>Удалить %1 с диска?</translation> <translation>Удалить «%1» с диска?</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -20858,16 +20901,12 @@ Do you still want to load the settings file?</source>
<translation>Неподдерживаемый файл общих настроек</translation> <translation>Неподдерживаемый файл общих настроек</translation>
</message> </message>
<message> <message>
<source>The version of your .shared file is not yet supported by this Qt Creator version. Only settings that are still compatible will be taken into account. <source>The version of your .shared file is not supported by this Qt Creator version. Only settings that are still compatible will be taken into account.
Do you want to continue? Do you want to try loading it?</source>
<translation>Версия вашего файла .shared не поддерживается этой версией Qt Creator. Будут загружены только совместимые настройки.
If you choose not to continue Qt Creator will not try to load the .shared file.</source> Попробовать загрузить файл?</translation>
<translation>Версия вашего файла .shared ещё не поддерживается этой версией Qt Creator. Загружены будут только совместимые настройки.
Продолжить?
В случае отрицательного ответа Qt Creator не будет пытаться грузить файл .shared.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -22105,12 +22144,20 @@ For qmlproject projects, use the importPaths property to add import paths.</sour
<context> <context>
<name>QmlJSEditor::Internal::QmlJSEditorPlugin</name> <name>QmlJSEditor::Internal::QmlJSEditorPlugin</name>
<message> <message>
<source>Creates a QML file.</source> <source>Creates a QML file with boilerplate code, starting with &quot;import QtQuick 1.1&quot;.</source>
<translation>Создание файла QML.</translation> <translation>Создание файл QML с шаблонным кодом, начинающимся с «import QtQuick 1.1».</translation>
</message> </message>
<message> <message>
<source>QML File</source> <source>QML File (Qt Quick 1)</source>
<translation>Файл QML</translation> <translation>Файл QML (Qt Quick 1)</translation>
</message>
<message>
<source>Creates a QML file with boilerplate code, starting with &quot;import QtQuick 2.0&quot;.</source>
<translation>Создание файл QML с шаблонным кодом, начинающимся с «import QtQuick 2.0».</translation>
</message>
<message>
<source>QML File (Qt Quick 2)</source>
<translation>Файл QML (Qt Quick 2)</translation>
</message> </message>
<message> <message>
<source>Creates a JavaScript file.</source> <source>Creates a JavaScript file.</source>
@@ -22181,6 +22228,10 @@ For qmlproject projects, use the importPaths property to add import paths.</sour
</context> </context>
<context> <context>
<name>QmlJSEditor::Internal::QmlJSPreviewRunner</name> <name>QmlJSEditor::Internal::QmlJSPreviewRunner</name>
<message>
<source>No file specified.</source>
<translation>Файл не указан.</translation>
</message>
<message> <message>
<source>Failed to preview Qt Quick file</source> <source>Failed to preview Qt Quick file</source>
<translation>Не удалось выполнить предпросмотр файла Qt Quick</translation> <translation>Не удалось выполнить предпросмотр файла Qt Quick</translation>
@@ -22306,7 +22357,7 @@ Qt Creator know about a likely URI.</source>
Module path: %1 Module path: %1
See &quot;Using QML Modules with Plugins&quot; in the documentation.</source> See &quot;Using QML Modules with Plugins&quot; in the documentation.</source>
<translation>Модуль QML не содержит информации о элементах содержащихся в расширении <translation>Модуль QML не содержит информации об элементах содержащихся в расширении
Путь к модулю: %1 Путь к модулю: %1
См. раздел «Using QML Modules with Plugins» документации.</translation> См. раздел «Using QML Modules with Plugins» документации.</translation>
@@ -22499,6 +22550,10 @@ Do you want to retry?</source>
<source>%1 animations at %2 FPS</source> <source>%1 animations at %2 FPS</source>
<translation>%1 анимаций, %2 кадров в секунду</translation> <translation>%1 анимаций, %2 кадров в секунду</translation>
</message> </message>
<message>
<source>Unexpected complete signal in data model</source>
<translation>Неожиданный сигнал complete в модели данных</translation>
</message>
<message> <message>
<source>No data to save</source> <source>No data to save</source>
<translation>Нет данных для сохранения</translation> <translation>Нет данных для сохранения</translation>
@@ -22519,6 +22574,10 @@ Do you want to retry?</source>
<source>Invalid version of QML Trace file.</source> <source>Invalid version of QML Trace file.</source>
<translation>Неверная версия файла трассировки QML.</translation> <translation>Неверная версия файла трассировки QML.</translation>
</message> </message>
<message>
<source>Trying to set unknown state in events list</source>
<translation>Попытка установить неизвестное состояние в списке событий</translation>
</message>
</context> </context>
<context> <context>
<name>QmlProfiler::Internal::QmlProfilerEngine</name> <name>QmlProfiler::Internal::QmlProfilerEngine</name>
@@ -22879,12 +22938,12 @@ Please use the stop button instead.</source>
You can review Qt Quick UI projects in the QML Viewer and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of projects. You can review Qt Quick UI projects in the QML Viewer and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of projects.
Requires &lt;b&gt;Qt 4.7.4&lt;/b&gt; or newer.</source> Requires &lt;b&gt;Qt 5.0&lt;/b&gt; or newer.</source>
<translation>Создание проекта приложения Qt Quick с одним QML файлом, содержащим главный вид. <translation>Создание проекта приложения Qt Quick с одним QML файлом, содержащим главный вид.
&lt;br/&gt; &lt;br/&gt;
Проекты Qt Quick можно просматривать в QML Viewer и они не требуют сборки. Для создания и запуска проектов данного типа не требуется установка на компьютер среды разработки. Проекты Qt Quick можно просматривать в QML Viewer и они не требуют сборки. Для создания и запуска проектов данного типа не требуется установка на компьютер среды разработки.
&lt;br/&gt; &lt;br/&gt;
Требуется &lt;b&gt;Qt&lt;/b&gt; версии не ниже &lt;b&gt;4.7.4&lt;/b&gt;.</translation> Требуется &lt;b&gt;Qt&lt;/b&gt; версии не ниже &lt;b&gt;5.0&lt;/b&gt;.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -23754,8 +23813,8 @@ Preselects a desktop Qt for building the application if available.</source>
<context> <context>
<name>Qt4ProjectManager::Internal::ConsoleAppWizardDialog</name> <name>Qt4ProjectManager::Internal::ConsoleAppWizardDialog</name>
<message> <message>
<source>This wizard generates a Qt4 console application project. The application derives from QCoreApplication and does not provide a GUI.</source> <source>This wizard generates a Qt console application project. The application derives from QCoreApplication and does not provide a GUI.</source>
<translation>Этот мастер создаст проект консольного приложения Qt4. Оно будет наследником от QCoreApplication и без GUI.</translation> <translation>Этот мастер создаст проект консольного приложения Qt. Оно будет производным от QCoreApplication и без GUI.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -23834,8 +23893,8 @@ Preselects a desktop Qt for building the application if available.</source>
<context> <context>
<name>Qt4ProjectManager::Internal::CustomWidgetWizardDialog</name> <name>Qt4ProjectManager::Internal::CustomWidgetWizardDialog</name>
<message> <message>
<source>This wizard generates a Qt4 Designer Custom Widget or a Qt4 Designer Custom Widget Collection project.</source> <source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
<translation>Этот мастер создаст пользовательский виджет или набор пользовательских виджетов для Qt4 Designer.</translation> <translation>Этот мастер создаст пользовательский виджет или набор пользовательских виджетов для Qt Designer.</translation>
</message> </message>
<message> <message>
<source>Custom Widgets</source> <source>Custom Widgets</source>
@@ -23906,8 +23965,8 @@ Preselects a desktop Qt for building the application if available.</source>
<context> <context>
<name>Qt4ProjectManager::Internal::EmptyProjectWizardDialog</name> <name>Qt4ProjectManager::Internal::EmptyProjectWizardDialog</name>
<message> <message>
<source>This wizard generates an empty Qt4 project. Add files to it later on by using the other wizards.</source> <source>This wizard generates an empty Qt project. Add files to it later on by using the other wizards.</source>
<translation>Этот мастер создаст пустой проект Qt4. Нужно будет позже добавить в него файлы с помощью других мастеров.</translation> <translation>Этот мастер создаст пустой проект Qt. Нужно будет позже добавить в него файлы с помощью других мастеров.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -23950,8 +24009,8 @@ Preselects a desktop Qt for building the application if available.</source>
<context> <context>
<name>Qt4ProjectManager::Internal::GuiAppWizardDialog</name> <name>Qt4ProjectManager::Internal::GuiAppWizardDialog</name>
<message> <message>
<source>This wizard generates a Qt4 GUI application project. The application derives by default from QApplication and includes an empty widget.</source> <source>This wizard generates a Qt GUI application project. The application derives by default from QApplication and includes an empty widget.</source>
<translation>Этот мастер создаст проект графического приложения Qt4. По умолчанию приложение будет базироваться на QApplication и будет включать пустой виджет.</translation> <translation>Этот мастер создаст проект графического приложения Qt. По умолчанию приложение будет производным от QApplication и будет включать пустой виджет.</translation>
</message> </message>
<message> <message>
<source>Details</source> <source>Details</source>
@@ -24417,14 +24476,14 @@ Adds the library and include paths to the .pro file.</source>
<source>Error:</source> <source>Error:</source>
<translation>Ошибка:</translation> <translation>Ошибка:</translation>
</message> </message>
<message>
<source>This target cannot build this project since it does not define a Qt version.</source>
<translation>Невозможно собрать данную цель, так как в проекте не задан профиль Qt.</translation>
</message>
<message> <message>
<source>building in &lt;b&gt;%1&lt;/b&gt;</source> <source>building in &lt;b&gt;%1&lt;/b&gt;</source>
<translation>сборка в &lt;b&gt;%1&lt;/b&gt;</translation> <translation>сборка в &lt;b&gt;%1&lt;/b&gt;</translation>
</message> </message>
<message>
<source>This kit cannot build this project since it does not define a Qt version.</source>
<translation>Невозможно собрать проект данным инструментарием, так как он не определяет профиль Qt.</translation>
</message>
<message> <message>
<source>The Qt version %1 does not support shadow builds, building might fail.</source> <source>The Qt version %1 does not support shadow builds, building might fail.</source>
<translation>Профиль Qt %1 не поддерживает теневую сборку, поэтому она может завершиться с ошибкой.</translation> <translation>Профиль Qt %1 не поддерживает теневую сборку, поэтому она может завершиться с ошибкой.</translation>
@@ -24537,8 +24596,8 @@ Adds the library and include paths to the .pro file.</source>
<translation>Среда сборки</translation> <translation>Среда сборки</translation>
</message> </message>
<message> <message>
<source>Qt4 Run Configuration</source> <source>Qt Run Configuration</source>
<translation>Конфигурация выполнения Qt4</translation> <translation>Конфигурация выполнения Qt</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -24633,10 +24692,10 @@ Adds the library and include paths to the .pro file.</source>
<context> <context>
<name>Qt4ProjectManager::Internal::QtQuickAppWizard</name> <name>Qt4ProjectManager::Internal::QtQuickAppWizard</name>
<message> <message>
<source>Creates a Qt Quick application project that can contain both QML and C++ code and includes a QDeclarativeView. <source>Creates a Qt Quick 1 application project that can contain both QML and C++ code and includes a QDeclarativeView.
</source> </source>
<translation>Создание проекта приложения Qt Quick, который может содержать код как QML, так и на С++, а так же включает QDeclarativeView. <translation>Создание проекта приложения Qt Quick 1, который может содержать код как QML, так и на С++, а так же включает QDeclarativeView.
</translation> </translation>
</message> </message>
@@ -24657,20 +24716,24 @@ Requires &lt;b&gt;Qt 4.7.0&lt;/b&gt; or newer.</source>
<translation>Приложение Qt Quick 2 (встроенные элементы)</translation> <translation>Приложение Qt Quick 2 (встроенные элементы)</translation>
</message> </message>
<message> <message>
<source>Creates a Qt Quick application project that can contain both QML and C++ code and includes a QQuickView. <source>Creates a Qt Quick 2 application project that can contain both QML and C++ code and includes a QQuickView.
The built-in elements in the QtQuick 2 namespace allow you to write cross-platform applications with a custom look and feel. The built-in elements in the QtQuick 2 namespace allow you to write cross-platform applications with a custom look and feel.
Requires &lt;b&gt;Qt 5.0&lt;/b&gt; or newer.</source> Requires &lt;b&gt;Qt 5.0&lt;/b&gt; or newer.</source>
<translation>Создание проекта приложения Qt Quick, который может одновременно содержать код С++ и QML и включать QQuickView. <translation>Создание проекта приложения Qt Quick 2, который может одновременно содержать код С++ и QML, а также включать QQuickView.
Встроенные элементы пространства имён QtQuick 2 позволяют создавать кросс-платформенные приложения с особым внешним видом и эргономикой. Встроенные элементы пространства имён QtQuick 2 позволяют создавать кросс-платформенные приложения с особым внешним видом и эргономикой.
Требуется &lt;b&gt;Qt&lt;/b&gt; версии &lt;b&gt;5.0&lt;/b&gt; и выше.</translation> Требуется &lt;b&gt;Qt&lt;/b&gt; версии &lt;b&gt;5.0&lt;/b&gt; и выше.</translation>
</message> </message>
<message> <message>
<source>Qt Quick Application for MeeGo Harmattan</source> <source>Qt Quick 1 Application for MeeGo Harmattan</source>
<translation>Приложение Qt Quick для MeeGo Harmattan</translation> <translation>Приложение Qt Quick 1 для MeeGo Harmattan</translation>
</message>
<message>
<source>Qt Quick 1 Application (from Existing QML File)</source>
<translation>Приложение Qt Quick 1 (из существующего файла QML)</translation>
</message> </message>
<message> <message>
<source>The Qt Quick Components for MeeGo Harmattan are a set of ready-made components that are designed with specific native appearance for the MeeGo Harmattan platform. <source>The Qt Quick Components for MeeGo Harmattan are a set of ready-made components that are designed with specific native appearance for the MeeGo Harmattan platform.
@@ -24680,10 +24743,6 @@ Requires &lt;b&gt;Qt 4.7.4&lt;/b&gt; or newer, and the component set installed f
&lt;br/&gt; &lt;br/&gt;
Требуется &lt;b&gt;Qt&lt;/b&gt; версии не ниже &lt;b&gt;4.7.4&lt;/b&gt; и установленный набор элементов для выбранного профиля Qt.</translation> Требуется &lt;b&gt;Qt&lt;/b&gt; версии не ниже &lt;b&gt;4.7.4&lt;/b&gt; и установленный набор элементов для выбранного профиля Qt.</translation>
</message> </message>
<message>
<source>Qt Quick Application (from Existing QML File)</source>
<translation>Приложение Qt Quick (из файла .qml)</translation>
</message>
<message> <message>
<source>Creates a deployable Qt Quick application from existing QML files. All files and directories that reside in the same directory as the main .qml file are deployed. You can modify the contents of the directory any time before deploying. <source>Creates a deployable Qt Quick application from existing QML files. All files and directories that reside in the same directory as the main .qml file are deployed. You can modify the contents of the directory any time before deploying.
@@ -24750,8 +24809,8 @@ Requires &lt;b&gt;Qt 4.7.0&lt;/b&gt; or newer.</source>
<context> <context>
<name>Qt4ProjectManager::Internal::SubdirsProjectWizardDialog</name> <name>Qt4ProjectManager::Internal::SubdirsProjectWizardDialog</name>
<message> <message>
<source>This wizard generates a Qt4 subdirs project. Add subprojects to it later on by using the other wizards.</source> <source>This wizard generates a Qt subdirs project. Add subprojects to it later on by using the other wizards.</source>
<translation>Этот мастер создаёт проект Qt4 с подкаталогами. Добавьте подпроекты в него позже с использованием уже других мастеров.</translation> <translation>Этот мастер создаёт проект Qt с подкаталогами. Добавьте подпроекты в него позже с использованием уже других мастеров.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -24868,7 +24927,7 @@ Requires &lt;b&gt;Qt 4.7.0&lt;/b&gt; or newer.</source>
<name>Qt4ProjectManager::MakeStep</name> <name>Qt4ProjectManager::MakeStep</name>
<message> <message>
<source>Make</source> <source>Make</source>
<comment>Qt4 MakeStep display name.</comment> <comment>Qt MakeStep display name.</comment>
<translation>Сборка</translation> <translation>Сборка</translation>
</message> </message>
<message> <message>
@@ -24895,8 +24954,8 @@ Requires &lt;b&gt;Qt 4.7.0&lt;/b&gt; or newer.</source>
<translation>&lt;b&gt;Make:&lt;/b&gt; %1</translation> <translation>&lt;b&gt;Make:&lt;/b&gt; %1</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Make:&lt;/b&gt; No Qt4 build configuration.</source> <source>&lt;b&gt;Make:&lt;/b&gt; No Qt build configuration.</source>
<translation>&lt;b&gt;Make:&lt;/b&gt; Нет конфигурации сборки Qt4.</translation> <translation>&lt;b&gt;Make:&lt;/b&gt; Нет конфигурации сборки Qt.</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Make:&lt;/b&gt; %1 not found in the environment.</source> <source>&lt;b&gt;Make:&lt;/b&gt; %1 not found in the environment.</source>
@@ -25696,6 +25755,10 @@ cannot be found in the path.</source>
<source>This Qt version was already registered as &quot;%1&quot;.</source> <source>This Qt version was already registered as &quot;%1&quot;.</source>
<translation>Этот профиль Qt уже зарегистрирован как «%1».</translation> <translation>Этот профиль Qt уже зарегистрирован как «%1».</translation>
</message> </message>
<message>
<source>The Qt version selected must be for the same device type.</source>
<translation>Выбранный профиль Qt должен соответствовать типу устройства.</translation>
</message>
<message> <message>
<source>Helpers: None available</source> <source>Helpers: None available</source>
<translation>Помощники отсутствуют</translation> <translation>Помощники отсутствуют</translation>
@@ -25741,10 +25804,6 @@ cannot be found in the path.</source>
<source>Incompatible Qt Versions</source> <source>Incompatible Qt Versions</source>
<translation>Несовместимые профили Qt</translation> <translation>Несовместимые профили Qt</translation>
</message> </message>
<message>
<source>The Qt version selected must be for the same target.</source>
<translation>Выбранный профиль Qt должен быть для такой же цели.</translation>
</message>
</context> </context>
<context> <context>
<name>QtSupport::Internal::QtVersionInfo</name> <name>QtSupport::Internal::QtVersionInfo</name>
@@ -26275,6 +26334,10 @@ In addition, device connectivity will be tested.</source>
<source>Connecting to host...</source> <source>Connecting to host...</source>
<translation>Подключение к узлу...</translation> <translation>Подключение к узлу...</translation>
</message> </message>
<message>
<source>Checking kernel version...</source>
<translation>Проверка версии ядра...</translation>
</message>
<message> <message>
<source>SSH connection failure: %1 <source>SSH connection failure: %1
</source> </source>
@@ -26299,6 +26362,11 @@ In addition, device connectivity will be tested.</source>
</source> </source>
<translation>Ошибка резервирования портов: %1</translation> <translation>Ошибка резервирования портов: %1</translation>
</message> </message>
<message>
<source>All specified ports are available.
</source>
<translation>Все указанные порты доступны.</translation>
</message>
<message> <message>
<source>The following specified ports are currently in use: %1 <source>The following specified ports are currently in use: %1
</source> </source>
@@ -26420,6 +26488,10 @@ In addition, device connectivity will be tested.</source>
<source>Package upload failed: Could not open file.</source> <source>Package upload failed: Could not open file.</source>
<translation>Не удалось отправить пакет: Невозможно открыть файл.</translation> <translation>Не удалось отправить пакет: Невозможно открыть файл.</translation>
</message> </message>
<message>
<source>Starting upload...</source>
<translation>Запуск отправки...</translation>
</message>
<message> <message>
<source>Failed to upload package: %2</source> <source>Failed to upload package: %2</source>
<translation>Не удалось отправить пакет: %2</translation> <translation>Не удалось отправить пакет: %2</translation>
@@ -27833,6 +27905,17 @@ with a password, which you can enter below.</source>
<translation>Общие</translation> <translation>Общие</translation>
</message> </message>
</context> </context>
<context>
<name>TextEditor::BehaviorSettingsWidget</name>
<message>
<source>Display context-sensitive help or type information on mouseover.</source>
<translation>Отображать контекстную справку или информацию о типе при наведении курсора мыши.</translation>
</message>
<message>
<source>Display context-sensitive help or type information on Shift+Mouseover.</source>
<translation>Отображать контекстную справку или информацию о типе при наведении курсора мыши с зажатой клавишей Shift.</translation>
</message>
</context>
<context> <context>
<name>TextEditor::CodeStyleEditor</name> <name>TextEditor::CodeStyleEditor</name>
<message> <message>
@@ -30559,7 +30642,7 @@ Will not be applied to whitespace in comments and strings.</source>
</message> </message>
<message> <message>
<source>An encoding error was encountered.</source> <source>An encoding error was encountered.</source>
<translation>Возникла ошибка кодировки.</translation> <translation>Ошибка кодировки.</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -30810,6 +30893,10 @@ Will not be applied to whitespace in comments and strings.</source>
<source>Unpausing instrumentation...</source> <source>Unpausing instrumentation...</source>
<translation>Продолжение работы...</translation> <translation>Продолжение работы...</translation>
</message> </message>
<message>
<source>An error occurred while trying to run %1: %2</source>
<translation>Ошибка при попытке запустить %1: %2</translation>
</message>
<message> <message>
<source>Callgrind dumped profiling info</source> <source>Callgrind dumped profiling info</source>
<translation>Callgrind загрузил данные профилирования</translation> <translation>Callgrind загрузил данные профилирования</translation>
@@ -31221,7 +31308,7 @@ Will not be applied to whitespace in comments and strings.</source>
</message> </message>
<message> <message>
<source>Error occurred parsing valgrind output: %1</source> <source>Error occurred parsing valgrind output: %1</source>
<translation>Возникла ошибка при разборе вывода valgrind: %1</translation> <translation>Ошибка при разборе вывода valgrind: %1</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -32338,7 +32425,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
</message> </message>
<message> <message>
<source>cAvahiClient, an error occurred on the client side.</source> <source>cAvahiClient, an error occurred on the client side.</source>
<translation>cAvahiClient, возникла ошибка на стороне клиента.</translation> <translation>cAvahiClient, ошибка на стороне клиента.</translation>
</message> </message>
<message> <message>
<source>cAvahiClient, still connecting, no server available.</source> <source>cAvahiClient, still connecting, no server available.</source>
@@ -32450,7 +32537,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
</message> </message>
<message> <message>
<source>To become familiar with the parts of the Qt Creator user interface and to learn how to use them.</source> <source>To become familiar with the parts of the Qt Creator user interface and to learn how to use them.</source>
<translation>Узнайте больше о элементах пользовательского интерфейса Qt Creator и методах их использования.</translation> <translation>Узнайте больше об элементах пользовательского интерфейса Qt Creator и методах их использования.</translation>
</message> </message>
<message> <message>
<source>User Interface</source> <source>User Interface</source>

File diff suppressed because it is too large Load Diff

View File

@@ -210,9 +210,9 @@ static inline QStringList getPluginPaths()
#endif #endif
// 3) <localappdata>/plugins/<ideversion> // 3) <localappdata>/plugins/<ideversion>
// where <localappdata> is e.g. // where <localappdata> is e.g.
// <drive>:\Users\<username>\AppData\Local\QtProject\qtcreator on Windows Vista and later // "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
// $XDG_DATA_HOME or ~/.local/share/data/QtProject/qtcreator on Linux // "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
// ~/Library/Application Support/QtProject/Qt Creator on Mac // "~/Library/Application Support/QtProject/Qt Creator" on Mac
pluginPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation); pluginPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
pluginPath += QLatin1Char('/') pluginPath += QLatin1Char('/')
+ QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR) + QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR)

View File

@@ -404,6 +404,9 @@ void QStyleItem::initStyleOption()
m_styleoption = new QStyleOption(); m_styleoption = new QStyleOption();
m_styleoption->rect = QRect(m_paintMargins, m_paintMargins, width() - 2* m_paintMargins, height() - 2 * m_paintMargins); m_styleoption->rect = QRect(m_paintMargins, m_paintMargins, width() - 2* m_paintMargins, height() - 2 * m_paintMargins);
#if QT_VERSION >= 0x050000
m_styleoption->styleObject = this;
#endif
if (isEnabled()) if (isEnabled())
m_styleoption->state |= QStyle::State_Enabled; m_styleoption->state |= QStyle::State_Enabled;

View File

@@ -77,11 +77,11 @@ QString UnixUtils::substituteFileBrowserParameters(const QString &pre, const QSt
c = pre.at(++i); c = pre.at(++i);
QString s; QString s;
if (c == QLatin1Char('d')) if (c == QLatin1Char('d'))
s = QFileInfo(file).path(); s = QLatin1Char('"') + QFileInfo(file).path() + QLatin1Char('"');
else if (c == QLatin1Char('f')) else if (c == QLatin1Char('f'))
s = file; s = QLatin1Char('"') + file + QLatin1Char('"');
else if (c == QLatin1Char('n')) else if (c == QLatin1Char('n'))
s = QFileInfo(file).fileName(); s = QLatin1Char('"') + QFileInfo(file).fileName() + QLatin1Char('"');
else if (c == QLatin1Char('%')) else if (c == QLatin1Char('%'))
s = c; s = c;
else { else {

View File

@@ -10,12 +10,6 @@
<height>520</height> <height>520</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>

View File

@@ -63,10 +63,6 @@
#include <QSplitter> #include <QSplitter>
#include <QStackedLayout> #include <QStackedLayout>
#ifdef Q_OS_MAC
#include <qmacstyle_mac.h>
#endif
using namespace Core; using namespace Core;
using namespace Core::Internal; using namespace Core::Internal;

View File

@@ -51,9 +51,6 @@
#include <QHeaderView> #include <QHeaderView>
#include <QKeyEvent> #include <QKeyEvent>
#include <QTreeView> #include <QTreeView>
#ifdef Q_OS_MAC
#include <qmacstyle_mac.h>
#endif
using namespace Core; using namespace Core;
using namespace Core::Internal; using namespace Core::Internal;

View File

@@ -95,11 +95,11 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
"Could not find explorer.exe in path to launch Windows Explorer.")); "Could not find explorer.exe in path to launch Windows Explorer."));
return; return;
} }
QString param; QStringList param;
if (!QFileInfo(pathIn).isDir()) if (!QFileInfo(pathIn).isDir())
param = QLatin1String("/select,"); param += QLatin1String("/select,");
param += QDir::toNativeSeparators(pathIn); param += QDir::toNativeSeparators(pathIn);
QProcess::startDetached(explorer, QStringList(param)); QProcess::startDetached(explorer, param);
#elif defined(Q_OS_MAC) #elif defined(Q_OS_MAC)
Q_UNUSED(parent) Q_UNUSED(parent)
QStringList scriptArgs; QStringList scriptArgs;
@@ -193,12 +193,13 @@ void FileUtils::removeFile(const QString &filePath, bool deleteFromFS)
static inline bool fileSystemRenameFile(const QString &orgFilePath, static inline bool fileSystemRenameFile(const QString &orgFilePath,
const QString &newFilePath) const QString &newFilePath)
{ {
#if QT_VERSION < 0x050000 // ### fixme: QTBUG-3570 might be fixed in Qt 5? #if QT_VERSION < 0x050000
QFile f(orgFilePath); // Due to QTBUG-3570 QAbstractFileEngine *fileEngine = QAbstractFileEngine::create(orgFilePath); // Due to QTBUG-3570
QAbstractFileEngine *fileEngine = f.fileEngine();
if (!fileEngine->caseSensitive() && orgFilePath.compare(newFilePath, Qt::CaseInsensitive) == 0) if (!fileEngine->caseSensitive() && orgFilePath.compare(newFilePath, Qt::CaseInsensitive) == 0)
return fileEngine->rename(newFilePath); return fileEngine->rename(newFilePath);
#endif #endif
// QTBUG-3570 is also valid for Qt 5 but QAbstractFileEngine is now in a private header file and
// the symbol is not exported.
return QFile::rename(orgFilePath, newFilePath); return QFile::rename(orgFilePath, newFilePath);
} }

View File

@@ -209,6 +209,7 @@ void GdbServerStarter::attach(int port)
QTC_ASSERT(fillParameters(&sp, d->kit), return); QTC_ASSERT(fillParameters(&sp, d->kit), return);
sp.masterEngineType = GdbEngineType; sp.masterEngineType = GdbEngineType;
sp.connParams.port = port; sp.connParams.port = port;
sp.remoteChannel = sp.connParams.host + QLatin1Char(':') + QString::number(sp.connParams.port);
sp.displayName = tr("Remote: \"%1:%2\"").arg(sp.connParams.host).arg(port); sp.displayName = tr("Remote: \"%1:%2\"").arg(sp.connParams.host).arg(port);
sp.executable = localExecutable; sp.executable = localExecutable;
sp.startMode = AttachToRemoteServer; sp.startMode = AttachToRemoteServer;

View File

@@ -93,8 +93,7 @@ QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp, QString *errorMess
{ {
setObjectName(QLatin1String("QmlCppEngine")); setObjectName(QLatin1String("QmlCppEngine"));
d = new QmlCppEnginePrivate; d = new QmlCppEnginePrivate;
d->m_qmlEngine = new QmlEngine(sp); d->m_qmlEngine = new QmlEngine(sp, this);
d->m_qmlEngine->setMasterEngine(this);
d->m_cppEngine = DebuggerRunControlFactory::createEngine(sp.firstSlaveEngineType, sp, errorMessage); d->m_cppEngine = DebuggerRunControlFactory::createEngine(sp.firstSlaveEngineType, sp, errorMessage);
d->m_cppEngine->setMasterEngine(this); d->m_cppEngine->setMasterEngine(this);
if (!d->m_cppEngine) { if (!d->m_cppEngine) {

View File

@@ -274,7 +274,7 @@ QmlJS::ConsoleManagerInterface *qmlConsoleManager()
// //
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters) QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, DebuggerEngine *masterEngine)
: DebuggerEngine(startParameters) : DebuggerEngine(startParameters)
, m_adapter(this) , m_adapter(this)
, m_inspectorAdapter(&m_adapter, this) , m_inspectorAdapter(&m_adapter, this)
@@ -283,6 +283,9 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters)
{ {
setObjectName(QLatin1String("QmlEngine")); setObjectName(QLatin1String("QmlEngine"));
if (masterEngine)
setMasterEngine(masterEngine);
connect(&m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)), connect(&m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)),
SLOT(connectionError(QAbstractSocket::SocketError))); SLOT(connectionError(QAbstractSocket::SocketError)));
connect(&m_adapter, SIGNAL(serviceConnectionError(QString)), connect(&m_adapter, SIGNAL(serviceConnectionError(QString)),
@@ -292,9 +295,9 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters)
connect(&m_adapter, SIGNAL(connectionStartupFailed()), connect(&m_adapter, SIGNAL(connectionStartupFailed()),
SLOT(connectionStartupFailed())); SLOT(connectionStartupFailed()));
connect(this, SIGNAL(stateChanged(Debugger::DebuggerState)), connect(stackHandler(), SIGNAL(stackChanged()),
SLOT(updateCurrentContext())); SLOT(updateCurrentContext()));
connect(this->stackHandler(), SIGNAL(currentIndexChanged()), connect(stackHandler(), SIGNAL(currentIndexChanged()),
SLOT(updateCurrentContext())); SLOT(updateCurrentContext()));
connect(inspectorTreeView(), SIGNAL(currentIndexChanged(QModelIndex)), connect(inspectorTreeView(), SIGNAL(currentIndexChanged(QModelIndex)),
SLOT(updateCurrentContext())); SLOT(updateCurrentContext()));

View File

@@ -60,7 +60,8 @@ class QmlEngine : public DebuggerEngine, QmlJS::IScriptEvaluator
Q_OBJECT Q_OBJECT
public: public:
explicit QmlEngine(const DebuggerStartParameters &startParameters); explicit QmlEngine(const DebuggerStartParameters &startParameters,
DebuggerEngine *masterEngine = 0);
~QmlEngine(); ~QmlEngine();
void notifyEngineRemoteSetupDone(int gdbServerPort, int qmlPort); void notifyEngineRemoteSetupDone(int gdbServerPort, int qmlPort);

View File

@@ -71,8 +71,6 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
, m_debugIdToSelect(-1) , m_debugIdToSelect(-1)
, m_currentSelectedDebugId(-1) , m_currentSelectedDebugId(-1)
, m_listeningToEditorManager(false) , m_listeningToEditorManager(false)
, m_selectionCallbackExpected(false)
, m_cursorPositionChangedExternally(false)
, m_toolsClientConnected(false) , m_toolsClientConnected(false)
, m_inspectorToolsContext("Debugger.QmlInspector") , m_inspectorToolsContext("Debugger.QmlInspector")
, m_selectAction(new QAction(this)) , m_selectAction(new QAction(this))
@@ -81,8 +79,8 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
{ {
connect(m_agent, SIGNAL(objectFetched(QmlDebug::ObjectReference)), connect(m_agent, SIGNAL(objectFetched(QmlDebug::ObjectReference)),
SLOT(onObjectFetched(QmlDebug::ObjectReference))); SLOT(onObjectFetched(QmlDebug::ObjectReference)));
connect(m_agent, SIGNAL(jumpToObjectDefinition(QmlDebug::FileReference)), connect(m_agent, SIGNAL(jumpToObjectDefinition(QmlDebug::FileReference,int)),
SLOT(jumpToObjectDefinitionInEditor(QmlDebug::FileReference))); SLOT(jumpToObjectDefinitionInEditor(QmlDebug::FileReference,int)));
QmlDebugConnection *connection = m_debugAdapter->connection(); QmlDebugConnection *connection = m_debugAdapter->connection();
DeclarativeEngineDebugClient *engineClient1 DeclarativeEngineDebugClient *engineClient1
@@ -263,18 +261,6 @@ void QmlInspectorAdapter::engineClientStatusChanged(QmlDebug::ClientStatus statu
} }
} }
void QmlInspectorAdapter::selectObjectsFromEditor(const QList<int> &debugIds)
{
if (m_selectionCallbackExpected) {
m_selectionCallbackExpected = false;
return;
}
m_cursorPositionChangedExternally = true;
m_targetToSync = ToolTarget;
m_debugIdToSelect = debugIds.first();
selectObject(agent()->objectForId(m_debugIdToSelect), ToolTarget);
}
void QmlInspectorAdapter::selectObjectsFromToolsClient(const QList<int> &debugIds) void QmlInspectorAdapter::selectObjectsFromToolsClient(const QList<int> &debugIds)
{ {
if (debugIds.isEmpty()) if (debugIds.isEmpty())
@@ -328,9 +314,6 @@ void QmlInspectorAdapter::createPreviewForEditor(Core::IEditor *newEditor)
} else { } else {
QmlLiveTextPreview *preview QmlLiveTextPreview *preview
= new QmlLiveTextPreview(doc, initdoc, this, this); = new QmlLiveTextPreview(doc, initdoc, this, this);
connect(preview,
SIGNAL(selectedItemsChanged(QList<int>)),
SLOT(selectObjectsFromEditor(QList<int>)));
preview->setApplyChangesToQmlInspector( preview->setApplyChangesToQmlInspector(
debuggerCore()->action(QmlUpdateOnSave)->isChecked()); debuggerCore()->action(QmlUpdateOnSave)->isChecked());
@@ -476,30 +459,25 @@ void QmlInspectorAdapter::showConnectionStatusMessage(const QString &message)
} }
void QmlInspectorAdapter::jumpToObjectDefinitionInEditor( void QmlInspectorAdapter::jumpToObjectDefinitionInEditor(
const FileReference &objSource) const FileReference &objSource, int debugId)
{ {
if (m_cursorPositionChangedExternally) {
m_cursorPositionChangedExternally = false;
return;
}
const QString fileName = m_engine->toFileInProject(objSource.url()); const QString fileName = m_engine->toFileInProject(objSource.url());
Core::EditorManager *editorManager = Core::EditorManager::instance(); Core::EditorManager *editorManager = Core::EditorManager::instance();
Core::IEditor *currentEditor = editorManager->currentEditor();
Core::IEditor *editor = editorManager->openEditor(fileName); Core::IEditor *editor = editorManager->openEditor(fileName);
TextEditor::ITextEditor *textEditor TextEditor::ITextEditor *textEditor
= qobject_cast<TextEditor::ITextEditor*>(editor); = qobject_cast<TextEditor::ITextEditor*>(editor);
if (currentEditor != editor)
m_selectionCallbackExpected = true;
if (textEditor) { if (textEditor) {
m_selectionCallbackExpected = true;
editorManager->addCurrentPositionToNavigationHistory(); editorManager->addCurrentPositionToNavigationHistory();
textEditor->gotoLine(objSource.lineNumber()); textEditor->gotoLine(objSource.lineNumber());
textEditor->widget()->setFocus(); textEditor->widget()->setFocus();
} }
if (debugId != -1 && debugId != m_currentSelectedDebugId) {
m_currentSelectedDebugId = debugId;
m_currentSelectedDebugName = agent()->displayName(debugId);
}
} }
void QmlInspectorAdapter::selectObject(const ObjectReference &obj, void QmlInspectorAdapter::selectObject(const ObjectReference &obj,

View File

@@ -81,7 +81,6 @@ private slots:
void toolsClientStatusChanged(QmlDebug::ClientStatus status); void toolsClientStatusChanged(QmlDebug::ClientStatus status);
void engineClientStatusChanged(QmlDebug::ClientStatus status); void engineClientStatusChanged(QmlDebug::ClientStatus status);
void selectObjectsFromEditor(const QList<int> &debugIds);
void selectObjectsFromToolsClient(const QList<int> &debugIds); void selectObjectsFromToolsClient(const QList<int> &debugIds);
void onObjectFetched(const QmlDebug::ObjectReference &ref); void onObjectFetched(const QmlDebug::ObjectReference &ref);
@@ -96,7 +95,7 @@ private slots:
void onReload(); void onReload();
void onReloaded(); void onReloaded();
void onDestroyedObject(int); void onDestroyedObject(int);
void jumpToObjectDefinitionInEditor(const QmlDebug::FileReference &objSource); void jumpToObjectDefinitionInEditor(const QmlDebug::FileReference &objSource, int debugId = -1);
private: private:
void setActiveEngineClient(QmlDebug::BaseEngineDebugClient *client); void setActiveEngineClient(QmlDebug::BaseEngineDebugClient *client);
@@ -129,8 +128,6 @@ private:
QHash<QString, QmlLiveTextPreview *> m_textPreviews; QHash<QString, QmlLiveTextPreview *> m_textPreviews;
QmlJS::Snapshot m_loadedSnapshot; //the snapshot loaded by the viewer QmlJS::Snapshot m_loadedSnapshot; //the snapshot loaded by the viewer
QStringList m_pendingPreviewDocumentNames; QStringList m_pendingPreviewDocumentNames;
bool m_selectionCallbackExpected;
bool m_cursorPositionChangedExternally;
// toolbar // toolbar
bool m_toolsClientConnected; bool m_toolsClientConnected;

View File

@@ -128,7 +128,7 @@ void QmlInspectorAgent::watchDataSelected(const WatchData *data)
if (data->id) { if (data->id) {
QTC_ASSERT(m_debugIdLocations.keys().contains(data->id), return); QTC_ASSERT(m_debugIdLocations.keys().contains(data->id), return);
emit jumpToObjectDefinition(m_debugIdLocations.value(data->id)); emit jumpToObjectDefinition(m_debugIdLocations.value(data->id), data->id);
} }
} }

View File

@@ -102,7 +102,7 @@ signals:
void propertyChanged(int debugId, const QByteArray &propertyName, void propertyChanged(int debugId, const QByteArray &propertyName,
const QVariant &propertyValue); const QVariant &propertyValue);
void automaticUpdateFailed(); void automaticUpdateFailed();
void jumpToObjectDefinition(const QmlDebug::FileReference &objSource); void jumpToObjectDefinition(const QmlDebug::FileReference &objSource, int debugId);
private slots: private slots:
void updateStatus(); void updateStatus();

View File

@@ -42,10 +42,6 @@
#include <QMouseEvent> #include <QMouseEvent>
#include <QMenu> #include <QMenu>
#ifdef Q_OS_MAC
#include <qmacstyle_mac.h>
#endif
using namespace Help::Internal; using namespace Help::Internal;
// -- OpenPagesDelegate // -- OpenPagesDelegate

View File

@@ -45,11 +45,9 @@ FileSystemFilter::FileSystemFilter(EditorManager *editorManager, LocatorWidget *
setIncludedByDefault(false); setIncludedByDefault(false);
} }
QList<FilterEntry> FileSystemFilter::matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry_) QList<FilterEntry> FileSystemFilter::matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry)
{ {
QList<FilterEntry> value; QList<FilterEntry> value;
QString entry = entry_;
const QString lineNoSuffix = EditorManager::splitLineNumber(&entry);
QFileInfo entryInfo(entry); QFileInfo entryInfo(entry);
QString name = entryInfo.fileName(); QString name = entryInfo.fileName();
QString directory = entryInfo.path(); QString directory = entryInfo.path();
@@ -81,11 +79,15 @@ QList<FilterEntry> FileSystemFilter::matchesFor(QFutureInterface<Locator::Filter
break; break;
if (name.isEmpty() || dir.startsWith(name, Qt::CaseInsensitive)) { if (name.isEmpty() || dir.startsWith(name, Qt::CaseInsensitive)) {
const QString fullPath = dirInfo.filePath(dir); const QString fullPath = dirInfo.filePath(dir);
FilterEntry filterEntry(this, dir, QString(fullPath + lineNoSuffix)); FilterEntry filterEntry(this, dir, fullPath);
filterEntry.resolveFileIcon = true; filterEntry.resolveFileIcon = true;
value.append(filterEntry); value.append(filterEntry);
} }
} }
// file names can match with +linenumber or :linenumber
name = entry;
const QString lineNoSuffix = EditorManager::splitLineNumber(&name);
name = QFileInfo(name).fileName();
foreach (const QString &file, files) { foreach (const QString &file, files) {
if (future.isCanceled()) if (future.isCanceled())
break; break;
@@ -102,18 +104,15 @@ QList<FilterEntry> FileSystemFilter::matchesFor(QFutureInterface<Locator::Filter
void FileSystemFilter::accept(FilterEntry selection) const void FileSystemFilter::accept(FilterEntry selection) const
{ {
QString file = selection.internalData.toString(); QString file = selection.internalData.toString();
const QString lineNoSuffix = EditorManager::splitLineNumber(&file);
QFileInfo info(file); QFileInfo info(file);
if (info.isDir()) { if (info.isDir()) {
QString value = shortcutString(); QString value = shortcutString();
value += QLatin1Char(' '); value += QLatin1Char(' ');
value += QDir::toNativeSeparators(info.absoluteFilePath() + QLatin1Char('/')); value += QDir::toNativeSeparators(info.absoluteFilePath() + QLatin1Char('/'));
value += lineNoSuffix;
m_locatorWidget->show(value, value.length()); m_locatorWidget->show(value, value.length());
return; return;
} }
EditorManager::openEditor(selection.internalData.toString(), Id(), EditorManager::openEditor(file, Id(),
EditorManager::ModeSwitch | EditorManager::CanContainLineNumber); EditorManager::ModeSwitch | EditorManager::CanContainLineNumber);
} }

View File

@@ -207,7 +207,11 @@ static QString candidateName(const QString &name, const QString &postfix)
{ {
if (name.contains(postfix)) if (name.contains(postfix))
return QString(); return QString();
return name + QLatin1Char('-') + postfix; QString candidate = name;
if (!candidate.isEmpty())
candidate.append(QLatin1Char('-'));
candidate.append(postfix);
return candidate;
} }
void Kit::setDisplayName(const QString &name) void Kit::setDisplayName(const QString &name)
@@ -216,6 +220,7 @@ void Kit::setDisplayName(const QString &name)
QList<KitInformation *> kitInfo = km->kitInformation(); QList<KitInformation *> kitInfo = km->kitInformation();
QStringList nameList; QStringList nameList;
nameList << QString(); // Disallow empty kit names!
foreach (Kit *k, km->kits()) { foreach (Kit *k, km->kits()) {
if (k == this) if (k == this)
continue; continue;

View File

@@ -122,6 +122,8 @@ void KitManagerConfigWidget::apply()
if (mustSetDefault) if (mustSetDefault)
km->setDefaultKit(m_kit); km->setDefaultKit(m_kit);
m_isDefaultKit = mustSetDefault;
emit dirty(); emit dirty();
} }

View File

@@ -36,6 +36,7 @@
#include "kit.h" #include "kit.h"
#include <coreplugin/idocument.h> #include <coreplugin/idocument.h>
#include <coreplugin/variablemanager.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -91,8 +92,8 @@ bool ProcessStep::init()
if (!bc) if (!bc)
bc = target()->activeBuildConfiguration(); bc = target()->activeBuildConfiguration();
ProcessParameters *pp = processParameters(); ProcessParameters *pp = processParameters();
pp->setMacroExpander(bc->macroExpander()); pp->setMacroExpander(bc ? bc->macroExpander() : Core::VariableManager::instance()->macroExpander());
pp->setEnvironment(bc->environment()); pp->setEnvironment(bc ? bc->environment() : Utils::Environment::systemEnvironment());
pp->setWorkingDirectory(workingDirectory()); pp->setWorkingDirectory(workingDirectory());
pp->setCommand(m_command); pp->setCommand(m_command);
pp->setArguments(m_arguments); pp->setArguments(m_arguments);
@@ -248,10 +249,11 @@ ProcessStepConfigWidget::ProcessStepConfigWidget(ProcessStep *step)
BuildConfiguration *bc = m_step->buildConfiguration(); BuildConfiguration *bc = m_step->buildConfiguration();
if (!bc) if (!bc)
bc = m_step->target()->activeBuildConfiguration(); bc = m_step->target()->activeBuildConfiguration();
m_ui.command->setEnvironment(bc->environment()); Utils::Environment env = bc ? bc->environment() : Utils::Environment::systemEnvironment();
m_ui.command->setEnvironment(env);
m_ui.command->setPath(m_step->command()); m_ui.command->setPath(m_step->command());
m_ui.workingDirectory->setEnvironment(bc->environment()); m_ui.workingDirectory->setEnvironment(env);
m_ui.workingDirectory->setPath(m_step->workingDirectory()); m_ui.workingDirectory->setPath(m_step->workingDirectory());
m_ui.commandArgumentsLineEdit->setText(m_step->arguments()); m_ui.commandArgumentsLineEdit->setText(m_step->arguments());
@@ -276,8 +278,8 @@ void ProcessStepConfigWidget::updateDetails()
BuildConfiguration *bc = m_step->buildConfiguration(); BuildConfiguration *bc = m_step->buildConfiguration();
if (!bc) // iff the step is actually in the deploy list if (!bc) // iff the step is actually in the deploy list
bc = m_step->target()->activeBuildConfiguration(); bc = m_step->target()->activeBuildConfiguration();
param.setMacroExpander(bc->macroExpander()); param.setMacroExpander(bc ? bc->macroExpander() : Core::VariableManager::instance()->macroExpander());
param.setEnvironment(bc->environment()); param.setEnvironment(bc ? bc->environment() : Utils::Environment::systemEnvironment());
param.setWorkingDirectory(m_step->workingDirectory()); param.setWorkingDirectory(m_step->workingDirectory());
param.setCommand(m_step->command()); param.setCommand(m_step->command());

View File

@@ -42,6 +42,10 @@
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
#include <sessiondialog.h> #include <sessiondialog.h>
#ifdef Q_OS_WIN
#include <utils/winutils.h>
#endif
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
@@ -220,6 +224,16 @@ void ProjectWelcomePage::facilitateQml(QDeclarativeEngine *engine)
ctx->setContextProperty(QLatin1String("projectWelcomePage"), this); ctx->setContextProperty(QLatin1String("projectWelcomePage"), this);
} }
QUrl ProjectWelcomePage::pageLocation() const
{
QString resourcePath = Core::ICore::resourcePath();
#ifdef Q_OS_WIN
// normalize paths so QML doesn't freak out if it's wrongly capitalized on Windows
resourcePath = Utils::normalizePathName(resourcePath);
#endif
return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/develop.qml"));
}
ProjectWelcomePage::Id ProjectWelcomePage::id() const ProjectWelcomePage::Id ProjectWelcomePage::id() const
{ {
return Develop; return Develop;

View File

@@ -94,7 +94,7 @@ public:
ProjectWelcomePage(); ProjectWelcomePage();
void facilitateQml(QDeclarativeEngine *engine); void facilitateQml(QDeclarativeEngine *engine);
QUrl pageLocation() const { return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/develop.qml")); } QUrl pageLocation() const;
QWidget *page() { return 0; } QWidget *page() { return 0; }
QString title() const { return tr("Develop"); } QString title() const { return tr("Develop"); }
int priority() const { return 20; } int priority() const { return 20; }

View File

@@ -75,6 +75,10 @@
#include <QGraphicsOpacityEffect> #include <QGraphicsOpacityEffect>
#include <QToolBar> #include <QToolBar>
#ifdef Q_OS_WIN
#include <utils/winutils.h>
#endif
enum { enum {
debug = false debug = false
}; };
@@ -83,6 +87,16 @@ const int collapseButtonOffset = 114;
namespace QmlDesigner { namespace QmlDesigner {
static QString applicationDirPath()
{
#ifdef Q_OS_WIN
// normalize paths so QML doesn't freak out if it's wrongly capitalized on Windows
return Utils::normalizePathName(QCoreApplication::applicationDirPath());
#else
return QCoreApplication::applicationDirPath();
#endif
}
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
# define SHARE_PATH "/../Resources/qmldesigner" # define SHARE_PATH "/../Resources/qmldesigner"
#else #else
@@ -91,7 +105,7 @@ namespace QmlDesigner {
static inline QString sharedDirPath() static inline QString sharedDirPath()
{ {
QString appPath = QCoreApplication::applicationDirPath(); QString appPath = applicationDirPath();
return QFileInfo(appPath + SHARE_PATH).absoluteFilePath(); return QFileInfo(appPath + SHARE_PATH).absoluteFilePath();
} }

View File

@@ -56,8 +56,8 @@ QmlProjectApplicationWizardDialog::QmlProjectApplicationWizardDialog(QWidget *pa
setIntroDescription(tr("This wizard generates a Qt Quick UI project.")); setIntroDescription(tr("This wizard generates a Qt Quick UI project."));
} }
QmlProjectApplicationWizard::QmlProjectApplicationWizard() QmlProjectApplicationWizard::QmlProjectApplicationWizard(ProjectType projectType)
: Core::BaseFileWizard(parameters()) : Core::BaseFileWizard(parameters(projectType)), m_projectType(projectType)
{ } { }
QmlProjectApplicationWizard::~QmlProjectApplicationWizard() QmlProjectApplicationWizard::~QmlProjectApplicationWizard()
@@ -65,21 +65,45 @@ QmlProjectApplicationWizard::~QmlProjectApplicationWizard()
Core::FeatureSet QmlProjectApplicationWizard::requiredFeatures() const Core::FeatureSet QmlProjectApplicationWizard::requiredFeatures() const
{ {
return Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK) | Core::Feature(QtSupport::Constants::FEATURE_QMLPROJECT); switch (m_projectType) {
case QtQuick2Project:
return Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_2)
| Core::Feature(QtSupport::Constants::FEATURE_QMLPROJECT);
case QtQuick1Project:
default:
return Core::Feature(QtSupport::Constants::FEATURE_QMLPROJECT)
| Core::Feature(QtSupport::Constants::FEATURE_QT_QUICK_1_1);
}
} }
Core::BaseFileWizardParameters QmlProjectApplicationWizard::parameters() Core::BaseFileWizardParameters QmlProjectApplicationWizard::parameters(ProjectType projectType)
{ {
Core::BaseFileWizardParameters parameters(ProjectWizard); Core::BaseFileWizardParameters parameters(ProjectWizard);
parameters.setIcon(QIcon(QLatin1String(QtSupport::Constants::QML_WIZARD_ICON))); parameters.setIcon(QIcon(QLatin1String(QtSupport::Constants::QML_WIZARD_ICON)));
parameters.setDisplayName(tr("Qt Quick UI")); switch (projectType) {
parameters.setId(QLatin1String("QB.QML Application")); case QtQuick2Project:
parameters.setDisplayName(tr("Qt Quick 2 UI"));
parameters.setId(QLatin1String("QB.QML Application for Qt Quick 2.0"));
parameters.setDescription(tr("Creates a Qt Quick UI project with a single " parameters.setDescription(tr("Creates a Qt Quick UI 2 project with a single "
"QML file that contains the main view.\n\n" "QML file that contains the main view.\n\n"
"You can review Qt Quick UI projects in the QML Viewer and you need not build them. " "You can review Qt Quick UI 2 projects in the QML Scene and you need not build them. "
"You do not need to have the development environment installed " "You do not need to have the development environment installed "
"on your computer to create and run this type of projects.\n\nRequires <b>Qt 5.0</b> or newer.")); "on your computer to create and run this type of projects.\n\nRequires <b>Qt 5.0</b> or newer."));
break;
case QtQuick1Project:
default:
parameters.setDisplayName(tr("Qt Quick 1 UI"));
parameters.setId(QLatin1String("QB.QML Application for Qt Quick 1.1"));
parameters.setDescription(tr("Creates a Qt Quick UI 1 project with a single "
"QML file that contains the main view.\n\n"
"You can review Qt Quick UI 1 projects in the QML Viewer and you need not build them. "
"You do not need to have the development environment installed "
"on your computer to create and run this type of projects.\n\nRequires <b>Qt 4.8</b> or newer."));
}
parameters.setCategory(QLatin1String(ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY)); parameters.setCategory(QLatin1String(ProjectExplorer::Constants::QT_APPLICATION_WIZARD_CATEGORY));
parameters.setDisplayCategory(QT_TRANSLATE_NOOP("ProjectExplorer", "Qt Application")); parameters.setDisplayCategory(QT_TRANSLATE_NOOP("ProjectExplorer", "Qt Application"));
return parameters; return parameters;
@@ -118,8 +142,16 @@ Core::GeneratedFiles QmlProjectApplicationWizard::generateFiles(const QWizard *w
{ {
QTextStream out(&contents); QTextStream out(&contents);
switch (m_projectType) {
case QtQuick2Project:
out << "import QtQuick 2.0" << endl;
break;
case QtQuick1Project:
default:
out << "import QtQuick 1.1" << endl;
}
out out
<< "import QtQuick 2.0" << endl
<< endl << endl
<< "Rectangle {" << endl << "Rectangle {" << endl
<< " width: 360" << endl << " width: 360" << endl

View File

@@ -49,11 +49,16 @@ class QmlProjectApplicationWizard : public Core::BaseFileWizard
Q_OBJECT Q_OBJECT
public: public:
QmlProjectApplicationWizard(); enum ProjectType {
QtQuick2Project,
QtQuick1Project
};
QmlProjectApplicationWizard(ProjectType projectType);
virtual ~QmlProjectApplicationWizard(); virtual ~QmlProjectApplicationWizard();
virtual Core::FeatureSet requiredFeatures() const; virtual Core::FeatureSet requiredFeatures() const;
static Core::BaseFileWizardParameters parameters(); static Core::BaseFileWizardParameters parameters(ProjectType projectType);
protected: protected:
virtual QWizard *createWizardDialog(QWidget *parent, virtual QWizard *createWizardDialog(QWidget *parent,
@@ -63,6 +68,9 @@ protected:
QString *errorMessage) const; QString *errorMessage) const;
virtual bool postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, QString *errorMessage); virtual bool postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, QString *errorMessage);
private:
const ProjectType m_projectType;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -80,7 +80,11 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
addAutoReleasedObject(manager); addAutoReleasedObject(manager);
addAutoReleasedObject(new Internal::QmlProjectRunConfigurationFactory); addAutoReleasedObject(new Internal::QmlProjectRunConfigurationFactory);
addAutoReleasedObject(new Internal::QmlProjectRunControlFactory); addAutoReleasedObject(new Internal::QmlProjectRunControlFactory);
addAutoReleasedObject(new Internal::QmlProjectApplicationWizard);
addAutoReleasedObject(new Internal::QmlProjectApplicationWizard(
Internal::QmlProjectApplicationWizard::QtQuick1Project));
addAutoReleasedObject(new Internal::QmlProjectApplicationWizard(
Internal::QmlProjectApplicationWizard::QtQuick2Project));
QmlProjectFileFormat::registerDeclarativeTypes(); QmlProjectFileFormat::registerDeclarativeTypes();

View File

@@ -101,7 +101,23 @@ static inline QStringList trimStringList(const QStringList &stringlist)
return returnList; return returnList;
} }
QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, const QString &projectsOffset) static QString relativeOrInstallPath(const QString &path, const QString &manifestPath,
const QString &installPath)
{
const QChar slash = QLatin1Char('/');
const QString relativeResolvedPath = manifestPath + slash + path;
const QString installResolvedPath = installPath + slash + path;
if (QFile::exists(relativeResolvedPath))
return relativeResolvedPath;
else if (QFile::exists(installResolvedPath))
return installResolvedPath;
// doesn't exist, just return relative
return relativeResolvedPath;
}
QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader,
const QString &projectsOffset,
const QString &examplesInstallPath)
{ {
QList<ExampleItem> examples; QList<ExampleItem> examples;
ExampleItem item; ExampleItem item;
@@ -116,12 +132,12 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, co
item.name = attributes.value(QLatin1String("name")).toString(); item.name = attributes.value(QLatin1String("name")).toString();
item.projectPath = attributes.value(QLatin1String("projectPath")).toString(); item.projectPath = attributes.value(QLatin1String("projectPath")).toString();
item.hasSourceCode = !item.projectPath.isEmpty(); item.hasSourceCode = !item.projectPath.isEmpty();
item.projectPath.prepend(slash); item.projectPath = relativeOrInstallPath(item.projectPath, projectsOffset, examplesInstallPath);
item.projectPath.prepend(projectsOffset);
item.imageUrl = attributes.value(QLatin1String("imageUrl")).toString(); item.imageUrl = attributes.value(QLatin1String("imageUrl")).toString();
item.docUrl = attributes.value(QLatin1String("docUrl")).toString(); item.docUrl = attributes.value(QLatin1String("docUrl")).toString();
} else if (reader->name() == QLatin1String("fileToOpen")) { } else if (reader->name() == QLatin1String("fileToOpen")) {
item.filesToOpen.append(projectsOffset + slash + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement)); item.filesToOpen.append(relativeOrInstallPath(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement),
projectsOffset, examplesInstallPath));
} else if (reader->name() == QLatin1String("description")) { } else if (reader->name() == QLatin1String("description")) {
item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement)); item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("dependency")) { } else if (reader->name() == QLatin1String("dependency")) {
@@ -135,8 +151,10 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, co
break; break;
case QXmlStreamReader::EndElement: case QXmlStreamReader::EndElement:
if (reader->name() == QLatin1String("example")) { if (reader->name() == QLatin1String("example")) {
if (item.projectPath.isEmpty() || !QFileInfo(item.projectPath).exists()) bool projectExists = !item.projectPath.isEmpty() && QFileInfo(item.projectPath).exists();
if (!projectExists)
item.tags.append(QLatin1String("broken")); item.tags.append(QLatin1String("broken"));
if (projectExists || !qgetenv("QTC_DEBUG_EXAMPLESMODEL").isEmpty())
examples.append(item); examples.append(item);
} else if (reader->name() == QLatin1String("examples")) { } else if (reader->name() == QLatin1String("examples")) {
return examples; return examples;
@@ -149,7 +167,9 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, co
return examples; return examples;
} }
QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader *reader, const QString &projectsOffset) QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader *reader,
const QString &projectsOffset,
const QString &demosInstallPath)
{ {
QList<ExampleItem> demos; QList<ExampleItem> demos;
ExampleItem item; ExampleItem item;
@@ -164,12 +184,12 @@ QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader *reader, const
item.name = attributes.value(QLatin1String("name")).toString(); item.name = attributes.value(QLatin1String("name")).toString();
item.projectPath = attributes.value(QLatin1String("projectPath")).toString(); item.projectPath = attributes.value(QLatin1String("projectPath")).toString();
item.hasSourceCode = !item.projectPath.isEmpty(); item.hasSourceCode = !item.projectPath.isEmpty();
item.projectPath.prepend(slash); item.projectPath = relativeOrInstallPath(item.projectPath, projectsOffset, demosInstallPath);
item.projectPath.prepend(projectsOffset);
item.imageUrl = attributes.value(QLatin1String("imageUrl")).toString(); item.imageUrl = attributes.value(QLatin1String("imageUrl")).toString();
item.docUrl = attributes.value(QLatin1String("docUrl")).toString(); item.docUrl = attributes.value(QLatin1String("docUrl")).toString();
} else if (reader->name() == QLatin1String("fileToOpen")) { } else if (reader->name() == QLatin1String("fileToOpen")) {
item.filesToOpen.append(projectsOffset + slash + reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement)); item.filesToOpen.append(relativeOrInstallPath(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement),
projectsOffset, demosInstallPath));
} else if (reader->name() == QLatin1String("description")) { } else if (reader->name() == QLatin1String("description")) {
item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement)); item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
} else if (reader->name() == QLatin1String("dependency")) { } else if (reader->name() == QLatin1String("dependency")) {
@@ -179,10 +199,15 @@ QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader *reader, const
} }
break; break;
case QXmlStreamReader::EndElement: case QXmlStreamReader::EndElement:
if (reader->name() == QLatin1String("demo")) if (reader->name() == QLatin1String("demo")) {
bool projectExists = !item.projectPath.isEmpty() && QFileInfo(item.projectPath).exists();
if (!projectExists)
item.tags.append(QLatin1String("broken"));
if (projectExists || !qgetenv("QTC_DEBUG_EXAMPLESMODEL").isEmpty())
demos.append(item); demos.append(item);
else if (reader->name() == QLatin1String("demos")) } else if (reader->name() == QLatin1String("demos")) {
return demos; return demos;
}
break; break;
default: // nothing default: // nothing
break; break;
@@ -251,11 +276,14 @@ void ExamplesListModel::handleQtVersionsChanged()
void ExamplesListModel::updateExamples() void ExamplesListModel::updateExamples()
{ {
clear(); clear();
QString examplesInstallPath;
QString demosInstallPath;
QString examplesFallback; QString examplesFallback;
QString demosFallback; QString demosFallback;
QString sourceFallback; QString sourceFallback;
foreach (const QString &exampleSource, foreach (const QString &exampleSource,
exampleSources(&examplesFallback, &demosFallback, &sourceFallback)) { exampleSources(&examplesInstallPath, &demosInstallPath,
&examplesFallback, &demosFallback, &sourceFallback)) {
QFile exampleFile(exampleSource); QFile exampleFile(exampleSource);
if (!exampleFile.open(QIODevice::ReadOnly)) { if (!exampleFile.open(QIODevice::ReadOnly)) {
qDebug() << Q_FUNC_INFO << "Could not open file" << exampleSource; qDebug() << Q_FUNC_INFO << "Could not open file" << exampleSource;
@@ -284,9 +312,9 @@ void ExamplesListModel::updateExamples()
switch (reader.readNext()) { switch (reader.readNext()) {
case QXmlStreamReader::StartElement: case QXmlStreamReader::StartElement:
if (reader.name() == QLatin1String("examples")) if (reader.name() == QLatin1String("examples"))
addItems(parseExamples(&reader, examplesDir.path())); addItems(parseExamples(&reader, examplesDir.path(), examplesInstallPath));
else if (reader.name() == QLatin1String("demos")) else if (reader.name() == QLatin1String("demos"))
addItems(parseDemos(&reader, demosDir.path())); addItems(parseDemos(&reader, demosDir.path(), demosInstallPath));
else if (reader.name() == QLatin1String("tutorials")) else if (reader.name() == QLatin1String("tutorials"))
addItems(parseTutorials(&reader, examplesDir.path())); addItems(parseTutorials(&reader, examplesDir.path()));
break; break;
@@ -303,7 +331,8 @@ void ExamplesListModel::updateExamples()
emit tagsUpdated(); emit tagsUpdated();
} }
QStringList ExamplesListModel::exampleSources(QString *examplesFallback, QString *demosFallback, QStringList ExamplesListModel::exampleSources(QString *examplesInstallPath, QString *demosInstallPath,
QString *examplesFallback, QString *demosFallback,
QString *sourceFallback) QString *sourceFallback)
{ {
QTC_CHECK(examplesFallback); QTC_CHECK(examplesFallback);
@@ -372,6 +401,10 @@ QStringList ExamplesListModel::exampleSources(QString *examplesFallback, QString
if (!fis.isEmpty()) { if (!fis.isEmpty()) {
foreach (const QFileInfo &fi, fis) foreach (const QFileInfo &fi, fis)
sources.append(fi.filePath()); sources.append(fi.filePath());
if (examplesInstallPath)
*examplesInstallPath = version->examplesPath();
if (demosInstallPath)
*demosInstallPath = version->demosPath();
return sources; return sources;
} }
} }
@@ -422,6 +455,8 @@ void ExamplesListModel::clear()
void ExamplesListModel::addItems(const QList<ExampleItem> &newItems) void ExamplesListModel::addItems(const QList<ExampleItem> &newItems)
{ {
if (newItems.isEmpty())
return;
beginInsertRows(QModelIndex(), exampleItems.size(), exampleItems.size() - 1 + newItems.size()); beginInsertRows(QModelIndex(), exampleItems.size(), exampleItems.size() - 1 + newItems.size());
exampleItems.append(newItems); exampleItems.append(newItems);
endInsertRows(); endInsertRows();

View File

@@ -96,11 +96,14 @@ public slots:
private: private:
void addItems(const QList<ExampleItem> &items); void addItems(const QList<ExampleItem> &items);
QList<ExampleItem> parseExamples(QXmlStreamReader *reader, const QString &projectsOffset); QList<ExampleItem> parseExamples(QXmlStreamReader *reader, const QString &projectsOffset,
QList<ExampleItem> parseDemos(QXmlStreamReader *reader, const QString &projectsOffset); const QString &examplesInstallPath);
QList<ExampleItem> parseDemos(QXmlStreamReader *reader, const QString &projectsOffset,
const QString &demosInstallPath);
QList<ExampleItem> parseTutorials(QXmlStreamReader *reader, const QString &projectsOffset); QList<ExampleItem> parseTutorials(QXmlStreamReader *reader, const QString &projectsOffset);
void clear(); void clear();
QStringList exampleSources(QString *examplesFallback, QString *demosFallback, QStringList exampleSources(QString *examplesInstallPath, QString *demosInstallPath,
QString *examplesFallback, QString *demosFallback,
QString *sourceFallback); QString *sourceFallback);
QList<ExampleItem> exampleItems; QList<ExampleItem> exampleItems;
QStringList m_tags; QStringList m_tags;

View File

@@ -37,6 +37,10 @@
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#ifdef Q_OS_WIN
#include <utils/winutils.h>
#endif
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
#include <coreplugin/coreplugin.h> #include <coreplugin/coreplugin.h>
#include <coreplugin/documentmanager.h> #include <coreplugin/documentmanager.h>
@@ -206,7 +210,13 @@ GettingStartedWelcomePage::GettingStartedWelcomePage() : m_engine(0)
QUrl GettingStartedWelcomePage::pageLocation() const QUrl GettingStartedWelcomePage::pageLocation() const
{ {
return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/gettingstarted.qml")); QString resourcePath = Core::ICore::resourcePath();
#ifdef Q_OS_WIN
// normalize paths so QML doesn't freak out if it's wrongly capitalized on Windows
resourcePath = Utils::normalizePathName(resourcePath);
#endif
return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/gettingstarted.qml"));
} }
QString GettingStartedWelcomePage::title() const QString GettingStartedWelcomePage::title() const
@@ -265,10 +275,15 @@ QString ExamplesWelcomePage::title() const
QUrl ExamplesWelcomePage::pageLocation() const QUrl ExamplesWelcomePage::pageLocation() const
{ {
QString resourcePath = Core::ICore::resourcePath();
#ifdef Q_OS_WIN
// normalize paths so QML doesn't freak out if it's wrongly capitalized on Windows
resourcePath = Utils::normalizePathName(resourcePath);
#endif
if (m_showExamples) if (m_showExamples)
return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/examples.qml")); return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/examples.qml"));
else else
return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/tutorials.qml")); return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/tutorials.qml"));
} }
void ExamplesWelcomePage::facilitateQml(QDeclarativeEngine *engine) void ExamplesWelcomePage::facilitateQml(QDeclarativeEngine *engine)

View File

@@ -424,12 +424,14 @@ void QtVersionManager::updateDocumentation()
Q_ASSERT(helpManager); Q_ASSERT(helpManager);
QStringList files; QStringList files;
foreach (BaseQtVersion *v, m_versions) { foreach (BaseQtVersion *v, m_versions) {
const QString docPath = v->documentationPath() + QLatin1String("/qch/"); const QStringList docPaths = QStringList() << v->documentationPath() + QLatin1Char('/')
<< v->documentationPath() + QLatin1String("/qch/");
foreach (const QString &docPath, docPaths) {
const QDir versionHelpDir(docPath); const QDir versionHelpDir(docPath);
foreach (const QString &helpFile, foreach (const QString &helpFile,
versionHelpDir.entryList(QStringList() << QLatin1String("*.qch"), QDir::Files)) versionHelpDir.entryList(QStringList() << QLatin1String("*.qch"), QDir::Files))
files << docPath + helpFile; files << docPath + helpFile;
}
} }
helpManager->registerDocumentation(files); helpManager->registerDocumentation(files);
} }

View File

@@ -45,6 +45,10 @@
#include <utils/iwelcomepage.h> #include <utils/iwelcomepage.h>
#include <utils/networkaccessmanager.h> #include <utils/networkaccessmanager.h>
#ifdef Q_OS_WIN
#include <utils/winutils.h>
#endif
#include <QScrollArea> #include <QScrollArea>
#include <QDesktopServices> #include <QDesktopServices>
#include <QPainter> #include <QPainter>
@@ -195,6 +199,26 @@ void WelcomeMode::facilitateQml(QDeclarativeEngine * /*engine*/)
{ {
} }
static QString applicationDirPath()
{
#ifdef Q_OS_WIN
// normalize paths so QML doesn't freak out if it's wrongly capitalized on Windows
return Utils::normalizePathName(QCoreApplication::applicationDirPath());
#else
return QCoreApplication::applicationDirPath();
#endif
}
static QString resourcePath()
{
#ifdef Q_OS_WIN
// normalize paths so QML doesn't freak out if it's wrongly capitalized on Windows
return Utils::normalizePathName(Core::ICore::resourcePath());
#else
return Core::ICore::resourcePath();
#endif
}
void WelcomeMode::initPlugins() void WelcomeMode::initPlugins()
{ {
QSettings *settings = Core::ICore::settings(); QSettings *settings = Core::ICore::settings();
@@ -234,12 +258,12 @@ void WelcomeMode::initPlugins()
QDeclarativeEngine *engine = m_welcomePage->engine(); QDeclarativeEngine *engine = m_welcomePage->engine();
QStringList importPathList = engine->importPathList(); QStringList importPathList = engine->importPathList();
importPathList << Core::ICore::resourcePath() + QLatin1String("/welcomescreen"); importPathList << resourcePath() + QLatin1String("/welcomescreen");
engine->setImportPathList(importPathList); engine->setImportPathList(importPathList);
if (!debug) if (!debug)
engine->setOutputWarningsToStandardError(false); engine->setOutputWarningsToStandardError(false);
engine->setNetworkAccessManagerFactory(m_networkAccessManagerFactory); engine->setNetworkAccessManagerFactory(m_networkAccessManagerFactory);
QString pluginPath = QCoreApplication::applicationDirPath(); QString pluginPath = applicationDirPath();
if (HostOsInfo::isMacHost()) if (HostOsInfo::isMacHost())
pluginPath += QLatin1String("/../PlugIns"); pluginPath += QLatin1String("/../PlugIns");
else else
@@ -253,9 +277,11 @@ void WelcomeMode::initPlugins()
ctx->setContextProperty(QLatin1String("pagesModel"), QVariant::fromValue(m_pluginList)); ctx->setContextProperty(QLatin1String("pagesModel"), QVariant::fromValue(m_pluginList));
QString path = resourcePath() + QLatin1String("/welcomescreen/welcomescreen.qml");
// finally, load the root page // finally, load the root page
m_welcomePage->setSource( m_welcomePage->setSource(
QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/welcomescreen.qml"))); QUrl::fromLocalFile(path));
} }
QString WelcomeMode::platform() const QString WelcomeMode::platform() const

View File

@@ -23,6 +23,7 @@ isEmpty(USE_USER_DESTDIR) {
DESTDIRAPPNAME = "qtcreator" DESTDIRAPPNAME = "qtcreator"
DESTDIRBASE = "$$(XDG_DATA_HOME)" DESTDIRBASE = "$$(XDG_DATA_HOME)"
isEmpty(DESTDIRBASE):DESTDIRBASE = "$$(HOME)/.local/share/data" isEmpty(DESTDIRBASE):DESTDIRBASE = "$$(HOME)/.local/share/data"
else:DESTDIRBASE = "$$DESTDIRBASE/data"
} }
DESTDIR = "$$DESTDIRBASE/QtProject/$$DESTDIRAPPNAME/plugins/$$QTCREATOR_VERSION/$$PROVIDER" DESTDIR = "$$DESTDIRBASE/QtProject/$$DESTDIRAPPNAME/plugins/$$QTCREATOR_VERSION/$$PROVIDER"
} }

View File

@@ -202,7 +202,10 @@ def createNewQtQuickApplication(workingDir, projectName = None, templateFile = N
targets = QtQuickConstants.Targets.DESKTOP_474_GCC, qtQuickVersion=1, targets = QtQuickConstants.Targets.DESKTOP_474_GCC, qtQuickVersion=1,
fromWelcome=False): fromWelcome=False):
if templateFile: if templateFile:
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick Application (from Existing QML File)", fromWelcome) if qtQuickVersion == 2:
test.fatal('There is no wizard "Qt Quick 2 Application (from Existing QML File)"',
'This is a script error. Using Qt Quick 1 instead.')
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick 1 Application (from Existing QML File)", fromWelcome)
else: else:
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick %d Application (Built-in Elements)" available = __createProjectOrFileSelectType__(" Applications", "Qt Quick %d Application (Built-in Elements)"
% qtQuickVersion, fromWelcome) % qtQuickVersion, fromWelcome)

View File

@@ -34,8 +34,7 @@ if platform.system() == "Darwin":
if str(args[0]).startswith('qtcreator'): if str(args[0]).startswith('qtcreator'):
args[0] = args[0].replace('qtcreator', '"Qt Creator"', 1) args[0] = args[0].replace('qtcreator', '"Qt Creator"', 1)
__origStartApplication__(*args) __origStartApplication__(*args)
test.log("Using workaround for MacOS (losing focus & different AUT name)") test.log("Using workaround for MacOS (different AUT name)")
setWindowState(findObject(":Qt Creator_Core::Internal::MainWindow"), WindowState.Maximize)
def waitForCleanShutdown(timeOut=10): def waitForCleanShutdown(timeOut=10):
appCtxt = currentApplicationContext() appCtxt = currentApplicationContext()
@@ -64,11 +63,18 @@ def waitForCleanShutdown(timeOut=10):
shutdownDone=True shutdownDone=True
if not shutdownDone and datetime.utcnow() > endtime: if not shutdownDone and datetime.utcnow() > endtime:
break break
snooze(4)
def __removeTmpSettingsDir__(): def __removeTestingDir__():
def __removeIt__(directory):
deleteDirIfExists(directory)
return not os.path.exists(directory)
devicesXML = os.path.join(tmpSettingsDir, "QtProject", "qtcreator", "devices.xml")
lastMTime = os.path.getmtime(devicesXML)
testingDir = os.path.dirname(os.path.dirname(tmpSettingsDir))
waitForCleanShutdown() waitForCleanShutdown()
deleteDirIfExists(os.path.dirname(os.path.dirname(tmpSettingsDir))) waitFor('os.path.getmtime(devicesXML) > lastMTime', 5000)
waitFor('__removeIt__(testingDir)', 2000)
def substituteTildeWithinToolchains(settingsDir): def substituteTildeWithinToolchains(settingsDir):
toolchains = os.path.join(settingsDir, "QtProject", 'qtcreator', 'toolchains.xml') toolchains = os.path.join(settingsDir, "QtProject", 'qtcreator', 'toolchains.xml')
@@ -170,5 +176,5 @@ if os.getenv("SYSTEST_NOSETTINGSPATH") != "1":
if platform.system() in ('Linux', 'Darwin'): if platform.system() in ('Linux', 'Darwin'):
substituteTildeWithinToolchains(tmpSettingsDir) substituteTildeWithinToolchains(tmpSettingsDir)
substituteUnchosenTargetABIs(tmpSettingsDir) substituteUnchosenTargetABIs(tmpSettingsDir)
atexit.register(__removeTmpSettingsDir__) atexit.register(__removeTestingDir__)
SettingsPath = ' -settingspath "%s"' % tmpSettingsDir SettingsPath = ' -settingspath "%s"' % tmpSettingsDir

View File

@@ -221,8 +221,6 @@ def selectFromFileDialog(fileName):
snooze(2) snooze(2)
nativeType("<Return>") nativeType("<Return>")
snooze(1) snooze(1)
setWindowState(findObject(":Qt Creator_Core::Internal::MainWindow"), WindowState.Minimize)
setWindowState(findObject(":Qt Creator_Core::Internal::MainWindow"), WindowState.Maximize)
else: else:
fName = os.path.basename(os.path.abspath(fileName)) fName = os.path.basename(os.path.abspath(fileName))
pName = os.path.dirname(os.path.abspath(fileName)) + os.sep pName = os.path.dirname(os.path.abspath(fileName)) + os.sep

View File

@@ -1,11 +1,10 @@
source("../../shared/qtcreator.py") source("../../shared/qtcreator.py")
workingDir = None
templateDir = None templateDir = None
searchFinished = False searchFinished = False
def main(): def main():
global workingDir,templateDir global templateDir
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/keyinteraction/focus") sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/keyinteraction/focus")
qmlFile = os.path.join("qml", "focus.qml") qmlFile = os.path.join("qml", "focus.qml")
if not neededFilePresent(os.path.join(sourceExample, qmlFile)): if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
@@ -13,12 +12,11 @@ def main():
startApplication("qtcreator" + SettingsPath) startApplication("qtcreator" + SettingsPath)
# add docs to have the correct tool tips # add docs to have the correct tool tips
addHelpDocumentationFromSDK() addHelpDocumentationFromSDK()
# using a temporary directory won't mess up an eventually exisiting
workingDir = tempDir()
templateDir = prepareTemplate(sourceExample) templateDir = prepareTemplate(sourceExample)
prepareForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)") prepareForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
installLazySignalHandler("{type='Core::FutureProgress' unnamed='1'}", "finished()", "__handleFutureProgress__") installLazySignalHandler("{type='Core::FutureProgress' unnamed='1'}", "finished()", "__handleFutureProgress__")
createNewQtQuickApplication(workingDir, "untitled", os.path.join(templateDir, qmlFile)) # using a temporary directory won't mess up a potentially existing
createNewQtQuickApplication(tempDir(), "untitled", os.path.join(templateDir, qmlFile))
# wait for parsing to complete # wait for parsing to complete
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)") waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
testRenameId() testRenameId()
@@ -185,14 +183,6 @@ def maskSpecialCharsForProjectTree(filename):
filename = filename.replace("/?","\\?").replace("/*","\\*") filename = filename.replace("/?","\\?").replace("/*","\\*")
return filename return filename
def cleanup():
global workingDir, templateDir
waitForCleanShutdown()
if workingDir!=None:
deleteDirIfExists(workingDir)
if templateDir!=None:
deleteDirIfExists(os.path.dirname(templateDir))
def __handleFutureProgress__(obj): def __handleFutureProgress__(obj):
global searchFinished global searchFinished
if className(obj) == "Core::FutureProgress": if className(obj) == "Core::FutureProgress":

View File

@@ -1,11 +1,9 @@
source("../../shared/qtcreator.py") source("../../shared/qtcreator.py")
def main(): def main():
global workingDir
startApplication("qtcreator" + SettingsPath) startApplication("qtcreator" + SettingsPath)
# using a temporary directory won't mess up an eventually exisiting # using a temporary directory won't mess up a potentially exisiting
workingDir = tempDir() createNewQtQuickApplication(tempDir(), "untitled")
createNewQtQuickApplication(workingDir, "untitled")
# wait for parsing to complete # wait for parsing to complete
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)", 5000) waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)", 5000)
if not prepareQmlFile(): if not prepareQmlFile():
@@ -75,11 +73,3 @@ def testReIndent():
def shrinkText(txt, lines=10): def shrinkText(txt, lines=10):
return "".join(txt.splitlines(True)[0:lines]) return "".join(txt.splitlines(True)[0:lines])
def cleanup():
global workingDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if workingDir!=None:
deleteDirIfExists(workingDir)

View File

@@ -51,4 +51,3 @@ def main():
test.compare(editor.textCursor().selectionEnd(), pos) test.compare(editor.textCursor().selectionEnd(), pos)
test.compare(editor.textCursor().position(), pos) test.compare(editor.textCursor().position(), pos)
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
waitForCleanShutdown()

View File

@@ -40,7 +40,6 @@ def main():
# Add a new run configuration # Add a new run configuration
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
waitForCleanShutdown()
def init(): def init():
global SpeedCrunchPath global SpeedCrunchPath

View File

@@ -19,7 +19,6 @@ def main():
if not result: if not result:
test.fatal("Could not open/create cmake project - leaving test") test.fatal("Could not open/create cmake project - leaving test")
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
waitForCleanShutdown()
return return
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)") waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
@@ -32,7 +31,6 @@ def main():
checkLastBuild() checkLastBuild()
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
waitForCleanShutdown()
def init(): def init():
global SpeedCrunchPath global SpeedCrunchPath

View File

@@ -3,7 +3,7 @@ source("../../shared/qtcreator.py")
import re import re
def main(): def main():
global templateDir, textChanged global textChanged
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection") sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection")
qmlFile = os.path.join("qml", "textselection.qml") qmlFile = os.path.join("qml", "textselection.qml")
if not neededFilePresent(os.path.join(sourceExample, qmlFile)): if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
@@ -99,13 +99,6 @@ def main():
clickButton(waitForObject("{text='Cancel' type='QPushButton' unnamed='1' visible='1'}")) clickButton(waitForObject("{text='Cancel' type='QPushButton' unnamed='1' visible='1'}"))
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
def cleanup():
global templateDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if templateDir!=None:
deleteDirIfExists(os.path.dirname(templateDir))
def __handleTextChanged__(object): def __handleTextChanged__(object):
global textChanged global textChanged
textChanged = True textChanged = True

View File

@@ -24,7 +24,6 @@ def main():
test.compare(wordUnderCursor(waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")), "QList") test.compare(wordUnderCursor(waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")), "QList")
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
waitForCleanShutdown()
def init(): def init():
cleanup() cleanup()

View File

@@ -1,11 +1,8 @@
source("../../shared/qtcreator.py") source("../../shared/qtcreator.py")
workingDir = None
def main(): def main():
global workingDir
startApplication("qtcreator" + SettingsPath) startApplication("qtcreator" + SettingsPath)
# using a temporary directory won't mess up an eventually exisiting # using a temporary directory won't mess up a potentially existing
workingDir = tempDir() workingDir = tempDir()
projectName = createNewQtQuickApplication(workingDir, targets = QtQuickConstants.Targets.DESKTOP_474_GCC) projectName = createNewQtQuickApplication(workingDir, targets = QtQuickConstants.Targets.DESKTOP_474_GCC)
# wait for parsing to complete # wait for parsing to complete
@@ -40,11 +37,3 @@ def subprocessFunction():
"enabled='true' text='Hello World' type='Text' unnamed='1' visible='true'}") "enabled='true' text='Hello World' type='Text' unnamed='1' visible='true'}")
test.log("Clicking 'Hello World' Text to close QmlApplicationViewer") test.log("Clicking 'Hello World' Text to close QmlApplicationViewer")
mouseClick(helloWorldText, 5, 5, 0, Qt.LeftButton) mouseClick(helloWorldText, 5, 5, 0, Qt.LeftButton)
def cleanup():
global workingDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if workingDir != None:
deleteDirIfExists(workingDir)

View File

@@ -1,19 +1,14 @@
source("../../shared/qtcreator.py") source("../../shared/qtcreator.py")
workingDir = None
templateDir = None
def main(): def main():
global workingDir,templateDir
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection") sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection")
qmlFile = os.path.join("qml", "textselection.qml") qmlFile = os.path.join("qml", "textselection.qml")
if not neededFilePresent(os.path.join(sourceExample, qmlFile)): if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
return return
startApplication("qtcreator" + SettingsPath) startApplication("qtcreator" + SettingsPath)
# using a temporary directory won't mess up an eventually exisiting # using a temporary directory won't mess up a potentially existing
workingDir = tempDir() workingDir = tempDir()
templateDir = prepareTemplate(sourceExample) projectName = createNewQtQuickApplication(workingDir, None, os.path.join(prepareTemplate(sourceExample), qmlFile))
projectName = createNewQtQuickApplication(workingDir, None, os.path.join(templateDir, qmlFile))
# wait for parsing to complete # wait for parsing to complete
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)") waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
test.log("Building project") test.log("Building project")
@@ -50,12 +45,3 @@ def subprocessFunction():
typeLines(textEdit, "This text is entered by Squish...") typeLines(textEdit, "This text is entered by Squish...")
test.log("Closing QmlApplicationViewer") test.log("Closing QmlApplicationViewer")
sendEvent("QCloseEvent", "{type='QmlApplicationViewer' unnamed='1' visible='1'}") sendEvent("QCloseEvent", "{type='QmlApplicationViewer' unnamed='1' visible='1'}")
def cleanup():
global workingDir,templateDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if workingDir!=None:
deleteDirIfExists(workingDir)
if templateDir!=None:
deleteDirIfExists(os.path.dirname(templateDir))

View File

@@ -1,11 +1,9 @@
source("../../shared/qtcreator.py") source("../../shared/qtcreator.py")
workingDir = None
def main(): def main():
global workingDir global workingDir
startApplication("qtcreator" + SettingsPath) startApplication("qtcreator" + SettingsPath)
# using a temporary directory won't mess up an eventually exisiting # using a temporary directory won't mess up a potentially existing
workingDir = tempDir() workingDir = tempDir()
projectName = createNewQtQuickUI(workingDir) projectName = createNewQtQuickUI(workingDir)
test.log("Running project") test.log("Running project")
@@ -26,11 +24,3 @@ def main():
if result: if result:
logApplicationOutput() logApplicationOutput()
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
def cleanup():
global workingDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if workingDir!=None:
deleteDirIfExists(workingDir)

View File

@@ -1,13 +1,9 @@
source("../../shared/qtcreator.py") source("../../shared/qtcreator.py")
workingDir = None
def main(): def main():
global workingDir
startApplication("qtcreator" + SettingsPath) startApplication("qtcreator" + SettingsPath)
# using a temporary directory won't mess up an eventually exisiting # using a temporary directory won't mess up a potentially existing
workingDir = tempDir() createNewQmlExtension(tempDir())
createNewQmlExtension(workingDir)
# wait for parsing to complete # wait for parsing to complete
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)") waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
test.log("Building project") test.log("Building project")
@@ -16,11 +12,3 @@ def main():
checkCompile() checkCompile()
checkLastBuild() checkLastBuild()
invokeMenuItem("File", "Exit") invokeMenuItem("File", "Exit")
def cleanup():
global workingDir
# waiting for a clean exit - for a full-remove of the temp directory
waitForCleanShutdown()
if workingDir!=None:
deleteDirIfExists(workingDir)