forked from qt-creator/qt-creator
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:
@@ -45,15 +45,16 @@ Component.prototype.beginInstallation = 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) {
|
||||
component.addOperation( "RegisterFileType",
|
||||
headerExtensions[i],
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"C++ Header file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,3");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,3",
|
||||
"ProgId=QtProject.QtCreator." + headerExtensions[i]);
|
||||
}
|
||||
|
||||
var cppExtensions = new Array("cc", "cxx", "c++", "cp", "cpp");
|
||||
@@ -63,46 +64,53 @@ registerWindowsFileTypeExtensions = function()
|
||||
cppExtensions[i],
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"C++ Source file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,2");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,2",
|
||||
"ProgId=QtProject.QtCreator." + cppExtensions[i]);
|
||||
}
|
||||
|
||||
component.addOperation( "RegisterFileType",
|
||||
"c",
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"C Source file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,1");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,1",
|
||||
"ProgId=QtProject.QtCreator.c");
|
||||
component.addOperation( "RegisterFileType",
|
||||
"ui",
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"Qt UI file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,4");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,4",
|
||||
"ProgId=QtProject.QtCreator.ui");
|
||||
component.addOperation( "RegisterFileType",
|
||||
"pro",
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"Qt Project file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,5");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,5",
|
||||
"ProgId=QtProject.QtCreator.pro");
|
||||
component.addOperation( "RegisterFileType",
|
||||
"pri",
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"Qt Project Include file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,6");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,6",
|
||||
"ProgId=QtProject.QtCreator.pri");
|
||||
component.addOperation( "RegisterFileType",
|
||||
"qs",
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"Qt Script file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,0");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,0",
|
||||
"ProgId=QtProject.QtCreator.qs");
|
||||
component.addOperation( "RegisterFileType",
|
||||
"qml",
|
||||
"@TargetDir@\\bin\\qtcreator.exe -client '%1'",
|
||||
"Qt Quick Markup language file",
|
||||
"",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,0");
|
||||
"text/plain",
|
||||
"@TargetDir@\\bin\\qtcreator.exe,0",
|
||||
"ProgId=QtProject.QtCreator.qml");
|
||||
}
|
||||
|
||||
Component.prototype.createOperations = function()
|
||||
|
||||
@@ -32,7 +32,7 @@ isEmpty(IDE_BUILD_TREE):IDE_BUILD_TREE=/Users/example/qtcreator-build
|
||||
## <localappdata>/plugins/<ideversion>
|
||||
## where <localappdata> is e.g.
|
||||
## "%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
|
||||
# USE_USER_DESTDIR = yes
|
||||
#! [4]
|
||||
|
||||
@@ -30,8 +30,8 @@ macx {
|
||||
APPBUNDLE = "$$OUT_PWD/bin/Qt Creator.app"
|
||||
BINDIST_SOURCE = "$$OUT_PWD/bin/Qt Creator.app"
|
||||
BINDIST_INSTALLER_SOURCE = $$BINDIST_SOURCE
|
||||
deployqt.commands = $$PWD/scripts/deployqtHelper_mac.sh \"$${APPBUNDLE}\"
|
||||
codesign.commands = codesign -s \"$(SIGNING_IDENTITY)\" \"$${APPBUNDLE}\"
|
||||
deployqt.commands = $$PWD/scripts/deployqtHelper_mac.sh \"$${APPBUNDLE}\" \"$$[QT_INSTALL_TRANSLATIONS]\"
|
||||
codesign.commands = codesign -s \"$(SIGNING_IDENTITY)\" $(SIGNING_FLAGS) \"$${APPBUNDLE}\"
|
||||
dmg.commands = $$PWD/scripts/makedmg.sh $$OUT_PWD/bin qt-creator-$${PATTERN}.dmg
|
||||
dmg.depends = deployqt
|
||||
QMAKE_EXTRA_TARGETS += codesign dmg
|
||||
|
||||
@@ -186,6 +186,13 @@ def copy_qt_libs(install_dir, qt_libs_dir, qt_plugin_dir, qt_import_dir, plugins
|
||||
shutil.rmtree(target)
|
||||
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):
|
||||
langs = []
|
||||
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_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']
|
||||
tr_catalogs = ['assistant', 'designer', 'qt', 'qt_help']
|
||||
|
||||
@@ -268,6 +275,7 @@ def main():
|
||||
|
||||
if not sys.platform.startswith('win'):
|
||||
fix_rpaths(chrpath_bin, install_dir)
|
||||
add_qt_conf(install_dir)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if sys.platform == 'darwin':
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
#!/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" \
|
||||
"-executable=$1/Contents/MacOS/qmlpuppet.app/Contents/MacOS/qmlpuppet" \
|
||||
"-executable=$1/Contents/Resources/qtpromaker" \
|
||||
"-executable=$1/Contents/Resources/sdktool" || exit 1
|
||||
|
||||
qmlpuppetResources="$1/Contents/MacOS/qmlpuppet.app/Contents/Resources"
|
||||
test -d "$qmlpuppetResources" || mkdir -p "$qmlpuppetResources"
|
||||
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/"
|
||||
|
||||
@@ -25,7 +25,7 @@ isEmpty(IDE_BUILD_TREE):IDE_BUILD_TREE=%QtCreatorBuild%
|
||||
## <localappdata>/plugins/<ideversion>
|
||||
## where <localappdata> is e.g.
|
||||
## "%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
|
||||
%DestDir%USE_USER_DESTDIR = yes
|
||||
|
||||
|
||||
@@ -2301,7 +2301,7 @@ Local pulls are not applied to the master branch.</source>
|
||||
<name>CMakeProjectManager::Internal::CMakeManager</name>
|
||||
<message>
|
||||
<source>Run CMake</source>
|
||||
<translation>Запуск CMake</translation>
|
||||
<translation>Запустить CMake</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2314,8 +2314,8 @@ Local pulls are not applied to the master branch.</source>
|
||||
<context>
|
||||
<name>CMakeProjectManager::Internal::CMakeRunConfiguration</name>
|
||||
<message>
|
||||
<source>Run CMake target</source>
|
||||
<translation>Запустить цель CMake</translation>
|
||||
<source>Run CMake kit</source>
|
||||
<translation>Запуск инструментария CMake</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clean Environment</source>
|
||||
@@ -2385,7 +2385,7 @@ Local pulls are not applied to the master branch.</source>
|
||||
<name>CMakeProjectManager::Internal::CMakeRunPage</name>
|
||||
<message>
|
||||
<source>Run CMake</source>
|
||||
<translation>Запуск CMake</translation>
|
||||
<translation>Запустить CMake</translation>
|
||||
</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>
|
||||
@@ -2453,6 +2453,10 @@ Local pulls are not applied to the master branch.</source>
|
||||
</context>
|
||||
<context>
|
||||
<name>CMakeProjectManager::Internal::ChooseCMakePage</name>
|
||||
<message>
|
||||
<source>cmake Executable:</source>
|
||||
<translation>Исполняемый файл cmake:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose Cmake Executable</source>
|
||||
<translation>Выбор исполняемого файла Cmake</translation>
|
||||
@@ -2512,18 +2516,18 @@ Local pulls are not applied to the master branch.</source>
|
||||
<translation>Дополнительные параметры:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Targets:</source>
|
||||
<translation>Цели:</translation>
|
||||
<source>Kits:</source>
|
||||
<translation>Инструментарии:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>No build configuration found on this kit.</b></source>
|
||||
<translation><b>Для этого инструментария отсутствует конфигурация сборки.</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Make</source>
|
||||
<comment>CMakeProjectManager::MakeStepConfigWidget display name.</comment>
|
||||
<translation>Сборка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>No build configuration found on this target.</b></source>
|
||||
<translation><b>Для этой цели отсутствует конфигурация сборки.</b></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CMakeProjectManager::Internal::MakeStepFactory</name>
|
||||
@@ -2552,6 +2556,13 @@ Local pulls are not applied to the master branch.</source>
|
||||
<translation>Каталог сборки</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CPlusPlus::CheckSymbols</name>
|
||||
<message>
|
||||
<source>Expected a namespace-name</source>
|
||||
<translation>Требуется название пространства имён</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CPlusPlus::OverviewModel</name>
|
||||
<message>
|
||||
@@ -2564,10 +2575,22 @@ Local pulls are not applied to the master branch.</source>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CheckUndefinedSymbols</name>
|
||||
<name>CPlusplus::CheckSymbols</name>
|
||||
<message>
|
||||
<source>Expected a namespace-name</source>
|
||||
<translation>Ожидается название пространства имён</translation>
|
||||
<source>Only virtual methods can be marked `override'</source>
|
||||
<translation>Только виртуальные методы можно отмечать «override»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only virtual methods can be marked `final'</source>
|
||||
<translation>Только виртуальные методы можно отмечать «final»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Too few arguments</source>
|
||||
<translation>Слишком мало параметров</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Too many arguments</source>
|
||||
<translation>Слишком много параметров</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2849,7 +2872,7 @@ Local pulls are not applied to the master branch.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>The comment check failed. Do you want to check in the files?</source>
|
||||
<translation>Возникла ошибка при проверке комментария. Зафиксировать файлы?</translation>
|
||||
<translation>Ошибка при проверке комментария. Зафиксировать файлы?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you want to undo the check out of '%1'?</source>
|
||||
@@ -8519,15 +8542,15 @@ Qt Creator не может подключиться к нему.</translation>
|
||||
</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>
|
||||
<translation>Возникла ошибка при отправке данных процессу gdb. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
|
||||
<translation>Ошибка при отправке данных процессу gdb. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<source>An unknown error in the gdb process occurred. </source>
|
||||
<translation>Неизвестная ошибка возникла у процесса gdb. </translation>
|
||||
<translation>У процесса gdb возникла неизвестная ошибка. </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Library %1 unloaded</source>
|
||||
@@ -9111,11 +9134,11 @@ receives a signal like SIGSEGV during debugging.</source>
|
||||
</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>
|
||||
<translation>Возникла ошибка при отправке данных процессу выгрузки. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
|
||||
<translation>Ошибка при отправке данных процессу выгрузки. Например, процесс может уже не работать или он мог закрыть свой входной канал.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<source>An unknown error in the Pdb process occurred. </source>
|
||||
<translation>Неизвестная ошибка возникла у процесса Pdb. </translation>
|
||||
<translation>У процесса Pdb возникла неизвестная ошибка. </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -15372,7 +15395,7 @@ Do you want to kill it?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error occurred while replaying the macro, execution stopped.</source>
|
||||
<translation>Возникла ошибка при воспроизведении сценария, оно остановлено.</translation>
|
||||
<translation>Ошибка при воспроизведении сценария, оно остановлено.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Macro mode. Type "%1" to stop recording and "%2" to play it</source>
|
||||
@@ -15431,8 +15454,8 @@ Do you want to kill it?</source>
|
||||
<translation>Не удалось создать пакет: не задан профил Qt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No Qt4 build configuration</source>
|
||||
<translation>Нет конфигурации сборки Qt4</translation>
|
||||
<source>No Qt build configuration</source>
|
||||
<translation>Нет конфигурации сборки Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Creating package file...</source>
|
||||
@@ -16026,6 +16049,14 @@ We will try to work around that, but you may experience problems.</source>
|
||||
</context>
|
||||
<context>
|
||||
<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>
|
||||
<source>Copy files to sysroot</source>
|
||||
<translation>Скопировать файлы в sysroot</translation>
|
||||
@@ -16449,6 +16480,10 @@ We will try to work around that, but you may experience problems.</source>
|
||||
</context>
|
||||
<context>
|
||||
<name>Madde::Internal::MaemoQemuManager</name>
|
||||
<message>
|
||||
<source>MeeGo Emulator</source>
|
||||
<translation>Эмулятор MeeGo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start MeeGo Emulator</source>
|
||||
<translation>Запустить эмулятор MeeGo</translation>
|
||||
@@ -18339,8 +18374,8 @@ Preselects Qt for Simulator and mobile targets if available.</source>
|
||||
<translation>Сборка/установка была отменена.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error while building/deploying project %1 (target: %2)</source>
|
||||
<translation>Возникла ошибка при сборке/установке проекта %1 (цель: %2)</translation>
|
||||
<source>Error while building/deploying project %1 (kit: %2)</source>
|
||||
<translation>Ошибка при сборке/установке проекта %1 (инструментарий: %2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When executing step '%1'</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>
|
||||
<translation>Создание подключаемого модуля на C++, являющегося расширением, которое может быть динамически загружено в приложения через класс QDeclarativeEngine.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom QML Extension Plugin</source>
|
||||
<translation>Особый модуль расширяющий QML</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom QML Extension Plugin Parameters</source>
|
||||
<translation>Параметры особого модуля расширяющего QML</translation>
|
||||
@@ -18535,6 +18566,18 @@ Preselects Qt for Simulator and mobile targets if available.</source>
|
||||
<source>Libraries</source>
|
||||
<translation>Библиотеки</translation>
|
||||
</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>
|
||||
<source>Qt Creator Plugin</source>
|
||||
<translation>Модуль Qt Creator</translation>
|
||||
@@ -19472,8 +19515,8 @@ Remote error output was: %1</source>
|
||||
<translation><b>Проект:</b> %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Target:</b> %1</source>
|
||||
<translation><b>Цель:</b> %1</translation>
|
||||
<source><b>Kit:</b> %1</source>
|
||||
<translation><b>Инструментарий:</b> %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Build:</b> %1</source>
|
||||
@@ -20286,11 +20329,11 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>New Project...</source>
|
||||
<translation>Новый проект...</translation>
|
||||
<translation>Создать проект...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+N</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+Shift+N</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Load Project...</source>
|
||||
@@ -20298,7 +20341,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+O</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+Shift+O</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open File</source>
|
||||
@@ -20326,7 +20369,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+B</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+Shift+B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild All</source>
|
||||
@@ -20350,7 +20393,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+B</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild Project</source>
|
||||
@@ -20406,7 +20449,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+R</source>
|
||||
<translation></translation>
|
||||
<translation>Ctrl+R</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Build</source>
|
||||
@@ -20422,7 +20465,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove File...</source>
|
||||
<translation>Убрать файл...</translation>
|
||||
<translation>Удалить файл...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove Project...</source>
|
||||
@@ -20499,6 +20542,14 @@ to project '%2'.</source>
|
||||
<source>Do Not Close</source>
|
||||
<translation>Не закрывать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The project '%1' has no active kit.</source>
|
||||
<translation>У проекта «%1» нет активного инструментария.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The kit '%1' for the project '%2' has no active run configuration.</source>
|
||||
<translation>Для инструментария «%1» проекта «%2» нет активной конфигурации запуска.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A build is still in progress.</source>
|
||||
<translation>Сборка ещё выполняется.</translation>
|
||||
@@ -20530,11 +20581,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>New Subproject...</source>
|
||||
<translation>Новый подпроект...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quick Switch Target Selector</source>
|
||||
<translation>Выбор быстрого переключения целей</translation>
|
||||
<translation>Создать подпроект...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+T</source>
|
||||
@@ -20565,7 +20612,7 @@ Do you want to ignore them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clean</source>
|
||||
<translation>Очистка</translation>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close All Projects and Editors</source>
|
||||
@@ -20573,7 +20620,7 @@ Do you want to ignore them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build</source>
|
||||
<translation>Сборка</translation>
|
||||
<translation>Собрать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rebuild</source>
|
||||
@@ -20581,7 +20628,7 @@ Do you want to ignore them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deploy</source>
|
||||
<translation>Установка</translation>
|
||||
<translation>Установить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set "%1" as Active Project</source>
|
||||
@@ -20591,6 +20638,10 @@ Do you want to ignore them?</source>
|
||||
<source>Open Build and Run Kit Selector...</source>
|
||||
<translation>Открыть выбор инструментария для сборки и запуска...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quick Switch Kit Selector</source>
|
||||
<translation>Выбор быстрого переключения инструментариев</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Full build path of the current project's active build configuration.</source>
|
||||
<translation>Полный путь к каталогу сборки активной конфигурации текущего проекта.</translation>
|
||||
@@ -20648,14 +20699,6 @@ Do you want to ignore them?</source>
|
||||
<source>No active project.</source>
|
||||
<translation>Нет активного проекта.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The project '%1' has no active target.</source>
|
||||
<translation>У проекта «%1» нет активной цели.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The target '%1' for the project '%2' has no active run configuration.</source>
|
||||
<translation>У цели «%1» проекта «%2» нет активной конфигурации запуска.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot run '%1'.</source>
|
||||
<translation>Не удалось запустить «%1».</translation>
|
||||
@@ -20671,7 +20714,7 @@ Do you want to ignore them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add Existing Files</source>
|
||||
<translation>Добавить существующие файлы</translation>
|
||||
<translation>Добавление существующих файлов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not add following files to project %1:
|
||||
@@ -20689,19 +20732,19 @@ Do you want to ignore them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not remove file %1 from project %2.</source>
|
||||
<translation>Не удалось убрать файл %1 из проекта %2.</translation>
|
||||
<translation>Не удалось удалить файл «%1» из проекта «%2».</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not delete file %1.</source>
|
||||
<translation>Не удалось удалить файл %1.</translation>
|
||||
<translation>Не удалось удалить файл «%1».</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete File</source>
|
||||
<translation>Удалить файл</translation>
|
||||
<translation>Удаление файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete %1 from file system?</source>
|
||||
<translation>Удалить %1 с диска?</translation>
|
||||
<translation>Удалить «%1» с диска?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -20858,16 +20901,12 @@ Do you still want to load the settings file?</source>
|
||||
<translation>Неподдерживаемый файл общих настроек</translation>
|
||||
</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>Версия вашего файла .shared ещё не поддерживается этой версией Qt Creator. Загружены будут только совместимые настройки.
|
||||
|
||||
Продолжить?
|
||||
|
||||
В случае отрицательного ответа Qt Creator не будет пытаться грузить файл .shared.</translation>
|
||||
Попробовать загрузить файл?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -22105,12 +22144,20 @@ For qmlproject projects, use the importPaths property to add import paths.</sour
|
||||
<context>
|
||||
<name>QmlJSEditor::Internal::QmlJSEditorPlugin</name>
|
||||
<message>
|
||||
<source>Creates a QML file.</source>
|
||||
<translation>Создание файла QML.</translation>
|
||||
<source>Creates a QML file with boilerplate code, starting with "import QtQuick 1.1".</source>
|
||||
<translation>Создание файл QML с шаблонным кодом, начинающимся с «import QtQuick 1.1».</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>QML File</source>
|
||||
<translation>Файл QML</translation>
|
||||
<source>QML File (Qt Quick 1)</source>
|
||||
<translation>Файл QML (Qt Quick 1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Creates a QML file with boilerplate code, starting with "import QtQuick 2.0".</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>
|
||||
<source>Creates a JavaScript file.</source>
|
||||
@@ -22181,6 +22228,10 @@ For qmlproject projects, use the importPaths property to add import paths.</sour
|
||||
</context>
|
||||
<context>
|
||||
<name>QmlJSEditor::Internal::QmlJSPreviewRunner</name>
|
||||
<message>
|
||||
<source>No file specified.</source>
|
||||
<translation>Файл не указан.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to preview Qt Quick file</source>
|
||||
<translation>Не удалось выполнить предпросмотр файла Qt Quick</translation>
|
||||
@@ -22306,7 +22357,7 @@ Qt Creator know about a likely URI.</source>
|
||||
|
||||
Module path: %1
|
||||
See "Using QML Modules with Plugins" in the documentation.</source>
|
||||
<translation>Модуль QML не содержит информации о элементах содержащихся в расширении
|
||||
<translation>Модуль QML не содержит информации об элементах содержащихся в расширении
|
||||
|
||||
Путь к модулю: %1
|
||||
См. раздел «Using QML Modules with Plugins» документации.</translation>
|
||||
@@ -22499,6 +22550,10 @@ Do you want to retry?</source>
|
||||
<source>%1 animations at %2 FPS</source>
|
||||
<translation>%1 анимаций, %2 кадров в секунду</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unexpected complete signal in data model</source>
|
||||
<translation>Неожиданный сигнал complete в модели данных</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No data to save</source>
|
||||
<translation>Нет данных для сохранения</translation>
|
||||
@@ -22519,6 +22574,10 @@ Do you want to retry?</source>
|
||||
<source>Invalid version of QML Trace file.</source>
|
||||
<translation>Неверная версия файла трассировки QML.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Trying to set unknown state in events list</source>
|
||||
<translation>Попытка установить неизвестное состояние в списке событий</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<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.
|
||||
|
||||
Requires <b>Qt 4.7.4</b> or newer.</source>
|
||||
Requires <b>Qt 5.0</b> or newer.</source>
|
||||
<translation>Создание проекта приложения Qt Quick с одним QML файлом, содержащим главный вид.
|
||||
<br/>
|
||||
Проекты Qt Quick можно просматривать в QML Viewer и они не требуют сборки. Для создания и запуска проектов данного типа не требуется установка на компьютер среды разработки.
|
||||
<br/>
|
||||
Требуется <b>Qt</b> версии не ниже <b>4.7.4</b>.</translation>
|
||||
Требуется <b>Qt</b> версии не ниже <b>5.0</b>.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -23754,8 +23813,8 @@ Preselects a desktop Qt for building the application if available.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::ConsoleAppWizardDialog</name>
|
||||
<message>
|
||||
<source>This wizard generates a Qt4 console application project. The application derives from QCoreApplication and does not provide a GUI.</source>
|
||||
<translation>Этот мастер создаст проект консольного приложения Qt4. Оно будет наследником от QCoreApplication и без GUI.</translation>
|
||||
<source>This wizard generates a Qt console application project. The application derives from QCoreApplication and does not provide a GUI.</source>
|
||||
<translation>Этот мастер создаст проект консольного приложения Qt. Оно будет производным от QCoreApplication и без GUI.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -23834,8 +23893,8 @@ Preselects a desktop Qt for building the application if available.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::CustomWidgetWizardDialog</name>
|
||||
<message>
|
||||
<source>This wizard generates a Qt4 Designer Custom Widget or a Qt4 Designer Custom Widget Collection project.</source>
|
||||
<translation>Этот мастер создаст пользовательский виджет или набор пользовательских виджетов для Qt4 Designer.</translation>
|
||||
<source>This wizard generates a Qt Designer Custom Widget or a Qt Designer Custom Widget Collection project.</source>
|
||||
<translation>Этот мастер создаст пользовательский виджет или набор пользовательских виджетов для Qt Designer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom Widgets</source>
|
||||
@@ -23906,8 +23965,8 @@ Preselects a desktop Qt for building the application if available.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::EmptyProjectWizardDialog</name>
|
||||
<message>
|
||||
<source>This wizard generates an empty Qt4 project. Add files to it later on by using the other wizards.</source>
|
||||
<translation>Этот мастер создаст пустой проект Qt4. Нужно будет позже добавить в него файлы с помощью других мастеров.</translation>
|
||||
<source>This wizard generates an empty Qt project. Add files to it later on by using the other wizards.</source>
|
||||
<translation>Этот мастер создаст пустой проект Qt. Нужно будет позже добавить в него файлы с помощью других мастеров.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -23950,8 +24009,8 @@ Preselects a desktop Qt for building the application if available.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::GuiAppWizardDialog</name>
|
||||
<message>
|
||||
<source>This wizard generates a Qt4 GUI application project. The application derives by default from QApplication and includes an empty widget.</source>
|
||||
<translation>Этот мастер создаст проект графического приложения Qt4. По умолчанию приложение будет базироваться на QApplication и будет включать пустой виджет.</translation>
|
||||
<source>This wizard generates a Qt GUI application project. The application derives by default from QApplication and includes an empty widget.</source>
|
||||
<translation>Этот мастер создаст проект графического приложения Qt. По умолчанию приложение будет производным от QApplication и будет включать пустой виджет.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Details</source>
|
||||
@@ -24417,14 +24476,14 @@ Adds the library and include paths to the .pro file.</source>
|
||||
<source>Error:</source>
|
||||
<translation>Ошибка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This target cannot build this project since it does not define a Qt version.</source>
|
||||
<translation>Невозможно собрать данную цель, так как в проекте не задан профиль Qt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>building in <b>%1</b></source>
|
||||
<translation>сборка в <b>%1</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This kit cannot build this project since it does not define a Qt version.</source>
|
||||
<translation>Невозможно собрать проект данным инструментарием, так как он не определяет профиль Qt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Qt version %1 does not support shadow builds, building might fail.</source>
|
||||
<translation>Профиль Qt %1 не поддерживает теневую сборку, поэтому она может завершиться с ошибкой.</translation>
|
||||
@@ -24537,8 +24596,8 @@ Adds the library and include paths to the .pro file.</source>
|
||||
<translation>Среда сборки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt4 Run Configuration</source>
|
||||
<translation>Конфигурация выполнения Qt4</translation>
|
||||
<source>Qt Run Configuration</source>
|
||||
<translation>Конфигурация выполнения Qt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -24633,10 +24692,10 @@ Adds the library and include paths to the .pro file.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::QtQuickAppWizard</name>
|
||||
<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>
|
||||
<translation>Создание проекта приложения Qt Quick, который может содержать код как QML, так и на С++, а так же включает QDeclarativeView.
|
||||
<translation>Создание проекта приложения Qt Quick 1, который может содержать код как QML, так и на С++, а так же включает QDeclarativeView.
|
||||
|
||||
</translation>
|
||||
</message>
|
||||
@@ -24657,20 +24716,24 @@ Requires <b>Qt 4.7.0</b> or newer.</source>
|
||||
<translation>Приложение Qt Quick 2 (встроенные элементы)</translation>
|
||||
</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.
|
||||
|
||||
Requires <b>Qt 5.0</b> or newer.</source>
|
||||
<translation>Создание проекта приложения Qt Quick, который может одновременно содержать код С++ и QML и включать QQuickView.
|
||||
<translation>Создание проекта приложения Qt Quick 2, который может одновременно содержать код С++ и QML, а также включать QQuickView.
|
||||
|
||||
Встроенные элементы пространства имён QtQuick 2 позволяют создавать кросс-платформенные приложения с особым внешним видом и эргономикой.
|
||||
|
||||
Требуется <b>Qt</b> версии <b>5.0</b> и выше.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt Quick Application for MeeGo Harmattan</source>
|
||||
<translation>Приложение Qt Quick для MeeGo Harmattan</translation>
|
||||
<source>Qt Quick 1 Application for MeeGo Harmattan</source>
|
||||
<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>
|
||||
<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 <b>Qt 4.7.4</b> or newer, and the component set installed f
|
||||
<br/>
|
||||
Требуется <b>Qt</b> версии не ниже <b>4.7.4</b> и установленный набор элементов для выбранного профиля Qt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt Quick Application (from Existing QML File)</source>
|
||||
<translation>Приложение Qt Quick (из файла .qml)</translation>
|
||||
</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.
|
||||
|
||||
@@ -24750,8 +24809,8 @@ Requires <b>Qt 4.7.0</b> or newer.</source>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::SubdirsProjectWizardDialog</name>
|
||||
<message>
|
||||
<source>This wizard generates a Qt4 subdirs project. Add subprojects to it later on by using the other wizards.</source>
|
||||
<translation>Этот мастер создаёт проект Qt4 с подкаталогами. Добавьте подпроекты в него позже с использованием уже других мастеров.</translation>
|
||||
<source>This wizard generates a Qt subdirs project. Add subprojects to it later on by using the other wizards.</source>
|
||||
<translation>Этот мастер создаёт проект Qt с подкаталогами. Добавьте подпроекты в него позже с использованием уже других мастеров.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -24868,7 +24927,7 @@ Requires <b>Qt 4.7.0</b> or newer.</source>
|
||||
<name>Qt4ProjectManager::MakeStep</name>
|
||||
<message>
|
||||
<source>Make</source>
|
||||
<comment>Qt4 MakeStep display name.</comment>
|
||||
<comment>Qt MakeStep display name.</comment>
|
||||
<translation>Сборка</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -24895,8 +24954,8 @@ Requires <b>Qt 4.7.0</b> or newer.</source>
|
||||
<translation><b>Make:</b> %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Make:</b> No Qt4 build configuration.</source>
|
||||
<translation><b>Make:</b> Нет конфигурации сборки Qt4.</translation>
|
||||
<source><b>Make:</b> No Qt build configuration.</source>
|
||||
<translation><b>Make:</b> Нет конфигурации сборки Qt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><b>Make:</b> %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 "%1".</source>
|
||||
<translation>Этот профиль Qt уже зарегистрирован как «%1».</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Qt version selected must be for the same device type.</source>
|
||||
<translation>Выбранный профиль Qt должен соответствовать типу устройства.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Helpers: None available</source>
|
||||
<translation>Помощники отсутствуют</translation>
|
||||
@@ -25741,10 +25804,6 @@ cannot be found in the path.</source>
|
||||
<source>Incompatible Qt Versions</source>
|
||||
<translation>Несовместимые профили Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The Qt version selected must be for the same target.</source>
|
||||
<translation>Выбранный профиль Qt должен быть для такой же цели.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtSupport::Internal::QtVersionInfo</name>
|
||||
@@ -26275,6 +26334,10 @@ In addition, device connectivity will be tested.</source>
|
||||
<source>Connecting to host...</source>
|
||||
<translation>Подключение к узлу...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Checking kernel version...</source>
|
||||
<translation>Проверка версии ядра...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>SSH connection failure: %1
|
||||
</source>
|
||||
@@ -26299,6 +26362,11 @@ In addition, device connectivity will be tested.</source>
|
||||
</source>
|
||||
<translation>Ошибка резервирования портов: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All specified ports are available.
|
||||
</source>
|
||||
<translation>Все указанные порты доступны.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following specified ports are currently in use: %1
|
||||
</source>
|
||||
@@ -26420,6 +26488,10 @@ In addition, device connectivity will be tested.</source>
|
||||
<source>Package upload failed: Could not open file.</source>
|
||||
<translation>Не удалось отправить пакет: Невозможно открыть файл.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starting upload...</source>
|
||||
<translation>Запуск отправки...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to upload package: %2</source>
|
||||
<translation>Не удалось отправить пакет: %2</translation>
|
||||
@@ -27833,6 +27905,17 @@ with a password, which you can enter below.</source>
|
||||
<translation>Общие</translation>
|
||||
</message>
|
||||
</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>
|
||||
<name>TextEditor::CodeStyleEditor</name>
|
||||
<message>
|
||||
@@ -30559,7 +30642,7 @@ Will not be applied to whitespace in comments and strings.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>An encoding error was encountered.</source>
|
||||
<translation>Возникла ошибка кодировки.</translation>
|
||||
<translation>Ошибка кодировки.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -30810,6 +30893,10 @@ Will not be applied to whitespace in comments and strings.</source>
|
||||
<source>Unpausing instrumentation...</source>
|
||||
<translation>Продолжение работы...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error occurred while trying to run %1: %2</source>
|
||||
<translation>Ошибка при попытке запустить %1: %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Callgrind dumped profiling info</source>
|
||||
<translation>Callgrind загрузил данные профилирования</translation>
|
||||
@@ -31221,7 +31308,7 @@ Will not be applied to whitespace in comments and strings.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error occurred parsing valgrind output: %1</source>
|
||||
<translation>Возникла ошибка при разборе вывода valgrind: %1</translation>
|
||||
<translation>Ошибка при разборе вывода valgrind: %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -32338,7 +32425,7 @@ should a repository require SSH-authentication (see documentation on SSH and the
|
||||
</message>
|
||||
<message>
|
||||
<source>cAvahiClient, an error occurred on the client side.</source>
|
||||
<translation>cAvahiClient, возникла ошибка на стороне клиента.</translation>
|
||||
<translation>cAvahiClient, ошибка на стороне клиента.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<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>
|
||||
<source>User Interface</source>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -210,9 +210,9 @@ static inline QStringList getPluginPaths()
|
||||
#endif
|
||||
// 3) <localappdata>/plugins/<ideversion>
|
||||
// where <localappdata> is e.g.
|
||||
// <drive>:\Users\<username>\AppData\Local\QtProject\qtcreator on Windows Vista and later
|
||||
// $XDG_DATA_HOME or ~/.local/share/data/QtProject/qtcreator on Linux
|
||||
// ~/Library/Application Support/QtProject/Qt Creator on Mac
|
||||
// "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
|
||||
// "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
|
||||
// "~/Library/Application Support/QtProject/Qt Creator" on Mac
|
||||
pluginPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
|
||||
pluginPath += QLatin1Char('/')
|
||||
+ QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR)
|
||||
|
||||
@@ -404,6 +404,9 @@ void QStyleItem::initStyleOption()
|
||||
m_styleoption = new QStyleOption();
|
||||
|
||||
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())
|
||||
m_styleoption->state |= QStyle::State_Enabled;
|
||||
|
||||
@@ -77,11 +77,11 @@ QString UnixUtils::substituteFileBrowserParameters(const QString &pre, const QSt
|
||||
c = pre.at(++i);
|
||||
QString s;
|
||||
if (c == QLatin1Char('d'))
|
||||
s = QFileInfo(file).path();
|
||||
s = QLatin1Char('"') + QFileInfo(file).path() + QLatin1Char('"');
|
||||
else if (c == QLatin1Char('f'))
|
||||
s = file;
|
||||
s = QLatin1Char('"') + file + QLatin1Char('"');
|
||||
else if (c == QLatin1Char('n'))
|
||||
s = QFileInfo(file).fileName();
|
||||
s = QLatin1Char('"') + QFileInfo(file).fileName() + QLatin1Char('"');
|
||||
else if (c == QLatin1Char('%'))
|
||||
s = c;
|
||||
else {
|
||||
|
||||
@@ -10,12 +10,6 @@
|
||||
<height>520</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
|
||||
@@ -63,10 +63,6 @@
|
||||
#include <QSplitter>
|
||||
#include <QStackedLayout>
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include <qmacstyle_mac.h>
|
||||
#endif
|
||||
|
||||
using namespace Core;
|
||||
using namespace Core::Internal;
|
||||
|
||||
|
||||
@@ -51,9 +51,6 @@
|
||||
#include <QHeaderView>
|
||||
#include <QKeyEvent>
|
||||
#include <QTreeView>
|
||||
#ifdef Q_OS_MAC
|
||||
#include <qmacstyle_mac.h>
|
||||
#endif
|
||||
|
||||
using namespace Core;
|
||||
using namespace Core::Internal;
|
||||
|
||||
@@ -95,11 +95,11 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
|
||||
"Could not find explorer.exe in path to launch Windows Explorer."));
|
||||
return;
|
||||
}
|
||||
QString param;
|
||||
QStringList param;
|
||||
if (!QFileInfo(pathIn).isDir())
|
||||
param = QLatin1String("/select,");
|
||||
param += QLatin1String("/select,");
|
||||
param += QDir::toNativeSeparators(pathIn);
|
||||
QProcess::startDetached(explorer, QStringList(param));
|
||||
QProcess::startDetached(explorer, param);
|
||||
#elif defined(Q_OS_MAC)
|
||||
Q_UNUSED(parent)
|
||||
QStringList scriptArgs;
|
||||
@@ -193,12 +193,13 @@ void FileUtils::removeFile(const QString &filePath, bool deleteFromFS)
|
||||
static inline bool fileSystemRenameFile(const QString &orgFilePath,
|
||||
const QString &newFilePath)
|
||||
{
|
||||
#if QT_VERSION < 0x050000 // ### fixme: QTBUG-3570 might be fixed in Qt 5?
|
||||
QFile f(orgFilePath); // Due to QTBUG-3570
|
||||
QAbstractFileEngine *fileEngine = f.fileEngine();
|
||||
#if QT_VERSION < 0x050000
|
||||
QAbstractFileEngine *fileEngine = QAbstractFileEngine::create(orgFilePath); // Due to QTBUG-3570
|
||||
if (!fileEngine->caseSensitive() && orgFilePath.compare(newFilePath, Qt::CaseInsensitive) == 0)
|
||||
return fileEngine->rename(newFilePath);
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
@@ -209,6 +209,7 @@ void GdbServerStarter::attach(int port)
|
||||
QTC_ASSERT(fillParameters(&sp, d->kit), return);
|
||||
sp.masterEngineType = GdbEngineType;
|
||||
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.executable = localExecutable;
|
||||
sp.startMode = AttachToRemoteServer;
|
||||
|
||||
@@ -93,8 +93,7 @@ QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp, QString *errorMess
|
||||
{
|
||||
setObjectName(QLatin1String("QmlCppEngine"));
|
||||
d = new QmlCppEnginePrivate;
|
||||
d->m_qmlEngine = new QmlEngine(sp);
|
||||
d->m_qmlEngine->setMasterEngine(this);
|
||||
d->m_qmlEngine = new QmlEngine(sp, this);
|
||||
d->m_cppEngine = DebuggerRunControlFactory::createEngine(sp.firstSlaveEngineType, sp, errorMessage);
|
||||
d->m_cppEngine->setMasterEngine(this);
|
||||
if (!d->m_cppEngine) {
|
||||
|
||||
@@ -274,7 +274,7 @@ QmlJS::ConsoleManagerInterface *qmlConsoleManager()
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters)
|
||||
QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, DebuggerEngine *masterEngine)
|
||||
: DebuggerEngine(startParameters)
|
||||
, m_adapter(this)
|
||||
, m_inspectorAdapter(&m_adapter, this)
|
||||
@@ -283,6 +283,9 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters)
|
||||
{
|
||||
setObjectName(QLatin1String("QmlEngine"));
|
||||
|
||||
if (masterEngine)
|
||||
setMasterEngine(masterEngine);
|
||||
|
||||
connect(&m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)),
|
||||
SLOT(connectionError(QAbstractSocket::SocketError)));
|
||||
connect(&m_adapter, SIGNAL(serviceConnectionError(QString)),
|
||||
@@ -292,9 +295,9 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters)
|
||||
connect(&m_adapter, SIGNAL(connectionStartupFailed()),
|
||||
SLOT(connectionStartupFailed()));
|
||||
|
||||
connect(this, SIGNAL(stateChanged(Debugger::DebuggerState)),
|
||||
connect(stackHandler(), SIGNAL(stackChanged()),
|
||||
SLOT(updateCurrentContext()));
|
||||
connect(this->stackHandler(), SIGNAL(currentIndexChanged()),
|
||||
connect(stackHandler(), SIGNAL(currentIndexChanged()),
|
||||
SLOT(updateCurrentContext()));
|
||||
connect(inspectorTreeView(), SIGNAL(currentIndexChanged(QModelIndex)),
|
||||
SLOT(updateCurrentContext()));
|
||||
|
||||
@@ -60,7 +60,8 @@ class QmlEngine : public DebuggerEngine, QmlJS::IScriptEvaluator
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit QmlEngine(const DebuggerStartParameters &startParameters);
|
||||
explicit QmlEngine(const DebuggerStartParameters &startParameters,
|
||||
DebuggerEngine *masterEngine = 0);
|
||||
~QmlEngine();
|
||||
|
||||
void notifyEngineRemoteSetupDone(int gdbServerPort, int qmlPort);
|
||||
|
||||
@@ -71,8 +71,6 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
|
||||
, m_debugIdToSelect(-1)
|
||||
, m_currentSelectedDebugId(-1)
|
||||
, m_listeningToEditorManager(false)
|
||||
, m_selectionCallbackExpected(false)
|
||||
, m_cursorPositionChangedExternally(false)
|
||||
, m_toolsClientConnected(false)
|
||||
, m_inspectorToolsContext("Debugger.QmlInspector")
|
||||
, m_selectAction(new QAction(this))
|
||||
@@ -81,8 +79,8 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
|
||||
{
|
||||
connect(m_agent, SIGNAL(objectFetched(QmlDebug::ObjectReference)),
|
||||
SLOT(onObjectFetched(QmlDebug::ObjectReference)));
|
||||
connect(m_agent, SIGNAL(jumpToObjectDefinition(QmlDebug::FileReference)),
|
||||
SLOT(jumpToObjectDefinitionInEditor(QmlDebug::FileReference)));
|
||||
connect(m_agent, SIGNAL(jumpToObjectDefinition(QmlDebug::FileReference,int)),
|
||||
SLOT(jumpToObjectDefinitionInEditor(QmlDebug::FileReference,int)));
|
||||
|
||||
QmlDebugConnection *connection = m_debugAdapter->connection();
|
||||
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)
|
||||
{
|
||||
if (debugIds.isEmpty())
|
||||
@@ -328,9 +314,6 @@ void QmlInspectorAdapter::createPreviewForEditor(Core::IEditor *newEditor)
|
||||
} else {
|
||||
QmlLiveTextPreview *preview
|
||||
= new QmlLiveTextPreview(doc, initdoc, this, this);
|
||||
connect(preview,
|
||||
SIGNAL(selectedItemsChanged(QList<int>)),
|
||||
SLOT(selectObjectsFromEditor(QList<int>)));
|
||||
|
||||
preview->setApplyChangesToQmlInspector(
|
||||
debuggerCore()->action(QmlUpdateOnSave)->isChecked());
|
||||
@@ -476,30 +459,25 @@ void QmlInspectorAdapter::showConnectionStatusMessage(const QString &message)
|
||||
}
|
||||
|
||||
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());
|
||||
|
||||
Core::EditorManager *editorManager = Core::EditorManager::instance();
|
||||
Core::IEditor *currentEditor = editorManager->currentEditor();
|
||||
Core::IEditor *editor = editorManager->openEditor(fileName);
|
||||
TextEditor::ITextEditor *textEditor
|
||||
= qobject_cast<TextEditor::ITextEditor*>(editor);
|
||||
|
||||
if (currentEditor != editor)
|
||||
m_selectionCallbackExpected = true;
|
||||
|
||||
if (textEditor) {
|
||||
m_selectionCallbackExpected = true;
|
||||
editorManager->addCurrentPositionToNavigationHistory();
|
||||
textEditor->gotoLine(objSource.lineNumber());
|
||||
textEditor->widget()->setFocus();
|
||||
}
|
||||
|
||||
if (debugId != -1 && debugId != m_currentSelectedDebugId) {
|
||||
m_currentSelectedDebugId = debugId;
|
||||
m_currentSelectedDebugName = agent()->displayName(debugId);
|
||||
}
|
||||
}
|
||||
|
||||
void QmlInspectorAdapter::selectObject(const ObjectReference &obj,
|
||||
|
||||
@@ -81,7 +81,6 @@ private slots:
|
||||
void toolsClientStatusChanged(QmlDebug::ClientStatus status);
|
||||
void engineClientStatusChanged(QmlDebug::ClientStatus status);
|
||||
|
||||
void selectObjectsFromEditor(const QList<int> &debugIds);
|
||||
void selectObjectsFromToolsClient(const QList<int> &debugIds);
|
||||
void onObjectFetched(const QmlDebug::ObjectReference &ref);
|
||||
|
||||
@@ -96,7 +95,7 @@ private slots:
|
||||
void onReload();
|
||||
void onReloaded();
|
||||
void onDestroyedObject(int);
|
||||
void jumpToObjectDefinitionInEditor(const QmlDebug::FileReference &objSource);
|
||||
void jumpToObjectDefinitionInEditor(const QmlDebug::FileReference &objSource, int debugId = -1);
|
||||
|
||||
private:
|
||||
void setActiveEngineClient(QmlDebug::BaseEngineDebugClient *client);
|
||||
@@ -129,8 +128,6 @@ private:
|
||||
QHash<QString, QmlLiveTextPreview *> m_textPreviews;
|
||||
QmlJS::Snapshot m_loadedSnapshot; //the snapshot loaded by the viewer
|
||||
QStringList m_pendingPreviewDocumentNames;
|
||||
bool m_selectionCallbackExpected;
|
||||
bool m_cursorPositionChangedExternally;
|
||||
|
||||
// toolbar
|
||||
bool m_toolsClientConnected;
|
||||
|
||||
@@ -128,7 +128,7 @@ void QmlInspectorAgent::watchDataSelected(const WatchData *data)
|
||||
|
||||
if (data->id) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ signals:
|
||||
void propertyChanged(int debugId, const QByteArray &propertyName,
|
||||
const QVariant &propertyValue);
|
||||
void automaticUpdateFailed();
|
||||
void jumpToObjectDefinition(const QmlDebug::FileReference &objSource);
|
||||
void jumpToObjectDefinition(const QmlDebug::FileReference &objSource, int debugId);
|
||||
|
||||
private slots:
|
||||
void updateStatus();
|
||||
|
||||
@@ -42,10 +42,6 @@
|
||||
#include <QMouseEvent>
|
||||
#include <QMenu>
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include <qmacstyle_mac.h>
|
||||
#endif
|
||||
|
||||
using namespace Help::Internal;
|
||||
|
||||
// -- OpenPagesDelegate
|
||||
|
||||
@@ -45,11 +45,9 @@ FileSystemFilter::FileSystemFilter(EditorManager *editorManager, LocatorWidget *
|
||||
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;
|
||||
QString entry = entry_;
|
||||
const QString lineNoSuffix = EditorManager::splitLineNumber(&entry);
|
||||
QFileInfo entryInfo(entry);
|
||||
QString name = entryInfo.fileName();
|
||||
QString directory = entryInfo.path();
|
||||
@@ -81,11 +79,15 @@ QList<FilterEntry> FileSystemFilter::matchesFor(QFutureInterface<Locator::Filter
|
||||
break;
|
||||
if (name.isEmpty() || dir.startsWith(name, Qt::CaseInsensitive)) {
|
||||
const QString fullPath = dirInfo.filePath(dir);
|
||||
FilterEntry filterEntry(this, dir, QString(fullPath + lineNoSuffix));
|
||||
FilterEntry filterEntry(this, dir, fullPath);
|
||||
filterEntry.resolveFileIcon = true;
|
||||
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) {
|
||||
if (future.isCanceled())
|
||||
break;
|
||||
@@ -102,18 +104,15 @@ QList<FilterEntry> FileSystemFilter::matchesFor(QFutureInterface<Locator::Filter
|
||||
void FileSystemFilter::accept(FilterEntry selection) const
|
||||
{
|
||||
QString file = selection.internalData.toString();
|
||||
const QString lineNoSuffix = EditorManager::splitLineNumber(&file);
|
||||
|
||||
QFileInfo info(file);
|
||||
if (info.isDir()) {
|
||||
QString value = shortcutString();
|
||||
value += QLatin1Char(' ');
|
||||
value += QDir::toNativeSeparators(info.absoluteFilePath() + QLatin1Char('/'));
|
||||
value += lineNoSuffix;
|
||||
m_locatorWidget->show(value, value.length());
|
||||
return;
|
||||
}
|
||||
EditorManager::openEditor(selection.internalData.toString(), Id(),
|
||||
EditorManager::openEditor(file, Id(),
|
||||
EditorManager::ModeSwitch | EditorManager::CanContainLineNumber);
|
||||
}
|
||||
|
||||
|
||||
@@ -207,7 +207,11 @@ static QString candidateName(const QString &name, const QString &postfix)
|
||||
{
|
||||
if (name.contains(postfix))
|
||||
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)
|
||||
@@ -216,6 +220,7 @@ void Kit::setDisplayName(const QString &name)
|
||||
QList<KitInformation *> kitInfo = km->kitInformation();
|
||||
|
||||
QStringList nameList;
|
||||
nameList << QString(); // Disallow empty kit names!
|
||||
foreach (Kit *k, km->kits()) {
|
||||
if (k == this)
|
||||
continue;
|
||||
|
||||
@@ -122,6 +122,8 @@ void KitManagerConfigWidget::apply()
|
||||
|
||||
if (mustSetDefault)
|
||||
km->setDefaultKit(m_kit);
|
||||
|
||||
m_isDefaultKit = mustSetDefault;
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "kit.h"
|
||||
|
||||
#include <coreplugin/idocument.h>
|
||||
#include <coreplugin/variablemanager.h>
|
||||
#include <utils/qtcprocess.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
@@ -91,8 +92,8 @@ bool ProcessStep::init()
|
||||
if (!bc)
|
||||
bc = target()->activeBuildConfiguration();
|
||||
ProcessParameters *pp = processParameters();
|
||||
pp->setMacroExpander(bc->macroExpander());
|
||||
pp->setEnvironment(bc->environment());
|
||||
pp->setMacroExpander(bc ? bc->macroExpander() : Core::VariableManager::instance()->macroExpander());
|
||||
pp->setEnvironment(bc ? bc->environment() : Utils::Environment::systemEnvironment());
|
||||
pp->setWorkingDirectory(workingDirectory());
|
||||
pp->setCommand(m_command);
|
||||
pp->setArguments(m_arguments);
|
||||
@@ -248,10 +249,11 @@ ProcessStepConfigWidget::ProcessStepConfigWidget(ProcessStep *step)
|
||||
BuildConfiguration *bc = m_step->buildConfiguration();
|
||||
if (!bc)
|
||||
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.workingDirectory->setEnvironment(bc->environment());
|
||||
m_ui.workingDirectory->setEnvironment(env);
|
||||
m_ui.workingDirectory->setPath(m_step->workingDirectory());
|
||||
|
||||
m_ui.commandArgumentsLineEdit->setText(m_step->arguments());
|
||||
@@ -276,8 +278,8 @@ void ProcessStepConfigWidget::updateDetails()
|
||||
BuildConfiguration *bc = m_step->buildConfiguration();
|
||||
if (!bc) // iff the step is actually in the deploy list
|
||||
bc = m_step->target()->activeBuildConfiguration();
|
||||
param.setMacroExpander(bc->macroExpander());
|
||||
param.setEnvironment(bc->environment());
|
||||
param.setMacroExpander(bc ? bc->macroExpander() : Core::VariableManager::instance()->macroExpander());
|
||||
param.setEnvironment(bc ? bc->environment() : Utils::Environment::systemEnvironment());
|
||||
|
||||
param.setWorkingDirectory(m_step->workingDirectory());
|
||||
param.setCommand(m_step->command());
|
||||
|
||||
@@ -42,6 +42,10 @@
|
||||
#include <projectexplorer/projectexplorer.h>
|
||||
#include <sessiondialog.h>
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <utils/winutils.h>
|
||||
#endif
|
||||
|
||||
namespace ProjectExplorer {
|
||||
namespace Internal {
|
||||
|
||||
@@ -220,6 +224,16 @@ void ProjectWelcomePage::facilitateQml(QDeclarativeEngine *engine)
|
||||
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
|
||||
{
|
||||
return Develop;
|
||||
|
||||
@@ -94,7 +94,7 @@ public:
|
||||
ProjectWelcomePage();
|
||||
|
||||
void facilitateQml(QDeclarativeEngine *engine);
|
||||
QUrl pageLocation() const { return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/develop.qml")); }
|
||||
QUrl pageLocation() const;
|
||||
QWidget *page() { return 0; }
|
||||
QString title() const { return tr("Develop"); }
|
||||
int priority() const { return 20; }
|
||||
|
||||
@@ -75,6 +75,10 @@
|
||||
#include <QGraphicsOpacityEffect>
|
||||
#include <QToolBar>
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <utils/winutils.h>
|
||||
#endif
|
||||
|
||||
enum {
|
||||
debug = false
|
||||
};
|
||||
@@ -83,6 +87,16 @@ const int collapseButtonOffset = 114;
|
||||
|
||||
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
|
||||
# define SHARE_PATH "/../Resources/qmldesigner"
|
||||
#else
|
||||
@@ -91,7 +105,7 @@ namespace QmlDesigner {
|
||||
|
||||
static inline QString sharedDirPath()
|
||||
{
|
||||
QString appPath = QCoreApplication::applicationDirPath();
|
||||
QString appPath = applicationDirPath();
|
||||
|
||||
return QFileInfo(appPath + SHARE_PATH).absoluteFilePath();
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ QmlProjectApplicationWizardDialog::QmlProjectApplicationWizardDialog(QWidget *pa
|
||||
setIntroDescription(tr("This wizard generates a Qt Quick UI project."));
|
||||
}
|
||||
|
||||
QmlProjectApplicationWizard::QmlProjectApplicationWizard()
|
||||
: Core::BaseFileWizard(parameters())
|
||||
QmlProjectApplicationWizard::QmlProjectApplicationWizard(ProjectType projectType)
|
||||
: Core::BaseFileWizard(parameters(projectType)), m_projectType(projectType)
|
||||
{ }
|
||||
|
||||
QmlProjectApplicationWizard::~QmlProjectApplicationWizard()
|
||||
@@ -65,21 +65,45 @@ QmlProjectApplicationWizard::~QmlProjectApplicationWizard()
|
||||
|
||||
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);
|
||||
parameters.setIcon(QIcon(QLatin1String(QtSupport::Constants::QML_WIZARD_ICON)));
|
||||
parameters.setDisplayName(tr("Qt Quick UI"));
|
||||
parameters.setId(QLatin1String("QB.QML Application"));
|
||||
switch (projectType) {
|
||||
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"
|
||||
"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 "
|
||||
"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.setDisplayCategory(QT_TRANSLATE_NOOP("ProjectExplorer", "Qt Application"));
|
||||
return parameters;
|
||||
@@ -118,8 +142,16 @@ Core::GeneratedFiles QmlProjectApplicationWizard::generateFiles(const QWizard *w
|
||||
{
|
||||
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
|
||||
<< "import QtQuick 2.0" << endl
|
||||
<< endl
|
||||
<< "Rectangle {" << endl
|
||||
<< " width: 360" << endl
|
||||
|
||||
@@ -49,11 +49,16 @@ class QmlProjectApplicationWizard : public Core::BaseFileWizard
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QmlProjectApplicationWizard();
|
||||
enum ProjectType {
|
||||
QtQuick2Project,
|
||||
QtQuick1Project
|
||||
};
|
||||
|
||||
QmlProjectApplicationWizard(ProjectType projectType);
|
||||
virtual ~QmlProjectApplicationWizard();
|
||||
virtual Core::FeatureSet requiredFeatures() const;
|
||||
|
||||
static Core::BaseFileWizardParameters parameters();
|
||||
static Core::BaseFileWizardParameters parameters(ProjectType projectType);
|
||||
|
||||
protected:
|
||||
virtual QWizard *createWizardDialog(QWidget *parent,
|
||||
@@ -63,6 +68,9 @@ protected:
|
||||
QString *errorMessage) const;
|
||||
|
||||
virtual bool postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, QString *errorMessage);
|
||||
|
||||
private:
|
||||
const ProjectType m_projectType;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -80,7 +80,11 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
|
||||
addAutoReleasedObject(manager);
|
||||
addAutoReleasedObject(new Internal::QmlProjectRunConfigurationFactory);
|
||||
addAutoReleasedObject(new Internal::QmlProjectRunControlFactory);
|
||||
addAutoReleasedObject(new Internal::QmlProjectApplicationWizard);
|
||||
|
||||
addAutoReleasedObject(new Internal::QmlProjectApplicationWizard(
|
||||
Internal::QmlProjectApplicationWizard::QtQuick1Project));
|
||||
addAutoReleasedObject(new Internal::QmlProjectApplicationWizard(
|
||||
Internal::QmlProjectApplicationWizard::QtQuick2Project));
|
||||
|
||||
QmlProjectFileFormat::registerDeclarativeTypes();
|
||||
|
||||
|
||||
@@ -101,7 +101,23 @@ static inline QStringList trimStringList(const QStringList &stringlist)
|
||||
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;
|
||||
ExampleItem item;
|
||||
@@ -116,12 +132,12 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, co
|
||||
item.name = attributes.value(QLatin1String("name")).toString();
|
||||
item.projectPath = attributes.value(QLatin1String("projectPath")).toString();
|
||||
item.hasSourceCode = !item.projectPath.isEmpty();
|
||||
item.projectPath.prepend(slash);
|
||||
item.projectPath.prepend(projectsOffset);
|
||||
item.projectPath = relativeOrInstallPath(item.projectPath, projectsOffset, examplesInstallPath);
|
||||
item.imageUrl = attributes.value(QLatin1String("imageUrl")).toString();
|
||||
item.docUrl = attributes.value(QLatin1String("docUrl")).toString();
|
||||
} 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")) {
|
||||
item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
|
||||
} else if (reader->name() == QLatin1String("dependency")) {
|
||||
@@ -135,8 +151,10 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, co
|
||||
break;
|
||||
case QXmlStreamReader::EndElement:
|
||||
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"));
|
||||
if (projectExists || !qgetenv("QTC_DEBUG_EXAMPLESMODEL").isEmpty())
|
||||
examples.append(item);
|
||||
} else if (reader->name() == QLatin1String("examples")) {
|
||||
return examples;
|
||||
@@ -149,7 +167,9 @@ QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader *reader, co
|
||||
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;
|
||||
ExampleItem item;
|
||||
@@ -164,12 +184,12 @@ QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader *reader, const
|
||||
item.name = attributes.value(QLatin1String("name")).toString();
|
||||
item.projectPath = attributes.value(QLatin1String("projectPath")).toString();
|
||||
item.hasSourceCode = !item.projectPath.isEmpty();
|
||||
item.projectPath.prepend(slash);
|
||||
item.projectPath.prepend(projectsOffset);
|
||||
item.projectPath = relativeOrInstallPath(item.projectPath, projectsOffset, demosInstallPath);
|
||||
item.imageUrl = attributes.value(QLatin1String("imageUrl")).toString();
|
||||
item.docUrl = attributes.value(QLatin1String("docUrl")).toString();
|
||||
} 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")) {
|
||||
item.description = fixStringForTags(reader->readElementText(QXmlStreamReader::ErrorOnUnexpectedElement));
|
||||
} else if (reader->name() == QLatin1String("dependency")) {
|
||||
@@ -179,10 +199,15 @@ QList<ExampleItem> ExamplesListModel::parseDemos(QXmlStreamReader *reader, const
|
||||
}
|
||||
break;
|
||||
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);
|
||||
else if (reader->name() == QLatin1String("demos"))
|
||||
} else if (reader->name() == QLatin1String("demos")) {
|
||||
return demos;
|
||||
}
|
||||
break;
|
||||
default: // nothing
|
||||
break;
|
||||
@@ -251,11 +276,14 @@ void ExamplesListModel::handleQtVersionsChanged()
|
||||
void ExamplesListModel::updateExamples()
|
||||
{
|
||||
clear();
|
||||
QString examplesInstallPath;
|
||||
QString demosInstallPath;
|
||||
QString examplesFallback;
|
||||
QString demosFallback;
|
||||
QString sourceFallback;
|
||||
foreach (const QString &exampleSource,
|
||||
exampleSources(&examplesFallback, &demosFallback, &sourceFallback)) {
|
||||
exampleSources(&examplesInstallPath, &demosInstallPath,
|
||||
&examplesFallback, &demosFallback, &sourceFallback)) {
|
||||
QFile exampleFile(exampleSource);
|
||||
if (!exampleFile.open(QIODevice::ReadOnly)) {
|
||||
qDebug() << Q_FUNC_INFO << "Could not open file" << exampleSource;
|
||||
@@ -284,9 +312,9 @@ void ExamplesListModel::updateExamples()
|
||||
switch (reader.readNext()) {
|
||||
case QXmlStreamReader::StartElement:
|
||||
if (reader.name() == QLatin1String("examples"))
|
||||
addItems(parseExamples(&reader, examplesDir.path()));
|
||||
addItems(parseExamples(&reader, examplesDir.path(), examplesInstallPath));
|
||||
else if (reader.name() == QLatin1String("demos"))
|
||||
addItems(parseDemos(&reader, demosDir.path()));
|
||||
addItems(parseDemos(&reader, demosDir.path(), demosInstallPath));
|
||||
else if (reader.name() == QLatin1String("tutorials"))
|
||||
addItems(parseTutorials(&reader, examplesDir.path()));
|
||||
break;
|
||||
@@ -303,7 +331,8 @@ void ExamplesListModel::updateExamples()
|
||||
emit tagsUpdated();
|
||||
}
|
||||
|
||||
QStringList ExamplesListModel::exampleSources(QString *examplesFallback, QString *demosFallback,
|
||||
QStringList ExamplesListModel::exampleSources(QString *examplesInstallPath, QString *demosInstallPath,
|
||||
QString *examplesFallback, QString *demosFallback,
|
||||
QString *sourceFallback)
|
||||
{
|
||||
QTC_CHECK(examplesFallback);
|
||||
@@ -372,6 +401,10 @@ QStringList ExamplesListModel::exampleSources(QString *examplesFallback, QString
|
||||
if (!fis.isEmpty()) {
|
||||
foreach (const QFileInfo &fi, fis)
|
||||
sources.append(fi.filePath());
|
||||
if (examplesInstallPath)
|
||||
*examplesInstallPath = version->examplesPath();
|
||||
if (demosInstallPath)
|
||||
*demosInstallPath = version->demosPath();
|
||||
return sources;
|
||||
}
|
||||
}
|
||||
@@ -422,6 +455,8 @@ void ExamplesListModel::clear()
|
||||
|
||||
void ExamplesListModel::addItems(const QList<ExampleItem> &newItems)
|
||||
{
|
||||
if (newItems.isEmpty())
|
||||
return;
|
||||
beginInsertRows(QModelIndex(), exampleItems.size(), exampleItems.size() - 1 + newItems.size());
|
||||
exampleItems.append(newItems);
|
||||
endInsertRows();
|
||||
|
||||
@@ -96,11 +96,14 @@ public slots:
|
||||
|
||||
private:
|
||||
void addItems(const QList<ExampleItem> &items);
|
||||
QList<ExampleItem> parseExamples(QXmlStreamReader *reader, const QString &projectsOffset);
|
||||
QList<ExampleItem> parseDemos(QXmlStreamReader *reader, const QString &projectsOffset);
|
||||
QList<ExampleItem> parseExamples(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);
|
||||
void clear();
|
||||
QStringList exampleSources(QString *examplesFallback, QString *demosFallback,
|
||||
QStringList exampleSources(QString *examplesInstallPath, QString *demosInstallPath,
|
||||
QString *examplesFallback, QString *demosFallback,
|
||||
QString *sourceFallback);
|
||||
QList<ExampleItem> exampleItems;
|
||||
QStringList m_tags;
|
||||
|
||||
@@ -37,6 +37,10 @@
|
||||
#include <utils/pathchooser.h>
|
||||
#include <utils/fileutils.h>
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <utils/winutils.h>
|
||||
#endif
|
||||
|
||||
#include <coreplugin/coreconstants.h>
|
||||
#include <coreplugin/coreplugin.h>
|
||||
#include <coreplugin/documentmanager.h>
|
||||
@@ -206,7 +210,13 @@ GettingStartedWelcomePage::GettingStartedWelcomePage() : m_engine(0)
|
||||
|
||||
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
|
||||
@@ -265,10 +275,15 @@ QString ExamplesWelcomePage::title() 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)
|
||||
return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/examples.qml"));
|
||||
return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/examples.qml"));
|
||||
else
|
||||
return QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/tutorials.qml"));
|
||||
return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/tutorials.qml"));
|
||||
}
|
||||
|
||||
void ExamplesWelcomePage::facilitateQml(QDeclarativeEngine *engine)
|
||||
|
||||
@@ -424,12 +424,14 @@ void QtVersionManager::updateDocumentation()
|
||||
Q_ASSERT(helpManager);
|
||||
QStringList files;
|
||||
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);
|
||||
foreach (const QString &helpFile,
|
||||
versionHelpDir.entryList(QStringList() << QLatin1String("*.qch"), QDir::Files))
|
||||
files << docPath + helpFile;
|
||||
|
||||
}
|
||||
}
|
||||
helpManager->registerDocumentation(files);
|
||||
}
|
||||
|
||||
@@ -45,6 +45,10 @@
|
||||
#include <utils/iwelcomepage.h>
|
||||
#include <utils/networkaccessmanager.h>
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <utils/winutils.h>
|
||||
#endif
|
||||
|
||||
#include <QScrollArea>
|
||||
#include <QDesktopServices>
|
||||
#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()
|
||||
{
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
@@ -234,12 +258,12 @@ void WelcomeMode::initPlugins()
|
||||
|
||||
QDeclarativeEngine *engine = m_welcomePage->engine();
|
||||
QStringList importPathList = engine->importPathList();
|
||||
importPathList << Core::ICore::resourcePath() + QLatin1String("/welcomescreen");
|
||||
importPathList << resourcePath() + QLatin1String("/welcomescreen");
|
||||
engine->setImportPathList(importPathList);
|
||||
if (!debug)
|
||||
engine->setOutputWarningsToStandardError(false);
|
||||
engine->setNetworkAccessManagerFactory(m_networkAccessManagerFactory);
|
||||
QString pluginPath = QCoreApplication::applicationDirPath();
|
||||
QString pluginPath = applicationDirPath();
|
||||
if (HostOsInfo::isMacHost())
|
||||
pluginPath += QLatin1String("/../PlugIns");
|
||||
else
|
||||
@@ -253,9 +277,11 @@ void WelcomeMode::initPlugins()
|
||||
|
||||
ctx->setContextProperty(QLatin1String("pagesModel"), QVariant::fromValue(m_pluginList));
|
||||
|
||||
QString path = resourcePath() + QLatin1String("/welcomescreen/welcomescreen.qml");
|
||||
|
||||
// finally, load the root page
|
||||
m_welcomePage->setSource(
|
||||
QUrl::fromLocalFile(Core::ICore::resourcePath() + QLatin1String("/welcomescreen/welcomescreen.qml")));
|
||||
QUrl::fromLocalFile(path));
|
||||
}
|
||||
|
||||
QString WelcomeMode::platform() const
|
||||
|
||||
@@ -23,6 +23,7 @@ isEmpty(USE_USER_DESTDIR) {
|
||||
DESTDIRAPPNAME = "qtcreator"
|
||||
DESTDIRBASE = "$$(XDG_DATA_HOME)"
|
||||
isEmpty(DESTDIRBASE):DESTDIRBASE = "$$(HOME)/.local/share/data"
|
||||
else:DESTDIRBASE = "$$DESTDIRBASE/data"
|
||||
}
|
||||
DESTDIR = "$$DESTDIRBASE/QtProject/$$DESTDIRAPPNAME/plugins/$$QTCREATOR_VERSION/$$PROVIDER"
|
||||
}
|
||||
|
||||
@@ -202,7 +202,10 @@ def createNewQtQuickApplication(workingDir, projectName = None, templateFile = N
|
||||
targets = QtQuickConstants.Targets.DESKTOP_474_GCC, qtQuickVersion=1,
|
||||
fromWelcome=False):
|
||||
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:
|
||||
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick %d Application (Built-in Elements)"
|
||||
% qtQuickVersion, fromWelcome)
|
||||
|
||||
@@ -34,8 +34,7 @@ if platform.system() == "Darwin":
|
||||
if str(args[0]).startswith('qtcreator'):
|
||||
args[0] = args[0].replace('qtcreator', '"Qt Creator"', 1)
|
||||
__origStartApplication__(*args)
|
||||
test.log("Using workaround for MacOS (losing focus & different AUT name)")
|
||||
setWindowState(findObject(":Qt Creator_Core::Internal::MainWindow"), WindowState.Maximize)
|
||||
test.log("Using workaround for MacOS (different AUT name)")
|
||||
|
||||
def waitForCleanShutdown(timeOut=10):
|
||||
appCtxt = currentApplicationContext()
|
||||
@@ -64,11 +63,18 @@ def waitForCleanShutdown(timeOut=10):
|
||||
shutdownDone=True
|
||||
if not shutdownDone and datetime.utcnow() > endtime:
|
||||
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()
|
||||
deleteDirIfExists(os.path.dirname(os.path.dirname(tmpSettingsDir)))
|
||||
waitFor('os.path.getmtime(devicesXML) > lastMTime', 5000)
|
||||
waitFor('__removeIt__(testingDir)', 2000)
|
||||
|
||||
def substituteTildeWithinToolchains(settingsDir):
|
||||
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'):
|
||||
substituteTildeWithinToolchains(tmpSettingsDir)
|
||||
substituteUnchosenTargetABIs(tmpSettingsDir)
|
||||
atexit.register(__removeTmpSettingsDir__)
|
||||
atexit.register(__removeTestingDir__)
|
||||
SettingsPath = ' -settingspath "%s"' % tmpSettingsDir
|
||||
|
||||
@@ -221,8 +221,6 @@ def selectFromFileDialog(fileName):
|
||||
snooze(2)
|
||||
nativeType("<Return>")
|
||||
snooze(1)
|
||||
setWindowState(findObject(":Qt Creator_Core::Internal::MainWindow"), WindowState.Minimize)
|
||||
setWindowState(findObject(":Qt Creator_Core::Internal::MainWindow"), WindowState.Maximize)
|
||||
else:
|
||||
fName = os.path.basename(os.path.abspath(fileName))
|
||||
pName = os.path.dirname(os.path.abspath(fileName)) + os.sep
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
workingDir = None
|
||||
templateDir = None
|
||||
searchFinished = False
|
||||
|
||||
def main():
|
||||
global workingDir,templateDir
|
||||
global templateDir
|
||||
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/keyinteraction/focus")
|
||||
qmlFile = os.path.join("qml", "focus.qml")
|
||||
if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
|
||||
@@ -13,12 +12,11 @@ def main():
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
# add docs to have the correct tool tips
|
||||
addHelpDocumentationFromSDK()
|
||||
# using a temporary directory won't mess up an eventually exisiting
|
||||
workingDir = tempDir()
|
||||
templateDir = prepareTemplate(sourceExample)
|
||||
prepareForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
|
||||
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
|
||||
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
|
||||
testRenameId()
|
||||
@@ -185,14 +183,6 @@ def maskSpecialCharsForProjectTree(filename):
|
||||
filename = filename.replace("/?","\\?").replace("/*","\\*")
|
||||
return filename
|
||||
|
||||
def cleanup():
|
||||
global workingDir, templateDir
|
||||
waitForCleanShutdown()
|
||||
if workingDir!=None:
|
||||
deleteDirIfExists(workingDir)
|
||||
if templateDir!=None:
|
||||
deleteDirIfExists(os.path.dirname(templateDir))
|
||||
|
||||
def __handleFutureProgress__(obj):
|
||||
global searchFinished
|
||||
if className(obj) == "Core::FutureProgress":
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
def main():
|
||||
global workingDir
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
# using a temporary directory won't mess up an eventually exisiting
|
||||
workingDir = tempDir()
|
||||
createNewQtQuickApplication(workingDir, "untitled")
|
||||
# using a temporary directory won't mess up a potentially exisiting
|
||||
createNewQtQuickApplication(tempDir(), "untitled")
|
||||
# wait for parsing to complete
|
||||
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)", 5000)
|
||||
if not prepareQmlFile():
|
||||
@@ -75,11 +73,3 @@ def testReIndent():
|
||||
|
||||
def shrinkText(txt, lines=10):
|
||||
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)
|
||||
|
||||
|
||||
@@ -51,4 +51,3 @@ def main():
|
||||
test.compare(editor.textCursor().selectionEnd(), pos)
|
||||
test.compare(editor.textCursor().position(), pos)
|
||||
invokeMenuItem("File", "Exit")
|
||||
waitForCleanShutdown()
|
||||
|
||||
@@ -40,7 +40,6 @@ def main():
|
||||
# Add a new run configuration
|
||||
|
||||
invokeMenuItem("File", "Exit")
|
||||
waitForCleanShutdown()
|
||||
|
||||
def init():
|
||||
global SpeedCrunchPath
|
||||
|
||||
@@ -19,7 +19,6 @@ def main():
|
||||
if not result:
|
||||
test.fatal("Could not open/create cmake project - leaving test")
|
||||
invokeMenuItem("File", "Exit")
|
||||
waitForCleanShutdown()
|
||||
return
|
||||
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
|
||||
|
||||
@@ -32,7 +31,6 @@ def main():
|
||||
checkLastBuild()
|
||||
|
||||
invokeMenuItem("File", "Exit")
|
||||
waitForCleanShutdown()
|
||||
|
||||
def init():
|
||||
global SpeedCrunchPath
|
||||
|
||||
@@ -3,7 +3,7 @@ source("../../shared/qtcreator.py")
|
||||
import re
|
||||
|
||||
def main():
|
||||
global templateDir, textChanged
|
||||
global textChanged
|
||||
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection")
|
||||
qmlFile = os.path.join("qml", "textselection.qml")
|
||||
if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
|
||||
@@ -99,13 +99,6 @@ def main():
|
||||
clickButton(waitForObject("{text='Cancel' type='QPushButton' unnamed='1' visible='1'}"))
|
||||
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):
|
||||
global textChanged
|
||||
textChanged = True
|
||||
|
||||
@@ -24,7 +24,6 @@ def main():
|
||||
test.compare(wordUnderCursor(waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")), "QList")
|
||||
|
||||
invokeMenuItem("File", "Exit")
|
||||
waitForCleanShutdown()
|
||||
|
||||
def init():
|
||||
cleanup()
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
workingDir = None
|
||||
|
||||
def main():
|
||||
global workingDir
|
||||
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()
|
||||
projectName = createNewQtQuickApplication(workingDir, targets = QtQuickConstants.Targets.DESKTOP_474_GCC)
|
||||
# wait for parsing to complete
|
||||
@@ -40,11 +37,3 @@ def subprocessFunction():
|
||||
"enabled='true' text='Hello World' type='Text' unnamed='1' visible='true'}")
|
||||
test.log("Clicking 'Hello World' Text to close QmlApplicationViewer")
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
workingDir = None
|
||||
templateDir = None
|
||||
|
||||
def main():
|
||||
global workingDir,templateDir
|
||||
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection")
|
||||
qmlFile = os.path.join("qml", "textselection.qml")
|
||||
if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
|
||||
return
|
||||
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()
|
||||
templateDir = prepareTemplate(sourceExample)
|
||||
projectName = createNewQtQuickApplication(workingDir, None, os.path.join(templateDir, qmlFile))
|
||||
projectName = createNewQtQuickApplication(workingDir, None, os.path.join(prepareTemplate(sourceExample), qmlFile))
|
||||
# wait for parsing to complete
|
||||
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
|
||||
test.log("Building project")
|
||||
@@ -50,12 +45,3 @@ def subprocessFunction():
|
||||
typeLines(textEdit, "This text is entered by Squish...")
|
||||
test.log("Closing QmlApplicationViewer")
|
||||
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))
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
workingDir = None
|
||||
|
||||
def main():
|
||||
global workingDir
|
||||
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()
|
||||
projectName = createNewQtQuickUI(workingDir)
|
||||
test.log("Running project")
|
||||
@@ -26,11 +24,3 @@ def main():
|
||||
if result:
|
||||
logApplicationOutput()
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
workingDir = None
|
||||
|
||||
def main():
|
||||
global workingDir
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
# using a temporary directory won't mess up an eventually exisiting
|
||||
workingDir = tempDir()
|
||||
createNewQmlExtension(workingDir)
|
||||
# using a temporary directory won't mess up a potentially existing
|
||||
createNewQmlExtension(tempDir())
|
||||
# wait for parsing to complete
|
||||
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)")
|
||||
test.log("Building project")
|
||||
@@ -16,11 +12,3 @@ def main():
|
||||
checkCompile()
|
||||
checkLastBuild()
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user