diff --git a/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri index b3bf465d35a..a429c04bf33 100644 --- a/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri +++ b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri @@ -15,4 +15,9 @@ symbian { } LIBS += -L$$PWD -l$$LIBNAME +symbian { + # Work around bug in gcce toolchain (QTCREATORBUG-5589) + LIBS += -lusrt2_2.lib +} + DEFINES += QMLJSDEBUGGER diff --git a/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pro b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pro index a6d841e1f77..f7585e1478b 100644 --- a/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pro +++ b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pro @@ -2,7 +2,7 @@ # It enables debugging of Qt Quick applications TEMPLATE = lib -CONFIG += staticlib +CONFIG += staticlib create_prl QT += declarative script DEFINES += BUILD_QMLJSDEBUGGER_STATIC_LIB diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp index 02afe82c24e..a0a9957fb48 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp @@ -395,9 +395,44 @@ void NodeInstanceServer::setupDummyData(const QUrl &fileUrl) { if (!fileUrl.isEmpty()) { QStringList dummyDataDirectoryList = dummyDataDirectories(QFileInfo(fileUrl.toLocalFile()).path()); - foreach (const QString &dummyDataDirectory, dummyDataDirectoryList) + foreach (const QString &dummyDataDirectory, dummyDataDirectoryList) { loadDummyDataFiles(dummyDataDirectory); + loadDummyDataContext(dummyDataDirectory); + } } + + if (m_dummyContextObject.isNull()) + setupDefaultDummyData(); +} + +void NodeInstanceServer::setupDefaultDummyData() +{ + QDeclarativeComponent component(engine()); + QByteArray defaultContextObjectArray("import QtQuick 1.0\n" + "import QmlDesigner 1.0\n" + "DummyContextObject {\n" + " parent: QtObject {\n" + " property real width: 360\n" + " property real height: 640\n" + " }\n" + "}\n"); + + component.setData(defaultContextObjectArray, fileUrl()); + m_dummyContextObject = component.create(); + + if (component.isError()) { + QList errors = component.errors(); + foreach (const QDeclarativeError &error, errors) { + qWarning() << error; + } + } + + if (m_dummyContextObject) { + qWarning() << "Loaded default dummy context object."; + m_dummyContextObject->setParent(this); + } + + refreshBindings(); } QList NodeInstanceServer::setupInstances(const CreateSceneCommand &command) @@ -775,7 +810,11 @@ void NodeInstanceServer::setInstanceAuxiliaryData(const PropertyValueContainer & if (auxiliaryContainer.instanceId() == 0 && (auxiliaryContainer.name() == QLatin1String("width") || auxiliaryContainer.name() == QLatin1String("height"))) { - setInstancePropertyVariant(auxiliaryContainer); + if (!auxiliaryContainer.value().isNull()) { + setInstancePropertyVariant(auxiliaryContainer); + } else { + rootNodeInstance().resetProperty(auxiliaryContainer.name()); + } } } @@ -1074,13 +1113,19 @@ void NodeInstanceServer::loadDummyDataFiles(const QString& directory) { QDir dir(directory, "*.qml"); QList filePathList = dir.entryInfoList(); + foreach (const QFileInfo &qmlFileInfo, filePathList) { + loadDummyDataFile(qmlFileInfo); + } +} + +void NodeInstanceServer::loadDummyDataContext(const QString& directory) +{ + QDir dir(directory+"/context", "*.qml"); + QList filePathList = dir.entryInfoList(); QString baseName = QFileInfo(fileUrl().toLocalFile()).completeBaseName(); foreach (const QFileInfo &qmlFileInfo, filePathList) { - if (!qmlFileInfo.completeBaseName().contains("_dummycontext")) { - loadDummyDataFile(qmlFileInfo); - } else if (qmlFileInfo.completeBaseName() == baseName+"_dummycontext") { + if (qmlFileInfo.completeBaseName() == baseName) loadDummyContextObjectFile(qmlFileInfo); - } } } diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.h index ea24316fda1..4b8ac356135 100644 --- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.h @@ -172,6 +172,7 @@ protected: virtual void initializeView(const QVector &importVector) = 0; virtual QList setupScene(const CreateSceneCommand &command) = 0; void loadDummyDataFiles(const QString& directory); + void loadDummyDataContext(const QString& directory); void loadDummyDataFile(const QFileInfo& fileInfo); void loadDummyContextObjectFile(const QFileInfo& fileInfo); static QStringList dummyDataDirectories(const QString& directoryPath); @@ -192,6 +193,7 @@ protected: void setupFileUrl(const QUrl &fileUrl); void setupImports(const QVector &container); void setupDummyData(const QUrl &fileUrl); + void setupDefaultDummyData(); QList setupInstances(const CreateSceneCommand &command); QList allSubContextsForObject(QObject *object); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/main.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/main.cpp index f1b1c6b90e5..12190b981b6 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/main.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/main.cpp @@ -49,14 +49,21 @@ int main(int argc, char *argv[]) { QApplication application(argc, argv); - if (application.arguments().count() != 4) - return -1; - QCoreApplication::setOrganizationName("Nokia"); QCoreApplication::setOrganizationDomain("nokia.com"); QCoreApplication::setApplicationName("Qml2Puppet"); QCoreApplication::setApplicationVersion("1.0.0"); + if (application.arguments().count() == 2 && application.arguments().at(1) == "--version") { + qDebug() << QCoreApplication::applicationVersion(); + return 0; + } + + if (application.arguments().count() != 4) + return -1; + + + #ifdef ENABLE_QT_BREAKPAD QtSystemExceptionHandler systemExceptionHandler; #endif diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp index 7354f2303ee..ff6e32eda4f 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp @@ -146,4 +146,45 @@ void Qt4NodeInstanceServer::refreshBindings() engine()->rootContext()->setContextProperty(QString("__%1").arg(counter++), 0); // refreshing bindings } +void Qt4NodeInstanceServer::changeAuxiliaryValues(const ChangeAuxiliaryCommand &command) +{ + NodeInstanceServer::changeAuxiliaryValues(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::changePropertyValues(const ChangeValuesCommand &command) +{ + NodeInstanceServer::changePropertyValues(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::changePropertyBindings(const ChangeBindingsCommand &command) +{ + NodeInstanceServer::changePropertyBindings(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::removeProperties(const RemovePropertiesCommand &command) +{ + NodeInstanceServer::removeProperties(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::refreshScreenObject() +{ + if (declarativeView()) { + QObject *screen = rootContext()->contextProperty("screen").value(); + if (screen) { + screen->metaObject()->invokeMethod(screen, + "privateSetDisplay", + Q_ARG(int, rootNodeInstance().size().width()), + Q_ARG(int, rootNodeInstance().size().height()), + Q_ARG(qreal, 210)); // TODO: dpi should be setable + } + } +} } // QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h index 67ee32102e9..06bc8081a71 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h @@ -53,12 +53,18 @@ public: QDeclarativeEngine *engine() const; void refreshBindings(); + void changeAuxiliaryValues(const ChangeAuxiliaryCommand &command); + void changePropertyValues(const ChangeValuesCommand &command); + void changePropertyBindings(const ChangeBindingsCommand &command); + void removeProperties(const RemovePropertiesCommand &command); + protected: void initializeView(const QVector &importVector); void resizeCanvasSizeToRootItemSize(); void resetAllItems(); bool nonInstanceChildIsDirty(QGraphicsObject *graphicsObject) const; QList setupScene(const CreateSceneCommand &command); + void refreshScreenObject(); private: QWeakPointer m_declarativeView; diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/main.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/main.cpp index b558031aa55..aa9669bd6e8 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/main.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/main.cpp @@ -56,14 +56,20 @@ int main(int argc, char *argv[]) QApplication application(argc, argv); - if (application.arguments().count() != 4) - return -1; - QCoreApplication::setOrganizationName("Nokia"); QCoreApplication::setOrganizationDomain("nokia.com"); QCoreApplication::setApplicationName("QmlPuppet"); QCoreApplication::setApplicationVersion("1.1.0"); + + if (application.arguments().count() == 2 && application.arguments().at(1) == "--version") { + qDebug() << QCoreApplication::applicationVersion(); + return 0; + } + + if (application.arguments().count() != 4) + return -1; + #ifdef ENABLE_QT_BREAKPAD QtSystemExceptionHandler systemExceptionHandler; #endif diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorGroupBox.qml index bf07ef2cd45..a023b5666e8 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorGroupBox.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorGroupBox.qml @@ -370,6 +370,9 @@ QExtGroupBox { } } + QWidget { + + } } } } diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro index 807976c84c9..0305d7377b0 100644 --- a/share/qtcreator/static.pro +++ b/share/qtcreator/static.pro @@ -95,7 +95,8 @@ DATA_DIRS = \ DATA_FILES_SRC = \ externaltools/lrelease.xml \ externaltools/lupdate.xml \ - externaltools/sort.xml + externaltools/sort.xml \ + externaltools/qmlviewer.xml unix { macx:DATA_FILES_SRC += externaltools/vi_mac.xml else:DATA_FILES_SRC += externaltools/vi.xml diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 530ede6c4e7..e4c5c7ec334 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -5284,7 +5284,7 @@ on slow machines. In this case, the value should be increased. Git::Internal::BranchDialog Would you like to delete the <b>unmerged</b> branch '%1'? - Möchten Sie den Branch '%1' löschen? Es wurde noch keine <b>keine</b> Merge-Operation durchgeführt? + Möchten Sie den Branch '%1' löschen? Es wurde noch <b>keine</b> Merge-Operation durchgeführt? Delete Branch diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts index c1fb85c3438..c4dde1ae163 100644 --- a/share/qtcreator/translations/qtcreator_ru.ts +++ b/share/qtcreator/translations/qtcreator_ru.ts @@ -1,6 +1,13 @@ + + AbstractLinuxDeviceDeployStep + + No valid device set. + Подходящее устройство не задано. + + Analyzer @@ -11,8 +18,27 @@ Analyzer::AnalyzerManager - Start &Analyzer - Запустить &анализатор + Tool "%1" started... + Утилита «%1» запущена... + + + Tool "%1" finished, %n issues were found. + + Утилита «%1» завершилась, выявлена %n проблема. + Утилита «%1» завершилась, выявлено %n проблемы. + Утилита «%1» завершилась, выявлено %n проблем. + + + + Tool "%1" finished, no issues were found. + Утилита «%1» завершилась, проблем не выявлено. + + + + Analyzer::AnalyzerManagerPrivate + + &Analyze + &Анализ Start @@ -22,42 +48,54 @@ Stop Остановить + + Analyzer Toolbar + Панель анализатора + + + <html><head/><body><center><i>%1</i> is still running. You have to quit the Analyzer before being able to run another instance.<center/><center>Force it to quit?</center></body></html> + <html><head/><body><center><i>%1</i> ещё выполняется. Необходимо завершить анализатор для запуска другого экземпляра.</center><center>Желаете завершить?</center></body></html> + + + Analyzer Still Running + Анализатор ещё работает + + + Stop Active Run + Остановить текущую работу + + + Keep Running + Продолжить выполнение + Debug Отладка Release - Выпуск + Релиз Run %1 in %2 Mode? Выполнить %1 в режиме %2? - <html><head/><body><p>You are trying to run the tool '%1' on an application in %2 mode. The tool is designed to be used in %3 mode.</p><p>Do you want to continue and run it in %2 mode?</p></body></html> - <html><head/><body><p>Попытка запустить утилиту «%1» для приложения в режиме %2. Она разработана для использования в режиме %3.</p><p>Продолжить запуск в режиме %2?</p></body></html> - - - Tool '%1' started... - Утилита «%1» запущена... - - - Tool '%1' finished, %n issues were found. - - Утилита «%1» завершилась, выявлена %n проблема. - Утилита «%1» завершилась, выявлено %n проблемы. - Утилита «%1» завершилась, выявлено %n проблем. - - - - Tool '%1' finished, no issues were found. - Утилита «%1» завершилась, проблем не выявлено. + <html><head/><body><p>You are trying to run the tool "%1" on an application in %2 mode. The tool is designed to be used in %3 mode.</p><p>Do you want to continue and run it in %2 mode?</p></body></html> + <html><head/><body><p>Попытка выполнить утилиту «%1» для приложения в режиме %2. Утилита разработана для использования в режиме %3.</p><p>Выполнить её запуск в режиме %2?</p></body></html> &Do not ask again &Больше не спрашивать + + An analysis is still in progress. + Производится анализ. + + + No analyzer tool selected. + Инструмент анализа не выбран. + Analyzer::AnalyzerProjectSettings @@ -66,50 +104,35 @@ Настройки анализатора + + Analyzer::AnalyzerRunConfigWidget + + Analyzer Settings + Настройки анализатора + + + Available settings: %1 + Доступные настройки: %1 + + + + Analyzer::AnalyzerRunControl + + Build Issues + Сообщения сборки + + Analyzer::IAnalyzerTool - Debug - Отладка - - - Release - Выпуск - - - - Analyzer::Internal - - %1 in %2 - %1 в %2 - - - in %1 - в %1 - - - - Analyzer::Internal::AbstractMemcheckSettings - - Memory Analysis - Анализ памяти + (Remote) + (Удалённо) Analyzer::Internal::AnalyzerMode Analyze - Анализировать - - - - Analyzer::Internal::AnalyzerOutputPane - - No current analysis tool - Текущий интрументарий анализа отсутствует - - - Analysis Анализ @@ -122,168 +145,54 @@ - Analyzer::Internal::AnalyzerRunConfigWidget + Analyzer::StartRemoteDialog - Analyzer Settings - Настройки анализатора + Start Debugger + Запуск отладчика - Available settings: %1 - Доступные настройки: %1 - - - - Analyzer::Internal::AnalyzerRunControl - - Build Issues - Сообщения сборки - - - - Analyzer::Internal::AnalyzerRunControlFactory - - Analyzer - Анализатор - - - - Analyzer::Internal::MemcheckConfigWidget - - Valgrind Suppression File (*.supp);;All Files (*) - Файл игнорирований Valgrind (*.supp);;Все файлы (*) - - - - Analyzer::Internal::MemcheckEngine - - Analyzing Memory - Анализ памяти + Remote + Сервер - Analyzing memory of %1 - Анализ памяти %1 - - - - Analyzer::Internal::MemcheckErrorView - - Copy Selection - Копировать выбранное + Host: + Хост: - Suppress Error - Игнорировать ошибку - - - - Analyzer::Internal::MemcheckTool - - Analyze Memory - Анализировать память + User: + Пользователь: - Error Filter - Фильтр ошибок + Password: + Пароль: - Definite Memory Leaks - Определённые утечки памяти + Target + Цель - Possible Memory Leaks - Возможные утечки памяти + Executable: + Программа: - Use of Uninitialized Memory - Использование неинициализированной памяти + Arguments: + Параметры: - Invalid Frees - Неверные освобождения + You need to pass either a password or an SSH key. + Необходимо указать или пароль, или ключ SSH. - These suppression files were used in the last memory analyzer run. - Эти файлы были использованы при последнем запуске анализатора. + Port: + Порт: - External Errors - Внешние ошибки + Private key: + Закрытый ключ: - Show issues originating outside currently opened projects. - Показывать события, возникшие вне открытых проектов. - - - Suppressions - Игнорирования - - - Internal Error - Внутренняя ошибка - - - Error occurred parsing valgrind output: %1 - Возникла ошибка при разборе вывода valgrind: %1 - - - - Analyzer::Internal::SuppressionDialog - - Select Suppression File - Выбор файла игнорирований - - - Save Suppression - Сохранить игнорирования - - - - Analyzer::Internal::ValgrindConfigWidget - - Valgrind Command - Команда Valgrind - - - - Analyzer::Internal::ValgrindEngine - - Valgrind options: %1 - Параметры Valgrind: %1 - - - Working directory: %1 - Рабочик каталог: %1 - - - Command-line arguments: %1 - Аргументы командной строки: %1 - - - ** Analysing finished ** - ** Анализ завершён ** - - - ** Error: "%1" could not be started: %2 ** - ** Ошибка: Не удалось запустить «%1»: %2 ** - - - ** Error: no valgrind executable set ** - ** Error: программа vlagrind не задана ** - - - ** Process Terminated ** - ** Процесс завершился ** - - - Application Output - Вывод приложения - - - - Analyzer::Internal::ValgrindSettings - - Generic Settings - Общие настройки + Working directory: + Рабочий каталог: @@ -328,8 +237,12 @@ Невозможно загрузить ядро: %1 - Unable to send command line arguments to the already running instance. It appears to be not responding. - Невозможно отправить параметры командной строки запущенному процессу. Похоже, процесс не отвечает. + Could not send message + Не удалось отправить сообщение + + + Unable to send command line arguments to the already running instance.It appears to be not responding. Do you want to start a new instance of Creator? + Невозможно отправить параметры командной строки запущенному процессу. Похоже, он не отвечает. Желаете запустить ещё один экземпляр Qt Creator? Could not find 'Core.pluginspec' in %1 @@ -358,6 +271,14 @@ &Tool chain: &Инструментарий: + + Override &Start script: + Особый сценарий &запуска: + + + Sysroot + + AttachExternalDialog @@ -377,24 +298,68 @@ BINEditor::BinEditor - Decimal unsigned value (little endian): %1 -Decimal unsigned value (big endian): %2 -Decimal signed value (little endian): %3 -Decimal signed value (big endian): %4 - Десятичное беззнаковое (little endian): %1 -Десятичное беззнаковое (big endian): %2 -Десятичное знаковое (little endian): %3 -Десятичное знаковое (big endian): %4 + Memory at 0x%1 + Память с 0x%1 - Previous decimal unsigned value (little endian): %1 -Previous decimal unsigned value (big endian): %2 -Previous decimal signed value (little endian): %3 -Previous decimal signed value (big endian): %4 - Предыдущее десятичное беззнаковое значение (обратный порядок байт): %1 -Предыдущее десятичное беззнаковое значение (прямой порядок байт): %2 -Предыдущее десятичное знаковое значение (обратный порядок байт): %3 -Предыдущее десятичное знаковое значение (прямой порядок байт): %4 + Decimal&nbsp;unsigned&nbsp;value: + Десятичное&nbsp;беззнаковое&nbsp;значение: + + + Decimal&nbsp;signed&nbsp;value: + Десятичное&nbsp;значение&nbsp;со&nbsp;знаком: + + + Previous&nbsp;decimal&nbsp;unsigned&nbsp;value: + Предыдущее&nbsp;десятичное&nbsp;беззнаковое&nbsp;значение: + + + Previous&nbsp;decimal&nbsp;signed&nbsp;value: + Предыдущее&nbsp;десятичное&nbsp;значение&nbsp;со&nbsp;знаком: + + + %1-bit&nbsp;Integer&nbsp;Type + %1-битный&nbsp;целый&nbsp;тип + + + Little Endian + + + + Big Endian + + + + Binary&nbsp;value: + Двоичное&nbsp;значение: + + + Octal&nbsp;value: + Восмеричное&nbsp;значение: + + + Previous&nbsp;binary&nbsp;value: + Предыдущее двоичное&nbsp;значение: + + + Previous&nbsp;octal&nbsp;value: + Предыдущее восмеричное&nbsp;значение: + + + <i>double</i>&nbsp;value: + Значение&nbsp;типа&nbsp;<i>double</i>: + + + Previous <i>double</i>&nbsp;value: + Предыдущее значение&nbsp;типа&nbsp;<i>double</i>: + + + <i>float</i>&nbsp;value: + Значение&nbsp;типа&nbsp;<i>float</i>: + + + Previous <i>float</i>&nbsp;value: + Предыдущее значение&nbsp;типа&nbsp;<i>float</i>: Copying Failed @@ -440,6 +405,41 @@ Previous decimal signed value (big endian): %4 &Повторить + + BaseQtVersion + + Name: + Название: + + + Invalid Qt version + Неверный профиль Qt + + + ABI: + + + + Source: + Исходники: + + + mkspec: + + + + qmake: + + + + Default: + По умолчанию: + + + Version: + Версия: + + Bazaar::Internal::BazaarCommitPanel @@ -450,12 +450,6 @@ Previous decimal signed value (big endian): %4 Branch: Ветка: - - Perform a local commit in a bound branch. -Local commits are not pushed to the master branch until a normal commit is performed - Осуществлять локальную фиксацию в ветку. -Локальные фиксации не отправляются в основную ветку при выполнении обычных фиксаций - Local commit Локальная фиксация @@ -476,6 +470,12 @@ Local commits are not pushed to the master branch until a normal commit is perfo Fixed bugs: Исправленные ошибки: + + Perform a local commit in a bound branch. +Local commits are not pushed to the master branch until a normal commit is performed. + Осуществлять локальную фиксацию в ветку. +Локальные фиксации не отправляются в основную ветку при выполнении обычных фиксаций. + Bazaar::Internal::BazaarControl @@ -484,6 +484,17 @@ Local commits are not pushed to the master branch until a normal commit is perfo + + Bazaar::Internal::BazaarDiffParameterWidget + + Ignore whitespace + Пропускать пробелы + + + Ignore blank lines + Пропускать пустые строки + + Bazaar::Internal::BazaarEditor @@ -618,8 +629,8 @@ Local commits are not pushed to the master branch until a normal commit is perfo Фиксировать - Diff Selected Files - Сравнить выбранные файлы + Diff &Selected Files + &Сравнить выбранные файлы &Undo @@ -668,20 +679,10 @@ Local commits are not pushed to the master branch until a normal commit is perfo Options Параметры - - Create a stacked branch referring to the source branch. -The new branch will depend on the availability of the source branch for all operations - Сделать многоярусную ветку, ссылающуюся на ветку исходников. -Новая ветка будет зависеть от доступности для всех операций исходной ветки - Stacked Многоярусность - - Do not use a shared repository, even if available - Не использовать общее хранилище, даже если доступно - Standalone Автономная работа @@ -690,26 +691,14 @@ The new branch will depend on the availability of the source branch for all oper Bind new branch to source location Привязать новую ветку к размещению исходной - - Switch the checkout in the current directory to the new branch - Переключить рабочую копию в текущем каталоге на новую ветку - Switch checkout Переключить рабочую копию - - Hard-link working tree files where possible - По возможности делать жёсткие ссылки в рабочей копии - Hardlink Жёсткие ссылки - - Create a branch without a working-tree - Создать ветку без рабочей копии - No working-tree Без рабочей копии @@ -718,16 +707,38 @@ The new branch will depend on the availability of the source branch for all oper Revision: Ревизия: - - By default, branch will fail if the target directory exists, but does not already have a control directory. -This flag will allow branch to proceed - По умолчанию создание ветки завершится ошибкой, если каталог существует, -но не находится под контролем. Этот флаг позволяет обойти ограничение - Use existing directory Использовать существующий каталог + + By default, branch will fail if the target directory exists, but does not already have a control directory. +This flag will allow branch to proceed. + По умолчанию создание ветки завершится ошибкой, если каталог существует, +но не находится под контролем. Этот флаг позволяет обойти ограничение. + + + Create a stacked branch referring to the source branch. +The new branch will depend on the availability of the source branch for all operations. + Сделать многоярусную ветку, ссылающуюся на ветку исходников. +Новая ветка будет зависеть от доступности для всех операций исходной ветки. + + + Do not use a shared repository, even if available. + Не использовать общее хранилище, даже если доступно. + + + Switch the checkout in the current directory to the new branch. + Переключить рабочую копию в текущем каталоге на новую ветку. + + + Hard-link working tree files where possible. + По возможности делать жёсткие ссылки в рабочей копии. + + + Create a branch without a working-tree. + Создать ветку без рабочей копии. + Bazaar::Internal::CloneWizard @@ -804,11 +815,6 @@ This flag will allow branch to proceed Log count: Количество отображаемых записей истории фиксаций: - - The number of recent commit logs to show, choose 0 to see all enteries - Количество отображаемых последних сообщений о фиксации, -выберите 0, чтобы видеть все - Timeout: Время ожидания: @@ -825,6 +831,11 @@ This flag will allow branch to proceed Bazaar + + The number of recent commit logs to show. Choose 0 to see all entries. + Количество отображаемых последних сообщений о фиксации, +выберите 0, чтобы видеть все. + Bazaar::Internal::OptionsPageWidget @@ -851,19 +862,10 @@ This flag will allow branch to proceed Remember specified location as default Запомнить указанное размещение, как умолчальное - - Ignore differences between branches and overwrite -unconditionally - Игнорировать отличия между ветками и перезаписывать - Overwrite Перезаписывать - - Create the path leading up to the branch if it does not already exist - Создавать родительские каталоги ветки, если они не существуют - Create prefix Создавать родительские каталоги @@ -872,27 +874,10 @@ unconditionally Revision: Ревизия: - - Perform a local pull in a bound branch. -Local pulls are not applied to the master branch - Производить локальное принятие в выбранную ветку. -Локальное принятие не применяется к основной ветке - Local Локально - - for example https://[user[:pass]@]host[:port]/[path] - например https://[имя[:пароль]@]адрес[:порт]/[путь] - - - By default, push will fail if the target directory exists, but does not already have a control directory. -This flag will allow push to proceed - По умолчанию, отправка завершится ошибкой, если каталог уже существует, -но не содержит управляющего подкаталога. -Этот флаг позволяет выполнить эту операцию - Use existing directory Использовать существующий каталог @@ -917,6 +902,32 @@ This flag will allow push to proceed Specify URL: Особый URL: + + For example: https://[user[:pass]@]host[:port]/[path] + Например: https://[имя[:пароль]@]адрес[:порт]/[путь] + + + Ignore differences between branches and overwrite +unconditionally. + Игнорировать отличия между ветками и перезаписывать. + + + By default, push will fail if the target directory exists, but does not already have a control directory. +This flag will allow push to proceed. + По умолчанию, отправка завершится ошибкой, если каталог уже существует, +но не содержит управляющего подкаталога. +Этот флаг позволяет выполнить эту операцию. + + + Create the path leading up to the branch if it does not already exist. + Создавать родительские каталоги ветки, если они не существуют. + + + Perform a local pull in a bound branch. +Local pulls are not applied to the master branch. + Производить локальное принятие в выбранную ветку. +Локальное принятие не применяется к основной ветке. + Bazaar::Internal::RevertDialog @@ -957,7 +968,7 @@ This flag will allow push to proceed Duration: - Длительность: + Продолжительность: Curve: @@ -1001,224 +1012,6 @@ This flag will allow push to proceed BehaviorSettingsWidget - - Tabs and Indentation - Табуляция и отступы - - - Insert &spaces instead of tabs - &Пробелы вместо табов - - - Ta&b size: - Размер &табуляции: - - - Automatically determine based on the nearest indented line (previous line preferred over next line) - Определять автоматически на основе соседних строк с отступами (предыдущая строка имеет приоритет перед следующей) - - - Based on the surrounding lines - На основе соседних строк - - - &Indent size: - Размер отст&упа: - - - Enable automatic &indentation - &Автоотступы - - - Backspace will go back one indentation level instead of one space. - Забой перемещает на позицию, а не на пробел назад. - - - &Backspace follows indentation - &Забой следует отступам - - - Block indentation style: - Стиль отступа блоков: - - - <html><head/><body> -Controls the indentation style of curly brace blocks. - -<ul> -<li>Exclude Braces: The braces are not indented. -<pre> -void foo() -{ - if (a) - { - bar(); - } -} -</pre> -</li> - -<li>Include Braces: The braces are indented. The contents of the block are on the same level as the braces. -<pre> -void foo() - { - if (a) - { - bar(); - } - } -</pre> -</li> - -<li>GNU Style: Indent the braces for blocks in statements. The contents are indented twice. -<pre> -void foo() -{ - if (a) - { - bar(); - } -} -</pre> -</li> -</ul></body></html> - <html><head/><body> -Управляет стилем отступов блоков в фигурных скобоках. - -<ul> -<li>Без скобок: скобки не сдвигаются. -<pre> -void foo() -{ - if (a) - { - bar(); - } -} -</pre> -</li> - -<li>Включая скобки: скобки сдвигаются, а содержимое блока на уровне скобок. -<pre> -void foo() - { - if (a) - { - bar(); - } - } -</pre> -</li> - -<li>Стиль GNU: скобки сдвигаются на размер оператора, а содержимое блока сдвигается дважды. -<pre> -void foo() -{ - if (a) - { - bar(); - } -} -</pre> -</li> -</ul></body></html> - - - Exclude Braces - Без скобок - - - Include Braces - Включая скобки - - - GNU Style - Стиль GNU - - - Tab key performs auto-indent: - Автоотступ по клавише TAB: - - - Never - Никогда - - - Always - Всегда - - - In Leading White Space - Перед текстом - - - Align continuation lines: - Выравнивание продолжений строк: - - - <html><head/><body> -Influences the indentation of continuation lines. - -<ul> -<li>Not At All: Do not align at all. Lines will only be indented to the current logical indentation depth. -<pre> -(tab)int i = foo(a, b -(tab)c, d); -</pre> -</li> - -<li>With Spaces: Always use spaces for alignment, regardless of the other indentation settings. -<pre> -(tab)int i = foo(a, b -(tab) c, d); -</pre> -</li> - -<li>With Regular Indent: Use tabs and/or spaces for alignment, as configured above. -<pre> -(tab)int i = foo(a, b -(tab)(tab)(tab) c, d); -</pre> -</li> -</ul></body></html> - <html><head/><body> -Влияет на отступы продолжений строк. - -<ul> -<li>Не выравнивать: вообще не выравнивать, строки сдвигаются только на текущий логический уровень. -<pre> -(tab)int i = foo(a, b -(tab)c, d); -</pre> -</li> - -<li>Пробелами: всегда использовать пробелы, вне зависимости от установок. -<pre> -(tab)int i = foo(a, b -(tab) c, d); -</pre> -</li> - -<li>Отступами: использовать табуляцию и/или пробелы, в зависимости от настроек выше. -<pre> -(tab)int i = foo(a, b -(tab)(tab)(tab) c, d); -</pre> -</li> -</ul></body></html> - - - Not At All - Не выравнивать - - - With Spaces - Пробелами - - - With Regular Indent - Отступами - Cleanup actions which are automatically performed right before the file is saved to disk. Операции очистки, автоматически выполняемые перед сохранением файла на диск. @@ -1311,6 +1104,17 @@ Influences the indentation of continuation lines. Включить масштабирование &колёсиком + + BinEditorFile + + Cannot open %1: %2 + Не удалось открыть %1: %2 + + + File Error + Ошибка файла + + BookmarkDialog @@ -1485,7 +1289,7 @@ Influences the indentation of continuation lines. Источник - Source Size + Source size Размер источника @@ -1545,6 +1349,17 @@ Influences the indentation of continuation lines. &Изменить + + CMakeProjectManager::Internal::CMakeEditor + + Changes to cmake files are shown in the project tree after building. + Изменения в файлах cmake будут отображены в дереве проекта после сборки. + + + Build now + Собрать + + CMakeProjectManager::Internal::CMakeManager @@ -1577,6 +1392,10 @@ Influences the indentation of continuation lines. Build Environment Среда сборки + + The executable is not built by the current buildconfiguration + Приложение не собрано текущей конфигурацией сборки + (disabled) (отключено) @@ -1600,6 +1419,10 @@ Influences the indentation of continuation lines. Working directory: Рабочий каталог: + + Run in Terminal + Запускать в терминале + Debugger: Отладчик: @@ -1635,10 +1458,6 @@ Influences the indentation of continuation lines. Run CMake Запуск CMake - - Arguments - Параметры - The directory %1 does not contain a cbp file. Qt Creator needs to create this file by running CMake. Some projects require command line arguments to the initial CMake call. Каталог %1 не содержит файла cbp. Qt Creator создаст этот файл путём запуска CMake. Некоторые проекты требуют указания дополнительных параметров командной строки для первого запуска CMake. @@ -1661,7 +1480,11 @@ Influences the indentation of continuation lines. MinGW Generator (%1) - Генератор MinGW (%1) + Генератор для MinGW (%1) + + + Unix Generator (%1) + Генератор для Unix (%1) No valid cmake executable specified. @@ -1673,7 +1496,7 @@ Influences the indentation of continuation lines. NMake Generator (%1) - Генератор NMake (%1) + Генератор для NMake (%1) Please specify the path to the cmake executable. No cmake executable was found in the path. @@ -1687,6 +1510,14 @@ Influences the indentation of continuation lines. The path %1 is not a valid cmake. Путь %1 не является корректным путём к программе cmake. + + Arguments: + Параметры: + + + Generator: + Генератор: + The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used tool chain here and rerun CMake. Or simply finish the wizard directly. Каталог %1 уже содержит достаточно свежий файл cbp. Можно передать специальные параметры или сменить используемый инструментарий с последующим перезапуском CMake. Либо просто завершить работу с мастером. @@ -1966,8 +1797,8 @@ Influences the indentation of continuation lines. Фиксировать - Diff Selected Files - Сравнить выделенные файлы + Diff &Selected Files + &Сравнить выбранные файлы &Undo @@ -2017,10 +1848,6 @@ Influences the indentation of continuation lines. There are no modified files. Нет изменённых файлов. - - Cannot create temporary file: %1 - Не удалось создать временный файл: %1 - Would you like to discard your changes to the repository '%1'? Желаете откатить изменения хранилища «%1»? @@ -2091,6 +1918,17 @@ Influences the indentation of continuation lines. Хранилище: + + CVS::Internal::CvsDiffParameterWidget + + Ignore whitespace + Пропускать пробелы + + + Ignore blank lines + Пропускать пустые строки + + CVS::Internal::SettingsPage @@ -2185,6 +2023,41 @@ Influences the indentation of continuation lines. Обзор классов + + Coda::Session + + CPU: v%1.%2%3%4 + CPU description of an S60 device %1 major verison, %2 minor version %3 real name of major verison, %4 real name of minor version + Процессор: v%1.%2%3%4 + + + CODA: v%1.%2 CODA protocol: v%3.%4 + CODA: v%1.%2 протокол CODA: v%3.%4 + + + %1, %2%3%4, %5 + s60description description of an S60 device %1 CPU description, %2 endianness %3 default type size (if any), %4 float size (if any) %5 Coda version + %1, %2%3%4, %5 + + + big endian + big endian + + + little endian + little endian + + + , type size: %1 + will be inserted into s60description + , размер целого: %1 + + + , float size: %1 + will be inserted into s60description + , размер float: %1 + + CodePaster @@ -2271,10 +2144,6 @@ Influences the indentation of continuation lines. Please configure a path. Необходимо настроить путь. - - Unable to open a file for writing in %1: %2 - Не удалось открыть файл для записи в %1: %2 - Pasted: %1 Вставлен: %1 @@ -2321,6 +2190,14 @@ Influences the indentation of continuation lines. Подключение к %1... + + CodePaster::PasteBinDotComProtocol + + <Unknown> + Unknown user of paste. + <Неизвестный> + + CodePaster::PasteBinDotComSettings @@ -2396,12 +2273,42 @@ Influences the indentation of continuation lines. Скопировать ссылку в буфер обмена + + CodeStyleSettingsPanel + + Code Style Settings + Настройки стиля кода + + + + CodeStyleSettingsPanelFactory + + Code Style Settings + Настройки стиля кода + + ColorGroupBox Color editor Редактор цвета + + Hue + Тон + + + Saturation + Насыщенность + + + Brightness + Яркость + + + Alpha + Альфа + ColorTypeButtons @@ -2409,14 +2316,26 @@ Influences the indentation of continuation lines. Solid color Сплошной цвет + + Solid color (only editable in base state) + Сплошной цвет (меняется только в исходном состоянии) + Gradient Градиент + + Gradient (only editable in base state) + Градиент (меняется только в исходном состоянии) + Transparent Прозрачность + + Transparent (only editable in base state) + Прозрачность (меняется только в исходном состоянии) + CommandMappings @@ -2471,10 +2390,6 @@ Influences the indentation of continuation lines. CommonOptionsPage - - Checking this will populate the source file view automatically but might slow down debugger startup considerably. - Включение приведёт к автоматическому заполнению просмотра файла исходных текстов, но может замедлить процесс запуска отладчика. - Populate source file view automatically Автоматически заполнять представление исходных текстов @@ -2483,10 +2398,6 @@ Influences the indentation of continuation lines. Use alternating row colors in debug views Чередование цвета строк в представлении отладчика - - Maximal stack depth: - Максимальная глубина стека: - <unlimited> <бесконечна> @@ -2523,6 +2434,22 @@ Influences the indentation of continuation lines. Behavior Поведение + + Debugger font size follows main editor + Размер шрифта отладчика соответствует редактору + + + Change the font size in the debugger views when the font size in the main editor changes. + Менять размер шрифта в окне отладчика при изменении его в основном окне редактора. + + + Populate the source file view automatically. This might slow down debugger startup considerably. + Автоматическое заполнение просмотра файлов исходных текстов. Может замедлить процесс запуска отладчика. + + + Maximum stack depth: + Максимальная глубина стека: + CommonSettingsPage @@ -2538,28 +2465,16 @@ Influences the indentation of continuation lines. An executable which is called with the submit message in a temporary file as first argument. It should return with an exit != 0 and a message on standard error to indicate failure. Программа, которой передаётся файл сообщения о фиксации в качестве первого аргумента. Она должна завершиться с кодом неравным нулю и сообщением в стандартный поток ошибок в случае обнаружения ошибки. - - Submit message check script: - Скрипт проверки сообщений: - A file listing user names and email addresses in a 4-column mailmap format: name <email> alias <email> Файл списка пользователей и их email в 4-х столбцовом формате mailmap: имя <email> алиас <email> - - User/alias configuration file: - Файл настройки пользователей: - A simple file containing lines with field names like "Reviewed-By:" which will be added below the submit editor. Простой файл, содержащий строки типа «Reviewed-By:», которые будут добавлены ниже редактора сообщения. - - User fields configuration file: - Файл настройки полей: - Specifies a command that is executed to graphically prompt for a password, should a repository require SSH-authentication (see documentation on SSH and the environment variable SSH_ASKPASS). @@ -2567,16 +2482,28 @@ should a repository require SSH-authentication (see documentation on SSH and the требующих авторизацию по SSH (см. документацию к SSH и переменной среды SSH_ASKPASS). - SSH prompt command: - Команда запроса пароля SSH: + Submit message &check script: + &Скрипт проверки сообщений: + + + User/&alias configuration file: + &Файл настройки пользователей: + + + User &fields configuration file: + Файл &настройки полей: + + + &Patch command: + &Команда patch: + + + &SSH prompt command: + Команда &запроса пароля SSH: CompletionSettingsPage - - Automatically insert (, ) and ; when appropriate. - Автоматически вставлять «(», «)» и «;», когда потребуется. - &Automatically insert brackets &Автоматически вставлять скобки @@ -2629,6 +2556,10 @@ should a repository require SSH-authentication (see documentation on SSH and the Always Всегда + + Automatically insert brackets and semicolons when appropriate. + При необходимости автоматически вставлять скобки и точку с запятой. + ComponentNameDialog @@ -2778,6 +2709,10 @@ should a repository require SSH-authentication (see documentation on SSH and the All Files (*) Все файлы (*) + + Clear Menu + Очистить меню + Core::BaseFileWizard @@ -2785,14 +2720,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Unable to create the directory %1. Невозможно создать каталог %1. - - Unable to open %1 for writing: %2 - Невозможно открыть %1 для записи: %2 - - - Error while writing to %1: %2 - Ошибка при записи в %1: %2 - File Generation Failure Не удалось сгенерировать файл @@ -2810,7 +2737,7 @@ should a repository require SSH-authentication (see documentation on SSH and the [только для чтения] - [directory] + [folder] [каталог] @@ -2823,14 +2750,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Каталог проекта %1 содержит файлы, которые не могут быть перезаписаны: %2. - - The following files already exist in the directory %1: -%2. -Would you like to overwrite them? - Следующие файлы уже присутствуют в каталоге %1: -%2. -Желаете перезаписать их? - Core::CommandMappings @@ -2972,6 +2891,26 @@ Would you like to overwrite them? Y-coordinate of the current editor's upper left corner, relative to screen. Координата Y левого верхнего угла окна редактора относительно экрана. + + File Error + Ошибка файла + + + Cannot Open File + Не удалось открыть файл + + + Cannot open the file for editing with SCC. + Не удалось открыть файл для правки с помощью SCC. + + + Cannot Set Permissions + Не удалось задать права доступа + + + Cannot set permissions to writable. + Не удалось задать права доступа на запись. + Save %1 &As... Сохранить %1 &как... @@ -3008,26 +2947,10 @@ Would you like to overwrite them? Opening File Открытие файла - - Cannot open file %1! - Не удалось открыть файл %1! - Make writable Сделать записываемым - - Failed! - Не удалось! - - - Could not open the file for editing with SCC. - Не удалось открыть файл для правки с помощью SCC. - - - Could not set permissions to writable. - Не удалось разрешить запись. - Qt Creator @@ -3087,8 +3010,8 @@ Would you like to overwrite them? Настроить... - External - Внешние + &External + &Внешние Error while parsing external tool %1: %2 @@ -3101,6 +3024,10 @@ Would you like to overwrite them? Core::FileManager + + File Error + Ошибка файла + Overwrite? Перезаписать? @@ -3134,9 +3061,13 @@ Would you like to overwrite them? Сделать записываемым - Save as ... + Save as... Сохранить как... + + Cannot reload %1 + Не удалось перезагрузить %1 + Core::HelpManager @@ -3145,6 +3076,20 @@ Would you like to overwrite them? Вся + + Core::IFile + + File was restored from auto-saved copy. Use <i>Save</i> to confirm, or <i>Revert to Saved</i> to discard changes. + Файл был восстановлен из авто-сохранённой копии. Используйте <i>Сохранить</i> для подтверждения или <i>Возвратить сохранённую</i> для отказа от изменений. + + + + Core::InfoBarDisplay + + Close + Закрыть + + Core::Internal::CommandComboBox @@ -3159,28 +3104,6 @@ Would you like to overwrite them? Редактор - - Core::Internal::EditorView - - Placeholder - Заполнитель - - - Close - Закрыть - - - - Core::Internal::ExternalTool - - Could not open tool specification %1 for reading: %2 - Не удалось открыть для чтения спецификацию %1 утилиты: %2 - - - Could not write tool specification %1: %2 - Не удалось записать спецификацию утилиты %1: %2 - - Core::Internal::ExternalToolConfig @@ -3342,10 +3265,6 @@ Would you like to overwrite them? Core::Internal::GeneralSettings - - Reset to default - Сбросить к исходному состоянию - Terminal: Терминал: @@ -3414,12 +3333,44 @@ Would you like to overwrite them? Reset Сбросить + + Auto-save modified files + Автосохранение изменённых файлов + + + Interval: + Периодичность: + + + min + unit for minutes + мин + + + Automatically create temporary copies of modified files. If Qt Creator is restarted after a crash or power failure, it asks whether to recover the auto-saved content. + Автоматически создавать копии изменённых файлов. Если работа Qt Creator завершилась в результате краха или сбоя питания, то при перезапуске он предложит восстановить их содержимое. + + + Reset to default. + Color + Сбросить в исходное состояние. + + + Reset to default. + Terminal + Сбросить в исходное состояние. + + + Reset to default. + File Browser + Сбросить в исходное состояние. + Core::Internal::MainWindow Qt Creator - Qt Creator + &File @@ -3510,7 +3461,7 @@ Would you like to overwrite them? Вы&делить всё - &Go To Line... + &Go to Line... Пере&йти к строке... @@ -3790,6 +3741,21 @@ Would you like to overwrite them? Процессы + + Core::Internal::PromptOverwriteDialog + + Overwrite Existing Files + Перезаписать существующие файлы + + + The following files already exist in the folder +%1. +Would you like to overwrite them? + Следующие файлы уже имеются в каталоге +%1 +Желаете перезаписать их? + + Core::Internal::SaveItemsDialog @@ -3918,6 +3884,15 @@ Would you like to overwrite them? Показать боковую панель + + Core::OutputWindow + + Additional output omitted + + Дополнительный вывод опущен + + + Core::ScriptManager @@ -3993,14 +3968,6 @@ Note: This might remove the local file. Sort Alphabetically Сортировать по алфавиту - - This change cannot be undone. - Данное изменение невозможно отменить. - - - Yes, I know what I am doing. - Да, я знаю что делаю. - &Refactor &Рефакторинг @@ -4165,6 +4132,10 @@ Note: This might remove the local file. CppTools + + Code Style + Стиль кода + File Naming Именование файлов @@ -4174,6 +4145,14 @@ Note: This might remove the local file. C++ + + CppTools::CppToolsSettings + + Global C++ + Settings + Общие для С++ + + CppTools::Internal::CompletionSettingsPage @@ -4188,6 +4167,196 @@ Note: This might remove the local file. Классы + + CppTools::Internal::CppCodeStylePreferencesWidget + + Code style settings: + Настройки стиля кода: + + + + CppTools::Internal::CppCodeStyleSettingsPage + + Form + + + + General + Основное + + + Content + Содержимое + + + Indent + Отступы + + + "public", "protected" and +"private" within class body + «public», «protected» и +«private» внутри тела класса + + + Declarations relative to "public", +"protected" and "private" + Объявления относительно +«public», «protected» и «private» + + + Statements within method body + Операции внутри тела метода + + + Statements within blocks + Операции внутри блока + + + Declarations within +"namespace" definition + Объявления внутри +тела «namespace» + + + Braces + Фигурные скобки + + + Indent Braces + Отступать при + + + Class declarations + Определении классов + + + Namespace declarations + Определении +пространств имён + + + Enum declarations + Определений перечислений + + + Method declarations + Определении методов + + + Blocks + Создании блоков + + + "switch" + «switch» + + + Indent within "switch" + Отступать внутри «switch» + + + "case" or "default" + Перед «case» и «default» + + + Statements relative to +"case" or "default" + Относительно «case» и +«default» перед операциями + + + Blocks relative to +"case" or "default" + Относительно «case» и +«default» перед блоками + + + "break" statement relative to +"case" or "default" + Относительно «case» и +«default» перед «break» + + + Alignment + Выравнивание + + + Align + Выравнивать + + + Align after assignments + После присваиваний + + + <html><head/><body> +The extra padding usually only affects if statement conditions. Without extra padding: +<pre> +if (a && + b) + c; +</pre> +With extra padding: +<pre> +if (a && + b) + c; +</pre> +</body></html> + <html><head/><body> +Дополнительные отступы действуют только условные выражения. Без них: +<pre> +if (a && + b) + c; +</pre> +С дополнительными отступами: +<pre> +if (a && + b) + c; +</pre> +</body></html> + + + Add extra padding to conditions +if they would align to the next line + Добавлять дополнительные +отступы в условиях, если при +перемещении на следующую строку + + + <html><head/><body> +Enables alignment to tokens after =, += etc. When the option is disabled, regular continuation line indentation will be used.<br> +<br> +With alignment: +<pre> +a = a + + b +</pre> +Without alignment: +<pre> +a = a + + b +</pre> +</body></html> + <html><head/><body> +Включает выравнивание по символу после =, += и т.п. Когда опция выключена используются обычные отступы.<br> +<br> +С выравниванием: +<pre> +a = a + + b +</pre> +Без выравнивания: +<pre> +a = a + + b +</pre> +</body></html> + + CppTools::Internal::CppCurrentDocumentFilter @@ -4221,14 +4390,6 @@ Note: This might remove the local file. Choose Location for New License Template File Выбор размещения нового файла шаблона лицензии - - Template write error - Ошибка записи шаблона - - - Cannot write to %1: %2 - Не удалось записать в %1: %2 - CppTools::Internal::CppFindReferences @@ -4240,8 +4401,8 @@ Note: This might remove the local file. CppTools::Internal::CppFunctionsFilter - Methods - Методы + Methods and functions + Методы и функции @@ -4253,11 +4414,6 @@ Note: This might remove the local file. CppTools::Internal::CppModelManager - - Scanning - Слово "сканирование" слишком длинное - Анализ - Parsing Разбор @@ -4278,13 +4434,6 @@ Note: This might remove the local file. Переключить заголовочный/исходный - - CppTools::Internal::FunctionArgumentWidget - - %1 of %2 - %1 из %2 - - CppTools::Internal::SymbolsFindFilter @@ -4374,9 +4523,13 @@ Note: This might remove the local file. Подключить заголовочный файл - Add local Declaration + Add Local Declaration Добавить локальное объявление + + Convert to Camel Case + Преобразовать в Верблюжий Регистр + Convert to Objective-C String Literal Преобразовать в строковый литерал Objective-C @@ -4397,10 +4550,6 @@ Note: This might remove the local file. Complete Switch Statement Завершить оператор Switch - - Convert to Camel Case ... - Преобразовать в Верблюжий Регистр... - Debugger @@ -4440,11 +4589,11 @@ Note: This might remove the local file. Завершение потока - Load Module: + Load module: Загрузка модуля: - Unload Module: + Unload module: Выгрузка модуля: @@ -4463,19 +4612,35 @@ Note: This might remove the local file. Этот отладчик не поддерживает пользовательский ввод. - Watchpoint %1 (%2) at 0x%3 triggered. + Data breakpoint %1 (%2) at %3 triggered. Сработала контрольная точка %1 (%2) на 0x%3. - Internal watchpoint %1 at 0x%2 triggered. + Internal data breakpoint %1 at %2 triggered. Сработала внутренняя контрольная точка %1 на 0x%2. - Watchpoint %1 (%2) at 0x%3 in thread %4 triggered. + Data breakpoint %1 (%2) at %3 in thread %4 triggered. Сработала контрольная точка %1 (%2) на 0x%3 в потоке %4. - Internal watchpoint %1 at 0x%2 in thread %3 triggered. + Internal data breakpoint %1 at %2 in thread %3 triggered. + Сработала внутренняя контрольная точка %1 на %2 в потоке %3. + + + Data breakpoint %1 (%2) at 0x%3 triggered. + Сработала контрольная точка %1 (%2) на 0x%3. + + + Internal data breakpoint %1 at 0x%2 triggered. + Сработала внутренняя контрольная точка %1 на 0x%2. + + + Data breakpoint %1 (%2) at 0x%3 in thread %4 triggered. + Сработала контрольная точка %1 (%2) на 0x%3 в потоке %4. + + + Internal data breakpoint %1 at 0x%2 in thread %3 triggered. Сработала внутренняя контрольная точка %1 на 0x%2 в потоке %3. @@ -4579,6 +4744,14 @@ Note: This might remove the local file. The application requires the debugger engine '%1', which is disabled. Приложению необходим отладчик «%1», отключённый в данный момент. + + Warning + Предупреждение + + + Some breakpoints cannot be handled by the debugger languages currently active, and will be ignored. + Будут пропущены точки останова, не поддерживаемые доступными отладчику языками. + The debugger engine '%1' is disabled. Отладчик «%1» отключён. @@ -4607,16 +4780,28 @@ Details: %3 Отладчик - Debugging starts - Отладка запущена + No executable specified. + + Программа не указана. + - Debugging has failed - Ошибка отладки + Debugging starts + + Отладка запущена + - Debugging has finished - Отладка завершена + Debugging has failed + + Ошибка отладки + + + + Debugging has finished + + Отладка завершена + A debugging session is still in progress. Terminating the session in the current state can leave the target in an inconsistent state. Would you still like to terminate it? @@ -4627,13 +4812,6 @@ Details: %3 Закрытие сессии отладки - - Debugger::Internal::AbstractDebuggerToolTipWidget - - Previous - Назад - - Debugger::Internal::AbstractGdbAdapter @@ -4697,6 +4875,14 @@ Details: %3 Select Core File Выбор файла дампа + + Select Sysroot + Выбор Sysroot + + + Select Startup Script + Выбор сценария запуска + Debugger::Internal::AttachExternalDialog @@ -4824,13 +5010,25 @@ Qt Creator не может подключиться к нему. Breakpoint at Function "main()" Точка останова на функции «main()» + + Watchpoint at Address + Точка наблюдения по адресу + + + Watchpoint at Expression + Точка наблюдения выражения + Unknown Breakpoint Type Неизвестный тип точки останова - Watchpoint at 0x%1 - Контрольная точка на 0x%1 + Data at 0x%1 + Данные с 0x%1 + + + Data at %1 + Данные с %1 Enabled @@ -4848,10 +5046,6 @@ Qt Creator не может подключиться к нему. Engine: Отладчик: - - Extra Information: - Дополнительно: - Corrected Line Number: Исправленный номер строки: @@ -4868,10 +5062,6 @@ Qt Creator не может подключиться к нему. Breakpoint Type: Тип точки останова: - - Watchpoint - Контрольная точка - State: Состояние: @@ -4912,6 +5102,10 @@ Qt Creator не может подключиться к нему. Command: Команда: + + Message: + Сообщение: + Condition: Условие: @@ -4981,19 +5175,19 @@ Qt Creator не может подключиться к нему. Delete Breakpoint - Удалить точку останова + Убрать точку останова Delete All Breakpoints - Удалить все точки останова + Убрать все точки останова Delete Breakpoints of "%1" - Удалить точки останова в файле «%1» + Убрать все точки останова из файла «%1» Delete Breakpoints of File - Удалить точки останова в файле + Убрать точки останова в файле Adjust Column Widths to Contents @@ -5017,66 +5211,74 @@ Qt Creator не может подключиться к нему. Disable Selected Breakpoints - Выключить выбранную точку останова + Деактивировать выбранные точки останова Enable Selected Breakpoints - Включить выбранную точку останова + Активировать выбранные точки останова Disable Breakpoint - Отключить точку останова + Деактивировать точку останова Enable Breakpoint - Включить точку останова + Активировать точку останова Add Breakpoint... - Добавить точку останова... + Установить точку останова... Add Breakpoint - Добавить точку останова + Установить точку останова Debugger::Internal::BreakpointDialog - File and Line Number - Файл и номер строки + File name and line number + Имя файла и номер строки - Function Name + Function name Название функции - Break when C++ Exception is Thrown + Break on memory address + Точка останова по адресу в памяти + + + Break when C++ exception is thrown Остановиться при возникновении исключения C++ - Break when C++ Exception is Caught + Break when C++ exception is caught Остановиться при поимке исключения C++ - Break when Function "main()" Starts - Остановиться при запуске функции «main()» + Break when function "main" starts + Остановиться при запуске функции «main» - Break when a new Process is Forked + Break when a new process is forked Остановиться при создании нового процесса - Break when a new Process is Executed + Break when a new process is executed Остановиться при запуске нового процесса - Break when a System Call is Executed + Break when a system call is executed Остановиться при выполнении системного вызова - Break on Data Access (Watchpoint) - Остановиться при доступе к данным (контрольная точка) + Break on data access at fixed address + Остановиться при доступе к данным с заданным адресом + + + Break on data access at address given by expression + Остановиться при доступе к данным, адрес которых задан выражением Specifying the module (base name of the library or executable) @@ -5101,10 +5303,6 @@ GDB позволяет указывать последовательность <li><i>Только имя файла</i>: Передаваться будет только имя файла. Наилучший вариант при сборке модулей в отдельном от исходников каталоге. По умолчанию для GDB, для которого использование полных путей приводит к замедлению работы.</li></ul> </body></html> - - Address - Адрес - Edit Breakpoint Properties Изменение свойств точки останова @@ -5181,6 +5379,14 @@ GDB позволяет указывать последовательность &Thread specification: &Спецификация потока: + + &Expression: + В&ыражение: + + + &Message: + С&ообщение: + Debugger::Internal::CacheDirectoryDialog @@ -5255,6 +5461,14 @@ GDB позволяет указывать последовательность Interrupting is not possible in remote sessions. Прерывание в удалённых сессиях невозможно. + + Trace point %1 (%2) in thread %3 triggered. + Сработала точка трассировки %1 (%2) в потоке %3. + + + Conditional breakpoint %1 (%2) in thread %3 triggered, examining expression '%4'. + Сработала условная точка останова %1 (%2) в потоке %3, изучается выражение «%4». + Malformed stop response received. Получен неверный ответ на требование остановки. @@ -5263,6 +5477,14 @@ GDB позволяет указывать последовательность Switching to main thread... Переключение в основной поток... + + Value %1 obtained from evaluating the condition of breakpoint %2, stopping. + При вычисление условия точки останова %2 получено значение %1, останавливаемся. + + + Value 0 obtained from evaluating the condition of breakpoint %1, continuing. + При вычисление условия точки останова %1 получено значение 0, продолжаем. + "Select Widget to Watch": Please stop the application first. «Выбрать виджет для слежения»: Сначала остановить приложение. @@ -5306,6 +5528,14 @@ GDB позволяет указывать последовательность Placeholder Запуск + + <html><head/><body><p>Use CDB's native console instead of Qt Creator's console for console applications. The native console does not prompt on application exit. It is suitable for diagnosing cases in which the application does not start up properly in Qt Creator's console and the subsequent attach fails.</p></body></html> + <html><head/><body><p>Использовать родную консоль CDB вместо встроенной Qt Creator. Но она не сообщает о завершении приложения, поэтому её имеет смысл использовать только для определения причины незапуска в консоли Qt Creator.</p></body></html> + + + Use CDB &console + Использовать &консоль CDB + Debugger::Internal::CdbSymbolPathListEditor @@ -5342,6 +5572,10 @@ GDB позволяет указывать последовательность Не удалось подключиться к адаптеру CODA сервера: + + Could not obtain device. + Не удалось получить устройство. + Debugger::Internal::Console @@ -5586,10 +5820,6 @@ GDB позволяет указывать последовательность Warning Внимание - - Cannot attach to PID 0 - Невозможно подключиться к PID 0 - Process %1 Процесс %1 @@ -5602,21 +5832,55 @@ GDB позволяет указывать последовательность Remote: "%1" Внешний: «%1» + + 0x%1 hit + Message tracepoint: Address hit. + Попадание в 0x%1 + + + %1:%2 %3() hit + Message tracepoint: %1 file, %2 line %3 function hit. + Вход в %3() (%1:%2) + + + Add Message Tracepoint + Добавление информационной точки наблюдения + + + Message: + Сообщение: + Attaching to remote server %1. Подключение к внешнему серверу %1. + + Executable file "%1" + Исполняемый файл «%1» + + + Debugging file %1. + Отладочный файл %1. + + + Cannot attach to process with PID 0 + Невозможно подключиться к процессу с PID равным 0 + + + Debugger attached to %1 + Отладчик подключён к %1 + Remove Breakpoint %1 - Удалить точку останова %1 + Убрать точку останова %1 Disable Breakpoint %1 - Отключить точку останова %1 + Деактивировать точку останова %1 Enable Breakpoint %1 - Включить точку останова %1 + Активировать точку останова %1 Edit Breakpoint %1... @@ -5630,6 +5894,18 @@ GDB позволяет указывать последовательность Set Breakpoint at line %1 Установить точку останова на строку %1 + + Set Message Tracepoint at 0x%1... + Установить информационную точку наблюдения на 0x%1... + + + Set Message Tracepoint at line %1... + Установить информационную точку наблюдения на строку %1... + + + Start '%1' and break at function 'main()' + Запустить «%1» и встать на функции «main()» + Save Debugger Log Сохранить журнал отладчика @@ -5719,6 +5995,10 @@ GDB позволяет указывать последовательность Use Alternating Row Colors Использовать чередующиеся цвета строк + + Debugger Font Size Follows Main Editor + Размер шрифта отладчика соответствует редактору + Show a Message Box When Receiving a Signal Показывать сообщение при получении сигнала @@ -5780,6 +6060,14 @@ GDB позволяет указывать последовательность Break on "catch" Остановиться на «catch» + + Break on "qWarning" + Остановиться на «qWarning» + + + Break on "qFatal" + Остановиться на «qFatal» + Automatically Quit Debugger Автоматически закрывать отладчик @@ -5901,8 +6189,8 @@ GDB позволяет указывать последовательность Добавление каталогов исходников Qt при использование неизменённой версии Qt. - The source path contained in the executable's debug information as reported by the debugger - Путь к исходнику, заданный отладочной информацие программы + The source path contained in the debug information of the executable as reported by the debugger + Путь к исходнику, заданный в отладочной информации программы &Source path: @@ -5932,6 +6220,13 @@ GDB позволяет указывать последовательность <html><head/><body><table><tr><td>ABI:</td><td><i>%1</i></td></tr><tr><td>Отладчик:</td><td>%2</td></tr> + + Debugger::Internal::DebuggerToolTipWidget + + Previous + Назад + + Debugger::Internal::GdbEngine @@ -5942,12 +6237,6 @@ GDB позволяет указывать последовательность Reading %1... Чтение %1... - - The gdb process has not responded to a command within %1 seconds. This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. -You can choose between waiting longer or abort debugging. - Процесс gdb не отвечает на команду в течение %1 секунд(ы). Это может означать, что он попал в бесконечный цикл, или исполнение операции занимает больше времени, чем предполагается. -Вы можете продолжить ожидание или прервать отладку. - Library %1 loaded Библиотека %1 загружена @@ -6006,6 +6295,18 @@ You can choose between waiting longer or abort debugging. Processing queued commands Обработка очереди команд + + The gdb process has not responded to a command within %n second(s). This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. +You can choose between waiting longer or abort debugging. + + Процесс gdb не отвечает на команду в течение %n секунду. Это может означать, что он попал в бесконечный цикл, или исполнение операции занимает больше времени, чем предполагается. +Вы можете продолжить ожидание или прервать отладку. + Процесс gdb не отвечает на команду в течение %n секунд. Это может означать, что он попал в бесконечный цикл, или исполнение операции занимает больше времени, чем предполагается. +Вы можете продолжить ожидание или прервать отладку. + Процесс gdb не отвечает на команду в течение %n секунд. Это может означать, что он попал в бесконечный цикл, или исполнение операции занимает больше времени, чем предполагается. +Вы можете продолжить ожидание или прервать отладку. + + GDB not responding GDB не отвечает @@ -6058,12 +6359,6 @@ You can choose between waiting longer or abort debugging. Continuing after temporary stop... Продолжение после временного останова... - - The GDB installed at %1 cannot find a valid python installation in its %2 subdirectory. -You may set the environment variable PYTHONPATH to point to your installation. - Отладчик GDB, установленный в %1, не может найти python в его подкаталоге %2. -Можно установить переменную PYTHONPATH указывающую на установленный Python. - GDB I/O Error Ошибка вводы/вывода GDB @@ -6110,6 +6405,12 @@ You may set the environment variable PYTHONPATH to point to your installation.The gdb location must be given as an absolute path in the debugger settings (%1). Размещение gdb должно быть указано в настройках отладчика (%1) в виде полного пути. + + The GDB installed at %1 cannot find a valid python installation in its subdirectories. +You may set the environment variable PYTHONPATH to point to your installation. + Отладчик GDB, установленный в %1, не может найти python в его подкаталоге. +Задайте переменную среды PYTHONPATH, указывающую на установленный Python. + Cannot find debugger initialization script Не удалось найти скрипт инициализации отладчика @@ -6240,10 +6541,6 @@ You may set the environment variable PYTHONPATH to point to your installation.Retrieving data for stack view thread 0x%1... Получение данных о стеке потока 0x%1... - - Jumping out of bogus frame... - Выход из подложного кадра... - Retrieving data for watch view (%n requests pending)... @@ -6408,23 +6705,15 @@ Setting breakpoints by file name and line number may fail. Log File Файл журнала - - Write Failure - Ошибка записи - - - Unable to write log contents to '%1': %2 - Не удалось записать журнал в «%1»: %2 - Debugger::Internal::MemoryAgent - Memory $ - Память $ + Memory at 0x%1 + Память с 0x%1 - No memory viewer available + No Memory Viewer Available Не доступна программа просмотра памяти @@ -6635,6 +6924,16 @@ Setting breakpoints by file name and line number may fail. %1 debugger activated Отладчик %1 активирован + + QML/C++ Debugging + Отладка QML/C++ + + + Cannot stop execution before QML engine is started. Skipping breakpoint. +Suggestions: Move the breakpoint after QmlApplicationViewer instantiation or switch to C++ only debugging. + Невозможно прекратить выполнение пока запущен движок QML. Пропуск точки останова. +Рекомендуется переустановить точку останова после инициализации QmlApplicationViewer или переключиться в режим отладки только C++. + Debugger::Internal::QmlEngine @@ -6721,6 +7020,17 @@ Do you want to retry? Значение (основание %1) + + Debugger::Internal::RegisterMemoryView + + Memory at Register '%1' (0x%2) + Память по адресу из регистра «%1» (0x%2) + + + Register '%1' + Регистр «%1» + + Debugger::Internal::RegisterWindow @@ -6731,13 +7041,33 @@ Do you want to retry? Reload Register Listing Перезагрузить список регистров + + Open Disassembler... + Открыть дизассемблер... + + + Open Memory Editor at 0x%1 + Открыть редактор памяти с 0x%1 + + + Open Memory View at Value of Register %1 0x%2 + Открыть обозреватель памяти начиная со значения регистра %1 0x%2 + + + Open Disassembler at 0x%1 + Открыть дизассемблер с 0x%1 + Open Memory Editor Открыть редактор памяти - Open Memory Editor at %1 - Открыть редактор памяти с %1 + Open Memory View at Value of Register + Открыть обозреватель памяти начиная со значения регистра + + + Open Disassembler + Открыть дизассемблер Hexadecimal @@ -6981,10 +7311,22 @@ Do you want to retry? Open Memory Editor at 0x%1 Открыть редактор памяти с 0x%1 + + Open Disassembler... + Открыть дизассемблер... + Open Disassembler at 0x%1 Открыть дизассемблер с 0x%1 + + Memory at Frame #%1 (%2) 0x%3 + Память в кадре #%1 (%2) 0x%3 + + + Frame #%1 (%2) + Кадр #%1 (%2) + Open Disassembler Открыть дизассемблер @@ -7039,8 +7381,12 @@ Do you want to retry? Выбор системного корня - Select Start Script - Выбор скрипта запуска + Select GDB Start Script + Выбор сценария запуска GDB + + + Select Server Start Script + Выбор сценария запуска сервера @@ -7120,31 +7466,6 @@ Do you want to retry? Выравнить ширину столбцов по содержимому - - Debugger::Internal::TrkGdbAdapter - - Port specification missing. - Отсутствует спецификация порта. - - - Unable to acquire a device on '%1'. It appears to be in use. - Не удалось получить доступ к устройству через «%1». Возможно, оно уже используется. - - - Process started, PID: 0x%1, thread id: 0x%2, code segment: 0x%3, data segment: 0x%4. - Процесс запущен, PID: 0x%1, ID потока: 0x%2, сегмент кода: 0x%3, сегмент данных: 0x%4. - - - The reported code segment address (0x%1) might be invalid. Symbol resolution or setting breakoints may not work. - Сообщённый адрес сегмента кода (0x%1) может быть неверным. Разрешение имён и установка точек останова может не работать. - - - Connecting to TRK server adapter failed: - - Не удалось подключиться к адаптеру TRK сервера: - - - Debugger::Internal::WatchData @@ -7184,6 +7505,14 @@ Do you want to retry? Object Address Адрес объекта + + Referencing Address + Соответствующий адрес + + + Size + Размер + Internal ID Внутрениий ID @@ -7267,22 +7596,6 @@ Do you want to retry? <Edit> <Измените> - - decimal - десятичный - - - hexadecimal - шестнадцатиричный - - - binary - двоичный - - - octal - восьмиричный - Raw pointer Простой указатель @@ -7303,6 +7616,22 @@ Do you want to retry? UCS4 string Строка в кодировке UCS4 + + Decimal + Десятичный + + + Hexadecimal + Шестнадцатиричный + + + Binary + Двоичный + + + Octal + Восьмиричный + Name Имя @@ -7318,10 +7647,6 @@ Do you want to retry? Debugger::Internal::WatchWindow - - Locals and Watchers - Переменные - Change Display for Type "%1": Сменить отображение для типа «%1»: @@ -7335,12 +7660,32 @@ Do you want to retry? Сменить отображение объекта с именем «%1»: - Change Display for Type or Item... - Сменить отображение для типа или элемента... + Memory Layout of Local Variables at 0x%1 + Кадр памяти локальных переменных с 0x%1 - Insert New Watch Item - Вставить новый наблюдаемый элемент + Locals and Expressions + Переменные и выражения + + + Evaluate Expression + Вычислять выражение + + + Evaluate Expression "%1" + Вычислять выражение «%1» + + + Remove Evaluated Expression + Удалить вычисляемое выражение + + + Remove Evaluated Expression "%1" + Удалить вычисляемое выражение «%1» + + + Change Display for Type or Item... + Сменить отображение для типа или элемента... Select Widget to Watch @@ -7358,10 +7703,6 @@ Do you want to retry? Open Memory Editor at Referenced Address (0x%1) Открыть редактор памяти по косвенному адресу (0x%1) - - Add Watchpoint - Добавить контрольную точку - Close Editor Tooltips Закрыть подсказки редактора @@ -7379,24 +7720,38 @@ Do you want to retry? Переменные - Watch Expression - Наблюдаемое выражение + <i>%1</i> %2 at #%3 + HTML tooltip of a variable in the memory editor + <i>%1</i> %2 в #%3 - Watch Expression "%1" - Наблюдать выражение «%1» + <i>%1</i> %2 + HTML tooltip of a variable in the memory editor + - Remove Watch Expression - Удалить наблюдаемое выражение + Register <i>%1</i> + Регистр <i>%1</i> - Remove Watch Expression "%1" - Удалить наблюдаемое выражение «%1» + Memory Referenced by Pointer '%1' (0x%2) + Память соответствующая указателю «%1» (0x%2) + + + Memory at Variable '%1' (0x%2) + Память переменной «%1» (0x%2) + + + Cannot Display Stack Layout + Невозможно отобразить кадр стека + + + Could not determine a suitable address range. + Не удалось определить подходящий диапазон адресов. Change Display Format... - Сменить формат отображения... + Изменить формат отображения... Treat All Characters as Printable @@ -7414,22 +7769,78 @@ Do you want to retry? Use Display Format Based on Type Использовать формат отображения основанный на типе + + Add Data Breakpoint... + Добавить контрольную точку... + + + Add Data Breakpoint at Object's Address (0x%1) + Добавить контрольную точку на адрес объекта (0x%1) + + + Add Data Breakpoint at Referenced Address (0x%1) + Добавить контрольную точку по косвенному адресу (0x%1) + + + Add Data Breakpoint + Добавить контрольную точку + + + Setting a data breakpoint on an address will cause the program to stop when the data at the address is modified. + Установка контрольной точки на адрес приведёт к остановке программы при изменении данных по этому адресу. + + + Add Data Breakpoint at Expression "%1" + Добавить контрольную точку на адрес, вычисляемый по «%1» + + + Setting a data breakpoint on an expression will cause the program to stop when the data at the address given by the expression is modified. + Установка контрольной точки на адрес приведёт к остановке программы при изменении данных по этому адресу. + + + Insert New Evaluated Expression + Вставить новое вычисляемое выражение + Remove All Watch Items Удалить все наблюдаемые элементы + + Open Memory View at Object's Address (0x%1) + Открыть обозреватель памяти по адресу объекта (0x%1) + Open Memory Editor at Object's Address Открыть редактор памяти по адресу объекта + + Open Memory View at Object's Address + Открыть обозреватель памяти по адресу объекта + + + Open Memory View at Referenced Address (0x%1) + Открыть обозреватель памяти по соответствующему адресу (0x%1) + Open Memory Editor at Referenced Address - Открыть редактор памяти по косвенному адресу + Открыть редактор памяти по соответствующему адресу + + + Open Memory View at Referenced Address + Открыть обозреватель памяти по соответствующему адресу + + + Open Memory Editor Showing Stack Layout + Открыть редактор памяти для кадра стека Copy Contents to Clipboard Скопировать содержимое в буфер обмена + + Copy Value to Clipboard + Скопировать значение в буфер обмена + Refresh Code Model Snapshot Обновить образ модели кода @@ -7442,24 +7853,16 @@ Do you want to retry? Adjust Column Widths to Contents Выравнить ширину столбцов по содержимому - - Add Watchpoint at Object's Address (0x%1) - Добавить контрольную точку на адрес объекта (0x%1) - - - Add Watchpoint at Referenced Address (0x%1) - Добавить контрольную точку по косвенному адресу (0x%1) - - - Setting a watchpoint on an address will cause the program to stop when the data at the address it modified. - Установка контрольной точки на адрес приведёт к остановке программы при изменении данных по этому адресу. - Debugger::QmlAdapter - Connect to debug server %1:%2 - Подключение к серверу отладки %1: %2 + Connecting to debug server on %1 + Подключение к серверу отладки на %1 + + + Connecting to debug server %1:%2 + Подключение к серверу отладки %1:%2 Error: (%1) %2 @@ -7508,8 +7911,8 @@ Do you want to retry? DebuggerEngine - Debugging complex command lines is currently not supported under Windows - Отладка сложных командных строк под Windows пока не поддерживаеться + Debugging complex command lines is currently not supported on Windows. + Отладка сложных командных строк под Windows пока не поддерживаеться. @@ -7552,7 +7955,7 @@ Do you want to retry? <html><head/><body> -<p>The debugging helper is only used to produce a nice display of objects of certain types like QString or std::map in the &quot;Locals and Watchers&quot; view. It is not strictly necessary for debugging with Qt Creator. </p></body></html> +<p>The debugging helper is only used to produce a nice display of objects of certain types like QString or std::map in the &quot;Locals and Expressions&quot; view. It is not strictly necessary for debugging with Qt Creator. </p></body></html> <html><head/><body> <p>Помощник отладчика используется только для корректного отображения объектов некоторых типов, вроде QString и std::map в обзоре «Переменные» режима отладки. Он не является необходимым для отладки с помощью Qt Creator.</p></body></html> @@ -7596,6 +7999,10 @@ Do you want to retry? The <RCC> root element is missing. Отсутствует корневой элемент <RCC>. + + Cannot write file. Disk full? + Не удалось записать файл. Нет места? + Designer Дизайнер @@ -7856,21 +8263,6 @@ Rebuilding the project might help. %1 - Ошибка - - Designer::Internal::FormWindowFile - - Error saving %1 - Ошибка сохранения %1 - - - Unable to open %1: %2 - Не удалось открыть %1: %2 - - - Unable to write to %1: %2 - Не удалось записать в %1: %2 - - Designer::Internal::FormWizardDialog @@ -7942,7 +8334,7 @@ Rebuilding the project might help. Duration - Длительность + Продолжительность INVALID @@ -7978,7 +8370,7 @@ Rebuilding the project might help. Duration of animation - Длительность анимации + Продолжительность анимации Amplitude of elastic and bounce easing curves @@ -8030,6 +8422,32 @@ Rebuilding the project might help. Настройки редактора + + ExampleBrowser + + Search in Tutorials + Поиск в самоучителях + + + Search in Tutorials, Examples and Demos + Поиск в самоучителях, примерах и демо + + + Show Examples and Demos + Показать примеры и демо + + + Tag List + Список меток + + + + ExampleDelegate + + Tags: + Метки: + + ExpressionEditor @@ -8133,12 +8551,8 @@ Rebuilding the project might help. ExtensionSystem::Internal::PluginSpecPrivate - File does not exist: %1 - Файл не существует: %1 - - - Could not open file for read: %1 - Не удалось открыть файл для чтения: %1 + Cannot open file %1 for reading: %2 + Не удалось открыть файл %1 для чтения: %2 Error parsing file %1: %2, at line %3, column %4 @@ -8339,8 +8753,8 @@ Reason: %3 - Can't open file %1 - Невозможно открыть файл %1 + Pattern not found: %1 + Шаблон не найден: %1 search hit BOTTOM, continuing at TOP @@ -8350,10 +8764,6 @@ Reason: %3 search hit TOP, continuing at BOTTOM поиск дошёл до ВЕРХА и продолжился СНИЗУ - - Pattern not found: - Шаблон не найден: - Mark '%1' not set Отметить «%1» не установленным @@ -8382,6 +8792,10 @@ Reason: %3 %n строк сдвинуто %1 %2 раз + + Cannot open file %1 + Невозможно открыть файл %1 + Already at oldest change Уже на первом изменении @@ -8436,6 +8850,32 @@ Reason: %3 Информация о FakeVim + + FakeVim::Internal::FakeVimUserCommandsModel + + Action + Действие + + + Command + Команда + + + User command #%1 + Команда пользователя #%1 + + + + FakeVim::Internal::FakeVimUserCommandsPage + + User Command Mapping + Связывание команд пользователя + + + FakeVim + + + FakeVimOptionPage @@ -8519,14 +8959,40 @@ Reason: %3 Vim tabstop option Опция tabstop редактора Vim - - Checking this box passes key sequences like Ctrl-S to the Creator core instead of interpreting them in FakeVim. This gives easier access to Creator core functionality at the price of losing some features of FakeVim. - При включении, управляющие клавиши (например, Ctrl-S) направляются напрямую ядру Qt Creator, вместо FakeVim. Это даёт простой доступ к функциональности ядра Qt Creator за счёт потери некоторых особенностей FakeVim. - Pass control key Пропускать управляющие клавиши + + Pass key sequences like Ctrl-S to Qt Creator core instead of interpreting them in FakeVim. This gives easier access to Qt Creator core functionality at the price of losing some features of FakeVim. + Напрвлять управляющие клавиши (например, Ctrl-S) напрямую ядру Qt Creator, вместо FakeVim. Это даёт простой доступ к функциональности ядра Qt Creator за счёт потери некоторых особенностей FakeVim. + + + + FeaturedAndNewsListing + + Featured News + Полезные новости + + + + Feedback + + Open Project... + Открыть проект... + + + Create Project... + Создать проект... + + + Feedback + Обратная связь + + + Help us make Qt Creator even better + Помогите нам сделать Qt Creator лучше + FileWidget @@ -8765,48 +9231,75 @@ Add, modify, and remove document filters, which determine the documentation set Replace Заменить + + This change cannot be undone. + Данное изменение невозможно отменить. + + + Do not warn again + Больше не предупреждать + Collapse All Свернуть всё - FlickableSpecifics + FlickableGroupBox Flickable - Пролистываемо + Толкаемо - Content Size + Content size Размер содержимого - Flickable Direction - Направление пролистывания + Flick direction + Направление толкания - Bounds Behavior + Flickable direction + Направление толкания + + + Bounds behavior Поведение границ + + Max. velocity + Макс. скорость + + + Maximum flick velocity + Максимальная скорость толкания + + + Flick deceleration + Замедление толкания + + + Behavior + Поведение + Interactive Интерактивность - - Max. Velocity - Макс. скорость - - - Maximum Flick Velocity - Максимальная скорость полистывания - Deceleration Замедление + + + FlowSpecifics - Flick Deceleration - Замедление пролистывания + Flow + Перетекание + + + Spacing + Отступ @@ -8820,7 +9313,7 @@ Add, modify, and remove document filters, which determine the documentation set Размер - Font Style + Font style Начертание @@ -8842,13 +9335,6 @@ Add, modify, and remove document filters, which determine the documentation set Создание %1 - - GLSLEditor::Internal::FunctionArgumentWidget - - %1 of %2 - %1 из %2 - - GLSLEditor::Internal::GLSLEditorPlugin @@ -8909,7 +9395,7 @@ Add, modify, and remove document filters, which determine the documentation set Enable reverse debugging - Включить реверсивную отладку + Включить обратную отладку Skip known frames when stepping @@ -8955,18 +9441,10 @@ Add, modify, and remove document filters, which determine the documentation set This will show a message box as soon as your application receives a signal like SIGSEGV during debugging. Включает отображение сообщения при получении приложением во время отладки сигнала, например SIGSEGV. - - GDB allows setting breakpoints on source lines for which no code was generated. In such situations the breakpoint is shifted to the next source code line for which code was actually generated. This option reflects such temporary change by moving the breakpoint markers in the source code editor. - GDB позволяет устанавливать точки останова на строки исходников, для которых не создаётся код. В этом случае, она передвигается на следующую строку, для которой код создаётся. Это может проявляется в редакторе, как временное перемещение маркера точки останова. - This allows or inhibits reading the user's default .gdbinit file on debugger startup. Разрешает или запрещает при запуске отладчика загрузку пользовательского файла настроек .gdbinit. - - Enable reverse debugging Selecting this enables reverse debugging. NOTE: This feature is very slow and unstable on the GDB side. It exhibits unpredictable behaviour when going backwards over system calls and is very likely to destroy your debugging session. - Включение обратной отладки. Внимание! Эта функция очень медленна и нестабильна на стороне GDB. Может привести к непредсказуемому поведению при обратном проходе через системный вызов, что скорее всего приведёт к краху отладочной сессии. - This is the number of seconds Qt Creator will wait before it terminates a non-responsive GDB process. The default value of 20 seconds @@ -8986,9 +9464,25 @@ on slow machines. In this case, the value should be increased. После включения этого параметра, в определенных ситуациях «Зайти в» объединит несколько шагов в один, позволяя «снизить шум» при отладке. Например, будет пропущен атомарный код подсчета ссылок, а после входа в инициацию сигнала окажетесь прямо в слоте, который подключён к нему. - Try to set breakpoints in plugins always automatically + <html><head/></body><p>GDB allows setting breakpoints on source lines for which no code was generated. In such situations the breakpoint is shifted to the next source code line for which code was actually generated. This option reflects such temporary change by moving the breakpoint markers in the source code editor.</p></body></html> + <html><head/><body><p>GDB позволяет устанавливать точки останова на строки исходников, для которых не создаётся код. В этом случае, она передвигается на следующую строку, для которой код создаётся. Это может проявляется в редакторе, как временное перемещение маркера точки останова.</p></body></html> + + + <html><head/><body><p>Selecting this enables reverse debugging.</p><.p><b>Note:</b>This feature is very slow and unstable on the GDB side. It exhibits unpredictable behaviour when going backwards over system calls and is very likely to destroy your debugging session.</p><body></html> + <html><head/><body><p>Включение обратной отладки.</p><.p><b>Внимание!</b> Эта функция очень медлительна и нестабильна со стороны GDB. Может привести к непредсказуемому поведению при обратном проходе через системный вызов, а это, скорее всего, вызовет крах отладочной сессии.</p><body></html> + + + Stop when a qWarning is issued + Остановиться на вызове qWarning + + + Always try to set breakpoints in plugins automatically Всегда автоматически ставить точки останова в модулях + + Stop when a qFatal is issued + Остановиться на вызове qFatal + GeneralSettingsPage @@ -9097,6 +9591,45 @@ on slow machines. In this case, the value should be increased. Сбросить + + GenericLinuxDeviceConfigurationWizardSetupPage + + WizardPage + WizardPage + + + The name to identify this configuration: + Название этой конфигурации: + + + The device's host name or IP address: + Имя узла или IP адрес устройства: + + + Password + Пароль + + + Key + Ключ + + + The user name to log into the device: + Имя пользователя для входа в устройство: + + + The authentication type: + Способ авторизации: + + + The user's password: + Пароль пользователя: + + + The file containing the user's private key: + Файл содержащий закрытый ключ пользователя: + + GenericMakeStep @@ -9120,6 +9653,25 @@ on slow machines. In this case, the value should be increased. Настольный компьютер + + GenericProjectManager::Internal::FilesSelectionWizardPage + + Hide files matching: + Скрыть файлы соответствующие: + + + Apply Filter + Применить фильтр + + + Generating file list... + +%1 + Создание списка файлов... + +%1 + + GenericProjectManager::Internal::GenericBuildConfigurationFactory @@ -9147,7 +9699,7 @@ on slow machines. In this case, the value should be increased. Generic Manager - Базовое управление + Управление универсальным проектом <Invalid tool chain> @@ -9173,6 +9725,13 @@ on slow machines. In this case, the value should be increased. Заменить %1: + + GenericProjectManager::Internal::GenericProjectPlugin + + Edit Files... + Изменить файлы... + + GenericProjectManager::Internal::GenericProjectWizard @@ -9202,10 +9761,18 @@ on slow machines. In this case, the value should be increased. Location: Размещение: + + File Selection + Выбор файла + Location Размещение + + Files + Файлы + GenericProjectManager::Internal::Manager @@ -9214,6 +9781,41 @@ on slow machines. In this case, the value should be increased. Не удалось открыть проект «%1»: проект уже открыт + + GenericProjectManager::Internal::SelectableFilesDialog + + Edit Files + Изменить файлы + + + Hide files matching: + Скрыть файлы соответствующие: + + + Apply Filter + Применить фильтр + + + Generating file list... + +%1 + Создание списка файлов... + +%1 + + + Not showing %n files that are outside of the base directory. +These files are preserved. + + Не отображён %n файл, находящийся вне базового каталога. +Неотображённые файлы будут сохранены. + Не отображено %n файла, находящиеся вне базового каталога. +Неотображённые файлы будут сохранены. + Не отображено %n файлов, находящиеся вне базового каталога. +Неотображённые файлы будут сохранены. + + + Geometry @@ -9228,6 +9830,14 @@ on slow machines. In this case, the value should be increased. Size Размер + + Width + Ширина + + + Height + Высота + Lock aspect ratio Зафиксировать соотношение сторон @@ -9259,43 +9869,50 @@ on slow machines. In this case, the value should be increased. Git::Internal::BaseGitDiffArgumentsWidget - Use the patience algorithm for calculating the diff - Использовать устойчивый алгоритм для расчёта различий + Use the patience algorithm for calculating the differences. + Использовать устойчивый алгоритм для расчёта различий. Patience Устойчивый - Ignore whitespace only changes - Пропускать изменения пробелов + Ignore whitespace only changes. + Пропускать изменения пробелов. Ignore Whitespace Пропускать пробелы + + Git::Internal::BranchAddDialog + + Dialog + + + + Branch Name: + Название ветки: + + + CheckBox + + + + Track remote branch '%1' + Следить за внешней веткой «%1» + + + Track local branch '%1' + Следить за локальной веткой «%1» + + Git::Internal::BranchDialog - Checkout - Извлечь - - - Diff - Сравнить - - - Log - История - - - Refresh - Обновить - - - Delete... - Удалить... + Would you like to delete the <b>unmerged</b> branch '%1'? + Удалить <b>неуправляемую</b> ветку «%1»? Delete Branch @@ -9303,43 +9920,42 @@ on slow machines. In this case, the value should be increased. Would you like to delete the branch '%1'? - Желаете удалить ветку «%1»? - - - Failed to delete branch - Не удалось удалить ветку - - - Failed to create branch - Не удалось создать ветку - - - Failed to stash - Не удалось спрятать - - - Checkout failed - Не удалось извлечь - - - Would you like to create a local branch '%1' tracking the remote branch '%2'? - Желаете создать локальную вертку «%1», отслеживающую удалённую ветку «%2»? - - - Create branch - Создать ветку - - - Failed to create a tracking branch - Не удалось создать отслеживающую ветку + Удалить ветку «%1»? Branches Ветки - Remote Branches - Внешние ветки + Re&fresh + &Обновить + + + &Add... + &Добавить... + + + &Remove + &Удалить + + + &Diff + &Сравнить + + + &Log + &История + + + &Checkout + &Извлечь + + + + Git::Internal::BranchModel + + Local Branches + Локальные ветки @@ -9375,16 +9991,16 @@ on slow machines. In this case, the value should be increased. Git::Internal::GitBlameArgumentsWidget - Do not show the date a change was made in the output - Не показывать в выводе дату изменений + Hide the date of a change from the output. + Скрывать дату изменений в выводе. Omit Date Пропускать дату - Ignore whitespace only changes - Пропускать изменения пробелов + Ignore whitespace only changes. + Пропускать изменения пробелов. Ignore Whitespace @@ -9393,10 +10009,6 @@ on slow machines. In this case, the value should be increased. Git::Internal::GitClient - - Unable to parse the file output. - Не удалось разобрать файловый вывод. - Waiting for data... Ожидание данных... @@ -9405,97 +10017,14 @@ on slow machines. In this case, the value should be increased. Git Diff Git - Сравнение - - Git Diff %1 - Git - сравнение %1 - - - Git Diff Branch %1 - Git - сравнение ветки %1 - Git Log Git - история - - Git Log %1 - Git - история %1 - - - Cannot describe '%1'. - Не удалось описать «%1». - - - Git Show %1 - Git - показ %1 - - - Git Blame %1 - Git - аннотация %1 - - - Unable to checkout %1 of %2: %3 - Meaning of the arguments: %1: Branch, %2: Repository, %3: Error message - Не удалось переключиться на %1 в %2: %3 - - - Unable to add %n file(s) to %1: %2 - - Не удалось добавить %n файл в %1: %2 - Не удалось добавить %n файла в %1: %2 - Не удалось добавить %n файлов в %1: %2 - - - - Unable to remove %n file(s) from %1: %2 - - Не удалось удалить %n файл из %1: %2 - Не удалось удалить %n файла из %1: %2 - Не удалось удалить %n файлов из %1: %2 - - - - Unable to move from %1 to %2: %3 - Не удалось переместить из %1 в %2: %3 - - - Unable to reset %1: %2 - Не удалось сбросить %1: %2 - - - Unable to reset %n file(s) in %1: %2 - - Не удалось сбросить %n файл в %1: %2 - Не удалось сбросить %n файла в %1: %2 - Не удалось сбросить %n файлов в %1: %2 - - - - Unable to checkout %1 of %2 in %3: %4 - Meaning of the arguments: %1: revision, %2: files, %3: repository, %4: Error message - Не удалось обновить до %1 файл %2 в %3: %4 - - - Unable to find parent revisions of %1 in %2: %3 - Failed to find parent revisions of a SHA1 for "annotate previous" - Не удалось найти родительскую ревизию для %1 в %2: %3 - Invalid revision Некорректная ревизия - - Unable to retrieve branch of %1: %2 - Не удалось получить ветку для %1: %2 - - - Unable to retrieve top revision of %1: %2 - Не удалось получить последную ревизию для %1: %2 - - - Unable to describe revision %1 in %2: %3 - Не удалось получить описание ревизии %1 в %2: %3 - Description: Описание: @@ -9504,117 +10033,18 @@ on slow machines. In this case, the value should be increased. Stash Description Описание спрятанного - - Unable to run a 'git branch' command in %1: %2 - Не удалось выполнить команду «git branch» в %1: %2 - - - Unable to run 'git show' in %1: %2 - Не удалось выполнить команду «git show» в %1: %2 - - - Unable to run 'git clean' in %1: %2 - Не удалось выполнить команду «git clean» в %1: %2 - - - There were warnings while applying %1 to %2: -%3 - Возникли предупреждения при применении %1 к %2: -%3 - - - Unable apply patch %1 to %2: %3 - Не удалось наложить патч %1 на %2: %3 - - - Cannot locate %1. - Не удалось обнаружить %1. - - - Unable to launch %1. - Не удалось запустить %1. - You did not checkout a branch. Ветка не была выбрана. - - Amended %1 (%n file(s)). - - - Исправление %1 (%n файл). - - Исправление %1 (%n файла). - - Исправление %1 (%n файлов). - - - - - Amended %1. - Исправление %1. - Git SVN Log Git - история SVN - - Unable to restore stash %1: %2 - Не удалось восстановить спрятанное %1: %2 - - - Unable to restore stash %1 to branch %2: %3 - Не удалось восстановить спрятанное %1 в ветку %2: %3 - - - Unable to remove stashes of %1: %2 - Не удалось удалить спрятанное в %1: %2 - - - Unable to remove stash %1 of %2: %3 - Не удалось удалить спрятанное %1 в %2: %3 - - - Unable retrieve stash list of %1: %2 - Не удалось получить список спрятанного в %1: %2 - - - Unable to determine git version: %1 - Не удалось определить версию Git: %1 - - - Unable stash in %1: %2 - Не удалось спрятать в %1: %2 - - - Unable to determine the repository for %1. - Не удалось определить хранилище для %1. - - - Unable to resolve stash message '%1' in %2 - Look-up of a stash via its descriptive message failed. - Не удалось найти спрятанное по сообщению «%1» в %2 - Changes Изменения - - You have modified files. Would you like to stash your changes? - Имеются изменёные файлы. Желаете спрятать ваши изменения? - - - Unable to obtain the status: %1 - Не удалось получить состояние: %1 - - - The repository %1 is not initialized yet. - Хранилище %1 ещё не инициализировано. - - - Unable to retrieve the last commit data of the repository %1. - Не удалось получить информации о последней фиксации хранилища %1. - Committed %n file(s). @@ -9627,8 +10057,174 @@ on slow machines. In this case, the value should be increased. + + Cannot determine the repository for "%1". + Не удалось определить хранилище для «%1». + + + Cannot parse the file output. + Не удалось разобрать файловый вывод. + + + Git Diff "%1" + Git - сравнение «%1» + + + Git Diff Branch "%1" + Git - сравнение с веткой «%1» + + + Git Log "%1" + Git - история «%1» + + + Cannot describe "%1". + Не удалось описать «%1». + + + Git Show "%1" + Git - просмотр «%1» + + + Git Blame "%1" + Git - аннотация «%1» + + + Cannot checkout "%1" of "%2": %3 + Meaning of the arguments: %1: Branch, %2: Repository, %3: Error message + Не удалось переключиться на «%1» в «%2»: %3 + - Unable to commit %n file(s): %1 + Cannot add %n file(s) to "%1": %2 + + Не удалось добавить %n файл в «%1»: %2 + Не удалось добавить %n файла в «%1»: %2 + Не удалось добавить %n файлов в «%1»: %2 + + + + Cannot remove %n file(s) from "%1": %2 + + Не удалось удалить %n файл из «%1»: %2 + Не удалось удалить %n файла из «%1»: %2 + Не удалось удалить %n файлов из «%1»: %2 + + + + Cannot move from "%1" to "%2": %3 + Не удалось переместить из «%1» в «%2»: %3 + + + Cannot reset "%1": %2 + Не удалось сбросить «%1»: %2 + + + Cannot reset %n file(s) in "%1": %2 + + Не удалось сбросить %n файл в «%1»: %2 + Не удалось сбросить %n файла в «%1»: %2 + Не удалось сбросить %n файлов в «%1»: %2 + + + + Cannot checkout "%1" of %2 in "%3": %4 + Meaning of the arguments: %1: revision, %2: files, %3: repository, %4: Error message + Не удалось переключить %2 на «%1» в «%3»: %4 + + + Cannot find parent revisions of "%1" in "%2": %3 + Failed to find parent revisions of a SHA1 for "annotate previous" + Не удалось найти родительские ревизии для «%1» в «%2»: %3 + + + Cannot retrieve branch of "%1": %2 + Не удалось получить ветку для «%1»: %2 + + + Cannot retrieve top revision of "%1": %2 + Не удалось получить последную ревизию для «%1»: %2 + + + Cannot describe revision "%1" in "%2": %3 + Не удалось получить описание ревизии «%1» в «%2»: %3 + + + Cannot stash in "%1": %2 + Не удалось спрятать в «%1»: %2 + + + Cannot resolve stash message "%1" in "%2". + Look-up of a stash via its descriptive message failed. + Не удалось найти спрятанное по сообщению «%1» в «%2». + + + Cannot run "git branch" in "%1": %2 + Не удалось выполнить «git branch» в «%1»: %2 + + + Cannot run "git remote" in "%1": %2 + Не удалось выполнить «git remote» в «%1»: %2 + + + Cannot run "git show" in "%1": %2 + Не удалось выполнить «git show» в «%1»: %2 + + + Cannot run "git clean" in "%1": %2 + Не удалось выполнить «git clean» в «%1»: %2 + + + There were warnings while applying "%1" to "%2": +%3 + Возникли предупреждения при применении «%1» к «%2»: +%3 + + + Cannot apply patch "%1" to "%2": %3 + Не удалось наложить патч «%1» на «%2»: %3 + + + Would you like to stash your changes? + Желаете спрятать свои изменения? + + + Cannot obtain status: %1 + Не удалось получить состояние: %1 + + + Cannot locate "%1". + Не удалось обнаружить «%1». + + + Cannot launch "%1". + Не удалось запустить «%1». + + + The repository "%1" is not initialized. + Хранилище «%1» не инициализировано. + + + Cannot retrieve last commit data of repository "%1". + Не удалось получить данные последней фиксации хранилища «%1». + + + Amended "%1" (%n file(s)). + + + Внесено изменение «%1» (%n файл). + + Внесено изменение «%1» (%n файла). + + Внесено изменение «%1» (%n файлов). + + + + + Amended "%1". + Внесено изменение «%1». + + + Cannot commit %n file(s): %1 Не удалось фиксировать %n файл: %1 @@ -9659,6 +10255,30 @@ on slow machines. In this case, the value should be increased. There are no modified files. Нет изменённых файлов. + + Cannot restore stash "%1": %2 + Не удалось восстановить спрятанное в «%1»: %2 + + + Cannot restore stash "%1" to branch "%2": %3 + Не удалось восстановить спрятанное в «%1» в ветку «%2»: %3 + + + Cannot remove stashes of "%1": %2 + Не удалось удалить спрятанное в «%1»: %2 + + + Cannot remove stash "%1" of "%2": %3 + Не удалось удалить спрятанное «%1» в «%2»: %3 + + + Cannot retrieve stash list of "%1": %2 + Не удалось получить список спрятанного в «%1»: %2 + + + Cannot determine git version: %1 + Не удалось определить версию git: %1 + Git::Internal::GitCommand @@ -9756,10 +10376,18 @@ on slow machines. In this case, the value should be increased. Undo Uncommited Changes... Отменить незафиксированные изменения... + + Remotes... + Внешние хранилища... + Stashes... Спрятанное (stashes)... + + Diff &Selected Files + &Сравнить выбранные файлы + Undo all pending changes to the repository %1? @@ -9792,7 +10420,7 @@ on slow machines. In this case, the value should be increased. Clean... - Очистить... + Очистить (clean)... Patch @@ -9880,7 +10508,7 @@ on slow machines. In this case, the value should be increased. Amend Last Commit... - Исправить последнюю фиксацию... + Исправить последнюю фиксацию (amend)... Push @@ -9926,10 +10554,6 @@ on slow machines. In this case, the value should be increased. Commit Фиксировать - - Diff Selected Files - Сравнить выбранные файлы - &Undo &Отменить @@ -9942,10 +10566,6 @@ on slow machines. In this case, the value should be increased. Another submit is currently being executed. В данный момент уже идёт другая фиксация. - - Cannot create temporary file: %1 - Не удалось создать временный файл: %1 - Amend %1 Исправить %1 @@ -9985,8 +10605,8 @@ on slow machines. In this case, the value should be increased. Git::Internal::GitShowArgumentsWidget - Select the pretty printing format - Выбор удобного формата печати + Select the pretty printing format. + Выбор удобного формата печати. oneline @@ -10053,14 +10673,49 @@ on slow machines. In this case, the value should be increased. - Git::Internal::LocalBranchModel + Git::Internal::RemoteAdditionDialog - <New branch> - <Новая ветка> + Add Remote + Добавление внешнего хранилища - Type to create a new branch - Введите для создания новой ветки + Name: + Название: + + + URL: + + + + + Git::Internal::RemoteDialog + + Remotes + Внешние хранилища + + + Delete Remote + Удаление внешнего хранилища + + + Would you like to delete the remote "%1"? + Желаете удалить внешнее хранилище «%1»? + + + Re&fresh + &Обновить + + + &Add... + &Добавить... + + + F&etch + &Получить + + + &Remove + &Удалить @@ -10422,6 +11077,124 @@ You can choose between stashing the changes or discarding them. Частные хранилища + + GridSpecifics + + Grid + Сетка + + + Columns + Столбцы + + + Rows + Строки + + + Flow + Перетекание + + + Spacing + Отступ + + + + GridViewSpecifics + + Grid View + Табличный вид + + + Cache + Кэш + + + Cache buffer + Буфер кэша + + + Cell height + Высота ячейки + + + Cell width + Ширина ячейки + + + Resize wraps + + + + Determines whether the grid wraps key navigation. + + + + Snap mode + Режим притягивания + + + Determines how the view scrolling will settle following a drag or flick. + Определяет должна ли прокрутка выполняться перетаскиванием или толканием. + + + Highlight range + Диапазон подсветки + + + Move duration + Продолжительность движения + + + Move animation duration of the highlight delegate. + Продолжительность анимации движения делегата подсветки. + + + Move speed + Скорость движения + + + Move animation speed of the highlight delegate. + Скорость анимации движения делегата подсветки. + + + Preferred begin + Предпочтительное начало + + + Preferred highlight begin - must be smaller than Preferred end. + Предпочтительное начало должно быть меньше предпочтительного окончания. + + + Preferred end + Предпочтительное окончание + + + Preferred highlight end - must be larger than Preferred begin. + Предпочтительное окончание должно быть больше предпочтительного начала. + + + Follows current + Управляется видом + + + Determines whether the highlight is managed by the view. + Определяет следует ли виду управлять подсветкой или нет. + + + Flow + Перетекание + + + Grid View Highlight + Подсветка табличного вида + + + Range + Диапазон + + Help @@ -10504,8 +11277,8 @@ You can choose between stashing the changes or discarding them. Файлы (*.xbel) - There was an error while importing bookmarks! - При импорте закладок возникла ошибка! + Cannot import bookmarks. + Не удалось импортировать закладки. Save File @@ -10584,6 +11357,10 @@ You can choose between stashing the changes or discarding them. Increase Font Size Увеличить шрифт + + Technical Support + Техническая поддержка + Decrease Font Size Уменьшить шрифт @@ -10841,7 +11618,7 @@ You can choose between stashing the changes or discarding them. Touch optimized navigation will make the HTML page flickable and enlarge the area of touch sensitive elements. If you use a JavaScript framework which optimizes the touch interaction, leave the checkbox unchecked. - Оптимизация навигации под касания сделает страницу HTML прокручиваемой и увеличит зоны чувствительных элементов. Оставьте опцию отключённой при использовании оптимизированной под касания среды JavaScript. + Оптимизация навигации под касания сделает страницу HTML толкаемой и увеличит зоны чувствительных элементов. Оставьте опцию отключённой при использовании оптимизированной под касания среды JavaScript. @@ -10855,9 +11632,17 @@ You can choose between stashing the changes or discarding them. Источник - Fill Mode + Fill mode Режим заливки + + Source size + Размер источника + + + Painted size + Отображаемый размер + Aliasing Ступенчатость @@ -10866,13 +11651,12 @@ You can choose between stashing the changes or discarding them. Smooth Гладкий + + + ImageViewer::Internal::ImageViewer - Source Size - Исходный размер - - - Painted Size - Отображаемый размер + Cannot open image file %1 + Не удалось открыть файл изображения %1 @@ -11038,6 +11822,139 @@ QML. Отступ + + LineEdit + + Translate this string + Перевести эту строку + + + + LinuxDeviceFactorySelectionDialog + + Device Configuration Wizard Selection + Выбор мастера настройки устройства + + + Available device types: + Доступные типы устройств: + + + + ListViewSpecifics + + List View + Список + + + Cache + Кэш + + + Cache buffer + Буфер кэша + + + Navigation wraps + + + + Determines whether the grid wraps key navigation. + + + + Orientation of the list. + Направление списка. + + + Snap mode + Режим притягивания + + + Determines how the view scrolling will settle following a drag or flick. + Определяет должна ли прокрутка выполняться перетаскиванием или толканием. + + + Spacing between items. + Расстояние между элементами. + + + Highlight range + Диапазон подсветки + + + Move duration + Продолжительность движения + + + Move animation duration of the highlight delegate. + Продолжительность анимации движения делегата подсветки. + + + Move speed + Скорость движения + + + Move animation speed of the highlight delegate. + Скорость анимации движения делегата подсветки. + + + Resize duration + Продолжительность изменения размера + + + Resize animation duration of the highlight delegate. + Продолжительность анимации изменения размера делегата подсветки. + + + Resize speed + Скорость изменения размера + + + Resize animation speed of the highlight delegate. + Скорость анимации изменения размера делегата подсветки. + + + Preferred begin + Предпочтительное начало + + + Preferred highlight begin - must be smaller than Preferred end. + Предпочтительное начало должно быть меньше предпочтительного окончания. + + + Preferred end + Предпочтительное окончание + + + Preferred highlight end - must be larger than Preferred begin. + Предпочтительное окончание должно быть больше предпочтительного начала. + + + Follows current + Управляется видом + + + Determines whether the highlight is managed by the view. + Определяет следует ли виду управлять подсветкой или нет. + + + Orientation + Ориентация + + + Spacing + Отступ + + + List View Highlight + Подсветка списка + + + Range + Диапазон + + LldbOptionsPageWidget @@ -11079,7 +11996,7 @@ QML. Locator::Internal::DirectoryFilter Generic Directory Filter - Универсальный фильтр для каталогов + Общий фильтр для каталогов Filter Configuration @@ -11190,6 +12107,14 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Locator::Internal::LocatorPlugin + + Type to locate + Введите, чтобы найти + + + Type to locate (%1) + Введите, чтобы найти (%1) + Indexing Индексация @@ -11209,10 +12134,6 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Locate... Обзор... - - Type to locate - Введите, чтобы найти - Options Параметры @@ -11377,7 +12298,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Воспроизведение сценария - An error occured while replaying the macro, execution stopped. + An error occurred while replaying the macro, execution stopped. Возникла ошибка при воспроизведении сценария, оно остановлено. @@ -11397,43 +12318,39 @@ To do this, you type this shortcut and a space in the Locator entry field, and t - MaemoDeployStepWidget + MaemoDeployConfigurationWidget Form - Форма + These show the INSTALLS settings from the project file(s). Здесь отображаются настройки УСТАНОВКИ из файла(ов) проекта. - Device configuration: - Конфигурация устройства: - - - Also deploy to sysroot - Также устанавливать в sysroot - - - <b>Files to install for subproject:</b> - <b>Устанавливаемые файлы подпроекта:</b> + Edit the project file to add or remove entries. + Изменение файла проекта для добавления/удаления элементов. Add Desktop File Добавить файл .desktop - Add Launcher Icon ... + Add Launcher Icon... Добавить значок запуска... - Edit the project file to add or remove entries. - Изменение файла проекта для добавления/удаления элементов. + Device configuration: + Конфигурация устройства: <a href="irrelevant">Manage device configurations</a> <a href="irrelevant">Управление конфигурациями устройств</a> + + Files to install for subproject: + Устанавливать файлы подпроекта: + MaemoDeviceConfigWizardCheckPreviousKeySetupPage @@ -11551,26 +12468,10 @@ To do this, you type this shortcut and a space in the Locator entry field, and t The system running on the device: Система устройства: - - Maemo 5 (Fremantle) - - - - Maemo 6 (Harmattan) - - - - Meego - - The kind of device: Тип устройства: - - Emulator (Qemu) - Эмулятор (Qemu) - Hardware Device Реальное @@ -11579,6 +12480,14 @@ To do this, you type this shortcut and a space in the Locator entry field, and t The device's host name or IP address: Имя узла или IP адрес устройства: + + Emulator + Эмулятор + + + The SSH server port: + Порт сервера SSH: + MaemoDeviceConfigurationsSettingsWidget @@ -11662,38 +12571,10 @@ To do this, you type this shortcut and a space in the Locator entry field, and t &Remove &Удалить - - &Test - П&роверить - - - &Generate SSH Key ... - Создать кл&юч SSH... - - - &Deploy Public Key ... - &Установить ключ... - - - Remote Processes ... - Внешние процессы... - Private key file: Файл секретного ключа: - - Click here to check whether this device is properly set up to run Maemo projects. - Щёлкните, чтобы проверить, корректно ли настроено устройство для запуске проектов Maemo. - - - This will enable you to log into the device without a password. - Это позволяет входить на устройство без пароля. - - - Click here to see which processes are running on the device. - Щёлкните, чтобы узнать, какие процессы запущены на устройстве. - Set As Default Использовать всегда @@ -11710,13 +12591,13 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Click here if you do not have an SSH key yet. Щёлкните, если у вас ещё нет SSH ключа. + + &Generate SSH Key... + Создать кл&юч SSH... + MaemoPackageCreationWidget - - Check this if you want the files below to be deployed directly. - Включите, если требуется установка указанных файлов напрямую. - Major: Старший: @@ -11729,18 +12610,10 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Patch: Изменение: - - Skip packaging step - Пропустить этап сборки пакета - Edit Изменить - - Size is 48x48 pixels - Размер 48x48 пикселей - Adapt Debian file: Использовать файл Debian: @@ -11990,33 +12863,6 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Обратить выделение - - MemcheckConfigWidget - - Backtrace frame count: - Количество кадров стека: - - - Suppressions: - Игнорировать: - - - Add - Добавить - - - Remove - Удалить - - - Track origins of uninitialized memory - Находить источники неинициализированной памяти - - - Memory Analysis Options - Параметры анализа памяти - - Mercurial::Internal::CloneWizard @@ -12111,6 +12957,17 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Mercurial + + Mercurial::Internal::MercurialDiffParameterWidget + + Ignore whitespace + Пропускать пробелы + + + Ignore blank lines + Пропускать пустые строки + + Mercurial::Internal::MercurialEditor @@ -12269,8 +13126,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Фиксировать - Diff Selected Files - Сравнить выбранные файлы + Diff &Selected Files + &Сравнить выбранные файлы &Undo @@ -12490,7 +13347,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Generic Qt Creator Project file - Файл базового проекта Qt Creator + Файл универсального проекта Qt Creator BMP image @@ -12546,15 +13403,15 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Generic Project Files - Файлы базовых проектов + Файлы универсальных проектов Generic Project Include Paths - Пути включения базового проекта + Пути включения универсального проекта Generic Project Configuration File - Файл настроек базового проекта + Файл настроек универсального проекта Perforce submit template @@ -12610,7 +13467,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Qt Creator Generic Assembler - Стандартный ассемблер Qt Creator + Обычный ассемблер Qt Creator Differences between files @@ -12656,8 +13513,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Приоритет: - <i>Note: Wide range values might impact on Qt Creator's performance when opening files.</i> - <i>Широкий диапазон может снизить скорость Qt Creator при открытии файлов.</i> + <i>Note: Wide range values might impact Qt Creator's performance when opening files.</i> + <i>Широкий диапазон значений может снизить скорость Qt Creator при открытии файлов.</i> @@ -12702,10 +13559,6 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Remove Удалить - - Reset all to default - Сбросить всё в исходное состояние - Reset All Сбросить всё @@ -12714,6 +13567,10 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Registered MIME Types Зарегистрированные типы MIME + + Reset all to default. + Сбросить всё в исходное состояние. + MobileAppWizard @@ -12748,8 +13605,8 @@ Preselects Qt for Simulator and mobile targets if available. - Application icon (64x64): - Значок приложения (64x64): + Application icon (%%w%%x%%h%%): + Значок приложения (%%w%%x%%h%%): @@ -12805,6 +13662,29 @@ Preselects Qt for Simulator and mobile targets if available. + + MouseAreaSpecifics + + MouseArea + + + + Enabled + Включено + + + This property holds whether the item accepts mouse events. + Включает/выключает приём элементом событий мыши. + + + Hover Enabled + Наведение включено + + + This property holds whether hover events are handled. + Включает/выключает приём элементом событий наведения. + + MyMain @@ -12812,6 +13692,13 @@ Preselects Qt for Simulator and mobile targets if available. Н/Д + + NewsListing + + Click to read more... + Подробнее... + + NickNameDialog @@ -12845,10 +13732,6 @@ Preselects Qt for Simulator and mobile targets if available. QMLJS Editor Редактор QMLJS - - .qmlproject Editor - Редактор *.qmlproject - Qt Designer Qt Designer @@ -12901,6 +13784,81 @@ Preselects Qt for Simulator and mobile targets if available. <a href="http://pastebin.com">pastebin.com</a> позволяет отправлять данные на пользовательские субдомены (например, creator.pastebin.com). Поэтому укажите желаемый префикс. + + PathViewSpecifics + + Path View + Обзор кривой + + + Drag margin + Перетаскиваемый край + + + Flick deceleration + Замедление толкания + + + Follows current + Управляется видом + + + A user cannot drag or flick a PathView that is not interactive. + Пользователь не может перетягивать или толкать PathView, так как он не интерактивный. + + + Offset + Смещение + + + Specifies how far along the path the items are from their initial positions. This is a real number that ranges from 0.0 to the count of items in the model. + Указывает как сильно элементы могут отклоняться от начальных точек. Это действительное число в диапазоне от 0.0 до количества элементов в модели. + + + Item count + Количество элементов + + + pathItemCount: number of items visible on the path at any one time. + pathItemCount: количество элементов отображаемых на кривой в любой момент времени. + + + Path View Highlight + Подсветка вида кривой + + + Highlight range + Диапазон подсветки + + + Move duration + Продолжительность движения + + + Move animation duration of the highlight delegate. + Продолжительность анимации движения делегата подсветки. + + + Preferred begin + Предпочтительное начало + + + Preferred highlight begin - must be smaller than Preferred end. + Предпочтительное начало должно быть меньше предпочтительного окончания. + + + Preferred end + Предпочтительное окончание + + + Preferred highlight end - must be larger than Preferred begin. + Предпочтительное окончание должно быть больше предпочтительного начала. + + + Determines whether the highlight is managed by the view. + Определяет следует ли виду управлять подсветкой или нет. + + Perforce::Internal::ChangeNumberDialog @@ -12967,6 +13925,13 @@ Preselects Qt for Simulator and mobile targets if available. Хранилище «%1» отсутствует. + + Perforce::Internal::PerforceDiffParameterWidget + + Ignore whitespace + Пропускать пробелы + + Perforce::Internal::PerforceEditor @@ -13164,10 +14129,6 @@ Preselects Qt for Simulator and mobile targets if available. Submit Фиксировать - - Diff Selected Files - Сравнить выделенные файлы - &Undo От&менить @@ -13192,10 +14153,6 @@ Preselects Qt for Simulator and mobile targets if available. Another submit is currently executed. Другая фиксация уже идёт в этот момент. - - Cannot create temporary file. - Не удалось создать временный файл. - Project has no files Проект не содержит файлов @@ -13220,6 +14177,10 @@ Preselects Qt for Simulator and mobile targets if available. The process terminated with exit code %1. Процесс завершился с кодом %1. + + The commit message check failed. Do you want to submit this change list? + Проверки сообщения о фиксации завершилась с ошибкой. Отправить указанные изменения? + p4 submit failed: %1 Не удалось выполнить фиксацию perforce: %1 @@ -13246,6 +14207,10 @@ Preselects Qt for Simulator and mobile targets if available. The process terminated abnormally. Процесс завершился аварийно. + + Diff &Selected Files + &Сравнить выбранные файлы + Could not start perforce '%1'. Please check your settings in the preferences. Не удалось запустить Perforce «%1». Пожалуйста, проверьте настройки. @@ -13278,14 +14243,6 @@ Preselects Qt for Simulator and mobile targets if available. Do you want to submit this change list? Желаете отправить этот список изменений? - - The commit message check failed. Do you want to submit this change list - Ошибка в результате проверки сообщения. Желаете все же отправить этот список изменений - - - Cannot open temporary file. - Не удалось открыть временный файл. - Pending change Рассматриваемое изменение @@ -13522,13 +14479,18 @@ Preselects Qt for Simulator and mobile targets if available. Другой проект + + ProjectExplorer::AbiWidget + + <custom> + <особое> + + ProjectExplorer::AbstractProcessStep - Starting: "%1" %2 - - Запускается «%1» %2 - + Starting: "%1" %2 + Запускается: «%1» %2 The process "%1" exited normally. @@ -13561,6 +14523,12 @@ Preselects Qt for Simulator and mobile targets if available. Some error has occurred while running the program. Во время работы программы возникли некоторые ошибки. + + Cannot retrieve debugging output. + + Не удалось получить отладочный вывод. + + ProjectExplorer::BaseProjectWizardDialog @@ -13691,12 +14659,6 @@ Preselects Qt for Simulator and mobile targets if available. Running %1 %2 ... Выполнение %1 %2 ... - - - - Running %1 ... - - Выполнение %1... @@ -13706,6 +14668,17 @@ Preselects Qt for Simulator and mobile targets if available. + + ProjectExplorer::CodeStyleSettingsPropertiesPage + + Form + + + + Language: + Язык: + + ProjectExplorer::CustomExecutableRunConfiguration @@ -13887,6 +14860,19 @@ Reason: %2 Конфигурация установки + + ProjectExplorer::EditorConfiguration + + Project + Settings + Проект + + + Project %1 + Settings, %1 is a language (C++ or QML) + Проект %1 + + ProjectExplorer::EnvironmentWidget @@ -13905,6 +14891,14 @@ Reason: %2 &Unset &Сбросить + + Unset <a href="%1"><b>%1</b></a> + Сброшено значение <a href="%1"><b>%1</b></a> + + + Set <a href="%1"><b>%1</b></a> to <b>%2</b> + Присвоено <a href="%1"><b>%1</b></a> значение <b>%2</b> + Using <b>%1</b> Используется <b>%1</b> @@ -13913,14 +14907,6 @@ Reason: %2 Using <b>%1</b> and Используется <b>%1</b> и - - Unset <b>%1</b> - Сброшено значение <b>%1</b> - - - Set <b>%1</b> to <b>%2</b> - Присвоено <b>%1</b> значение <b>%2</b> - ProjectExplorer::Internal::AllProjectsFilter @@ -13940,6 +14926,33 @@ Reason: %2 Ш&аблон: + + ProjectExplorer::Internal::AppOutputPane + + Stop + Остановить + + + Re-run this run-configuration + Перезапустить эту конфигурацию запуска + + + Attach debugger to this process + Подключить отладчик к этому процессу + + + Attach debugger to %1 + Подключить отладчик к %1 + + + Application Output + Вывод приложения + + + Application Output Window + Окно вывода приложения + + ProjectExplorer::Internal::BuildSettingsWidget @@ -14043,6 +15056,13 @@ Reason: %2 Этапы очистки + + ProjectExplorer::Internal::ClangToolChainFactory + + Clang + + + ProjectExplorer::Internal::CompileOutputWindow @@ -14153,12 +15173,20 @@ Reason: %2 ProjectExplorer::Internal::EditorSettingsPropertiesPage - Use global settings - Использовать глобальные настройки + Editor settings: + Настройки редактора: - Restore Global Values - Восстановить глобальные значения + Global + Общие + + + Custom + Особые + + + Restore Global + Восстановить общие @@ -14283,12 +15311,22 @@ Reason: %2 ProjectExplorer::Internal::LocalApplicationRunControl - Starting %1... - Запускается %1... + No executable specified. + + Программа не указана. + - %1 exited with code %2 - %1 завершился с кодом %2 + Starting %1... + + Запускается %1... + + + + %1 exited with code %2 + + %1 завершился с кодом %2 + @@ -14377,6 +15415,10 @@ Reason: %2 ProjectExplorer::Internal::MsvcToolChainConfigWidget + + Initialization: + Инициализация: + The CDB debugger could not be found in %1 Не удалось найти отладчик CDB в %1 @@ -14389,34 +15431,6 @@ Reason: %2 - - ProjectExplorer::Internal::OutputPane - - Re-run this run-configuration - Перезапустить эту конфигурацию запуска - - - Stop - Остановить - - - Application Output - Консоль приложения - - - Application Output Window - Окно вывода приложения - - - - ProjectExplorer::Internal::OutputWindow - - Additional output omitted - - Дополнительный вывод опущен - - - ProjectExplorer::Internal::ProcessStep @@ -14482,10 +15496,6 @@ Reason: %2 Current directory Текущий каталог - - directoryButtonGroup - - Directory Каталог @@ -14534,6 +15544,22 @@ Reason: %2 Open application output pane when running Показывать вывод приложения при запуске + + Limit application output to + Ограничить вывод приложения + + + lines + строками + + + Enabling this option ensures that the order of interleaved messages from stdout and stderr is preserved, at the cost of disabling highlighting of stderr. + При включении данной опции порядок следования сообщения из stdout и stderr будет сохранён, но будет утеряна подсветка данных из stderr. + + + Merge stderr and stdout + Объединить stderr и stdout + ProjectExplorer::Internal::ProjectFileFactory @@ -14561,9 +15587,7 @@ Reason: %2 <None> - No version control system selected ----------- -No project selected + No project selected <Нет> @@ -14620,45 +15644,6 @@ to project '%2'. Разработка - - ProjectExplorer::Internal::ProjectWelcomePageWidget - - Form - Форма - - - Manage Sessions... - Управление сессиями... - - - Recent Projects - Последние проекты - - - %1 (last session) - %1 (последняя сессия) - - - %1 (current session) - %1 (текущая сессия) - - - New Project - Новый проект - - - Create Project... - Создать проект... - - - Recent Sessions - Последние сессии - - - Open Project... - Открыть проект... - - ProjectExplorer::Internal::ProjectWizardPage @@ -14845,12 +15830,12 @@ to project '%2'. ProjectExplorer::Internal::ShowInEditorTaskHandler - &Show in editor + &Show in Editor &Показать в редакторе - Show task location in an editor - Показать размещение задачи в редакторе + Show task location in an editor. + Показать размещение задачи в редакторе. @@ -14883,7 +15868,7 @@ to project '%2'. Qt Creator - Qt Creator + Do you really want to remove the @@ -14947,6 +15932,22 @@ to project '%2'. Type Тип + + Duplicate Tool Chain detected + Обнаружен повторяющийся инструментарий + + + The following tool chain was already configured:<br>&nbsp;%1<br>It was not configured again. + Следующий инструментарий уже настроен:<br>&nbsp;%1<br>Повторно настраиваться не будет. + + + Duplicate Tool Chains detected + Обнаружены повторяющиеся инструментарии + + + The following tool chains were already configured:<br>&nbsp;%1<br>They were not configured again. + Следующие инструментарии уже настроены:<br>&nbsp;%1<br>Повторно настраиваться не будут. + ProjectExplorer::Internal::ToolChainOptionsPage @@ -14962,13 +15963,6 @@ to project '%2'. &Аннотация - - ProjectExplorer::Internal::WinGuiProcess - - The process could not be started: %1 - Не удалось запустить процесс: %1 - - ProjectExplorer::Internal::WizardPage @@ -14995,6 +15989,10 @@ to project '%2'. Project Management Управление проектом + + Manage + Управление + ProjectExplorer::ProjectConfiguration @@ -15170,6 +16168,10 @@ to project '%2'. Remove project from parent profile (Project explorer view); will not physically delete any files. Убрать проект... + + Set as Active Project + Сделать активным проектом + Full path of the current project's main file, including file name. Полный путь с именем файла к основному файлу проекта. @@ -15178,10 +16180,56 @@ to project '%2'. Full path of the current project's main file, excluding file name. Полный путь без имени файла к основному файлу проекта. + + No project loaded + Проект не загружен + + + Currently building the active project + Сборка активного проекта + + + Project has no build settings + У проекта отсутствуют настройки сборки + + + Building '%1' is disabled: %2<br> + Сборка «%1» отключена: %2<br> + + + A build is in progress + Выполняется сборка + + + Building '%1' is disabled: %2 + + Сборка «%1» отключена: %2 + + Do Not Close Не закрывать + + No active project + Активный проект не выбран + + + The project '%1' has no active target + У проекта «%1» нет активной цели + + + The target '%1' for project '%2' has no active run configuration + У цели «%1» проекта «%2» нет активной конфигурации запуска + + + Cannot run '%1' in mode '%2'. + Невозможно запустить «%1» в режиме «%2». + + + A build is still in progress. + Сборка ещё выполняется. + New Subproject Title of dialog @@ -15219,10 +16267,6 @@ to project '%2'. Rename Переименовать - - Set as Startup Project - Сделать активным проектом - Open Build/Run Target Selector... Открыть выбор цели сборки/выполнения... @@ -15309,14 +16353,6 @@ to version control (%2)? Delete %1 from file system? Удалить %1 с диска? - - Projects (%1) - Проекты (%1) - - - All Files (*) - Все файлы (*) - ProjectExplorer::ProjectsMode @@ -15365,6 +16401,15 @@ Reason: %2 <html><head/><body><center><i>%1</i> is still running.<center/><center>Force it to quit?</center></body></html> <html><head/><body><center><i>%1</i> ещё выполняется.<center/><center>Завершить принудительно?</center></body></html> + + PID %1 + + + + Invalid + Invalid process handle. + Неверный + Force Quit Завершить @@ -15484,6 +16529,21 @@ Do you still want to load the settings file? Форма + + ProjectWelcomePageWidget + + %1 (last session) + %1 (последняя сессия) + + + %1 (current session) + %1 (текущая сессия) + + + New Project + Новый проект + + QMakeStep @@ -15506,21 +16566,16 @@ Do you still want to load the settings file? Release Релиз - - Debug and release - Отладка и релиз - Link QML debugging library: Подключить библиотеку отладки QML: - QmlDesigner::AllPropertiesBox + QmlDesigner::ComponentAction - Properties - Title of properties view. - Свойства + Edit sub components defined in this file + Изменить компоненты определённые в этом файле @@ -15548,10 +16603,6 @@ Do you still want to load the settings file? Error Ошибка - - Cannot write file: "%1". - Не удалось записать файл: «%1». - QmlDesigner::FormEditorWidget @@ -15661,6 +16712,10 @@ Do you still want to load the settings file? &Restore Default View &Восстановить исходный вид + + &Go into Component + П&ерейти к элементу + Toggle &Left Sidebar Показать/скрыть &левую панель @@ -15773,6 +16828,65 @@ Do you still want to load the settings file? <Фильтр> + + QmlDesigner::ModelNodeContextMenu + + Selection + Выделение + + + Select parent: %1 + Выделить владельца: %1 + + + Select: %1 + Выделить: %1 + + + Stack (z) + Укладка (по оси Z) + + + To Front + В начало + + + To Back + В конец + + + Raise + Поднять + + + Lower + Опустить + + + Reset z property + Сбросить свойство z + + + Edit + Изменить + + + Reset Position + Сбросить позицию + + + Reset Size + Сбросить размер + + + Visibility + Видимость + + + Go into Component + Перейти к элементу + + QmlDesigner::NavigatorTreeModel @@ -15807,6 +16921,41 @@ Do you still want to load the settings file? Title of navigator view Навигатор + + Become first sibling of parent (CTRL + Left) + Сделать первым соседом родителя (CTRL + Влево) + + + Become child of first sibling (CTRL + Right) + Сделать потомком первого соседа (CTRL + Вправо) + + + Move down (CTRL + Down) + Переместить ниже (CTRL + Вниз) + + + Move up (CTRL + Up) + Переместить выше (CTRL + Вверх) + + + + QmlDesigner::NodeInstanceServerProxy + + Cannot Start QML Puppet Executable + Не удалось запустить программу QML Puppet + + + The executable of the QML Puppet process (%1) cannot be started. Please check your installation. QML Puppet is a process which runs in the background to render the items. + Не удалось запустить программа QML Puppet (%1). Если Qt Creator не может её запустить, значить есть проблема с установкой. Qml Puppet - это процесс, запускамый в фоне для отрисовки элементов. + + + Cannot Find QML Puppet Executable + Не удалось найти программу QML Puppet + + + The executable of the QML Puppet process (%1) cannot be found. Please check your installation. QML Puppet is a process which runs in the background to render the items. + Не удалось найти программа QML Puppet (%1). Если Qt Creator не может её найти, значить есть проблема с установкой. Qml Puppet - это процесс, запускамый в фоне для отрисовки элементов. + QmlDesigner::PluginManager @@ -15817,6 +16966,10 @@ Do you still want to load the settings file? QmlDesigner::PropertyEditor + + Properties + Свойства + Invalid Id Неверный идентификатор @@ -15882,11 +17035,6 @@ Do you still want to load the settings file? QmlDesigner::StatesEditorView - - State%1 - Default name for newly created states - Состояние%1 - base state исходное состояние @@ -15900,6 +17048,13 @@ Do you still want to load the settings file? Состояния + + QmlDesigner::TextToModelMerger error message + + No import statements found + Не найдены операторы import + + QmlDesigner::XUIFileDialog @@ -16112,6 +17267,18 @@ Do you still want to load the settings file? properties can only be assigned once свойства могут устанавливаться только раз + + could not resolve the prototype %1 of %2 + не удалось найти объявление %1 в %2 + + + could not resolve the prototype of %1 + не удалось найти объявление %1 + + + prototype cycle, the last non-repeated object is %1 + зацикленность определений, последний уникальный объект - %1 + expected id требуется id @@ -16129,25 +17296,6 @@ Do you still want to load the settings file? case не завершён return, break, continue или throw - - QmlJS::Interpreter::QmlXmlReader - - The file is not module file. - Файл не является модулем. - - - Unexpected element <%1> in <%2> - Неожиданный элемент <%1> в <%2> - - - invalid value '%1' for attribute %2 in <%3> - Неверное значение «%1» атрибута %2 в <%3> - - - <%1> has no valid %2 attribute - У <%1> нет корректного атрибута %2 - - QmlJS::Link @@ -16162,8 +17310,16 @@ Do you still want to load the settings file? QmlJS::TypeDescriptionReader - %1: %2 - + Errors while loading qmltypes from %1: +%2 + Возникли следующие ошибки при загрузке информации о типах QML из %1: +%2 + + + Warnings while loading qmltypes from %1: +%2 + Возникли следующие предупреждения при загрузке информации о типах QML из %1: +%2 @@ -16199,6 +17355,21 @@ Do you still want to load the settings file? Неверный путь + + QmlJSEditor::Internal::HoverHandler + + Library at %1 + Библиотека в %1 + + + Dumped plugins successfully. + Данные модулей получены успешно. + + + Read typeinfo files successfully. + Файлы информации о типах успешно прочитаны. + + QmlJSEditor::Internal::QmlJSEditorFactory @@ -16274,7 +17445,6 @@ Do you still want to load the settings file? QML - QML sub-menu in the Tools menu @@ -16398,70 +17568,19 @@ Do you still want to load the settings file? Контекстный путь - QML Observer - Обозреватель QML + QML Inspector + Инспектор QML Filter properties Свойства фильтра - - QmlJSInspector::Internal::QmlInspectorToolBar - - Apply Changes on Save - Применять изменения при сохранении - - - Show application on top - Показывать приложение поверх всех - - - Observer Mode - Режим наблюдения - - - Play/Pause Animations - Воспроизвести/приостановить анимации - - - Select - Выбрать - - - Zoom - Увеличить - - - Color Picker - Выбор цвета - - - 1x - 1x - - - 0.5x - 0.5x - - - 0.25x - 0.25x - - - 0.125x - 0.125x - - - 0.1x - 0.1x - - QmlJSInspector::Internal::QmlJSLiveTextPreview - You changed a QML file in Live Preview mode, which modifies the running QML application. In case of unexpected behavior, please reload the QML application. - QML файл был изменён в режиме предпросмотра в реальном времени. При этом происходит изменение работающего приложения QML. В случае неожиданного поведения, следует его перезагрузить. + You changed a QML file in Live Preview mode, which modifies the running QML application. In case of unexpected behavior, please reload the QML application. + QML файл был изменён в режиме предпросмотра в реальном времени. При этом происходит изменение работающего приложения QML. В случае неожиданного поведения, следует его перезагрузить. Disable Live Preview @@ -16499,6 +17618,53 @@ Do you still want to load the settings file? Выбор цвета для %1 + + QmlJSInspector::Internal::QmlJsInspectorToolBar + + Apply Changes on Save + Применять изменения при сохранении + + + Show application on top + Показывать приложение поверх всех + + + Play/Pause Animations + Воспроизвести/приостановить анимации + + + Select + Выбрать + + + Zoom + Масштаб + + + Color Picker + Выбор цвета + + + 1x + + + + 0.5x + + + + 0.25x + + + + 0.125x + + + + 0.1x + + + QmlJSInspector::ToolBarColorBox @@ -16506,11 +17672,22 @@ Do you still want to load the settings file? Скопировать цвет + + QmlJSTools + + Code Style + Стиль кода + + + Qt Quick + + + QmlJSTools::Internal::FunctionFilter - Functions - Функции + Methods and functions + Методы и функции @@ -16542,6 +17719,12 @@ Check 'General Messages' output pane for details. %1 В окне «Основные сообщения» могут быть подробности. + + + Warnings while parsing qmltypes information of %1: +%2 + Возникли следующие предупреждения при разборе информации о типах QML библиотеки %1: +%2 Type dump of C++ plugin failed. Parse error: @@ -16549,10 +17732,6 @@ Check 'General Messages' output pane for details. Не удалось получить типы от C++ модуля. Ошибка разбора: «%1» - - Could not open file '%1' for reading. - Не удалось открыть файл «%1» для чтения. - Failed to parse '%1'. Error: %2 @@ -16566,6 +17745,25 @@ Please build the debugging helpers on the Qt version options page. Соберите помощников отладчика в Инструменты - Параметры - Qt4. + + QmlJSTools::Internal::QmlJSToolsPlugin + + &QML/JS + + + + Reset Code Model + Сбросить модель кода + + + + QmlJSTools::QmlJSToolsSettings + + Global Qt Quick + Settings + Общие для Qt Quick + + QmlJsEditor @@ -16639,6 +17837,235 @@ Please build the debugging helpers on the Qt version options page. Ожидаемая лексема «%1» + + QmlProfiler::Internal::QmlProfilerAttachDialog + + Dialog + + + + Address: + Адрес: + + + 127.0.0.1 + + + + Port: + Порт: + + + + QmlProfiler::Internal::QmlProfilerEngine + + QML Profiler + Профилер QML + + + Application finished before loading profiled data. + Please use the stop button instead. + Приложение завершилось до загрузки данных профилирования. + В следующий раз используйте кнопку остановки. + + + The port seems to be in use. + Error message shown after 'Could not connect ... debugger:" + Похоже, порт уже используется. + + + The application is not set up for QML/JS debugging. + Error message shown after 'Could not connect ... debugger:" + Приложение не настроено для отладки QML/JS. + + + Qt Creator + + + + Could not connect to the in-process QML debugger: +%1 + %1 is detailed error message + Не удалось подключиться к внутрипроцессному отладчику QML. +%1 + + + No executable file to launch. + Нет программы для запуска. + + + + QmlProfiler::Internal::QmlProfilerEventStatistics + + Source code not available + Исходный код недоступен + + + <bytecode> + <байтовый код> + + + + QmlProfiler::Internal::QmlProfilerEventsView + + Location + Размещение + + + Type + Тип + + + Time in Percent + Время в процентах + + + Total Time + Общее время + + + Calls + Вызовы + + + Time per Call + Время вызовов + + + Longest Time + Наибольшее время + + + Shortest Time + Наименьшее время + + + Details + Подробнее + + + Paint + Отрисовка + + + Compile + Компиляция + + + Create + Создание + + + Binding + Привязка + + + Signal + Сигналы + + + + QmlProfiler::Internal::QmlProfilerRunControlFactory + + QML Profiler + Профилер QML + + + + QmlProfiler::Internal::QmlProfilerTool + + Attach... + Подключить... + + + QML Profiler + Профилер QML + + + The QML Profiler can be used to find performance bottlenecks in applications using QML. + QML Profiler предназначен для поиска узких мест в приложениях использующих QML. + + + Events + События + + + Timeline + Временная шкала + + + Callees + Вызывемые + + + Callers + Вызывающие + + + Discard data + Отбросить данные + + + Elapsed: 0 s + Прошло: 0 с + + + Disable profiling + Отключить профилирование + + + Enable profiling + Включить профилирование + + + Elapsed: %1 s + Прошло: %1 с + + + Detach + Отключить + + + + QmlProfiler::Internal::RemoteLinuxQmlProfilerRunner + + Not enough free ports on device for analyzing. + + Недостаточно свободных портов на устройстве для анализа. + + + + Starting remote process ... + + Запуск внешнего процесса... + + + + Finished running remote process. Exit code was %1. + + Выполнение внешнего процесса завершено. Код завершения %1. + + + + + QmlProfiler::Internal::TraceWindow + + Jump to previous event + Перейти к предыдущему событию + + + Jump to next event + Перейти к следующему событию + + + Zoom in 10% + Увеличить на 10% + + + Zoom out 10% + Уменьшить на 10% + + QmlProjectManager @@ -16722,37 +18149,44 @@ You can review Qt Quick UI projects in the QML Viewer and you need not build the - QmlProjectManager::Internal::QmlRunConfiguration + QmlProjectManager::Internal::QmlProjectRunControl - QML Viewer - Просмотр QML + Starting %1 %2 + + Запускается %1 %2 + + + + %1 exited with code %2 + + %1 завершился с кодом %2 + - QmlProjectManager::Internal::QmlRunControl - - Starting %1 %2 - Запускается %1 %2 - - - %1 exited with code %2 - %1 завершился с кодом %2 - - - - QmlProjectManager::Internal::QmlRunControlFactory + QmlProjectManager::Internal::QmlProjectRunControlFactory Run Запустить + + + QmlProjectManager::QmlProject + + Error while loading project file %1. + Ошибка при загрузке файла проекта %1. + + + QML project: %1 + Проект QML: %1 + + + + QmlProjectManager::QmlProjectPlugin Open Qt4 Options Открыть опции Qt4 - - Cancel - Отмена - QML Observer Missing Отсутствует обозреватель QML @@ -16766,15 +18200,12 @@ You can review Qt Quick UI projects in the QML Viewer and you need not build the Обозреватель QML предоставляет дополнительные возможности для отладки приложений QML такие, как интерактивная отладка и инструменты инспектирования. Он должен быть собран отдельно для каждого используемого профиля Qt. На странице настроек Qt4 следует выбрать установка Qt и щёлкнуть «Пересобрать». - - QmlProjectManager::QmlProject - - Error while loading project file %1. - Ошибка при загрузке файла проекта %1. - - QmlProjectManager::QmlProjectRunConfiguration + + No qmlviewer or qmlobserver found. + Не найдены ни qmlviewer, ни qmlobserver. + QML Viewer QMLRunConfiguration display name. @@ -16851,24 +18282,12 @@ You can review Qt Quick UI projects in the QML Viewer and you need not build the Проект Qt Widget - Maemo - + Linux Devices + Linux-устройства Qt4ProjectManager::AbstractMobileApp - - Could not open desktop file template - Не удалось открыть шаблон файла ярлыка - - - Could not open main.cpp template '%1'. - Не удалось открыть шаблон main.cpp «%1». - - - Could not open project file template '%1'. - Не удалось открыть шаблонный файл проекта «%1». - Could not open template file '%1'. Не удалось открыть шаблонный файл «%1». @@ -16889,94 +18308,119 @@ You can review Qt Quick UI projects in the QML Viewer and you need not build the Особенности Symbian - Maemo Specific - Особенности Maemo + Maemo5 And Meego Specific + Особенности Maemo5 и Meego + + + Harmattan Specific + Особенности Harmattan - Qt4ProjectManager::Internal::AbstractDebBasedQt4MaemoTarget + Qt4ProjectManager::CodaRunControl - Debian changelog file '%1' has unexpected format. - Файл журнала изменений Debian «%1» имеет неожиданный формат. + No device is connected. Please connect a device and try again. + + Устройство не подключено. Подключите устройство и попробуйте снова. + - Error writing Debian changelog file '%1': %2 - Ошибка записи журнала изменений Debian «%1»: %2 + Executable file: %1 + + Исполняемый файл: %1 + - Invalid icon data in Debian control file. - Неверные данные значка в управляющем файле Debian. + Connecting to '%1'... + + Подключение к «%1»... + - Could not read image file '%1'. - Невозможно прочитать файл изображения «%1». + Unable to create CODA connection. Please try again. + + Не удалось создать подключение CODA. Попробуйте ещё раз. + - Could not export image file '%1'. - Невозможно экспортировать файл изображения «%1». + Could not open serial device: %1 + + Не удалось открыть последовательное устройство: %1 + - Error writing file '%1': %2 - Ошибка записи файла «%1»: %2 + Connecting to %1:%2... + + Подключение к %1: %2... + - Unable to create Debian templates: dh_make failed (%1) - Не удалось создать шаблоны Debian: ошибка dh_make (%1) + Error: %1 + + Ошибка: %1 + - Unable to create debian templates: dh_make failed (%1) - Не удалось создать шаблоны debian: ошибка dh_make (%1) + Connected. + + Подключено. + - Unable to move new debian directory to '%1'. - Невозможно переместить новый каталог debian в «%1». + Process has finished. + + Процесс завершился. + - Packaging Error: Cannot open file '%1'. - Ошибка создания пакета: Невозможно открыть файл «%1». + Thread has crashed: %1 + + Поток завершился крахом: %1 + - Packaging Error: Cannot write file '%1'. - Ошибка создания пакета: Невозможно записать файл «%1». - - - - Qt4ProjectManager::Internal::AbstractQt4MaemoTarget - - File '%1' does not exist - Файл «%1» отсутствует + The process is already running on the device. Please first close it. + + Процесс уже запущен на устройстве. Сначала завершите его. + - Cannot open file '%1': %2 - Невозможно открыть файл «%1»: %2 + Launching: %1 + + Запуск: %1 + - Qt Creator - + Launched. + + Запущено. + - Do you want to remove the packaging file(s) associated with the target '%1'? - Желаете удалить файлы сборки пакета связанные с целью «%1»? + Launch failed: %1 + + Не удалось запустить: %1 + - Error creating Maemo packaging directory '%1'. - Не удалось создать каталог пакетов Maemo «%1». + Waiting for CODA + Ожидание CODA - Add Packaging Files to Project - Добавить в проект файлы создания пакета + Qt Creator is waiting for the CODA application to connect.<br>Please make sure the application is running on your mobile phone and the right IP address and/or port are configured in the project settings. + Qt Creator ожидает подключения приложения CODA.<br>Убедитесь, что приложение работает на мобильном телефоне, и указаны корректные IP адрес и порт в настройках проекта. - Qt Creator has set up the following files to enable packaging: - %1 -Do you want to add them to the project? - Qt Creator настроил следующие файлы для создания пакета: - %1 -Желаете добавить их в проект? + Canceled. + + Отменено. + - Error creating Maemo templates - Ошибка создания шаблонов Maemo + The device '%1' has been disconnected. + + Устройство «%1» было отключено. + @@ -17131,81 +18575,6 @@ Do you want to add them to the project? Удалить класс %1 из списка? - - Qt4ProjectManager::Internal::CodaRunControl - - No device is connected. Please connect a device and try again. - Устройство не подключено. Подключите устройство и попробуйте снова. - - - Executable file: %1 - Исполняемый файл: %1 - - - Connecting to %1:%2... - Подключение к %1: %2... - - - Error: %1 - Ошибка: %1 - - - Connected. - Подключено. - - - Process has finished. - Процесс завершился. - - - Thread has crashed: %1 - Поток завершился крахом: %1 - - - The device '%1' has been disconnected - Устройство «%1» было отключено - - - The process is already running on the device. Please first close it. - Процесс уже запущен на устройстве. Сначала завершите его. - - - Connecting to '%1'... - Подключение к «%1»... - - - Unable to create CODA connection. Please try again. - Не удалось создать подключение CODA. Попробуйте ещё раз. - - - Could not open serial device: %1 - Не удалось открыть последовательное устройство: %1 - - - Launching: %1 - Запуск: %1 - - - Launched. - Запущено. - - - Launch failed: %1 - Не удалось запустить: %1 - - - Waiting for CODA - Ожидание CODA - - - Qt Creator is waiting for the CODA application to connect.<br>Please make sure the application is running on your mobile phone and the right IP address and/or port are configured in the project settings. - Qt Creator ожидает подключения приложения CODA.<br>Убедитесь, что приложение работает на мобильном телефоне, и указаны корректные IP адрес и порт в настройках проекта. - - - Canceled. - Отменено. - - Qt4ProjectManager::Internal::ConsoleAppWizard @@ -17316,57 +18685,6 @@ Preselects a desktop Qt for building the application if available. Подробнее о модуле - - Qt4ProjectManager::Internal::DebuggingHelper - - Used to extract QML type information from library-based plugins. - Используется для извлечения информации о типах QML из модулей. - - - Build - Собрать - - - Show compiler output of last build. - Показывать вывод компилятора последней сборки. - - - Show Log - Показать журнал - - - Compile debugging helpers that are checked. - Собрать выбранных помощников отладчика. - - - Build All - Собрать всё - - - QML Dump: - Дампер QML: - - - A modified version of qmlviewer with support for QML/JS debugging. - Изменённая версия qmlviewer с поддержкой отладки Qml/JS. - - - QML Observer: - Обозреватель QML: - - - QML Debugging Library: - Отладочная библиотека QML: - - - Helps showing content of Qt types. Only used in older versions of GDB. - Помогает отображать содержимое типов Qt. Используется только в старых версиях GDB. - - - GDB Helper: - Помощник GDB: - - Qt4ProjectManager::Internal::DesignerExternalEditor @@ -17468,191 +18786,6 @@ Preselects a desktop Qt for building the application if available. - - Qt4ProjectManager::Internal::GettingStartedWelcomePage - - Getting Started - Начало работы - - - - Qt4ProjectManager::Internal::GettingStartedWelcomePageWidget - - Form - Форма - - - Tutorials - Учебники - - - Did You Know? - Знаете ли вы, что? - - - The Qt Creator User Interface - Интерфейс пользователя Qt Creator - - - Building and Running an Example - Сборка и запуск примера - - - Creating a Qt C++ Application - Создание приложения Qt на С++ - - - Creating a Mobile Application - Создание мобильного приложения - - - Creating a Qt Quick Application - Создание приложения Qt Quick - - - Copy Project to writable Location? - Скопировать проект в каталог с правами на запись? - - - <p>The project you are about to open is located in the write-protected location:</p><blockquote>%1</blockquote><p>Please select a writable location below and click "Copy Project and Open" to open a modifiable copy of the project or click "Keep Project and Open" to open the project in location.</p><p><b>Note:</b> You will not be able to alter or compile your project in the current location.</p> - <p>Открываемый проект находится в защищённом от записи каталоге:</p><blockquote>%1</blockquote><p>Ниже выберите каталог, в который разрешена запись, и щёлкните «Скопировать и открыть», для открытия изменяемой копии проекта, или «Открыть для чтения», чтобы открыть проект в текущем каталоге.</p><p><b>Изменение и сборка проекта, расположенного в данном каталоге, недоступны.</b></p> - - - &Location: - &Размещение: - - - &Copy Project and Open - &Скопировать и открыть - - - &Keep Project and Open - Открыть для &чтения - - - Warning - Внимание - - - The specified location already exists. Please specify a valid location. - Указанный каталог уже существует. Укажите другой каталог. - - - New Project - Новый проект - - - Cmd - Shortcut key - - - - Alt - Shortcut key - - - - Ctrl - Shortcut key - - - - If you add external libraries to your project, Qt Creator will automatically offer syntax highlighting and code completion. - Если добавить внешние библиотеки в проект, то Qt Creator автоматически включит их в подсветку синтаксиса и дополнение кода. - - - You can switch between the output pane by hitting <tt>%1+n</tt> where n is the number denoted on the buttons at the window bottom: <br /><br />1: Build Issues, 2: Search Results, 3: Application Output, 4: Compile Output - Можно переключать окно вывода используя <tt>%1+n</tt>, где n - число, указанное на кнопке внизу окна:<br/><>1 - Сообщения сборки, 2 - Результаты поиска, 3 - Консоль программы, 4 - Консоль сборки - - - You can quickly search methods, classes, help and more using the <a href="qthelp://com.nokia.qtcreator/doc/creator-editor-locator.html">Locator bar</a> (<tt>%1+K</tt>). - Можно осуществлять быстрый поиск методов, классов, справки и прочего, используя <a href="qthelp://com.nokia.qtcreator/doc/creator-editor-locator.html">Панель поисковика</a> (<tt>%1+K</tt>). - - - You can add custom build steps in the <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html">build settings</a>. - Можно добавить свои этапы сборки в <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html">настройках сборки</a>. - - - Within a session, you can add <a href="qthelp://com.nokia.qtcreator/doc/creator-build-dependencies.html">dependencies</a> between projects. - В пределах одной сессии можно добавлять <a href="qthelp://com.nokia.qtcreator/doc/creator-build-dependencies.html">зависимости</a> проектов друг от друга. - - - <a href='%1'>Details...</a> - <a href='%1'>Подробнее...</a> - - - <a href='%1'>Take Tutorial</a> - <a href='%1'>Самоучитель</a> - - - You can show and hide the side bar using <tt>%1+0<tt>. - Можно отображать и скрывать боковую панель, используя <tt>%1+0<tt>. - - - Choose an Example... - Выберите пример... - - - You can fine tune the <tt>Find</tt> function by selecting &quot;Whole Words&quot; or &quot;Case Sensitive&quot;. Simply click on the icons on the right end of the line edit. - Можно тонко настроить функцию <tt>Поиск</tt>, выбрав &quot;Слово целиком&quot; и/или &quot;Учитывать регистр&quot;. Просто кликните на иконку справа от редактируемой строки. - - - The code completion is CamelCase-aware. For example, to complete <tt>namespaceUri</tt> you can just type <tt>nU</tt> and hit <tt>Ctrl+Space</tt>. - Автодополнение кода ориентировано на ВерблюжийРегистр. Например, чтобы получить <tt>namespaceUri</tt> можно просто ввести <tt>nU</tt> и нажать <tt>Ctrl+Space</tt>. - - - You can force code completion at any time using <tt>Ctrl+Space</tt>. - Можно в любой момент вызвать дополнение кода нажатием <tt>Ctrl+Space</tt>. - - - You can start Qt Creator with a session by calling <tt>qtcreator &lt;sessionname&gt;</tt>. - Можно открыть сессию в Qt Creator, выполнив команду <tt>qtcreator &lt;sessionname&gt;</tt>. - - - You can return to edit mode from any other mode at any time by hitting <tt>Escape</tt>. - Можно вернуться в режим редактирования из любого другого режима нажатием на <tt>Escape</tt>. - - - You can set the preferred editor encoding for every project in <tt>Projects -> Editor Settings -> Default Encoding</tt>. - Можно установить предпочитаемую кодировку редактора для каждого проекта в <tt>Проекты -> Настройки редактора -> Кодировка по умолчанию</tt>. - - - You can use Qt Creator with a number of <a href="qthelp://com.nokia.qtcreator/doc/creator-version-control.html">revision control systems</a> such as Subversion, Perforce, CVS and Git. - Можно использовать Qt Creator с <a href="qthelp://com.nokia.qtcreator/doc/creator-version-control.html">системами контроля версий</a>, такими как Subversion, Perforce, CVS и Git. - - - In the editor, <tt>F2</tt> follows symbol definition, <tt>Shift+F2</tt> toggles declaration and definition while <tt>F4</tt> toggles header file and source file. - В редакторе: <tt>F2</tt> делает переход к определению символа, <tt>Shift+F2</tt> переключает объявление и определение, а <tt>F4</tt> переключает заголовочный файл и файл исходных текстов. - - - Create Project... - Создать проект... - - - Open Project... - Открыть проект... - - - Examples - Примеры - - - Featured - Полезное - - - Explore Qt C++ examples: - Примеры Qt C++: - - - Examples Not Installed... - Примеры не установлены... - - - Explore Qt Quick examples: - Примеры Qt Quick: - - Qt4ProjectManager::Internal::GuiAppWizard @@ -17667,10 +18800,6 @@ Preselects a desktop Qt for building the application if available. Выбирается профиль Qt «Настольный» для сборки приложения, если он доступен. - - The template file '%1' could not be opened for reading: %2 - Файл шаблона «%1» не может быть открыт для чтения: %2 - Qt4ProjectManager::Internal::GuiAppWizardDialog @@ -17917,1386 +19046,6 @@ Adds the library and include paths to the .pro file. Особенности Symbian - - Qt4ProjectManager::Internal::MaemoConfigTestDialog - - Testing configuration. This may take a while. - Проверка конфигурации. Это может занять время. - - - Testing configuration... - Тестовая конфигурация... - - - Stop Test - Остановить проверку - - - Could not connect to host: %1 - Ну удалось подключиться к узлу: %1 - - - -Did you start Qemu? - -Qemu уже запущен? - - - Remote process failed: %1 - Внешний процесс завершился с ошибкой: %1 - - - Qt version mismatch! Expected Qt on device: 4.6.2 or later. - Неподходящий профиль Qt! Требуется Qt на устройстве: 4.6.2 и выше. - - - %1 is not installed.<br>You will not be able to deploy to this device. - %1 не установлен.<br>Установка на это устройство невозможна. - - - Please switch the device to developer mode via Settings -> Security. - Переключите устройство в режим разработчика в Settings -> Security. - - - Error retrieving list of used ports: %1 - Ошибка получения списка используемых портов: %1 - - - All specified ports are available. - Все указанные порты доступны. - - - The following supposedly free ports are being used on the device: - На устройстве используются следующие обычно свободные порты: - - - Device configuration okay. - Конфигурация устройства в порядке. - - - Close - Закрыть - - - Device configuration test failed: Unexpected output: -%1 - Ошибка при проверке настройки устройства: неожиданный результат: -%1 - - - Hardware architecture: %1 - - Аппаратная архитектура: %1 - - - - Kernel version: %1 - - Версия ядра: %1 - - - - No Qt packages installed. - Пакеты Qt не установлены. - - - List of installed Qt packages: - Список установленых пакетов Qt: - - - - Qt4ProjectManager::Internal::MaemoDebugSupport - - Preparing remote side ... - Подготовка удалённой стороны... - - - SSH connection error: %1 - Ошибка подключения SSH: %1 - - - Upload failed: Could not open file '%1' - Ошибка при отправке: Не удалось открыть файл «%1» - - - Started uploading debugging helpers ('%1'). - Запущена отправка помощников отладчика («%1»). - - - Could not upload debugging helpers: %1. - Невозможно отправить помощников отладчика: %1. - - - Finished uploading debugging helpers. - Отправка помощников отладчика завершена. - - - The gdbserver process closed unexpectedly. - Процесс gdbserver неожиданно завершился. - - - Initial setup failed: %1 - Не удалось выполнить начальную настройку: %1 - - - Not enough free ports on device for debugging. - Для отладки не достаточно свободных портов на устройстве. - - - - Qt4ProjectManager::Internal::MaemoDeployStep - - Deployment failed: No valid device set. - Ошибка установки: Не указано корректное устройство. - - - Connection error: %1 - Ошибка подключения: %1 - - - Connecting to device... - Подключение к устройству... - - - All files up to date, no installation necessary. - Все файлы уже обновлены, установка не требуется. - - - Deploy to Maemo5 device - MaemoDeployStep default display name - Установить на устройство Maemo5 - - - Deploy to Harmattan device - Установить на устройство Harmattan - - - Deploy to Meego device - Установить на устройство Meego - - - Cannot deploy: Still cleaning up from last time. - Невозможно установить: всё ещё идёт очистка с предыдущего раза. - - - Deployment failed: Qemu was not running. It has now been started up for you, but it will take a bit of time until it is ready. - Не удалось установить: Qemu ещё не запущен. Он перейдёт в состояние готовности через некоторое время. - - - Upload failed: Could not open file '%1' - Ошибка при отправке: Не удалось открыть файл «%1» - - - Started uploading file '%1'. - Начата отправка файла «%1». - - - Could not set up SFTP connection: %1 - Не удалось устновить соединение SFTP: %1 - - - Failed to upload file %1: %2 - Не удалось отправить файл %1: %2 - - - Successfully uploaded file '%1'. - Успешно отправлен файл «%1». - - - Deployment failed. - Установка не удалась. - - - Deployment finished. - Установка завершена. - - - Installing package to sysroot ... - Установка пакета в sysroot... - - - Installation to sysroot failed, continuing anyway. - Не удалось установить в sysroot, в любом случае продолжаем. - - - Copying files to sysroot ... - Копирование файлов в sysroot... - - - Sysroot installation failed: Could not copy '%1' to '%2'. Continuing anyway. - Не удалось установить в sysroot: Не удалось скопировать «%1» в «%2». В любом случае продолжаем. - - - Installing package to device... - Установка пакета в устройство... - - - Copying file '%1' to path '%2' on the device... - Копирование файла «%1» в «%2» на устройстве... - - - Copying file '%1' failed. - Не удалось скопировать файл «%1». - - - Successfully copied file '%1'. - Файл «%1» успешно скопирован. - - - All files copied. - Все файлы скопированы. - - - Installing package failed. - Не удалось установить пакет. - - - Installation failed: You tried to downgrade a package, which is not allowed. - Установка не удалась: была попытка установить пакет с версией ниже текущей, а это не разрешено. - - - Package installed. - Пакет установлен. - - - - Qt4ProjectManager::Internal::MaemoDeployStepFactory - - Deploy to device - Установить на устройство - - - - Qt4ProjectManager::Internal::MaemoDeployStepWidget - - <b>Deploy to device</b>: %1 - <b>Установить на устройство</b>: %1 - - - Could not create desktop file - Не удалось создать файл .desktop - - - Error creating desktop file: %1 - Ошибка создания файла .desktop: %1 - - - Choose Icon (will be scaled to 64x64 pixels, if necessary) - Выберите значок (размер при необходимости будет изменён до 64x64) - - - Invalid Icon - Неверный значок - - - Unable to read image - Не удалось прочитать изображение - - - Failed to Save Icon - Не удалось сохранить значок - - - Could not save icon to '%1'. - Не удалось сохранить значок в «%1». - - - Could Not Add Icon - Не удалось добавить значок - - - Error adding icon: %1 - Ошибка добавления значка: %1 - - - - Qt4ProjectManager::Internal::MaemoDeployableListModel - - <no target path set> - <целевой путь не задан> - - - Local File Path - Путь к локальному файлу - - - Remote Directory - Внешний каталог - - - Failed to open '%1': %2 - Не удалось открыть «%1»: %2 - - - Could not write '%1': %2 - Не удалось записать в «%1»: %2 - - - Error writing project file. - Ошибка записи файла проекта. - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizard - - New Device Configuration Setup - Настройка новой конфигурации устройства - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizardFinalPage - - Setup Finished - Настройка завершена - - - The new device configuration will now be created and a test procedure will be run to check whether Qt Creator can connect to the device and to provide some information about its features. - Сейчас будет создана новая конфигурация устройства, а так же запущена процедура проверки подключения Qt Creator к устройству и загрузки некоторой информации об устройстве. - - - The new device configuration will now be created. - Будет создана конфигурация нового устройства. - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizardKeyCreationPage - - Key Creation - Создание ключей - - - Cannot Create Keys - Не удалось создать ключи - - - The path you have entered is not a directory. - Введённый путь не является каталогом. - - - The directory you have entered does not exist and cannot be created. - Введённый каталог не существует и не может быть создан. - - - Creating keys ... - Создание ключей... - - - Key creation failed: %1 - Не удалось создать ключи: %1 - - - Done. - Готово. - - - Failed to save key file %1: %2 - Не удалось сохранить файл ключа %1: %2 - - - Could Not Save File - Не удалось сохранить файл - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizardKeyDeploymentPage - - Key Deployment - Установка ключа - - - Deploying... - Установка... - - - Key Deployment Failure - Не удалось установить ключ - - - Key Deployment Success - Ключ успешно установлен - - - The key was successfully deployed. You may now close the "%1" application and continue. - Ключ был успешно установлен. Теперь можно закрыть приложение «%1» и продолжить. - - - Done. - Готово. - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizardPreviousKeySetupCheckPage - - Device Status Check - Проверка состояния устройства - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizardReuseKeysCheckPage - - Existing Keys Check - Проверка существующих ключей - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigWizardStartPage - - General Information - Общая информация - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigurations - - (default for %1) - (по умолчанию для %1) - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigurationsSettingsPage - - Maemo Device Configurations - Конфигурации устройств Maemo - - - - Qt4ProjectManager::Internal::MaemoDeviceConfigurationsSettingsWidget - - Physical Device - Физическое устройство - - - Emulator (Qemu) - Эмулятор (Qemu) - - - Choose Public Key File - Выбор файла открытого ключа - - - Public Key Files(*.pub);;All Files (*) - Файлы открытых ключей (*.pub);;Все файлы (*) - - - Deployment Failed - Установка не удалась - - - Stop Deploying - Прекратить установку - - - Deployment Succeeded - Установка выполнена - - - Key was successfully deployed. - Ключ был успешно установлен. - - - Deploy Public Key ... - Установить ключ... - - - You will need at least one port. - Требуется хотя бы один порт. - - - - Qt4ProjectManager::Internal::MaemoDeviceEnvReader - - Connection error: %1 - Ошибка подключения: %1 - - - Error running remote process: %1 - Ошибка выполнения внешнего процесса: %1 - - - -Remote stderr was: '%1' - -Удалённые сообщения об ошибках: «%1» - - - - Qt4ProjectManager::Internal::MaemoGlobal - - Could not connect to host: %1 - Ну удалось подключиться к узлу: %1 - - - -Did you start Qemu? - -Qemu уже запущен? - - - -Is the device connected and set up for network access? - -Устройство уже подключено? Доступ в сеть настроен? - - - (No device) - (Нет устройства) - - - SDK Connectivity - - - - Mad Developer - - - - Failed to remove directory '%1'. - Не удалось удалить каталог «%1». - - - Failed to remove file '%1'. - Не удалось удалить файл «%1». - - - Failed to create directory '%1'. - Не удалось создать каталог «%1». - - - Could not copy file '%1' to '%2'. - Не удалось скопировать файл «%1» в «%2». - - - - Qt4ProjectManager::Internal::MaemoKeyDeployer - - Could not read public key file '%1'. - Не удалось прочитать файл открытого ключа «%1». - - - Connection failed: %1 - Ошибка подключения: %1 - - - Key deployment failed: %1. - Не удалось установить ключ: %1. - - - - Qt4ProjectManager::Internal::MaemoPackageCreationFactory - - Create Debian Package - Создать пакет Debian - - - - Qt4ProjectManager::Internal::MaemoPackageCreationStep - - Creating package file ... - Создание файла пакета... - - - Package created. - Пакет создан. - - - Package Creation: Running command '%1'. - Создание пакета: Выполнение команды «%1». - - - Packaging failed. - Не удалось создать пакет. - - - Packaging for Maemo - Создание пакета для Maemo - - - Could not copy file '%1' to '%2' - Невозможно скопировать файл «%1» в «%2» - - - Could not move package files from %1 to %2. - Не удалось переместить файлы пакета из %1 в %2. - - - Package up to date. - Пакет уже обновлён. - - - Could not move package file from %1 to %2. - Не удалось переместить файл пакета из %1 в %2. - - - Packaging failed: Foreign debian directory detected. - Не удалось создать пакет: обнаружен другой каталог debian. - - - You are not using a shadow build and there is a debian directory in your project root ('%1'). Qt Creator will not overwrite that directory. Please remove it or use the shadow build feature. - Теневая сборка не используется, а в корневом каталоге проекта («%1») находится каталог dibian. Qt Creator не будет его перезаписывать. Этот каталог следует удалить или использовать теневую сборку. - - - Could not remove directory '%1': %2 - Не удалось удалить каталог «%1»: %2 - - - Could not create Debian directory '%1'. - Невозможно создать каталог Debian «%1». - - - Error: Could not create file '%1'. - Ошибка: Невозможно создать файл «%1». - - - Packaging error: Could not start command '%1'. Reason: %2 - Ошибка создания пакета: Не удалось выполнить команду «%1» по причине: %2 - - - Packaging Error: Command '%1' failed. - Ошибка создания пакета: Команда «%1» завершилась с ошибкой. - - - Reason: %1 - Причина: %1 - - - Exit code: %1 - Код завершения: %1 - - - Your project name contains characters not allowed in Debian packages. -They must only use lower-case letters, numbers, '-', '+' and '.'. -We will try to work around that, but you may experience problems. - Название проекта содержит недопустимые для пакетов Debian символы. -Допустимы только буквы в нижнем регистре, числа, «-», «+» и «.». -Будет предпринята попытка обойти это, но могут возникнуть проблемы. - - - - Qt4ProjectManager::Internal::MaemoPackageCreationWidget - - No Version Available. - Версия отсутствует. - - - Could not read icon - Невозможно прочитать значок - - - Images - Изображения - - - Could Not Set New Icon - Невозможно установить новый значок - - - File Error - Ошибка файла - - - Could not set project name. - Не удалось задать имя проекта. - - - Could not set package name for project manager. - Не удалось задать имя пакета для менеджера пакетов. - - - Could not set project description. - Не удалось задать описание проекта. - - - Could Not Set Version Number - Невозможно задать новый номер версии - - - <b>Create Package:</b> - <b>Создать пакет:</b> - - - Choose Image (will be scaled to 48x48 pixels if necessary) - Выбор изображения (при необходимости будет растянуто до 48х48 пикселей) - - - (Packaging disabled) - (Создание пакета отключено) - - - - Qt4ProjectManager::Internal::MaemoPerTargetDeviceConfigurationListModel - - (default) - (по умолчанию) - - - - Qt4ProjectManager::Internal::MaemoProFilesUpdateDialog - - Updateable Project Files - Обновляемые файлы проекта - - - - Qt4ProjectManager::Internal::MaemoPublishedProjectModel - - Include in package - Включать в пакет - - - Include - Включать - - - Do not include - Не включать - - - - Qt4ProjectManager::Internal::MaemoPublisherFremantleFree - - Canceled. - Отменено. - - - Publishing canceled by user. - Публикация отменена пользователем. - - - The project is missing some information important to publishing: - У проекта отсутствует информация, необходимая для публикации: - - - Publishing failed: Missing project information. - Не удалось опубликовать: отсутствует информация о проекте. - - - Removing left-over temporary directory ... - Удаление временного каталога... - - - Publishing failed: Could not create source package. - Не удалось опубликовать: не удалось создать архив исходников. - - - Setting up temporary directory ... - Подготовка временного каталога... - - - Error: Could not create temporary directory. - Ошибка: не удалось создать временный каталог. - - - Error: Could not copy project directory - Ошибка: не удалось скопировать каталог проекта - - - Cleaning up temporary directory ... - Очистка временного каталога... - - - Publishing failed: Could not create package. - Не удалось опубликовать: не удалось создать пакет. - - - Error removing temporary directory: %1 - Ошибка удаления временного каталога: %1 - - - Error: Could not fix newlines - Ошибка: Не удалось исправить окончания строк - - - Failed to create directory '%1'. - Не удалось создать каталог «%1». - - - Could not copy file '%1' to '%2'. - Не удалось скопировать файл «%1» в «%2». - - - Error: Cannot open file '%1'. - Ошибка: не удалось открыть файл «%1». - - - Error: Failed to start dpkg-buildpackage. - Ошибка: не удалось запустить dpkg-buildpackage. - - - Error: dpkg-buildpackage did not succeed. - Ошибка: dpkg-buildpackage завершился с ошибкой. - - - Package creation failed. - Не удалось создать пакет. - - - Done. - Готово. - - - Packaging finished successfully. The following files were created: - - Создание пакета успешно завершено. Созданы следующие файлы: - - - - Building source package... - Создание пакета исходников... - - - Starting scp ... - Запуск scp... - - - SSH error: %1 - Ошибка SSH: %1 - - - Upload failed. - Отправка не удалась. - - - Error uploading file: %1 - Ошибка отправки файла: %1 - - - Error uploading file. - Ошибка отправки файла. - - - All files uploaded. - Все файлы отправлены. - - - Upload succeeded. You should shortly receive an email informing you about the outcome of the build process. - Отправка успешно завершена. Скоро придёт электронное письмо с результатом сборки. - - - Uploading file %1 ... - Отправка файла %1... - - - Cannot open file for reading: %1 - Не удалось открыть файл для чтения: %1 - - - Cannot read file: %1 - Не удалось прочитать файл: %1 - - - Failed to adapt desktop file '%1'. - Не удалось настроить файл .desktop «%1». - - - The package description is empty. You must set one in Projects -> Run -> Create Package -> Details. - Описание проекта пусто. Необходимо задать его в Проекты -> Запуск -> Создание пакета -> Подробнее. - - - The package description is '%1', which is probably not what you want. Please change it in Projects -> Run -> Create Package -> Details. - Описание «%1», возможно не то, что ожидается. Смените его в Проекты -> Запуск -> Создание пакета -> Подробнее. - - - You have not set an icon for the package manager. The icon must be set in Projects -> Run -> Create Package -> Details. - Значок для менеджера пакетов не задан. Он должен быть задан в Проекты -> Запуск -> Создание пакета -> Подробнее. - - - - Qt4ProjectManager::Internal::MaemoPublishingUploadSettingsPageFremantleFree - - Publishing to Fremantle's "Extras-devel/free" Repository - Публикация в хранилище «Extras-devel/free» от Fremantle - - - Upload options - Настройки отправки - - - Choose a private key file - Выберите секретный ключ - - - - Qt4ProjectManager::Internal::MaemoPublishingWizardFactoryFremantleFree - - Publish for "Fremantle Extras-devel free" repository - Публикация в хранилище «Extras-devel/free» от Fremantle - - - This wizard will create a source archive and optionally upload it to a build server, where the project will be compiled and packaged and then moved to the "Extras-devel free" repository, from where users can install it onto their N900 devices. For the upload functionality, an account at garage.maemo.org is required. - Этот мастер создаст архив исходников и отправит (опционально) их на сервер сборки, где проект будет скомпилирован и собран в пакет, а затем помещён в хранилище «Extras-devel free». Оттуда пользователи смогут установить его на свои устройства N900. Для отправки необходима учётная запись на garage.maemo.org. - - - - Qt4ProjectManager::Internal::MaemoPublishingWizardFremantleFree - - Publishing to Fremantle's "Extras-devel free" Repository - Публикация в хранилище «Extras-devel/free» от Fremantle - - - Build Settings - Настройки сборки - - - Upload Settings - Настройки отправки - - - Result - Результат - - - - Qt4ProjectManager::Internal::MaemoQemuCrashDialog - - Qemu error - Ошибка Qemu - - - Qemu crashed. - Qemu завершился крахом. - - - Click here to change the OpenGL mode. - Щёлкните здесь для смены режима OpenGL. - - - You have configured Qemu to use OpenGL hardware acceleration, which might not be supported by your system. You could try using software rendering instead. - Qemu настроен на аппаратное ускорение OpenGL, которое, возможно, не поддерживается вашей системой. Попробуйте включить программную отрисовку. - - - Qemu is currently configured to auto-detect the OpenGL mode, which is known to not work in some cases. You might want to use software rendering instead. - Qemu настроен на автоматическое определение режима OpenGL, которое иногда не работает. Попробуйте включить программную отрисовку. - - - - Qt4ProjectManager::Internal::MaemoQemuManager - - Start Maemo Emulator - Запустить эмулятор Maemo - - - Qemu has been shut down, because you removed the corresponding Qt version. - Qemu был завершён, так как был удалён соответствующий ему профиль Qt. - - - Qemu finished with error: Exit code was %1. - Qemu завершился с ошибкой: код завершения %1. - - - Qemu failed to start: %1 - Qemu не удалось запуститься: %1 - - - Qemu error - Ошибка Qemu - - - Stop Maemo Emulator - Остановить эмулятор Maemo - - - - Qt4ProjectManager::Internal::MaemoQemuSettingsPage - - Qemu Settings - Настройки Qemu - - - - Qt4ProjectManager::Internal::MaemoRemoteMounter - - No directories to mount - Отсутствуют каталоги для монтирования - - - No directories to unmount - Отсутствуют каталоги для отмонтирования - - - Could not execute unmount request. - Не удалось выполнить запрос на отмонтирование. - - - Failure unmounting: %1 - Отмонтирование не удалось: %1 - - - Finished unmounting. - Отмонтирование закончено. - - - -stderr was: '%1' - -содержимое stderr: «%1» - - - Error: Not enough free ports on device to fulfill all mount requests. - Ошибка: на устройстве недостаточно свободных портов для выполнения всех требуемых монтирований. - - - Starting remote UTFS clients... - Запуск внешнего клиента UTFS... - - - Mount operation succeeded. - Операция монтирования успешно завершена. - - - Failure running UTFS client: %1 - Ошибка выполнения клиента UTFS: %1 - - - Starting UTFS servers... - Запуск серверов UTFS... - - - -stderr was: %1 - -содержимое stderr: %1 - - - Error running UTFS server: %1 - Ошибка работы сервера UTFS: %1 - - - Timeout waiting for UTFS servers to connect. - Истекло время ожидания подключения серверов UTFS. - - - - Qt4ProjectManager::Internal::MaemoRemoteMountsModel - - Local directory - Локальный каталог - - - Remote mount point - Внешняя точка монтрования - - - - Qt4ProjectManager::Internal::MaemoRemoteProcessList - - Connection failure: %1 - Ошибка подключения: %1 - - - Error: Remote process failed to start: %1 - Ошибка: не удалось запустить внешний процесс: %1 - - - Error: Remote process crashed: %1 - Ошибка: внешний процесс завершился крахом: %1 - - - Remote process failed. - Внешний процесс завершился с ошибкой. - - - -Remote stderr was: %1 - -Содержимое внешнего stderr: %1 - - - PID - - - - Command Line - Командная строка - - - - Qt4ProjectManager::Internal::MaemoRemoteProcessesDialog - - Remote Error - Удалённая ошибка - - - - Qt4ProjectManager::Internal::MaemoRunConfiguration - - Run on Maemo device - Maemo run configuration default display name - Запуск на устройстве Maemo - - - Clean Environment - Чистая среда - - - System Environment - Системная среда - - - - Qt4ProjectManager::Internal::MaemoRunConfigurationWidget - - <a href="%1">Manage device configurations</a> - <a href="%1">Управление конфигурациями устройств</a> - - - <a href="%1">Set Debugger</a> - <a href="%1">Установить отладчик</a> - - - Device configuration: - Конфигурация устройства: - - - Arguments: - Параметры: - - - Base environment for this run configuration: - Базовая среда данной конфигурации выполнения: - - - <b>Debugging details:</b> Use GDB - <b>Особенности отладки:</b> используется GDB - - - <b>Debugging details:</b> Use GDB server - <b>Особенности отладки:</b> используется сервер GDB - - - Cancel Fetch Operation - Прервать операцию загрузки - - - Device error - Ошибка устройства - - - Fetching environment failed: %1 - Не удалось загрузить окружение: %1 - - - No local directories to be mounted on the device. - Локальные каталоги не смонтированы на устройстве. - - - One local directory to be mounted on the device. - Один локальный каталог смонтирован на устройстве. - - - WARNING: You want to mount %1 directories, but your device has only %n free ports.<br>You will not be able to run this configuration. - - Предупреждение: попытка подключить %1 каталог(ов), когда у устройства только %n свободный порт.<br>Запустить эту конфигурацию будет невозможно. - Предупреждение: попытка подключить %1 каталог(ов), когда у устройства только %n свободных порта.<br>Запустить эту конфигурацию будет невозможно. - Предупреждение: попытка подключить %1 каталог(ов), когда у устройства только %n свободных портов.<br>Запустить эту конфигурацию будет невозможно. - - - - WARNING: You want to mount %1 directories, but only %n ports on the device will be available in debug mode. <br>You will not be able to debug your application with this configuration. - - ПРЕДУПРЕЖДЕНИЕ: попытка примонтировать %1 каталог(ов), но во время отладки на устройстве доступен только %n порт.<br>Невозможно отлаживать приложение в этой конфигурации. - ПРЕДУПРЕЖДЕНИЕ: попытка примонтировать %1 каталог(ов), но во время отладки на устройстве доступно только %n порта.<br>Невозможно отлаживать приложение в этой конфигурации. - ПРЕДУПРЕЖДЕНИЕ: попытка примонтировать %1 каталог(ов), но во время отладки на устройстве доступно только %n портов.<br>Невозможно отлаживать приложение в этой конфигурации. - - - - Clean Environment - Чистая среда - - - Executable on host: - Программа на машине: - - - Executable on device: - Программа на устройстве: - - - C++ only - Только C++ - - - QML only - Только QML - - - C++ and QML - C++ и QML - - - Debugging type: - Тип отладки: - - - Use remote GDB - Использовать удалённый GDB - - - Use remote GDB server - Использовать удалённый сервер GDB - - - System Environment - Системная среда - - - Fetch Device Environment - Загрузить среду устройства - - - Choose directory to mount - Выбор каталога для монтирования - - - %n local directories to be mounted on the device. - Note: Only mountCount>1 will occur here as 0, 1 are handled above. - - %n локальный каталог смонтирован на устройстве. - %n локальных каталога смонтировано на устройстве. - %n локальных каталогов смонтировано на устройстве. - - - - - Qt4ProjectManager::Internal::MaemoRunControl - - Starting remote process ... - Запуск внешнего процесса... - - - Finished running remote process. Exit code was %1. - Выполнение внешнего процесса завершено. Код завершения %1. - - - Remote Execution Failure - Ошибка внешнего выполнения - - - - Qt4ProjectManager::Internal::MaemoRunControlFactory - - Run on device - Запустить на устройстве - - - - Qt4ProjectManager::Internal::MaemoSshConfigDialog - - Save Public Key File - Сохранение файла открытого ключа - - - Save Private Key File - Сохранение файла секретного ключа - - - Error writing file - Ошибка записи в файл - - - Could not write file '%1': - %2 - Не удалось записать файл «%1»: - %2 - - - - Qt4ProjectManager::Internal::MaemoSshRunner - - Connecting to device... - Подключение к устройству... - - - Killing remote process(es)... - Завершение внешних процессов... - - - Initial cleanup failed: %1 - Не удалось выполнить начальную очистку: %1 - - - Mounting host directories... - Монтирование каталогов компьютера... - - - Unmounting left-over host directory mounts... - Отмонтирование оставшихся каталогов компьютера... - - - Potentially unmounting left-over host directory mounts... - Потенциальное отмонтирование оставшихся каталогов компьютера... - - - Unmounting host directories... - Отмонтирование каталогов компьютера... - - - Cannot run: No remote executable set. - Запуск невозможен: Не указана внешняя программа. - - - Cannot run: No device configuration set. - Невозможно выполнить: конфигурация устройства не задана. - - - Cannot run: Qemu was not running. It has now been started up for you, but it will take a bit of time until it is ready. - Не удалось запустить: Qemu ещё не запущен. Он перейдёт в состояние готовности через некоторое время. - - - Connection error: %1 - Ошибка подключения: %1 - - - Error running remote process: %1 - Ошибка выполнения внешнего процесса: %1 - - - - Qt4ProjectManager::Internal::MaemoToolChainConfigWidget - - <html><head/><body><table><tr><td>Path to MADDE:</td><td>%1</td></tr><tr><td>Path to MADDE target:</td><td>%2</td></tr><tr><td>Debugger:</td/><td>%3</td></tr></body></html> - <html><head/><body><table><tr><td>Путь к MADDE:</td><td>%1</td></tr><tr><td>Путь к цели MADDE:</td><td>%2</td></tr><tr><td>Отладчик:</td/><td>%3</td></tr></body></html> - - - - Qt4ProjectManager::Internal::MaemoToolChainFactory - - Maemo GCC - - - - Maemo GCC for %1 - Maemo GCC для %1 - - - %1 GCC (%2) - - - - - Qt4ProjectManager::Internal::MaemoUsedPortsGatherer - - Connection error: %1 - Ошибка подключения: %1 - - - Could not start remote process: %1 - Невозможно запустить внешний процесс: %1 - - - Remote process crashed: %1 - Внешний процесс завершился крахом: %1 - - - Remote process failed: %1 - Внешний процесс завершился с ошибкой: %1 - - - -Remote error output was: %1 - -Внешний вывод ошибок: %1 - - Qt4ProjectManager::Internal::MakeStepFactory @@ -19334,16 +19083,16 @@ Remote error output was: %1 Неверный размер значка - The icon needs to be 64x64 pixels big, but is not. Do you want Creator to scale it? - Значок должен быть размером 64х64. Желаете, чтобы Qt Creator подогнал размер? + The icon needs to be %1x%2 pixels big, but is not. Do you want Creator to scale it? + Значок должен быть размером %1х%2. Желаете, чтобы Qt Creator подогнал размер? File Error Ошибка файла - Could not copy icon file. - Не удалось скопировать файл значка. + Could not copy icon file: %1 + Не удалось скопировать файл значка: %1 @@ -19359,18 +19108,10 @@ Remote error output was: %1 Qt4ProjectManager::Internal::PluginGenerator - - Cannot open icon file %1. - Не удалось открыть файл значка %1. - Creating multiple widget libraries (%1, %2) in one project (%3) is not supported. Создание нескольких библиотек виджетов (%1, %2) в одном проекте (%3) не поддерживается. - - Cannot open %1: %2 - Не удалось открыть %1: %2 - Qt4ProjectManager::Internal::ProjectLoadWizard @@ -19386,46 +19127,6 @@ Remote error output was: %1 qmake - - Qt4ProjectManager::Internal::Qt4BuildConfigurationFactory - - Using Qt Version "%1" - Используется профиль Qt «%1» - - - New Configuration - Новая конфигурация - - - New configuration name: - Название новой конфигурации: - - - %1 Debug - Debug build configuration. We recommend not translating it. - %1 Отладка - - - %1 Release - Release build configuration. We recommend not translating it. - %1 Релиз - - - - Qt4ProjectManager::Internal::Qt4MaemoDeployConfigurationFactory - - Deploy to Maemo5 device - Установить на устройство Maemo5 - - - Deploy to Harmattan device - Установить на устройство Harmattan - - - Deploy to Meego device - Установить на устройство Meego - - Qt4ProjectManager::Internal::Qt4PriFileNode @@ -19453,16 +19154,24 @@ Remote error output was: %1 Другие файлы - Failed! - Не удалось! + Cannot Open File + Не удалось открыть файл - Could not open the file for edit with VCS. + Cannot open the file for edit with VCS. Не удалось открыть файл для редактирования с помощью VCS. - Could not set permissions to writable. - Не удалось разрешить запись. + Cannot Set Permissions + Не удалось задать права доступа + + + Cannot set permissions to writable. + Не удалось задать права доступа на запись. + + + Failed! + Не удалось! There are unsaved changes for project file %1. @@ -19473,19 +19182,8 @@ Remote error output was: %1 Не удалось записать в файл проекта %1. - Error while reading .pro file %1: %2 - Ошибка чтения .pro файла %1: %2 - - - - Qt4ProjectManager::Internal::Qt4ProFileNode - - Error while parsing file %1. Giving up. - Ошибка разбора файла %1. Отмена. - - - Could not find .pro file for sub dir '%1' in '%2' - Не удалось найти .pro файл для подкаталога «%1» в «%2» + File Error + Ошибка файла @@ -19536,6 +19234,16 @@ Remote error output was: %1 %1 build directory В %1 обнаружена несовместимая сборка. Она будет замещена. + + %1 Debug + Name of a debug build configuration to created by a project wizard, %1 being the Qt version name. We recommend not translating it. + %1 Отладка + + + %1 Release + Name of a release build configuration to created by a project wizard, %1 being the Qt version name. We recommend not translating it. + %1 Релиз + <No tool chain selected> <Инструментарий не выбран> @@ -19598,6 +19306,14 @@ Remote error output was: %1 Qt4ProjectManager::Internal::Qt4RunConfiguration + + The .pro file is currently being parsed. + Идёт обработка файла .pro. + + + The .pro file could not be parsed. + Не удалось разобрать файл .pro. + Clean Environment Чистая среда @@ -19718,62 +19434,6 @@ Remote error output was: %1 Устройство Maemo - - Qt4ProjectManager::Internal::QtOptionsPageWidget - - <specify a name> - <укажите имя> - - - <specify a qmake location> - <укажите размещение qmake> - - - Select qmake Executable - Выберите исполняемый файлы qmake - - - Select S60 SDK Root - Выберите корень SDK для S60 - - - Auto-detected - Автоопределённая - - - Manual - Особые - - - Building helpers - Сборка помощников - - - Debugging Helper Build Log for '%1' - Журнал помощника отладчика для «%1» - - - Helpers: %1. - %1 is list of tool names. - Помощники: %1. - - - Helpers: None available - Помощники отсутствуют - - - <i>Not yet built.</i> - <i>Ещё не создан.</i> - - - <i>Not needed.</i> - <i>Не нужен.</i> - - - <i>Cannot be compiled.</i> - <i>Собрать невозможно.</i> - - Qt4ProjectManager::Internal::QtQuickApp @@ -19792,10 +19452,6 @@ Remote error output was: %1 No .pro file for plugin '%1' cannot be found. Не удалось найти файл .pro для модуля «%1». - - Could not write file '%1'. - Не удалось записать файл «%1». - Qt4ProjectManager::Internal::QtQuickAppWizard @@ -19806,10 +19462,10 @@ Remote error output was: %1 Creates a Qt Quick application project that can contain both QML and C++ code and includes a QDeclarativeView. -You can build the application and deploy it on desktop and mobile target platforms. For example, you can create signed Symbian Installation System (SIS) packages for this type of projects. +You can build the application and deploy it on desktop and mobile target platforms. For example, you can create signed Symbian Installation System (SIS) packages for this type of projects. Moreover, you can select to use a set of premade UI components in your Qt Quick application. To utilize the components, Qt 4.7.3 or newer is required. Создание проекта приложения Qt Quick, который может содержать код как QML, так и на С++, а так же включает QDeclarativeView. -Можно создать приложение и установить его на настольный компьютер и мобильные платформы. Например, можно создать подписанный пакет Symbian Installation System (SIS) для этого типа проектов. +Можно создать приложение и установить его не только на настольный компьютер, но и на мобильные платформы. Например, можно создать подписанный пакет Symbian Installation System (SIS) для этого типа проектов. Более того, доступны готовые компоненты интерфейса для использования в приложениях Qt Quick. Для этого необходима версия Qt не ниже 4.7.3. @@ -19823,53 +19479,19 @@ You can build the application and deploy it on desktop and mobile target platfor Этот мастер создаст проект приложения Qt Quick. - QML Sources - Исходники QML + Application Type + Тип приложения - Qt4ProjectManager::Internal::QtQuickAppWizardSourcesPage + Qt4ProjectManager::Internal::QtQuickComponentSetOptionsPage Select QML File Выбор файла QML - - - Qt4ProjectManager::Internal::QtVersionInfo - Version name: - Название профиля: - - - qmake location: - Размещение qmake: - - - S60 SDK: - SDK для S60: - - - SBS v2 directory: - Каталог SBS v2: - - - - Qt4ProjectManager::Internal::QtVersionManager - - Name - Название - - - qmake Location - Размещение qmake - - - Add - Добавить - - - Remove - Удалить + Qt Quick Application Type + Тип приложения Qt Quick @@ -19978,6 +19600,14 @@ Valid from: %2. + + Qt4ProjectManager::Internal::S60CommandPublishStep + + Running %1 + %1 is a name of the Publish Step i.e. Clean Step + Выполнение %1 + + Qt4ProjectManager::Internal::S60CreatePackageParser @@ -20153,28 +19783,6 @@ Use a developer certificate or any other signing option to prevent this patching Свойства сертификата - - Qt4ProjectManager::Internal::S60DeployConfiguration - - Deploy %1 to Symbian device - Установить %1 на устройство Symbian - - - Deploy to Symbian device - Установить на устройство Symbian - - - - Qt4ProjectManager::Internal::S60DeployConfigurationFactory - - %1 on Symbian Device - %1 на устройстве с Symbian - - - Deploy to Symbian device - Установить на устройство Symbian - - Qt4ProjectManager::Internal::S60DeployConfigurationWidget @@ -20189,18 +19797,6 @@ Use a developer certificate or any other signing option to prevent this patching Serial: Последовательный: - - TRK - - - - CODA - - - - <a href="qthelp://com.nokia.qtcreator/doc/creator-developing-symbian.html">What are the prerequisites?</a> - <a href="qthelp://com.nokia.qtcreator/doc/creator-developing-symbian.html">Зачем нужно?</a> - Installation file: Установочный файл: @@ -20274,12 +19870,20 @@ Use a developer certificate or any other signing option to prevent this patching Ошибка чтения версии CODA - QtMobility version: - Версия QtMobility: + Qt Mobility version: + Версия Qt Mobility: - Error reading QtMobility version - Ошибка чтения версии QtMobility + Error reading Qt Mobility version + Ошибка чтения версии Qt Mobility + + + Not installed + Не установлены + + + Qt Quick components version: + Версия элементов Qt Quick: Screen size: @@ -20297,10 +19901,6 @@ Use a developer certificate or any other signing option to prevent this patching WLAN: - - Device Agent - Агент устройства - Serial port: Последовательный порт: @@ -20325,6 +19925,10 @@ Use a developer certificate or any other signing option to prevent this patching Qt4 Deploystep display name Установка + + No package has been found. Specify at least one installation package. + Не удалось найти пакет. Укажите как минимум один установочный пакет. + Renaming new package '%1' to '%2' Переименование нового пакета «%1» в «%2» @@ -20337,36 +19941,26 @@ Use a developer certificate or any other signing option to prevent this patching '%1': Package file not found «%1»: файл пакета не найден - - No device is connected. Please connect a device and try again. - Устройство не подключено. Подключите устройство и попробуйте снова. - - - No address for a device has been defined. Please define an address and try again. - Адрес устройства не задан. Задайте его и попробуйте снова. - Failed to find package %1 Не удалось найти пакет %1 - - Deploying application to '%2'... - Установка приложения на «%2»... - - - Could not connect to phone on port '%1': %2 -Check if the phone is connected and App TRK is running. - Не удалось подключиться к телефону через порт «%1»: %2 -Убедитесь, что телефон подключён, и на нём работает App TRK. - Could not open serial device: %1 Не удалось открыть последовательное устройство: %1 + + Continue the installation on your device. + Продолжение установки на устройство. + Could not open remote file: %1 Невозможно открыть внешний файл: %1 + + Internal error: No filehandle obtained + Внутренняя ошибка: не удалось получить дескриптор файла + Could not open local file %1: %2 Не удалось открыть локальный файл «%1»: %2 @@ -20379,34 +19973,30 @@ Check if the phone is connected and App TRK is running. Failed to close the remote file: %1 Не удалось закрыть внешний файл: %1 - - Could not create file %1 on device: %2 - Не удалось создать файл %1 на устройстве: %2 - Copy progress: %1% Ход копирования: %1% + + A timeout while deploying has occurred. CODA might not be responding. Try reconnecting the device. + Истекло время установки. Возможно, CODA не отвечает. Попробуйте переподключить устройство. + Could not write to file %1 on device: %2 Не удалось записать в файл %1 на устройстве: %2 - Could not close file %1 on device: %2. It will be closed when App TRK is closed. - Не удалось закрыть файл %1 на устройстве: %2. Он будет закрыт при закрытии App TRK. + No device is connected. Connect a device and try again. + Устройство не подключено. Подключите его и попробуйте снова. - Could not connect to App TRK on device: %1. Restarting App TRK might help. - Не удалось подключиться к App TRK на устройстве: %1. Перезапуск App TRK может помочь. + No address for a device has been defined. Define an address and try again. + Адрес устройства не задан. Задайте его и попробуйте снова. Copying "%1"... Копирование «%1»... - - No package has been found. Please specify at least one installation package. - Не удалось найти пакет. Укажите как минимум один установочный пакет. - Deploying application to '%1'... Установка приложения на «%1»... @@ -20427,10 +20017,6 @@ Check if the phone is connected and App TRK is running. Installing package "%1" on drive %2:... Установка пакета «%1» на диск %2:... - - Please continue the installation on your device. - Продолжайте установку на устройство. - Installation has finished Установка завершена @@ -20439,10 +20025,6 @@ Check if the phone is connected and App TRK is running. Installation Установка - - Could not install from package %1 on device: %2 - Не удалось установить из пакета %1 на устройстве: %2 - Deployment has been cancelled. Установка была отменена. @@ -20469,8 +20051,16 @@ Check if the phone is connected and App TRK is running. Qt4ProjectManager::Internal::S60DeviceDebugRunControl - Launching debugger... - Запускается отладчик... + Warning: Cannot locate the symbol file belonging to %1. + + Внимание! Не удалось обнаружить файл символов для %1. + + + + Launching debugger... + + Запускается отладчик... + Debugger for Symbian Platform @@ -20480,30 +20070,6 @@ Check if the phone is connected and App TRK is running. Debug on Device Отладить на устройстве - - Warning: Cannot locate the symbol file belonging to %1. - Внимание! Не удалось обнаружить файл символов, соответствующих %1. - - - - Qt4ProjectManager::Internal::S60DeviceRunConfiguration - - %1 on Symbian Device - S60 device runconfiguration default display name, %1 is base pro-File name - %1 на устройстве с Symbian - - - Run on Symbian device - S60 device runconfiguration default display name (no profile set) - Запуск на устройстве Symbian - - - - Qt4ProjectManager::Internal::S60DeviceRunConfigurationFactory - - %1 on Symbian Device - %1 на устройстве с Symbian - Qt4ProjectManager::Internal::S60DeviceRunConfigurationWidget @@ -20511,6 +20077,10 @@ Check if the phone is connected and App TRK is running. Arguments: Параметры: + + Debugger: + Отладчик: + Qt4ProjectManager::Internal::S60EmulatorRunConfiguration @@ -20526,6 +20096,14 @@ S60 emulator run configuration default display name, %1 is base pro-File nameS60 emulator run configuration default display name (no pro-file name) Запуск на эмуляторе Symbian + + The .pro file is currently being parsed. + Идёт обработка файла .pro. + + + The .pro file could not be parsed. + Не удалось разобрать файл .pro. + Qt4ProjectManager::Internal::S60EmulatorRunConfigurationFactory @@ -20544,16 +20122,20 @@ S60 emulator run configuration default display name, %1 is base pro-File name Qt4ProjectManager::Internal::S60EmulatorRunControl - Starting %1... - Запускается %1... + Starting %1... + + Запускается %1... + [Qt Message] [Сообщение Qt] - %1 exited with code %2 - %1 завершился с кодом %2 + %1 exited with code %2 + + %1 завершился с кодом %2 + @@ -20570,32 +20152,65 @@ S60 emulator run configuration default display name, %1 is base pro-File name Qt4ProjectManager::Internal::S60PublisherOvi - Error while reading .pro file %1: %2 - Ошибка чтения .pro файла %1: %2 + Clean + Очистка - Created %1 + qmake + + + + Build + Сборка + + + Freeze + Заморозка + + + Secondary clean + Повторная очистка + + + Secondary qmake + Повторный запуск qmake + + + Secondary build + Повторная сборка + + + Making SIS file + Создание файла SIS + + + SIS file not created due to previous errors. - Создан %1 + Файл SIS не создан из-за возникших ошибок. - Sis file not created due to previous errors + Done. - файл Sis не создан из-за ошибок + Готово. - Done! + Created %1. - Готово! + Создан %1. + + + Qt4ProjectManager::Internal::S60PublishingBuildSettingsPageOvi - Sis file not created due to previous errors - - Файл Sis не создан из-за ошибок - + No valid Qt version has been detected.<br>Define a correct Qt version in "Options > Qt4" + Не обнаружен подходящий профиль Qt.<br>Задайте его в «Параметры - Qt4» + + + No valid tool chain has been detected.<br>Define a correct tool chain in "Options > Tool Chains" + Не обнаружен подходящий инструментарий.<br>Задайте его в «Параметры - Инструментарии» @@ -20604,12 +20219,24 @@ S60 emulator run configuration default display name, %1 is base pro-File nameOpen Containing Folder Открыть папку файла + + Close + Закрыть + Qt4ProjectManager::Internal::S60PublishingSisSettingsPageOvi - %1 is a default vendor name used for testing and development. <br>The Vendor_Name field cannot contain the name 'Nokia'. <br>You are advised against using the default names 'Vendor' and 'Vendor-EN'. <br>You should also not leave the entry blank. <br>see <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Packaging and Signing</a> for guidelines.<br> - %1 имя производителя по умолчанию, используемое при разработке и тестировании. <br>Поле Vendor_Name не может содержать имя «Nokia». <br>Не рекомендуется использовать стандартные имена «Vendor» и «Vendor-EN». <br>Не допустимо оставлять поле пустым. <br>см. справку по <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Создание и подписывание пакетов</a>.<br> + This should be application's display name. <br>It cannot be empty.<br> + Это должно быть отображаемым названием приложения. <br>Оно не может быть пустым.<br> + + + The display name is quite long.<br>It might not be fully visible in the phone's menu.<br> + Отображаемое имя очень длинное.<br>Оно может отображаться не полностью в меню телефона.<br> + + + "%1" is a default vendor name used for testing and development. <br>The Vendor_Name field cannot contain the name 'Nokia'. <br>You are advised against using the default names 'Vendor' and 'Vendor-EN'. <br>You should also not leave the entry blank. <br>see <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Packaging and Signing</a> for guidelines.<br> + «%1» имя производителя по умолчанию, используемое при разработке и тестировании. <br>Поле Vendor_Name не может содержать имя «Nokia». <br>Не рекомендуется использовать стандартные имена «Vendor» и «Vendor-EN». <br>Не допустимо оставлять поле пустым. <br>см. справку по <a href="http://www.forum.nokia.com/Distribute/Packaging_and_signing.xhtml">Создание и подписывание пакетов</a>.<br> %1 is a default vendor name used for testing and development. @@ -20708,37 +20335,6 @@ NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM and TCB. Создание загружаемого файла SIS - - Qt4ProjectManager::Internal::S60RunControlBase - - Launching - Запуск - - - Please finalise the installation on your device. - Завершите установку на устройство. - - - <html><head/><body><center><i>%1</i> is still running on the device.</center><center>Terminating it can leave the target in an inconsistent state.</center><center>Would you still like to terminate it?</center></body></html> - <html><head/><body><center><i>%1</i> ещё выполняется на устройстве.</center><center>Завершение оставит цель в неопределённом состоянии.</center><center>Желаете завершить?</center></body></html> - - - Application Still Running - Приложение ещё выполняется - - - Force Quit - Завершить - - - Keep Running - Продолжить выполнение - - - Finished. - Завершено. - - Qt4ProjectManager::Internal::SubdirsProjectWizard @@ -20781,6 +20377,17 @@ NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM and TCB. Следующий код будет добавлен в<br>файл <b>%1</b>: + + Qt4ProjectManager::Internal::SymbianQtConfigWidget + + S60 SDK: + SDK для S60: + + + SBS v2 directory: + Каталог SBS v2: + + Qt4ProjectManager::Internal::TargetSetupPage @@ -20792,8 +20399,8 @@ NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM and TCB. Настройте цели вашего проекта - <b>No valid qt versions found.</b><br> Please add a qt version in Tools/Options or via the maintenance tool of the SDK. - <b>Подходящие профили Qt не найдены.</b><br>Добавьте профиль в Инструменты/Параметры или.через инструмент обслуживания SDK. + <html><head/><body><p><b>No valid Qt versions found.</b></p><p>Please add a Qt version in <i>Tools/Options</i> or via the maintenance tool of the SDK.</p></body></html> + <html><head/><body><p><b>Подходящие профили Qt не найдены.</b></p><p>Добавьте профиль в <i>Инструменты - Параметры</i> или.через инструмент обслуживания SDK.</p></body></html> @@ -20869,55 +20476,6 @@ NetworkControl, MultimediaDD, CommDD, DiskAdmin, AllFiles, DRM and TCB. Информация о тестовом классе - - Qt4ProjectManager::Internal::TrkRunControl - - No device is connected. Please connect a device and try again. - Устройство не подключено. Подключите устройство и попробуйте снова. - - - Executable file: %1 - Исполняемый файл: %1 - - - Could not connect to phone on port '%1': %2 -Check if the phone is connected and App TRK is running. - Не удалось подключиться к телефону через порт «%1»: %2 -Убедитесь, что телефон подключён, и на нём работает App TRK. - - - Could not connect to App TRK on device: %1. Restarting App TRK might help. - Не удалось подключиться к App TRK на устройстве: %1. Перезапуск App TRK может помочь. - - - Waiting for App TRK - Ожидание App TRK - - - Qt Creator is waiting for the TRK application to connect on %1.<br>Please make sure the application is running on your mobile phone and the right port is configured in the project settings. - Qt Creator ожидает подключения приложения TRK на %1.<br>Убедитесь, что приложение работает на мобильном телефоне, а в настройках проекта указан правильный порт. - - - Canceled. - Отменено. - - - The device '%1' has been disconnected - Устройство «%1» было отключено - - - Starting application... - Запуск приложения... - - - Application running with pid %1. - Приложение выполняется с PID %1. - - - Could not start application: %1 - Не удалось запустить приложение: %1 - - Qt4ProjectManager::Internal::WinscwToolChainConfigWidget @@ -20956,15 +20514,15 @@ Check if the phone is connected and App TRK is running. Сборка - Qt Creator needs a tool chain set up to build. Please configure a tool chain in Project mode. + Qt Creator needs a tool chain set up to build. Configure a tool chain in Project mode. Необходимо задать инструментарий для сборки. Настройте его в режиме проекта. - Makefile not found. Please check your build settings - Не найден Makefile. Проверьте настройки сборки + Cannot find Makefile. Check your build settings. + Не удалось обнаружить Makefile. Проверьте настройки сборки. - Configuration is faulty, please check the Build Issues view for details. + Configuration is faulty. Check the Build Issues view for details. Конфигурация неисправна. Окно «Сообщения сборки» содержит подробную информацию. @@ -21013,6 +20571,10 @@ Check if the phone is connected and App TRK is running. Configuration unchanged, skipping qmake step. Настройки не изменились, этап qmake пропускается. + + No Qt version. + Профиль Qt не задан. + Invalid Qt version. Некорректный профиль Qt. @@ -21025,6 +20587,14 @@ Check if the phone is connected and App TRK is running. Library not available. <a href='compile'>Compile...</a> Библиотека отсутствует. <a href='compile'>Собрать...</a> + + QML Debugging + Отладка QML + + + The option will only take effect if the project is recompiled. Do you want to recompile now? + Этот параметр вступит в силу только после перекомпиляции проекта. Перекомпилировать его? + Qt4ProjectManager::QMakeStepConfigWidget @@ -21041,12 +20611,28 @@ Check if the phone is connected and App TRK is running. <b>qmake:</b> %1 %2 - Might make the application vulnerable. Use only in a safe environment. - Может сделать приложение уязвимым. Используйте только в безопасных системах. + Enable QML debugging: + Включить отладку QML: + + + Link QML debugging library: + Подключить библиотеку отладки QML: + + + Might make your application vulnerable. Only use in a safe environment. + Может сделать приложение уязвимым. Используйте только в безопасном окружении. + + + <No Qt version> + <Профиль Qt не задан> Qt4ProjectManager::QmlDebuggingLibrary + + Only available for Qt 4.7.1 or newer. + Доступно только в Qt версии 4.7.1 и выше. + QML Debugging Отладка QML @@ -21068,6 +20654,18 @@ Reason: %2 Qt4ProjectManager::QmlDumpTool + + Only available for Qt for Desktop and Qt for Qt Simulator. + Доступно только в Qt для настольных машин и симулятора. + + + Only available for Qt 4.7.1 or newer. + Доступно только в Qt версии 4.7.1 и выше. + + + Private headers are missing for this Qt version. + Отсутствуют внутренние заголовочные файлы для этого профила Qt. + qmldump @@ -21075,6 +20673,14 @@ Reason: %2 Qt4ProjectManager::QmlObserverTool + + Only available for Qt for Desktop or Qt for Qt Simulator. + Доступно только в Qt для настольных машин и симулятора. + + + Only available for Qt 4.7.1 or newer. + Доступно только в Qt версии 4.7.1 и выше. + QMLObserver @@ -21089,7 +20695,39 @@ Reason: %2 %1 Release - Name of a release build configuration to created by a project wizard, %1 being the Qt version name. We recommend not translating it. + Name of a release build configuration to be created by a project wizard, %1 being the Qt version name. We recommend not translating it. + %1 Релиз + + + + Qt4ProjectManager::Qt4BuildConfiguration + + Parsing the .pro file + Разбор файла .pro + + + + Qt4ProjectManager::Qt4BuildConfigurationFactory + + Using Qt Version "%1" + Используется профиль Qt «%1» + + + New Configuration + Новая конфигурация + + + New configuration name: + Название новой конфигурации: + + + %1 Debug + Debug build configuration. We recommend not translating it. + %1 Отладка + + + %1 Release + Release build configuration. We recommend not translating it. %1 Релиз @@ -21122,17 +20760,17 @@ Reason: %2 Сборка не найдена - No Build found in %1 matching project %2. - В %1 сборка соответствующая проекту %2 не найдена. + No build found in %1 matching project %2. + В %1 не найдена сборка соответствующая проекту %2. + + + The build found in %1 is incompatible with this target + Сборка, найденная в %1, несовместима с этой целью Incompatible build found Найдена несовместимая сборка - - The Build found in %1 is incompatible with this target - Сборка, найденная в %1, несовместима с этой целью - Import build from %1 Импортировать сборку из %1 @@ -21171,6 +20809,17 @@ Reason: %2 Не удалось открыть проект «%1»: проект уже открыт + + Qt4ProjectManager::Qt4ProFileNode + + Error while parsing file %1. Giving up. + Ошибка разбора файла %1. Отмена. + + + Could not find .pro file for sub dir '%1' in '%2' + Не удалось найти .pro файл для подкаталога «%1» в «%2» + + Qt4ProjectManager::Qt4Project @@ -21238,50 +20887,88 @@ Reason: %2 - Qt4ProjectManager::QtVersionManager + Qt4ProjectManager::S60DeployConfiguration - MinGW from %1 - MinGW из %1 + Deploy %1 to Symbian device + Установить %1 на устройство Symbian - <not found> - <не найдена> + Deploy to Symbian device + Установить на устройство Symbian + + + + Qt4ProjectManager::S60DeployConfigurationFactory + + %1 on Symbian Device + %1 на устройстве с Symbian - Qt in PATH - Qt в PATH + Deploy to Symbian device + Установить на устройство Symbian + + + + Qt4ProjectManager::S60DeviceRunConfiguration + + %1 on Symbian Device + S60 device runconfiguration default display name, %1 is base pro-File name + %1 на устройстве с Symbian - Name: - Название: + Run on Symbian device + S60 device runconfiguration default display name (no profile set) + Запуск на устройстве Symbian - Invalid Qt version - Неверный профиль Qt + The .pro file is currently being parsed. + Идёт обработка файла .pro. - ABI: - + The .pro file could not be parsed. + Не удалось разобрать файл .pro. + + + + Qt4ProjectManager::S60DeviceRunConfigurationFactory + + %1 on Symbian Device + %1 на устройстве с Symbian + + + + Qt4ProjectManager::S60RunControlBase + + Launching + Запуск - Source: - Исходники: + Please finalise the installation on your device. + + Завершите установку на устройство. + - mkspec: - mkspec: + <html><head/><body><center><i>%1</i> is still running on the device.</center><center>Terminating it can leave the target in an inconsistent state.</center><center>Would you still like to terminate it?</center></body></html> + <html><head/><body><center><i>%1</i> ещё выполняется на устройстве.</center><center>Завершение оставит цель в неопределённом состоянии.</center><center>Желаете завершить?</center></body></html> - qmake: - qmake: + Application Still Running + Приложение ещё выполняется - Default: - По умолчанию: + Force Quit + Завершить - Version: - Версия: + Keep Running + Продолжить выполнение + + + Finished. + + Завершено. + @@ -21405,26 +21092,277 @@ Reason: %2 - QtQuickAppWizardSourcesPage + QtQuickComponentSetOptionsPage - WizardPage - + Built-in elements only (for all platforms) + Только встроенные элементы (для всех платформ) - Main QML File - Основной файл QML + Qt Quick Components for Symbian + Элементы Qt Quick для Symbian - Import an existing .qml file - Импортировать существующий файл .qml + Qt Quick Components for Meego/Harmattan + Элементы Qt Quick для Meego/Harmattan - Generate a main.qml file - Создать файл main.qml + Use an existing .qml file + Использовать существующий файл .qml - Note: 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. - Все файлы и подкаталоги, находящиеся в том же каталоге, что и основной файл QML, будут установлены. В любое время можно изменить содержимое этого каталога перед установкой. + The built-in elements in the QtQuick namespace allow you to write cross-platform applications with a custom look and feel. + +Requires Qt 4.7.1 or newer. + Встроенные элементы пространства имён QtQuick позволяют создавать кросс-платформенные приложения с особым внешним видом и эргономикой. + +Требуется Qt версии не ниже 4.7.1. + + + The Qt Quick Components for Symbian are a set of ready-made components that are designed with specific native appearance for the Symbian platform. + +Requires Qt 4.7.3 or newer, and the component set installed for your Qt version. + Элементы Qt Quick для Symbian - это набор готовых элементов разработанных с учётом особенностей внешнего вида приложений для платформы Symbian. + +Требуется Qt версии 4.7.3 или выше и установленный для выбранного профиля Qt набор элементов. + + + 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. + +Requires Qt 4.7.4 or newer, and the component set installed for your Qt version. + Элементы Qt Quick для Meego/Harmattan - это набор готовых элементов разработанных с учётом особенностей внешнего вида приложений для платформы Meego/Harmattan. + +Требуется Qt версии 4.7.3 или выше и установленный для выбранного профиля Qt набор элементов. + + + 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. + Будут установлены все файлы и каталоги, находящиеся в том же каталоге, что и основной QML файл. До установки содержимое каталога может быть изменено в любой момент. + + + + QtSupport::Internal::DebuggingHelper + + Used to extract QML type information from library-based plugins. + Используется для извлечения информации о типах QML из модулей. + + + QML Dump: + Дампер QML: + + + A modified version of qmlviewer with support for QML/JS debugging. + Изменённая версия qmlviewer с поддержкой отладки Qml/JS. + + + QML Observer: + Обозреватель QML: + + + Build + Собрать + + + QML Debugging Library: + Отладочная библиотека QML: + + + Helps showing content of Qt types. Only used in older versions of GDB. + Помогает отображать содержимое типов Qt. Используется только в старых версиях GDB. + + + GDB Helper: + Помощник GDB: + + + Show compiler output of last build. + Показывать вывод компилятора последней сборки. + + + Show Log + Показать журнал + + + Compile debugging helpers that are checked. + Собрать выбранных помощников отладчика. + + + Build All + Собрать всё + + + Tool Chain: + Инструментарий: + + + + QtSupport::Internal::GettingStartedWelcomePage + + Getting Started + Начало работы + + + Copy Project to writable Location? + Скопировать проект в область, в которую возможна запись? + + + <p>The project you are about to open is located in the write-protected location:</p><blockquote>%1</blockquote><p>Please select a writable location below and click "Copy Project and Open" to open a modifiable copy of the project or click "Keep Project and Open" to open the project in location.</p><p><b>Note:</b> You will not be able to alter or compile your project in the current location.</p> + <p>Открываемый проект находится в области недоступной на запись:</p><blockquote>%1</blockquote><p>Выберите записываемую область ниже и щёлкните на «Скопировать проект и открыть» для открытия с возможностью изменения или щёлкните на «Оставить проект и открыть» для открытия только на чтение.</p><p><b>Внимание:</b> В случае открытия без копирования не будет возможности изменения и компиляции проекта.</p> + + + &Location: + &Размещение: + + + &Copy Project and Open + &Скопировать проект и открыть + + + &Keep Project and Open + &Оставить проект и открыть + + + Cannot Use Location + Невозможно использовать размещение + + + The specified location already exists. Please specify a valid location. + Указанный путь уже существует. Укажите другой корректный путь. + + + Cannot Copy Project + Не удалось скопировать проект + + + + QtSupport::Internal::QtOptionsPageWidget + + <specify a name> + <укажите имя> + + + Auto-detected + Автоопределённая + + + Manual + Особые + + + Remove invalid Qt Versions + Удаление неверных профилей Qt + + + Do you want to remove all invalid Qt Versions?<br><ul><li>%1</li></ul><br>will be removed. + Обнаружены неверные профили Qt:<br><ul><li>%1</li></ul><br>Удалить? + + + No tool chain can produce code for this Qt version. Please define one or more tool chains. + Отсутствует инструментарий для создания кода для этого профиля Qt. Задайте хотя бы один инструментарий. + + + Not all possible target environments can be supported due to missing tool chains. + Не все возможные целевые платформы поддерживаются из-за отсутствующих инструментариев. + + + Building helpers + Сборка помощников + + + Debugging Helper Build Log for '%1' + Журнал помощника отладчика для «%1» + + + Select a qmake executable + Выберите исполняемый файл qmake + + + Qt versions incompatible + Версии Qt не совместимы + + + The qt version selected must be for the same target. + Выбранный профиль Qt должен быть для такой же цели. + + + Helpers: None available + Помощники отсутствуют + + + Helpers: %1. + %1 is list of tool names. + Помощники: %1. + + + <i>Not yet built.</i> + <i>Ещё не создан.</i> + + + <i>Not needed.</i> + <i>Не нужен.</i> + + + <i>Cannot be compiled.</i> + <i>Собрать невозможно.</i> + + + Qt version %1 for %2 + Qt версии %1 для %2 + + + The following ABIs are currently not supported:<ul><li>%1</li></ul> + Следующие ABI пока не поддерживаются:<ul><li>%1</li></ul> + + + S60 SDK: + SDK для S60: + + + SBS v2 directory: + Каталог SBS v2: + + + + QtSupport::Internal::QtVersionInfo + + Version name: + Название профиля: + + + qmake location: + Размещение qmake: + + + Edit + Изменить + + + + QtSupport::Internal::QtVersionManager + + Name + Название + + + qmake Location + Размещение qmake + + + Add + Добавить + + + Remove + Удалить + + + Clean up + Подчистить + + + + QtSupport::QtVersionManager + + MinGW from %1 + MinGW из %1 @@ -21441,6 +21379,22 @@ Reason: %2 Qt version has no name Профиль Qt не имеет названия + + <unknown> + <неизвестный> + + + System + Системная + + + Qt %1 in PATH (%2) + Qt %1 в PATH (%2) + + + Qt %1 (%2) + + Qt version is not properly installed, please run make install Профиль Qt не установлен, пожалуйста выполните make install @@ -21457,10 +21411,18 @@ Reason: %2 Failed to detect the ABI(s) used by the Qt version. Не удалось определить ABI, используемый профилем Qt. + + No qmlviewer installed. + qmlviewer не установлен. + The "Open C/C++ plugin" is not installed in the Symbian SDK or the Symbian SDK path is misconfigured Путь к Symbian SDK неверен или в него не установлен «Open C/C++ plugin» + + SBS was not found. + SBS не найдено. + Desktop Qt Version is meant for the desktop @@ -21491,22 +21453,50 @@ Reason: %2 Qt Version is meant for Qt Simulator - - unkown - No idea what this Qt Version is meant for! - неизвестной - - - Qt version %1, using mkspec %2 (%3) - Qt версии %1, использующая mkspec %2 (%3) - Cannot determine the installation path for Qt version '%1'. Невозможно определить путь, куда установлена Qt из профиля «%1». - The Qt Version has no tool chain. - У профиля Qt нет инструментария. + Building helper(s) with toolchain '%1' ... + + Сборка помощника(ов) инструментарием «%1»... + + + + Build failed. + Сборка не удалась. + + + Build succeeded. + Сборка успешно завершена. + + + Qt for WinCE + Qt Version is meant for WinCE + Qt для WinCE + + + + RecentProjects + + Recently Edited Projects + Недавние проекты + + + + RecentSessions + + Recently Used Sessions + Недавние сессии + + + %1 (last session) + %1 (последняя сессия) + + + %1 (current session) + %1 (текущая сессия) @@ -21520,7 +21510,7 @@ Reason: %2 Опорные точки - Gradient Stops + Gradient stops Опорные точки градиента @@ -21538,6 +21528,14 @@ Reason: %2 Rectangle Прямоугольник + + Border width + Ширина рамки + + + Border has to be solid to change width + Для изменения ширины необходимо, чтобы рамка была сплошной + Radius Радиус @@ -21547,6 +21545,1751 @@ Reason: %2 Рамка + + RemoteLinux::AbstractMaemoPackageCreationStep + + Package up to date. + Пакет уже обновлён. + + + Creating package file ... + Создание файла пакета... + + + Package created. + Пакет создан. + + + Packaging failed. + Не удалось создать пакет. + + + Packaging error: No Qt version. + Ошибка создания пакета: профиль Qt не задан. + + + Package Creation: Running command '%1'. + Создание пакета: Выполнение команды «%1». + + + Packaging error: Could not start command '%1'. Reason: %2 + Ошибка создания пакета: Не удалось выполнить команду «%1» по причине: %2 + + + Packaging Error: Command '%1' failed. + Ошибка создания пакета: Команда «%1» завершилась с ошибкой. + + + Reason: %1 + Причина: %1 + + + Exit code: %1 + Код завершения: %1 + + + + RemoteLinux::AbstractRemoteLinuxDebugSupport + + Preparing remote side ... + + Подготовка удалённой стороны... + + + + Remote application failed with exit code %1. + Удалённое приложение завершилось с ошибкой, код %1. + + + The gdbserver process closed unexpectedly. + Процесс gdbserver неожиданно завершился. + + + Initial setup failed: %1 + Не удалось выполнить начальную настройку: %1 + + + Not enough free ports on device for debugging. + Недостаточно свободных портов на устройстве для отладки. + + + + RemoteLinux::AbstractRemoteLinuxRunControl + + Starting remote process ... + + Запуск внешнего процесса... + + + + Finished running remote process. Exit code was %1. + + Выполнение внешнего процесса завершено. Код завершения %1. + + + + Remote Execution Failure + Ошибка внешнего выполнения + + + + RemoteLinux::CreateTarStepWidget + + Create tarball: + Создание тарбола: + + + + RemoteLinux::DeployableFilesPerProFile + + <no target path set> + <целевой путь не задан> + + + Local File Path + Путь к локальному файлу + + + Remote Directory + Внешний каталог + + + + RemoteLinux::GenericLinuxDeviceConfigurationWizard + + New Generic Linux Device Configuration Setup + Настройка конфигурации нового линукс-устройства + + + + RemoteLinux::GenericLinuxDeviceConfigurationWizardFinalPage + + Setup Finished + Настройка завершена + + + The new device configuration will now be created. +In addition, device connectivity will be tested. + Будет создана новая конфигурация устройства. +А заодно произведена проверка качества соединения устройства. + + + + RemoteLinux::GenericLinuxDeviceConfigurationWizardSetupPage + + Connection Data + Данные соединения + + + + RemoteLinux::Internal::AbstractDebBasedQt4MaemoTarget + + Debian changelog file '%1' has unexpected format. + Файл журнала изменений Debian «%1» имеет неожиданный формат. + + + Invalid icon data in Debian control file. + Неверные данные значка в управляющем файле Debian. + + + Could not read image file '%1'. + Невозможно прочитать файл изображения «%1». + + + Could not export image file '%1'. + Невозможно экспортировать файл изображения «%1». + + + Unable to create Debian templates: No Qt version set + Не удалось создать шаблоны Debian: профиль Qt не задан + + + Unable to create Debian templates: dh_make failed (%1) + Не удалось создать шаблоны Debian: ошибка dh_make (%1) + + + Unable to create debian templates: dh_make failed (%1) + Не удалось создать шаблоны debian: ошибка dh_make (%1) + + + Unable to move new debian directory to '%1'. + Невозможно переместить новый каталог debian в «%1». + + + + RemoteLinux::Internal::AbstractMaemoDeployByMountStep + + Installing package to device... + Установка пакета на устройство... + + + + RemoteLinux::Internal::AbstractMaemoDeployStep + + Operation canceled by user, cleaning up... + Операция отменена пользователем, очистка... + + + Cannot deploy: Still cleaning up from last time. + Невозможно установить: всё ещё идёт очистка с предыдущего раза. + + + Cannot deploy: Qemu was not running. It has now been started up for you, but it will take a bit of time until it is ready. Please try again then. + Не удалось установить: Qemu ещё не работает. Он перейдёт в состояние готовности через некоторое время. Повторите попытку позже. + + + Cannot deploy: You want to deploy to Qemu, but it is not enabled for this Qt version. + Не удалось установить: Попытка установить в Qemu, но он не включён для этого профиля Qt. + + + All files up to date, no installation necessary. + Все файлы уже обновлены, установка не требуется. + + + Connection error: %1 + Ошибка подключения: %1 + + + Connecting to device... + Подключение к устройству... + + + Deployment failed. + Установка не удалась. + + + Deployment finished. + Установка завершена. + + + + RemoteLinux::Internal::AbstractMaemoInstallPackageToSysrootStep + + Cannot install to sysroot without build configuration. + Невозможно установить в sysroot без конфигурации сборки. + + + Cannot install package to sysroot without packaging step. + Невозможно установить в sysroot без этапа создания пакета. + + + Cannot install package to sysroot without a Qt version. + Невозможно установить в sysroot без задания профиля Qt. + + + Installing package to sysroot ... + Установка пакета в sysroot... + + + Installation to sysroot failed, continuing anyway. + Не удалось установить в sysroot, в любом случае продолжаем. + + + + RemoteLinux::Internal::AbstractMaemoInstallPackageToSysrootWidget + + Cannot deploy to sysroot: No packaging step found. + Не удалось установить в sysroot: этап создания пакета не найден. + + + + RemoteLinux::Internal::AbstractMaemoPackageInstaller + + Connection failure: %1 + Ошибка подключения: %1 + + + Installing package failed. + Не удалось установить пакет. + + + + RemoteLinux::Internal::AbstractMaemoUploadAndInstallStep + + No matching packaging step found. + Не найден подходящий этап создания пакета. + + + Successfully uploaded package file. + Успешно отправлен файл пакета. + + + Installing package to device... + Установка пакета на устройство... + + + Package installed. + Пакет установлен. + + + + RemoteLinux::Internal::AbstractQt4MaemoTarget + + Cannot open file '%1': %2 + Невозможно открыть файл «%1»: %2 + + + Qt Creator + + + + Do you want to remove the packaging file(s) associated with the target '%1'? + Желаете удалить файлы сборки пакета связанные с целью «%1»? + + + Error creating packaging directory '%1'. + Ошибка создания временного каталога «%1». + + + <html>Qt Creator has set up the following files to enable packaging: + %1 +Do you want to add them to the project?</html> + <html>Qt Creator создал следующие файлы для включения создания пакетов: + %1 +Добавить их в проект?</html> + + + Error creating MeeGo templates + Ошибка создания шаблонов MeeGo + + + Add Packaging Files to Project + Добавить в проект файлы создания пакета + + + + RemoteLinux::Internal::GenericLinuxDeviceConfigurationFactory + + Generic Linux Device + Обычное Linux-устройство + + + Generic Linux + Обычный Linux + + + Test + Проверка + + + Remote Processes + Внешние процессы + + + Deploy Public Key + Установить ключ + + + + RemoteLinux::Internal::LinuxDeviceConfigurations + + (default for %1) + (по умолчанию для %1) + + + + RemoteLinux::Internal::LinuxDeviceFactorySelectionDialog + + Start Wizard + Запустить мастера + + + + RemoteLinux::Internal::MaddeDeviceConfigurationFactory + + Device with MADDE support (Fremantle, Harmattan, MeeGo) + Устройство с поддержкой MADDE (Fremantle, Harmattan, MeeGo) + + + Maemo5/Fremantle + + + + MeeGo 1.2 Harmattan + + + + Other MeeGo OS + Другия ОС семейства MeeGo + + + + RemoteLinux::Internal::MaemoConfigTestDialog + + Testing configuration. This may take a while. + Проверка конфигурации. Это может занять время. + + + Testing configuration... + Тестовая конфигурация... + + + Stop Test + Остановить проверку + + + Could not connect to host: %1 + Ну удалось подключиться к узлу: %1 + + + +Did you start Qemu? + +Qemu уже запущен? + + + Remote process failed: %1 + Внешний процесс завершился с ошибкой: %1 + + + Qt version mismatch! Expected Qt on device: 4.6.2 or later. + Неподходящий профиль Qt! Требуется Qt на устройстве: 4.6.2 и выше. + + + %1 is not installed.<br>You will not be able to deploy to this device. + %1 не установлен.<br>Установка на это устройство невозможна. + + + Please switch the device to developer mode via Settings -> Security. + Переключите устройство в режим разработчика в Settings -> Security. + + + Missing directory '%1'. You will not be able to do QML debugging on this device. + Отсутствует каталог «%1». Невозможно отлаживать QML на этом устройстве. + + + Error retrieving list of used ports: %1 + Ошибка получения списка используемых портов: %1 + + + All specified ports are available. + Все указанные порты доступны. + + + The following supposedly free ports are being used on the device: + На устройстве используются следующие обычно свободные порты: + + + Device configuration okay. + Конфигурация устройства в порядке. + + + Close + Закрыть + + + Device configuration test failed: Unexpected output: +%1 + Ошибка при проверке настройки устройства: неожиданный результат: +%1 + + + Hardware architecture: %1 + + Аппаратная архитектура: %1 + + + + Kernel version: %1 + + Версия ядра: %1 + + + + No Qt packages installed. + Пакеты Qt не установлены. + + + List of installed Qt packages: + Список установленых пакетов Qt: + + + + RemoteLinux::Internal::MaemoCopyToSysrootStep + + Cannot copy to sysroot without build configuration. + Невозможно скопировать в sysroot без конфигурации сборки. + + + Cannot copy to sysroot without valid Qt version. + Невозможно скопировать в sysroot без подходящей версии Qt. + + + Copying files to sysroot ... + Копирование файлов в sysroot... + + + Sysroot installation failed: %1 + Continuing anyway. + Не удалось установить в sysroot: %1 + Всё равно продолжаем. + + + Copy files to sysroot + Скопировать файлы в sysroot + + + + RemoteLinux::Internal::MaemoDebianPackageInstaller + + Installation failed: You tried to downgrade a package, which is not allowed. + Установка не удалась: была попытка установить пакет с версией ниже текущей, а это не разрешено. + + + + RemoteLinux::Internal::MaemoDeployConfigurationWidget + + Choose Icon (will be scaled to %1x%1 pixels, if necessary) + Выберите значок (если надо, размер будет изменён до %1x%1) + + + Invalid Icon + Неверный значок + + + Unable to read image + Не удалось прочитать изображение + + + Failed to Save Icon + Не удалось сохранить значок + + + Could not save icon to '%1'. + Не удалось сохранить значок в «%1». + + + + RemoteLinux::Internal::MaemoDeployStepBaseWidget + + Cannot deploy: %1 + Не удалось установить: %1 + + + <b>%1 using device</b>: %2 + <b>%1 использует устройство</b>: %2 + + + + RemoteLinux::Internal::MaemoDeploymentMounter + + Connection failed: %1 + Ошибка подключения: %1 + + + + RemoteLinux::Internal::MaemoDeviceConfigWizard + + New Device Configuration Setup + Настройка новой конфигурации устройства + + + + RemoteLinux::Internal::MaemoDeviceConfigWizardFinalPage + + The new device configuration will now be created. + Будет создана конфигурация нового устройства. + + + + RemoteLinux::Internal::MaemoDeviceConfigWizardKeyCreationPage + + Key Creation + Создание ключей + + + Cannot Create Keys + Не удалось создать ключи + + + The path you have entered is not a directory. + Введённый путь не является каталогом. + + + The directory you have entered does not exist and cannot be created. + Введённый каталог не существует и не может быть создан. + + + Creating keys ... + Создание ключей... + + + Key creation failed: %1 + Не удалось создать ключи: %1 + + + Done. + Готово. + + + Could Not Save Key File + Не удалось сохранить файл ключа + + + + RemoteLinux::Internal::MaemoDeviceConfigWizardKeyDeploymentPage + + Key Deployment + Установка ключа + + + Deploying... + Установка... + + + Key Deployment Failure + Не удалось установить ключ + + + Key Deployment Success + Ключ успешно установлен + + + The key was successfully deployed. You may now close the "%1" application and continue. + Ключ был успешно установлен. Теперь можно закрыть приложение «%1» и продолжить. + + + Done. + Готово. + + + + RemoteLinux::Internal::MaemoDeviceConfigWizardPreviousKeySetupCheckPage + + Device Status Check + Проверка состояния устройства + + + + RemoteLinux::Internal::MaemoDeviceConfigWizardReuseKeysCheckPage + + Existing Keys Check + Проверка существующих ключей + + + + RemoteLinux::Internal::MaemoDeviceConfigWizardStartPage + + General Information + Общая информация + + + + RemoteLinux::Internal::MaemoDeviceConfigurationsSettingsPage + + Device Configurations + Конфигурации устройств + + + + RemoteLinux::Internal::MaemoDeviceConfigurationsSettingsWidget + + Physical Device + Физическое устройство + + + Emulator + Эмулятор + + + You will need at least one port. + Требуется хотя бы один порт. + + + + RemoteLinux::Internal::MaemoDeviceEnvReader + + Connection error: %1 + Ошибка подключения: %1 + + + Error running remote process: %1 + Ошибка выполнения внешнего процесса: %1 + + + +Remote stderr was: '%1' + +Удалённые сообщения об ошибках: «%1» + + + + RemoteLinux::Internal::MaemoDirectDeviceUploadStep + + SFTP initialization failed: %1 + Не удалось инициализировать SFTP: %1 + + + All files successfully deployed. + Все файлы успешно установлены. + + + Uploading file '%1'... + Отправка файла «%1»... + + + Failed to upload file '%1'. + Не удалось отправить файл «%1». + + + Failed to upload file '%1': Could not open for reading. + Ошибка отправки файла «%1»: не удалось открыть для чтения. + + + Upload of file '%1' failed: %2 + Ошибка отправки файла «%1»: %2 + + + Upload files via SFTP + Отправить файлы через SFTP + + + + RemoteLinux::Internal::MaemoGlobal + + Could not connect to host: %1 + Ну удалось подключиться к узлу: %1 + + + +Did you start Qemu? + +Qemu уже запущен? + + + +Is the device connected and set up for network access? + +Устройство уже подключено? Доступ в сеть настроен? + + + (No device) + (Нет устройства) + + + SDK Connectivity + + + + Mad Developer + + + + Unknown OS + Неизвестная ОС + + + + RemoteLinux::Internal::MaemoInstallDebianPackageToSysrootStep + + Install Debian package to sysroot + Установить пакет Debian в sysroot + + + + RemoteLinux::Internal::MaemoInstallRpmPackageToSysrootStep + + Install RPM package to sysroot + Установить пакет RPM в sysroot + + + + RemoteLinux::Internal::MaemoKeyDeployer + + Public key error: %1 + Ошибка открытого ключа: %1 + + + Connection failed: %1 + Ошибка подключения: %1 + + + Key deployment failed: %1. + Не удалось установить ключ: %1. + + + + RemoteLinux::Internal::MaemoMakeInstallToSysrootStep + + Copy files to sysroot + Скопировать файлы в sysroot + + + + RemoteLinux::Internal::MaemoMountAndCopyDeployStep + + All files copied. + Все файлы скопированы. + + + Deploy files via UTFS mount + Установить файлы через монтирование UTFS + + + + RemoteLinux::Internal::MaemoMountAndInstallDeployStep + + No matching packaging step found. + Не найден подходящий этап создания пакета. + + + Package installed. + Пакет установлен. + + + Deploy package via UTFS mount + Установить пакет через монтирование UTFS + + + + RemoteLinux::Internal::MaemoPackageCreationFactory + + Create Debian Package + Создать пакет Debian + + + Create RPM Package + Создание пакета RPM + + + Create tarball + Создание тарбола + + + + RemoteLinux::Internal::MaemoPackageCreationWidget + + Size should be %1x%2 pixels + Размер должен быть %1x%2 пикселей + + + No Version Available. + Версия отсутствует. + + + Could not read icon + Невозможно прочитать значок + + + Images + Изображения + + + Choose Image (will be scaled to 48x48 pixels if necessary) + Выбор изображения (при необходимости будет растянуто до 48х48 пикселей) + + + Could Not Set New Icon + Невозможно установить новый значок + + + File Error + Ошибка файла + + + Could not set project name. + Не удалось задать имя проекта. + + + Could not set package name for project manager. + Не удалось задать имя пакета для менеджера пакетов. + + + Could not set project description. + Не удалось задать описание проекта. + + + <b>Create Package:</b> + <b>Создать пакет:</b> + + + Could Not Set Version Number + Невозможно задать новый номер версии + + + + RemoteLinux::Internal::MaemoPackageUploader + + Preparing SFTP connection... + Подготовка подключения SFTP... + + + Connection failed: %1 + Ошибка подключения: %1 + + + SFTP error: %1 + Ошибка SFTP: %1 + + + Package upload failed: Could not open file. + Не удалось отправить пакет: Невозможно открыть файл. + + + Failed to upload package: %2 + Не удалось отправить пакет: %2 + + + + RemoteLinux::Internal::MaemoPerTargetDeviceConfigurationListModel + + (default) + (по умолчанию) + + + + RemoteLinux::Internal::MaemoProFilesUpdateDialog + + Updateable Project Files + Обновляемые файлы проекта + + + + RemoteLinux::Internal::MaemoPublishedProjectModel + + Include in package + Включать в пакет + + + Include + Включать + + + Do not include + Не включать + + + + RemoteLinux::Internal::MaemoPublisherFremantleFree + + Canceled. + Отменено. + + + Publishing canceled by user. + Публикация отменена пользователем. + + + The project is missing some information important to publishing: + У проекта отсутствует информация, необходимая для публикации: + + + Publishing failed: Missing project information. + Не удалось опубликовать: отсутствует информация о проекте. + + + Removing left-over temporary directory ... + Удаление временного каталога... + + + Error removing temporary directory: %1 + Ошибка удаления временного каталога: %1 + + + Publishing failed: Could not create source package. + Не удалось опубликовать: не удалось создать архив исходников. + + + Setting up temporary directory ... + Подготовка временного каталога... + + + Error: Could not create temporary directory. + Ошибка: не удалось создать временный каталог. + + + Error: Could not copy project directory. + Ошибка: не удалось скопировать каталог проекта. + + + Error: Could not fix newlines. + Ошибка:не удалось исправить окончания строк. + + + No Qt version set. + Профиль Qt не задан. + + + Error uploading file: %1. + Ошибка отправки файла: %1. + + + Cannot open file for reading: %1. + Не удалось открыть файл для чтения: %1. + + + Publishing failed: Could not create package. + Не удалось опубликовать: не удалось создать пакет. + + + Cleaning up temporary directory ... + Очистка временного каталога... + + + Failed to create directory '%1'. + Не удалось создать каталог «%1». + + + Could not copy file '%1' to '%2': %3. + Не удалось скопировать файл «%1» в «%2»: %3. + + + Error: Failed to start dpkg-buildpackage. + Ошибка: не удалось запустить dpkg-buildpackage. + + + Error: dpkg-buildpackage did not succeed. + Ошибка: dpkg-buildpackage завершился с ошибкой. + + + Package creation failed. + Не удалось создать пакет. + + + Done. + Готово. + + + Packaging finished successfully. The following files were created: + + Создание пакета успешно завершено. Созданы следующие файлы: + + + + Building source package... + Создание пакета исходников... + + + Starting scp ... + Запуск scp... + + + SSH error: %1 + Ошибка SSH: %1 + + + Upload failed. + Отправка не удалась. + + + Error uploading file. + Ошибка отправки файла. + + + All files uploaded. + Все файлы отправлены. + + + Upload succeeded. You should shortly receive an email informing you about the outcome of the build process. + Отправка успешно завершена. Скоро придёт электронное письмо с результатом сборки. + + + Uploading file %1 ... + Отправка файла %1... + + + Cannot read file: %1 + Не удалось прочитать файл: %1 + + + The package description is empty. You must set one in Projects -> Run -> Create Package -> Details. + Описание проекта пусто. Необходимо задать его в Проекты -> Запуск -> Создание пакета -> Подробнее. + + + The package description is '%1', which is probably not what you want. Please change it in Projects -> Run -> Create Package -> Details. + Описание «%1», возможно не то, что ожидается. Смените его в Проекты -> Запуск -> Создание пакета -> Подробнее. + + + You have not set an icon for the package manager. The icon must be set in Projects -> Run -> Create Package -> Details. + Значок для менеджера пакетов не задан. Он должен быть задан в Проекты -> Запуск -> Создание пакета -> Подробнее. + + + + RemoteLinux::Internal::MaemoPublishingUploadSettingsPageFremantleFree + + Publishing to Fremantle's "Extras-devel/free" Repository + Публикация в хранилище «Extras-devel/free» от Fremantle + + + Upload options + Настройки отправки + + + Choose a private key file + Выберите секретный ключ + + + + RemoteLinux::Internal::MaemoPublishingWizardFactoryFremantleFree + + Publish for "Fremantle Extras-devel free" repository + Публикация в хранилище «Extras-devel/free» от Fremantle + + + This wizard will create a source archive and optionally upload it to a build server, where the project will be compiled and packaged and then moved to the "Extras-devel free" repository, from where users can install it onto their N900 devices. For the upload functionality, an account at garage.maemo.org is required. + Этот мастер создаст архив исходников и отправит (опционально) их на сервер сборки, где проект будет скомпилирован и собран в пакет, а затем помещён в хранилище «Extras-devel free». Оттуда пользователи смогут установить его на свои устройства N900. Для отправки необходима учётная запись на garage.maemo.org. + + + + RemoteLinux::Internal::MaemoPublishingWizardFremantleFree + + Publishing to Fremantle's "Extras-devel free" Repository + Публикация в хранилище «Extras-devel/free» от Fremantle + + + Build Settings + Настройки сборки + + + Upload Settings + Настройки отправки + + + Result + Результат + + + + RemoteLinux::Internal::MaemoQemuCrashDialog + + Qemu error + Ошибка Qemu + + + Qemu crashed. + Qemu завершился крахом. + + + Click here to change the OpenGL mode. + Щёлкните здесь для смены режима OpenGL. + + + You have configured Qemu to use OpenGL hardware acceleration, which might not be supported by your system. You could try using software rendering instead. + Qemu настроен на аппаратное ускорение OpenGL, которое, возможно, не поддерживается вашей системой. Попробуйте включить программную отрисовку. + + + Qemu is currently configured to auto-detect the OpenGL mode, which is known to not work in some cases. You might want to use software rendering instead. + Qemu настроен на автоматическое определение режима OpenGL, которое иногда не работает. Попробуйте включить программную отрисовку. + + + + RemoteLinux::Internal::MaemoQemuManager + + Start MeeGo Emulator + Запустить эмулятор MeeGo + + + Qemu has been shut down, because you removed the corresponding Qt version. + Qemu был завершён, так как был удалён соответствующий ему профиль Qt. + + + Qemu finished with error: Exit code was %1. + Qemu завершился с ошибкой: код завершения %1. + + + Qemu error + Ошибка Qemu + + + Qemu failed to start: %1 + Qemu не удалось запуститься: %1 + + + Stop MeeGo Emulator + Остановить эмулятор MeeGo + + + + RemoteLinux::Internal::MaemoQemuSettingsPage + + MeeGo Qemu Settings + Настройки Qemu для MeeGo + + + + RemoteLinux::Internal::MaemoRemoteCopyFacility + + Connection failed: %1 + Ошибка подключения: %1 + + + Error: Copy command failed. + Ошибка: Ошибка команды копирования. + + + Copying file '%1' to directory '%2' on the device... + Копирование файла «%1» в каталог «%2» устройства... + + + + RemoteLinux::Internal::MaemoRemoteMounter + + No directories to mount + Отсутствуют каталоги для монтирования + + + No directories to unmount + Отсутствуют каталоги для отмонтирования + + + Could not execute unmount request. + Не удалось выполнить запрос на отмонтирование. + + + Failure unmounting: %1 + Отмонтирование не удалось: %1 + + + Finished unmounting. + Отмонтирование закончено. + + + +stderr was: '%1' + +содержимое stderr: «%1» + + + Error: Not enough free ports on device to fulfill all mount requests. + Ошибка: на устройстве недостаточно свободных портов для выполнения всех требуемых монтирований. + + + Starting remote UTFS clients... + Запуск внешнего клиента UTFS... + + + Mount operation succeeded. + Операция монтирования успешно завершена. + + + Failure running UTFS client: %1 + Ошибка выполнения клиента UTFS: %1 + + + Starting UTFS servers... + Запуск серверов UTFS... + + + +stderr was: %1 + +содержимое stderr: %1 + + + Error running UTFS server: %1 + Ошибка работы сервера UTFS: %1 + + + Timeout waiting for UTFS servers to connect. + Истекло время ожидания подключения серверов UTFS. + + + + RemoteLinux::Internal::MaemoRemoteMountsModel + + Local directory + Локальный каталог + + + Remote mount point + Внешняя точка монтрования + + + + RemoteLinux::Internal::MaemoRemoteProcessList + + Connection failure: %1 + Ошибка подключения: %1 + + + Error: Remote process failed to start: %1 + Ошибка: не удалось запустить внешний процесс: %1 + + + Error: Remote process crashed: %1 + Ошибка: внешний процесс завершился крахом: %1 + + + Remote process failed. + Внешний процесс завершился с ошибкой. + + + +Remote stderr was: %1 + +Содержимое внешнего stderr: %1 + + + PID + + + + Command Line + Командная строка + + + + RemoteLinux::Internal::MaemoRemoteProcessesDialog + + Remote Error + Удалённая ошибка + + + + RemoteLinux::Internal::MaemoRunConfiguration + + Not enough free ports on the device. + Недостаточно свободных портов на устройстве. + + + + RemoteLinux::Internal::MaemoRunConfigurationWidget + + Choose directory to mount + Выбор каталога для монтирования + + + No local directories to be mounted on the device. + Локальные каталоги не смонтированы на устройстве. + + + One local directory to be mounted on the device. + Один локальный каталог смонтирован на устройстве. + + + %n local directories to be mounted on the device. + Note: Only mountCount>1 will occur here as 0, 1 are handled above. + + %n локальный каталог смонтирован на устройстве. + %n локальных каталога смонтировано на устройстве. + %n локальных каталогов смонтировано на устройстве. + + + + WARNING: You want to mount %1 directories, but your device has only %n free ports.<br>You will not be able to run this configuration. + + Предупреждение: попытка подключить %1 каталог(ов), когда у устройства только %n свободный порт.<br>Запустить эту конфигурацию будет невозможно. + Предупреждение: попытка подключить %1 каталог(ов), когда у устройства только %n свободных порта.<br>Запустить эту конфигурацию будет невозможно. + Предупреждение: попытка подключить %1 каталог(ов), когда у устройства только %n свободных портов.<br>Запустить эту конфигурацию будет невозможно. + + + + WARNING: You want to mount %1 directories, but only %n ports on the device will be available in debug mode. <br>You will not be able to debug your application with this configuration. + + ПРЕДУПРЕЖДЕНИЕ: попытка примонтировать %1 каталог(ов), но во время отладки на устройстве доступен только %n порт.<br>Невозможно отлаживать приложение в этой конфигурации. + ПРЕДУПРЕЖДЕНИЕ: попытка примонтировать %1 каталог(ов), но во время отладки на устройстве доступно только %n порта.<br>Невозможно отлаживать приложение в этой конфигурации. + ПРЕДУПРЕЖДЕНИЕ: попытка примонтировать %1 каталог(ов), но во время отладки на устройстве доступно только %n портов.<br>Невозможно отлаживать приложение в этой конфигурации. + + + + + RemoteLinux::Internal::MaemoRunControlFactory + + Run on device + Запустить на устройстве + + + + RemoteLinux::Internal::MaemoSshConfigDialog + + Save Public Key File + Сохранение файла открытого ключа + + + Save Private Key File + Сохранение файла секретного ключа + + + + RemoteLinux::Internal::MaemoSshRunner + + Mounting host directories... + Монтирование каталогов компьютера... + + + Qemu was not running. It has now been started up for you, but it will take a bit of time until it is ready. Please try again then. + Qemu ещё не запущен. Он перейдёт в состояние готовности через некоторое время. Попробуйте позже. + + + You want to run on Qemu, but it is not enabled for this Qt version. + Попытка запустить в Qemu, но он не включён для этого профиля Qt. + + + Potentially unmounting left-over host directory mounts... + Потенциальное отмонтирование оставшихся каталогов компьютера... + + + Unmounting host directories... + Отмонтирование каталогов компьютера... + + + + RemoteLinux::Internal::MaemoToolChainConfigWidget + + <html><head/><body><table><tr><td>Path to MADDE:</td><td>%1</td></tr><tr><td>Path to MADDE target:</td><td>%2</td></tr><tr><td>Debugger:</td/><td>%3</td></tr></body></html> + <html><head/><body><table><tr><td>Путь к MADDE:</td><td>%1</td></tr><tr><td>Путь к цели MADDE:</td><td>%2</td></tr><tr><td>Отладчик:</td/><td>%3</td></tr></body></html> + + + + RemoteLinux::Internal::MaemoToolChainFactory + + Maemo GCC + + + + Maemo GCC for %1 + Maemo GCC для %1 + + + %1 GCC (%2) + + + + + RemoteLinux::Internal::MaemoUploadAndInstallDpkgPackageStep + + Deploy Debian package via SFTP upload + Установить пакет Debian через загрузку по SFTP + + + + RemoteLinux::Internal::MaemoUploadAndInstallRpmPackageStep + + Deploy RPM package via SFTP upload + Установить пакет RPM через загрузку по SFTP + + + + RemoteLinux::Internal::MaemoUploadAndInstallTarPackageStep + + Deploy tarball via SFTP upload + Установить тарбол через загрузку по SFTP + + + + RemoteLinux::Internal::MaemoUsedPortsGatherer + + Connection error: %1 + Ошибка подключения: %1 + + + Could not start remote process: %1 + Невозможно запустить внешний процесс: %1 + + + Remote process crashed: %1 + Внешний процесс завершился крахом: %1 + + + Remote process failed: %1 + Внешний процесс завершился с ошибкой: %1 + + + +Remote error output was: %1 + +Внешний вывод ошибок: %1 + + + + RemoteLinux::Internal::Qt4MaemoDeployConfigurationFactory + + Copy Files to Maemo5 Device + Копирование файлов на устройство Maemo5 + + + Build Debian Package and Install to Maemo5 Device + Создание пакета Debian и установка на устройство Maemo5 + + + Build Debian Package and Install to Harmattan Device + Создание пакета Debian и установка на устройство Harmattan + + + Build RPM Package and Install to MeeGo Device + Создание пакета RPM и установка на устройство Meego + + + Build Tarball and Install to Linux Host + Создание тарбола и установка на машину с Linux + + + + RemoteLinux::Internal::RemoteLinuxRunConfigurationFactory + + (on Remote Generic Linux Host) + (на удалённой машине с Linux) + + + + RemoteLinux::Internal::RemoteLinuxRunControlFactory + + Run on remote Linux device + Запуск на удалённом Linux-устройстве + + + + RemoteLinux::MaemoDebianPackageCreationStep + + Create Debian Package + Создать пакет Debian + + + Packaging failed. + Не удалось создать пакет. + + + Could not move package files from %1 to %2. + Не удалось переместить файлы пакета из %1 в %2. + + + Your project name contains characters not allowed in Debian packages. +They must only use lower-case letters, numbers, '-', '+' and '.'. +We will try to work around that, but you may experience problems. + Название проекта содержит недопустимые для пакетов Debian символы. +Допустимы только буквы в нижнем регистре, числа, «-», «+» и «.». +Будет предпринята попытка обойти это, но могут возникнуть проблемы. + + + Packaging failed: Foreign debian directory detected. + Не удалось создать пакет: обнаружен другой каталог debian. + + + You are not using a shadow build and there is a debian directory in your project root ('%1'). Qt Creator will not overwrite that directory. Please remove it or use the shadow build feature. + Теневая сборка не используется, а в корневом каталоге проекта («%1») находится каталог dibian. Qt Creator не будет его перезаписывать. Этот каталог следует удалить или использовать теневую сборку. + + + Could not remove directory '%1': %2 + Не удалось удалить каталог «%1»: %2 + + + Could not create Debian directory '%1'. + Невозможно создать каталог Debian «%1». + + + Could not copy file '%1' to '%2' + Невозможно скопировать файл «%1» в «%2» + + + Error: Could not create file '%1'. + Ошибка: Невозможно создать файл «%1». + + + + RemoteLinux::MaemoRpmPackageCreationStep + + Create RPM Package + Создание пакета RPM + + + Packaging failed. + Не удалось создать пакет. + + + Could not move package file from %1 to %2. + Не удалось переместить файл пакета из %1 в %2. + + + + RemoteLinux::MaemoTarPackageCreationStep + + Create tarball + Создание тарбола + + + Error: tar file %1 cannot be opened (%2). + Ошибка: невозможно открыть архив tar %1 (%2). + + + Error writing tar file '%1': %2. + Ошибка записи архива tar «%1»: %2. + + + Error reading file '%1': %2. + Ошибка чтения архива tar «%1»: %2. + + + Cannot add file '%1' to tar-archive: path too long. + Не удалось добавить файл «%1» в архив tar: путь слишком длинный. + + + Error writing tar file '%1': %2 + Ошибка записи архива tar «%1»: %2 + + + + RemoteLinux::PublicKeyDeploymentDialog + + Waiting for file name... + Ожидание имени файла... + + + Choose Public Key File + Выбор файла открытого ключа + + + Public Key Files (*.pub);;All Files (*) + Файлы открытых ключей (*.pub);;Все файлы (*) + + + Deploying... + Установка... + + + Deployment finished successfully. + Установка завершилась успешно. + + + Close + Закрыть + + + + RemoteLinux::RemoteLinuxApplicationRunner + + Cannot run: %1 + Не удалось выполнить: %1 + + + Connecting to device... + Подключение к устройству... + + + Connection error: %1 + Ошибка подключения: %1 + + + Killing remote process(es)... + Завершение внешних процессов... + + + Initial cleanup failed: %1 + Не удалось выполнить начальную очистку: %1 + + + Remote process started. + Удалённый процесс запущен. + + + No remote executable set. + Не задана внешняя программа. + + + No device configuration set. + Конфигурация устройства не задана. + + + Error running remote process: %1 + Ошибка выполнения внешнего процесса: %1 + + + + RemoteLinux::RemoteLinuxRunConfiguration + + The .pro file is being parsed. + Идёт обработка файла .pro. + + + The .pro file could not be parsed. + Не удалось разобрать файл .pro. + + + No device configuration set. + Конфигурация устройства не задана. + + + No active build configuration. + Не выбрана активная конфигурация сборки. + + + Don't know what to run. + Не понятно что запустить. + + + Run on remote device + Remote Linux run configuration default display name + Запуск на удалённом устройстве + + + Clean Environment + Чистая среда + + + System Environment + Системная среда + + + + RemoteLinux::RemoteLinuxRunConfigurationWidget + + Fetch Device Environment + Загрузить среду устройства + + + <a href="%1">Manage device configurations</a> + <a href="%1">Управление конфигурациями устройств</a> + + + <a href="%1">Set Debugger</a> + <a href="%1">Установить отладчик</a> + + + Device configuration: + Конфигурация устройства: + + + Executable on host: + Программа на машине: + + + Executable on device: + Программа на устройстве: + + + Arguments: + Параметры: + + + C++ only + Только C++ + + + QML only + Только QML + + + C++ and QML + C++ и QML + + + Debugging type: + Тип отладки: + + + Base environment for this run configuration: + Базовая среда данной конфигурации выполнения: + + + Clean Environment + Чистая среда + + + System Environment + Системная среда + + + Cancel Fetch Operation + Прервать операцию загрузки + + + Device error + Ошибка устройства + + + Fetching environment failed: %1 + Не удалось загрузить окружение: %1 + + ResourceEditor::Internal::ResourceEditorPlugin @@ -21573,6 +23316,17 @@ Reason: %2 безымянный + + RowSpecifics + + Row + Строка + + + Spacing + Отступ + + RunSettingsPanel @@ -21610,6 +23364,10 @@ Previous Qt versions have limitations in building suitable SIS files. В данном мастере доступны только версии Qt 4.6.3 и выше. Предыдущие имеют ограничения в создании годных файлов SIS. + + Choose a tool chain: + Выберите инструментарий: + S60PublishingResultsPageOvi @@ -21626,11 +23384,13 @@ Previous Qt versions have limitations in building suitable SIS files. Global vendor name: - Глобальное имя производителя: + Глобальное имя +производителя: Qt version used in builds: - Профиль Qt используемый при сборке: + Профиль Qt, +используемый сборкой: Current Qt Version @@ -21658,12 +23418,17 @@ Previous Qt versions have limitations in building suitable SIS files. Localised vendor names: - Локализованные имена производителей: + Локализованные +имена производителей: Localised Vendor Names Локализованные имена производителей + + Display name: + Отображаемое имя: + SaveItemsDialog @@ -21903,7 +23668,7 @@ Server list was %2. Текст - Wrap Mode + Wrap mode Режим переноса @@ -21935,12 +23700,16 @@ Server list was %2. Break at '&main': - Останов на «&main»: + &Остановка на «main»: &Tool chain: &Инструментарий: + + Run in &terminal: + Запускать в &терминале: + StartRemoteDialog @@ -21970,7 +23739,7 @@ Server list was %2. &Use server start script: - &Использовать скрипт: + &Использовать сценарий запуска: &GNU target: @@ -21978,7 +23747,11 @@ Server list was %2. &Server start script: - Скрипт &запуска сервера: + Сценарий &запуска сервера: + + + Override s&tart script: + Осо&бый сценарий запуска: @@ -22008,6 +23781,21 @@ Server list was %2. Путь к п&рограмме: + + StatusDisplay + + No QML events recorded + События QML не записаны + + + Profiling application + Профилируемое приложение + + + Loading data + Загрузка данных + + Subversion::Internal::CheckoutWizard @@ -22092,6 +23880,13 @@ Server list was %2. Команда Subversion + + Subversion::Internal::SubversionDiffParameterWidget + + Ignore whitespace + Пропускать пробелы + + Subversion::Internal::SubversionEditor @@ -22246,8 +24041,8 @@ Server list was %2. Фиксировать - Diff Selected Files - Сравнить выделенные файлы + Diff &Selected Files + &Сравнить выбранные файлы &Undo @@ -22293,10 +24088,6 @@ Server list was %2. There are no modified files. Нет изменённых файлов. - - Cannot create temporary file: %1 - Не удаётся создать временный файл: %1 - Describe Описание @@ -22317,38 +24108,19 @@ Server list was %2. Фиксация Subversion - - SuppressionDialog - - Dialog - - - - Suppression File: - Файл с игнорируемым списком: - - - Suppression: - Игнорируется: - - Switches - special properties - специальные свойства - - - layout - компоновка + Special properties + Специальные свойства Layout Компоновка - advanced properties - дополнительные свойства + Advanced properties + Дополнительные свойства Advanced @@ -22414,6 +24186,13 @@ Server list was %2. Функция select() возвратила ошибку для порта %1: %2 (ошибка POSIX %3) + + TagBrowser + + Please choose a tag to filter for: + Выберите метку для отбора: + + TargetSettingsPanelFactory @@ -22424,7 +24203,7 @@ Server list was %2. TaskList::Internal::StopMonitoringHandler - Stop monitoring + Stop Monitoring Остановить слежение @@ -22438,9 +24217,17 @@ Server list was %2. Task file reader Просмотр файла задач + + File Error + Ошибка файла + TaskList::TaskListPlugin + + Cannot open task file %1: %2 + Невозможно открыть файл задач %1: %2 + My Tasks Category under which tasklist tasks are listed in build issues view @@ -22464,6 +24251,10 @@ Server list was %2. Text Editor Текстовый редактор + + Translate this string + Перевести эту строку + TextEditor::BaseFileFind @@ -22482,6 +24273,10 @@ Server list was %2. untitled безымянный + + Out of memory + Не хватает памяти + Opening file Открытие файла @@ -22516,11 +24311,23 @@ Server list was %2. Select Encoding Выбрать кодировку + + File Error + Ошибка файла + The text is too large to be displayed (%1 MB). Текст слишком большой для отображения (%1 МБ). + + TextEditor::BehaviorSettingsPage + + Global + Settings + Общие + + TextEditor::DisplaySettingsPage @@ -22580,6 +24387,26 @@ Server list was %2. Прокрутка ни&же конца текста + + TextEditor::FallbackSelectorWidget + + Settings: + Настройки: + + + Custom + Особые + + + Restore %1 + %1 is settings name (e.g. Global C++) + Восстановить %1 + + + Restore + Восстановить + + TextEditor::FontSettingsPage @@ -22623,11 +24450,18 @@ Server list was %2. Отмена + + TextEditor::FunctionHintProposalWidget + + %1 of %2 + %1 из %2 + + TextEditor::HighlighterSettingsPage Generic Highlighter - Базовая подсветка + Общая подсветка Download Definitions @@ -22900,12 +24734,23 @@ Please check the directory's access rights. Текст + + TextEditor::Internal::SnippetsCollection + + Cannot create user snippet directory %1 + Не удалось создать каталог пользовательских фрагментов %1 + + TextEditor::Internal::SnippetsSettingsPagePrivate Snippets Фрагменты + + Error While Saving Snippet Collection + Ошибка сохранения набора фрагментов + Error Ошибка @@ -22997,6 +24842,144 @@ Please check the directory's access rights. Размер шрифта в точках в текущем документе. + + TextEditor::TabPreferencesWidget + + Form + + + + Tab settings: + Настройки табуляций: + + + + TextEditor::TabSettingsWidget + + Form + + + + Tabs And Indentation + Табуляция и отступы + + + Insert &spaces instead of tabs + &Пробелы вместо табуляций + + + Automatically determine based on the nearest indented line (previous line preferred over next line) + Определять автоматически на основе соседних строк с отступами (предыдущая строка имеет приоритет перед следующей) + + + Based on the surrounding lines + На основе соседних строк + + + Ta&b size: + Размер &табуляции: + + + &Indent size: + Размер отст&упа: + + + Enable automatic &indentation + &Автоотступы + + + Backspace will go back one indentation level instead of one space. + Забой перемещает на позицию, а не на пробел назад. + + + &Backspace follows indentation + &Забой следует отступам + + + Align continuation lines: + Выравнивание продолжений строк: + + + <html><head/><body> +Influences the indentation of continuation lines. + +<ul> +<li>Not At All: Do not align at all. Lines will only be indented to the current logical indentation depth. +<pre> +(tab)int i = foo(a, b +(tab)c, d); +</pre> +</li> + +<li>With Spaces: Always use spaces for alignment, regardless of the other indentation settings. +<pre> +(tab)int i = foo(a, b +(tab) c, d); +</pre> +</li> + +<li>With Regular Indent: Use tabs and/or spaces for alignment, as configured above. +<pre> +(tab)int i = foo(a, b +(tab)(tab)(tab) c, d); +</pre> +</li> +</ul></body></html> + <html><head/><body> +Влияет на отступы продолжений строк. + +<ul> +<li>Не выравнивать: вообще не выравнивать, строки сдвигаются только на текущий логический уровень. +<pre> +(tab)int i = foo(a, b +(tab)c, d); +</pre> +</li> + +<li>Пробелами: всегда использовать пробелы, вне зависимости от установок. +<pre> +(tab)int i = foo(a, b +(tab) c, d); +</pre> +</li> + +<li>Отступами: использовать табуляцию и/или пробелы, в зависимости от настроек выше. +<pre> +(tab)int i = foo(a, b +(tab)(tab)(tab) c, d); +</pre> +</li> +</ul></body></html> + + + Not At All + Не выравнивать + + + With Spaces + Пробелами + + + With Regular Indent + Отступами + + + Tab key performs auto-indent: + Автоотступ по клавише TAB: + + + Never + Никогда + + + Always + Всегда + + + In Leading White Space + Перед текстом + + TextEditor::TextEditorActionHandler @@ -23056,10 +25039,6 @@ Please check the directory's access rights. %1+E, %2+W - - (Un)Comment &Selection - &Закомментировать/раскомментировать - Ctrl+/ @@ -23072,6 +25051,14 @@ Please check the directory's access rights. Shift+Del + + Copy &Line + Скоп&ировать строку + + + Ctrl+Ins + + Delete &Line Удалить строк&у @@ -23084,6 +25071,10 @@ Please check the directory's access rights. Ctrl+> + + Toggle &Fold All + Свернут&ь/развернуть всё + Increase Font Size Увеличить шрифт @@ -23232,6 +25223,10 @@ Please check the directory's access rights. Ctrl+[ + + Toggle Comment &Selection + &Закомментировать/раскомментировать + Fold Свернуть @@ -23240,10 +25235,6 @@ Please check the directory's access rights. Unfold Развернуть - - (Un)&Fold All - Свернут&ь/развернуть всё - Ctrl+] @@ -23467,40 +25458,47 @@ Please check the directory's access rights. Текстовый ввод - Input Mask + Input mask Маска ввода - Echo Mode + Echo mode Режим эха - Pass. Char + Pass. char Символ пароля - Password Character - Парольный символ + Character displayed when users enter passwords. + Символ отображаемый при вводе пользователем паролей. + + + Read only + Только для чтения + + + Cursor visible + Курсор виден + + + Active focus on press + Активировать фокус при нажатии + + + Auto scroll + Прокручивать автоматически Flags Флаги + + + TimeDisplay - Read Only - Только для чтения - - - Cursor Visible - Курсор виден - - - Focus On Press - Выбирать при нажатии - - - Auto Scroll - Прокручивать автоматически + length: %1 + длина: %1 @@ -23555,16 +25553,16 @@ Please check the directory's access rights. Origin Начало - - Top Left - Верхний левый - Top Верхний - Top Right + Top left + Верхний левый + + + Top right Верхний правый @@ -23580,17 +25578,17 @@ Please check the directory's access rights. Правый - Bottom Left + Bottom left Нижний левый + + Bottom right + Нижний правый + Bottom Нижний - - Bottom Right - Нижний правый - Scale Масштаб @@ -23611,13 +25609,6 @@ Please check the directory's access rights. - - Utils::AbstractProcess - - Cannot retrieve debugging output. - Не удалось получить отладочный вывод. - - Utils::CheckableMessageBox @@ -23823,6 +25814,61 @@ Please check the directory's access rights. + + Utils::FileUtils + + Refusing to remove root directory. + Предотвращение удаления корневого каталога. + + + Refusing to remove your home directory. + Предотвращение удаления домашнего каталога. + + + Failed to remove directory '%1'. + Не удалось удалить каталог «%1». + + + Failed to remove file '%1'. + Не удалось удалить файл «%1». + + + Failed to create directory '%1'. + Не удалось создать каталог «%1». + + + Could not copy file '%1' to '%2'. + Не удалось скопировать файл «%1» в «%2». + + + Cannot open %1 for reading: %2 + Не удалось открыть %1 для чтения: %2 + + + Cannot read %1: %2 + Не удалось прочитать %1: %2 + + + File Error + Ошибка файла + + + Cannot write file %1. Disk full? + Не удалось записать файл %1. Нет места? + + + Cannot overwrite file %1: %2 + Не удалось перезаписать файл %1: %2 + + + Cannot create file %1: %2 + Не удалось создать файл %1: %2 + + + Cannot create temporary file in %1: %2 + Не удалось создать временный файл в %1: %2 + + Utils::FileWizardDialog @@ -23954,8 +26000,8 @@ Please check the directory's access rights. Неожиданный пакет типа %1. - Could not read private key file: %1 - Не удалось прочитать файл секретного ключа: %1 + Private key error: %1 + Ошибка закрытого ключа: %1 Password expired. @@ -24093,6 +26139,14 @@ Please check the directory's access rights. Choose File Выбор файла + + The path '%1' expanded to an empty string. + Путь «%1» преобразовался к пустой строке. + + + The path '%1' is not a directory. + Путь «%1» не является каталогом. + Full path: <b>%1</b> Полный путь: <b>%1</b> @@ -24105,6 +26159,10 @@ Please check the directory's access rights. The path '%1' does not exist. Путь «%1» не существует. + + Cannot execute '%1'. + Не удалось выполнить «%1». + The path <b>%1</b> is not a directory. Путь <b>%1</b> не является каталогом. @@ -24196,25 +26254,21 @@ Please check the directory's access rights. Subversion Submit Фиксация Subversion - - Des&cription - Оп&исание - F&iles &Файлы - Commit %1/%n Files + %1 %2/%n File(s) - Фиксировать %1 из %n файла - Фиксировать %1 из %n файлов - Фиксировать %1 из %n файлов + %1 %2 из %n файла + %1 %2 из %n файлов + %1 %2 из %n файлов - Commit - Фиксировать + &Commit + &Фиксировать Check All @@ -24226,6 +26280,14 @@ Please check the directory's access rights. Uncheck all for submit Отключить всё + + Descriptio&n + &Описание + + + Check &all + &Выбрать все + Utils::SynchronousProcess @@ -24298,6 +26360,10 @@ Please check the directory's access rights. The file %1 has been removed outside Qt Creator. Do you want to save it under a different name, or close the editor? Файл %1 был удалён вне Qt Creator. Желаете его сохранить под другим именем или закрыть? + + The file %1 was removed. Do you want to save it under a different name, or close the editor? + Файл %1 был удалён. Желаете его сохранить под другим именем или закрыть? + Close Закрыть @@ -24408,10 +26474,6 @@ Please check the directory's access rights. Perforce Annotation Editor Редактор аннотации Perforce - - Subversion Editor - Редактор Subversion - Subversion Commit Editor Редактор фиксаций Subversion @@ -24616,6 +26678,13 @@ Please check the directory's access rights. Успешно. + + VCSBase::Internal::CommonSettingsWidget + + Command used for reverting diff chunks + Команда, используемаях для отката фрагментов diff + + VCSBase::Internal::NickNameDialog @@ -24634,10 +26703,6 @@ Please check the directory's access rights. Alias e-mail E-mail алиаса - - Cannot open '%1': %2 - Не удалось открыть «%1»: %2 - VCSBase::ProcessCheckoutJob @@ -24694,6 +26759,30 @@ Please check the directory's access rights. Describe change %1 Описать изменение %1 + + Send to CodePaster... + Отправить на CodePaster... + + + Revert Chunk... + Откатить фрагмент... + + + Unable to Paste + Не удалось вставить + + + Code pasting services are not available. + Сервисы вставки кода не доступны. + + + Revert Chunk + Откат фрагмента + + + Would you like to revert the chunk? + Желаете откатить фрагмент? + VCSBase::VCSBaseOutputWindow @@ -24752,6 +26841,26 @@ Please check the directory's access rights. Repository Creation Failed Не удалось создать хранилище + + There is no patch-command configured in the common 'Version Control' settings. + Команда patch не настроена в общих настройках «Контроля версий». + + + Unable to launch '%1': %2 + Не удалось запустить «%1»: %2 + + + A timeout occurred running '%1' + Истекло время работы «%1» + + + '%1' crashed. + Команда «%1» завершилась крахом. + + + '%1' failed (exit code %2). + Ошибка команды «%1» (код завершения %2). + A version control repository has been created in %1. Хранилище контроля версиями создано в %1. @@ -24787,10 +26896,6 @@ Please check the directory's access rights. Executing [%1] %2 Выполнение [%1] %2 - - Unable to open '%1': %2 - Не удалось открыть «%1»: %2 - The check script '%1' could not be started: %2 Скрипт проверки «%1» не запускается: %2 @@ -24800,8 +26905,8 @@ Please check the directory's access rights. Вышло время ожидания проверочного скрипта «%1». - The check script '%1' crashed - Скрипт проверки «%1» завершился авариайно + The check script '%1' crashed. + Скрипт проверки «%1» завершился авариайно. The check script returned exit code %1. @@ -24819,6 +26924,715 @@ Please check the directory's access rights. Вышло время ожидания (%1 сек) завершения процесса %2. + + VCSBase::VcsConfigurationPage + + Configure + Настроить + + + Configuration + Настройка + + + Please configure <b>%1</b> now. + Настройте <b>%1</b> прямо сейчас. + + + + Valgrind::Callgrind::CallModel + + Callee + Вызываемое + + + Caller + Вызывающее + + + Cost + Цена + + + Calls + Вызовы + + + + Valgrind::Callgrind::CallgrindController + + Previous command has not yet finished. + Предыдущая команда ещё не завершена. + + + Dumping profile data... + Загружаются данные профилирования... + + + Resetting event counters... + Сброс счётчиков событий... + + + Pausing instrumentation... + Приостановка работы... + + + Unpausing instrumentation... + Продолжение работы... + + + Callgrind dumped profiling info + Callgrind загрузил данные профилирования + + + Callgrind unpaused. + Callgrind продолжает работу. + + + Downloading remote profile data... + Загрузка внешних данных профилирования... + + + + Valgrind::Callgrind::CallgrindRunner + + Parsing Profile Data... + Обработка данных профилирования... + + + + Valgrind::Callgrind::DataModel + + Function: + Функция: + + + File: + Файл: + + + Object: + Объект: + + + Called: + Вызвано: + + + %n time(s) + + %n раз + %n раза + %n раз + + + + Events + События + + + Self costs + Собственная цена + + + (%) + + + + Incl. costs + Полная цена + + + %1 + %1%2% {1?} + + + (%1%) + + + + %1 cost spent in a given function excluding costs from called functions. + Цена выполнения данной функции (без учёта вызываемых функций): %1. + + + %1 cost spent in a given function including costs from called functions. + Цена выполнения данной функции (с учётом вызываемых функций): %1. + + + Function + Функция + + + Location + Размещение + + + Called + Вызвано + + + Self Cost: %1 + Собственная цена: %1 + + + Incl. Cost: %1 + Полная цена: %1 + + + + Valgrind::Callgrind::Function + + %1 in %2 + %1 в %2 + + + %1:%2 in %3 + %1: %2 в %3 + + + + Valgrind::Callgrind::ParseData + + Last-level + Последний уровень + + + Instruction + Инструкция + + + Cache + Кэш + + + Conditional branches + Условные ветвления + + + Indirect branches + Косвенные ветвления + + + level %1 + уровень %1 + + + read + чтение + + + write + запись + + + mispredicted + ошибка предсказания + + + executed + выполнено + + + miss + промах + + + access + попадание + + + Line: + Строка: + + + Position: + Положение: + + + + Valgrind::Internal + + %1 in %2 + %1 в %2 + + + in %1 + в %1 + + + + Valgrind::Internal::CallgrindEngine + + Profiling + Профилирование + + + Profiling %1 + + Профилирование %1 + + + + + Valgrind::Internal::CallgrindTool + + Valgrind Function Profiler + Профилер функций Valgrind + + + Valgrind Profile uses the "callgrind" tool to record function calls when a program runs. + Профилер Valgrind использует утилиту «callgrind» для записи вызовов функций при работе программы. + + + Profile Costs of this Function and its Callees + Цены функций и тех, кого они вызывают + + + + Valgrind::Internal::CallgrindToolPrivate + + Callers + Вызывающие + + + Functions + Функции + + + Callees + Вызывемые + + + Visualization + Визуализация + + + Request the dumping of profile information. This will update the callgrind visualization. + Запрос на получение данных профилирования. Приведёт к обновлению визуализации callgrind. + + + Go back one step in history. This will select the previously selected item. + Назад на шаг в истории. Выберет предыдущий выбранный элемент. + + + Reset all event counters. + Сбросить все счётчики событий. + + + Pause event logging. No events are counted which will speed up program execution during profiling. + Приостановить запись событий. События не будут записываться, что повысит скорость выполнения программы при профилировании. + + + Go forward one step in history. + Перейти на шаг вперёд по истории. + + + Selects which events from the profiling data are shown and visualized. + Выбирает, какие события из данных профилирования будут показаны и визуализированы. + + + Absolute Costs + Абсолютные цены + + + Show costs as absolute numbers. + Показывать цены в абсолютных числах. + + + Relative Costs + Относительные цены + + + Show costs relative to total inclusive cost. + Показывать цены относительно общей. + + + Relative Costs to Parent + Цены, относительные к родительской + + + Show costs relative to parent functions inclusive cost. + Показывать цены относительно общей цены вызвавшей функции. + + + Cost Format + Формат цены + + + Cycle Detection + Определение циклов + + + Enable cycle detection to properly handle recursive or circular function calls. + Включить определение циклов для корректной обработки рекурсивных и циклических вызовов. + + + Show Project Costs Only + Показать только цены проекта + + + Show only profiling info that originated from this project source. + Показать только информацию профилирования, полученную для этого проекта. + + + Filter... + Фильтр... + + + Profiling aborted. + Профилирование прервано. + + + Parsing finished, no data. + Обработка завершена, данных нет. + + + Parsing finished, total cost of %1 reported. + Обработка завершена, общая цена вышла %1. + + + Parsing failed. + Не удалось обработать. + + + Select this Function in the Analyzer Output + Выберите эту функцию в выводе анализатора + + + Populating... + Заполнение... + + + + Valgrind::Internal::MemcheckEngine + + Analyzing Memory + Анализ памяти + + + Analyzing memory of %1 + + Анализ памяти %1 + + + + + Valgrind::Internal::MemcheckErrorView + + Copy Selection + Копировать выбранное + + + Suppress Error + Игнорировать ошибку + + + + Valgrind::Internal::MemcheckTool + + External Errors + Внешние ошибки + + + Suppressions + Игнорирования + + + Definite Memory Leaks + Определённые утечки памяти + + + Possible Memory Leaks + Возможные утечки памяти + + + Use of Uninitialized Memory + Использование неинициализированной памяти + + + Invalid Calls to "free()" + Неверный вызов «free()» + + + Valgrind Analyze Memory uses the "memcheck" tool to find memory leaks + Анализатор памяти Valgrind использует утилиту «memcheck» для обнаружения утечек памяти + + + Memory Issues + Проблемы памяти + + + Go to previous leak. + Предыдущая утечка. + + + Go to next leak. + Следующая утечка. + + + Show issues originating outside currently opened projects. + Показывать события, возникшие вне открытых проектов. + + + These suppression files were used in the last memory analyzer run. + Эти файлы были использованы при последнем запуске анализатора. + + + Valgrind Memory Analyzer + Анализатор памяти Valgrind + + + Error Filter + Фильтр ошибок + + + Internal Error + Внутренняя ошибка + + + Error occurred parsing valgrind output: %1 + Возникла ошибка при разборе вывода valgrind: %1 + + + + Valgrind::Internal::SuppressionDialog + + Dialog + + + + Suppression File: + Список игнорирований: + + + Suppression: + Игнорируются: + + + Select Suppression File + Выбор списка игнорирований + + + Save Suppression + Сохранить игнорирования + + + + Valgrind::Internal::ValgrindBaseSettings + + Valgrind + + + + + Valgrind::Internal::ValgrindConfigWidget + + Generic Settings + Общие настройки + + + Valgrind executable: + Программа Valgrind: + + + Valgrind Command + Команда Valgrind + + + Valgrind Suppression File (*.supp);;All Files (*) + Файл игнорирований Valgrind (*.supp);;Все файлы (*) + + + Memory Analysis Options + Параметры анализа памяти + + + Backtrace frame count: + Количество кадров стека: + + + Suppression files: + Списки игнорирований: + + + Add... + Добавить... + + + Remove + Удалить + + + Track origins of uninitialized memory + Находить источники неинициализированной памяти + + + Profiling Options + Параметры профилирования + + + Limits the amount of results the profiler gives you. A lower limit will likely increase performance. + Ограничивает количество результатов выдаваемых профилером. Чем меньше значение, тем выше скорость. + + + Result view: Minimum event cost: + Вывод результатов: Минимальная цена события: + + + % + + + + Show additional information for events in tooltips + Показывать в подсказках дополнительные данные о событиях + + + <html><head/><body> +<p>Does full cache simulation.</p> +<p>By default, only instruction read accesses will be counted ("Ir").</p> +<p> +With cache simulation, further event counters are enabled: +<ul><li>Cache misses on instruction reads ("I1mr"/"I2mr")</li> +<li>Data read accesses ("Dr") and related cache misses ("D1mr"/"D2mr")</li> +<li>Data write accesses ("Dw") and related cache misses ("D1mw"/"D2mw")</li></ul> +</p> + +</body></html> + <html><head/><body> +<p>Полная эмуляция кэша.</p> +<p>По умолчанию, считаются только инструкции чтения ("Ir").</p> +<p> +Следующие счётчики событий включаются при эмуляции кэша: +<ul><li>Промахи кэша при чтении инструкции ("I1mr"/"I2mr")</li> +<li>Доступ к данным на чтения ("Dr") и соответствующие промахи кэша ("D1mr"/"D2mr")</li> +<li>Доступ к данным на запись ("Dw") и соответствующие промахи кэша ("D1mw"/"D2mw")</li></ul> +</p> +</body></html> + + + Enable cache simulation + Включить эмуляцию кэша + + + <html><head/><body> +<p>Do branch prediction simulation.</p> +<p>Further event counters are enabled: </p> +<ul><li>Number of executed conditional branches and related predictor misses ( +"Bc"/"Bcm")</li> +<li>Executed indirect jumps and related misses of the jump address predictor ( +"Bi"/"Bim")</li></ul></body></html> + <html><head/><body> +<p>Эмуляцию предсказателя ветвлений.</p> +<p>Включены следующие счётчики:</p> +<ul><li>Количество выполненных условных веток и соответствующих промахов ( +"Bc"/"Bcm")</li> +<li>Выполненных косвенных переходов и соответствующих промахов предсказателя адреса перехода ( +"Bi"/"Bim")</li></ul></body></html> + + + Enable branch prediction simulation + Включить эмуляцию предсказания ветвлений + + + Collect information for system call times. + Собирать информацию о времени системных вызовов. + + + Collect system call time + Считать время системных вызовов + + + Collect the number of global bus events that are executed. The event type "Ge" is used for these events. + Считать количество выполненных событий общей шины. Используется тип события "Ge". + + + Collect global bus events + Считать события общей шины + + + Visualisation: Minimum event cost: + Визуализация: Минимальная цена события: + + + + Valgrind::Internal::ValgrindEngine + + Valgrind options: %1 + Параметры Valgrind: %1 + + + Working directory: %1 + Рабочий каталог: %1 + + + Command-line arguments: %1 + Аргументы командной строки: %1 + + + ** Analyzing finished ** + + ** Анализ завершён ** + + + + ** Error: "%1" could not be started: %2 ** + + ** Ошибка: Не удалось запустить «%1»: %2 ** + + + + ** Error: no valgrind executable set ** + + ** Error: программа vlagrind не задана ** + + + + ** Process Terminated ** + + ** Процесс завершился ** + + + + Application Output + Вывод приложения + + + + Valgrind::Internal::ValgrindRunControlFactory + + Analyzer + Анализатор + + + + Valgrind::Internal::Visualisation + + All functions with an inclusive cost ratio higher than %1 (%2 are hidden) + Все функции с полной ценой более %1 (%2 скрыто) + + + + Valgrind::Memcheck::MemcheckRunner + + No network interface found for remote analysis. + Не найден сетевой адаптер для удалённого анализа. + + + Select Network Interface + Выберите сетевой адаптер + + + More than one network interface was found on your machine. Please select which one you want to use for remote analysis. + На машине найдено более одного сетевого адаптера. Выберите тот, который следует использовать для удалённого анализа. + + + + Valgrind::RemoteValgrindProcess + + Could not determine remote PID. + Не удалось определить удалённый PID. + + Valgrind::XmlProtocol @@ -24967,17 +27781,6 @@ Please check the directory's access rights. Строка - - ValgrindConfigWidget - - Common Valgrind Options - Общие параметры Valgrind - - - Valgrind executable: - Программа Valgrind: - - ViewDialog @@ -25036,9 +27839,13 @@ p, li { white-space: pre-wrap; } Видимость - Is visible + Visible Виден + + isVisible + + Smooth Сглаживание @@ -25062,10 +27869,6 @@ p, li { white-space: pre-wrap; } Url Путь - - Title - Заголовок - Pref Width Желаемая ширина @@ -25100,22 +27903,6 @@ p, li { white-space: pre-wrap; } Welcome::Internal::CommunityWelcomePageWidget - - Form - Форма - - - News From the Qt Labs - Новости от Qt Labs - - - Qt Support Sites - Сайты поддержки Qt - - - Qt Links - Ссылки Qt - <b>Qt LGPL Support</b><br /><font color='gray'>Buy commercial Qt support</font> <b>Поддержка Qt LGPL</b><br /><font color='gray'>Купить коммерческую поддержку Qt</font> @@ -25147,30 +27934,14 @@ p, li { white-space: pre-wrap; } - Welcome::WelcomeMode + Welcome::Internal::WelcomeMode Welcome Начало - #headerFrame { - border-image: url(:/welcome/images/center_frame_header.png) 0; - border-width: 0; -} - - #headerFrame { - border-image: url(:/welcome/images/center_frame_header.png) 0; - border-width: 0; -} - - - - Help us make Qt Creator even better - Помогите нам сделать Qt Creator лучше - - - Feedback - Обратная связь + New Project + Новый проект @@ -25199,135 +27970,29 @@ p, li { white-space: pre-wrap; } emptyPane - none or multiple items selected - ничего не выбрано или выбрано несколько элементов + None or multiple items selected. + Ничего не выбрано или выбрано несколько элементов. - trk::BaseCommunicationStarter - - %1: timed out after %n attempts using an interval of %2ms. - - %1: время истекло после %n попытки через каждые %2 мс. - %1: время истекло после %n попыток через каждые %2 мс. - %1: время истекло после %n попыток через каждые %2 мс. - - + text - %1: Connection attempt %2 succeeded. - %1: Подключено в %2-й попытки. - - - %1: Connection attempt %2 failed: %3 (retrying)... - %1: Попытка подключиться %2 не удалась: %3 (повтор)... + text + текст - trk::BluetoothListener + textedit - %1: Stopping listener %2... - %1: Остановка приёмника %2... - - - %1: Starting Bluetooth listener %2... - %1: Запуск приёмника Bluetooth %2... - - - Unable to run '%1': %2 - Не удалось запустить «%1»: %2 - - - %1: Bluetooth listener running (%2). - %1: Приёмник Bluetooth работает (%2). - - - %1: Process %2 terminated with exit code %3. - %1: Процесс %2 завершился с кодом %3. - - - %1: Process %2 crashed. - %1: Процесс %2 завершился аварийно. - - - %1: Process error %2: %3 - %1: Ошибка процесса %2: %3 + text edit + изменить текст - trk::Launcher + textinput - Cannot open remote file '%1': %2 - Невозможно открыть внешний файл «%1»: %2 - - - Cannot open '%1': %2 - Невозможно открыть «%1»: %2 - - - No device is connected. Please connect a device and try again. - Устройство не подключено. Подключите устройство и попробуйте снова. - - - Unable to acquire a device for port '%1'. It appears to be in use. - Не удалось получить доступ к устройству через «%1». Возможно, оно уже используется. - - - - trk::Session - - CPU: v%1.%2%3%4 - CPU description of an S60 device %1 major verison, %2 minor version %3 real name of major verison, %4 real name of minor version - Процессор: v%1.%2%3%4 - - - App TRK: v%1.%2 TRK protocol: v%3.%4 - App TRK: v%1.%2 протокол TRK: v%3.%4 - - - %1, %2%3%4, %5 - s60description description of an S60 device %1 CPU description, %2 endianness %3 default type size (if any), %4 float size (if any) %5 TRK version - %1, %2%3%4, %5 - - - big endian - big endian - - - little endian - little endian - - - , type size: %1 - will be inserted into s60description - , размер целого: %1 - - - , float size: %1 - will be inserted into s60description - , размер float: %1 - - - - trk::promptStartCommunication - - Connection on %1 canceled. - Подключение на %1 отменено. - - - Waiting for App TRK - Ожидание App TRK - - - Waiting for App TRK to start on %1... - Ожидание запуска App TRK на %1... - - - Waiting for Bluetooth Connection - Ожидание подключения по Bluetooth - - - Connecting to %1... - Подключение к %1... + text + текст diff --git a/src/app/qtcreator.rc b/src/app/qtcreator.rc index 4ef220832d4..9ec34acd659 100644 --- a/src/app/qtcreator.rc +++ b/src/app/qtcreator.rc @@ -1,8 +1,8 @@ IDI_ICON1 ICON DISCARDABLE "qtcreator.ico" -IDI_ICON2 ICON DISCARDABLE "winicons\c.ico" -IDI_ICON3 ICON DISCARDABLE "winicons\cpp.ico" -IDI_ICON4 ICON DISCARDABLE "winicons\h.ico" -IDI_ICON5 ICON DISCARDABLE "winicons\ui.ico" -IDI_ICON6 ICON DISCARDABLE "winicons\pro.ico" -IDI_ICON7 ICON DISCARDABLE "winicons\pri.ico" -IDI_ICON8 ICON DISCARDABLE "winicons\qml.ico" +IDI_ICON2 ICON DISCARDABLE "winicons\\c.ico" +IDI_ICON3 ICON DISCARDABLE "winicons\\cpp.ico" +IDI_ICON4 ICON DISCARDABLE "winicons\\h.ico" +IDI_ICON5 ICON DISCARDABLE "winicons\\ui.ico" +IDI_ICON6 ICON DISCARDABLE "winicons\\pro.ico" +IDI_ICON7 ICON DISCARDABLE "winicons\\pri.ico" +IDI_ICON8 ICON DISCARDABLE "winicons\\qml.ico" diff --git a/src/libs/cplusplus/findcdbbreakpoint.cpp b/src/libs/cplusplus/findcdbbreakpoint.cpp index d1e6162fb1b..8cc029393dd 100644 --- a/src/libs/cplusplus/findcdbbreakpoint.cpp +++ b/src/libs/cplusplus/findcdbbreakpoint.cpp @@ -89,16 +89,11 @@ bool FindCdbBreakpoint::preVisit(AST *ast) bool FindCdbBreakpoint::visit(FunctionDefinitionAST *ast) { - if (ast->ctor_initializer) { - foundLine(ast->function_body->firstToken()); - return false; - } - if (ast->function_body) { if (CompoundStatementAST *stmt = ast->function_body->asCompoundStatement()) { accept(stmt); if (!m_breakpointLine) - foundLine(stmt->lastToken() - 1); + foundLine(ast->function_body->firstToken()); return false; } } diff --git a/src/libs/qmleditorwidgets/contextpanewidget.cpp b/src/libs/qmleditorwidgets/contextpanewidget.cpp index 57eb41bc32a..35725481d3b 100644 --- a/src/libs/qmleditorwidgets/contextpanewidget.cpp +++ b/src/libs/qmleditorwidgets/contextpanewidget.cpp @@ -263,7 +263,7 @@ void ContextPaneWidget::rePosition(const QPoint &position, const QPoint &alterna if (pos().y() < 0) move(alternative2); if ((pos().y() + height()) > parentWidget()->height()) - hide(); + move(x(), parentWidget()->height() - height() - 10); m_originalPos = pos(); diff --git a/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp b/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp index 156cbbfc6a3..c310abaf843 100644 --- a/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp +++ b/src/libs/qmleditorwidgets/contextpanewidgetimage.cpp @@ -216,6 +216,8 @@ void ContextPaneWidgetImage::setProperties(QmlJS::PropertyReader *propertyReader setPixmap(source); } else { m_sizeLabel->setText(""); + m_fileWidget->setFileName(QUrl()); + setPixmap(""); } } diff --git a/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp b/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp index 9b1738f1298..094da28da6f 100644 --- a/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp +++ b/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp @@ -237,6 +237,11 @@ void QDeclarativeDebugConnection::close() QIODevice::close(); d->device->close(); emit stateChanged(QAbstractSocket::UnconnectedState); + + QHash::iterator iter = d->plugins.begin(); + for (; iter != d->plugins.end(); ++iter) { + iter.value()->statusChanged(QDeclarativeDebugClient::NotConnected); + } } } @@ -283,6 +288,7 @@ void QDeclarativeDebugConnection::connectToHost(const QString &hostName, quint16 QTcpSocket *socket = new QTcpSocket(d); d->device = socket; d->connectDeviceSignals(); + d->gotHello = false; connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SIGNAL(stateChanged(QAbstractSocket::SocketState))); connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(error(QAbstractSocket::SocketError))); connect(socket, SIGNAL(connected()), this, SIGNAL(connected())); @@ -297,6 +303,7 @@ void QDeclarativeDebugConnection::connectToOst(const QString &port) ost->setParent(d); d->device = ost; d->connectDeviceSignals(); + d->gotHello = false; QIODevice::open(ReadWrite | Unbuffered); emit stateChanged(QAbstractSocket::ConnectedState); emit connected(); diff --git a/src/libs/utils/buildablehelperlibrary.cpp b/src/libs/utils/buildablehelperlibrary.cpp index 3e2f1462837..bf2e79c8500 100644 --- a/src/libs/utils/buildablehelperlibrary.cpp +++ b/src/libs/utils/buildablehelperlibrary.cpp @@ -78,12 +78,20 @@ QString BuildableHelperLibrary::qtInstallDataDir(const QString &qmakePath) QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath) { - if (qmakePath.isEmpty()) + bool qmakeIsExecutable; + return BuildableHelperLibrary::qtVersionForQMake(qmakePath, &qmakeIsExecutable); +} + +QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath, bool *qmakeIsExecutable) +{ + *qmakeIsExecutable = !qmakePath.isEmpty(); + if (!*qmakeIsExecutable) return QString(); QProcess qmake; qmake.start(qmakePath, QStringList(QLatin1String("--version"))); if (!qmake.waitForStarted()) { + *qmakeIsExecutable = false; qWarning("Cannot start '%s': %s", qPrintable(qmakePath), qPrintable(qmake.errorString())); return QString(); } @@ -93,9 +101,11 @@ QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath) return QString(); } if (qmake.exitStatus() != QProcess::NormalExit) { + *qmakeIsExecutable = false; qWarning("'%s' crashed.", qPrintable(qmakePath)); return QString(); } + const QString output = QString::fromLocal8Bit(qmake.readAllStandardOutput()); static QRegExp regexp(QLatin1String("(QMake version|QMake version:)[\\s]*([\\d.]*)"), Qt::CaseInsensitive); diff --git a/src/libs/utils/buildablehelperlibrary.h b/src/libs/utils/buildablehelperlibrary.h index 5a69b4f0169..9246ceef14e 100644 --- a/src/libs/utils/buildablehelperlibrary.h +++ b/src/libs/utils/buildablehelperlibrary.h @@ -52,7 +52,7 @@ public: static QString findSystemQt(const Utils::Environment &env); // return true if the qmake at qmakePath is qt4 (used by QtVersion) static QString qtVersionForQMake(const QString &qmakePath); - static bool checkMinimumQtVersion(const QString &qtversionString, int majorVersion, int minorVersion, int patchVersion); + static QString qtVersionForQMake(const QString &qmakePath, bool *qmakeIsExecutable); // returns something like qmake4, qmake, qmake-qt4 or whatever distributions have chosen (used by QtVersion) static QStringList possibleQMakeCommands(); diff --git a/src/libs/utils/classnamevalidatinglineedit.cpp b/src/libs/utils/classnamevalidatinglineedit.cpp index baaa45f4d32..5d89eed4a26 100644 --- a/src/libs/utils/classnamevalidatinglineedit.cpp +++ b/src/libs/utils/classnamevalidatinglineedit.cpp @@ -125,7 +125,7 @@ QString ClassNameValidatingLineEdit::createClassName(const QString &name) // Remove spaces and convert the adjacent characters to uppercase QString className = name; QRegExp spaceMatcher(QLatin1String(" +(\\w)"), Qt::CaseSensitive, QRegExp::RegExp2); - QTC_ASSERT(spaceMatcher.isValid(), /**/); + QTC_CHECK(spaceMatcher.isValid()); int pos; while ((pos = spaceMatcher.indexIn(className)) != -1) { className.replace(pos, spaceMatcher.matchedLength(), diff --git a/src/libs/utils/detailswidget.cpp b/src/libs/utils/detailswidget.cpp index 51bec20a6e0..922aea8a64a 100644 --- a/src/libs/utils/detailswidget.cpp +++ b/src/libs/utils/detailswidget.cpp @@ -105,14 +105,20 @@ DetailsWidgetPrivate::DetailsWidgetPrivate(QWidget *parent) : m_hovered(false), m_useCheckBox(false) { - m_summaryLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse); - m_summaryLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - m_summaryLabel->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); + QHBoxLayout *summaryLayout = new QHBoxLayout; + summaryLayout->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); + summaryLayout->setSpacing(0); - m_summaryCheckBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - m_summaryCheckBox->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); + m_summaryLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse); + m_summaryLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + m_summaryLabel->setContentsMargins(0, 0, 0, 0); + summaryLayout->addWidget(m_summaryLabel); + + m_summaryCheckBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_summaryCheckBox->setAttribute(Qt::WA_LayoutUsesWidgetRect); /* broken layout on mac otherwise */ m_summaryCheckBox->setVisible(false); + m_summaryCheckBox->setContentsMargins(0, 0, 0, 0); + summaryLayout->addWidget(m_summaryCheckBox); m_additionalSummaryLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); m_additionalSummaryLabel->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); @@ -121,7 +127,7 @@ DetailsWidgetPrivate::DetailsWidgetPrivate(QWidget *parent) : m_grid->setContentsMargins(0, 0, 0, 0); m_grid->setSpacing(0); - m_grid->addWidget(m_summaryLabel, 0, 0); + m_grid->addLayout(summaryLayout, 0, 0); m_grid->addWidget(m_detailsButton, 0, 2); m_grid->addWidget(m_additionalSummaryLabel, 1, 0, 1, 3); } @@ -168,7 +174,6 @@ void DetailsWidgetPrivate::updateControls() if (m_widget) m_widget->setVisible(m_state == DetailsWidget::Expanded || m_state == DetailsWidget::NoSummary); m_detailsButton->setChecked(m_state == DetailsWidget::Expanded && m_widget); - //m_summaryLabel->setEnabled(m_state == DetailsWidget::Collapsed && m_widget); m_detailsButton->setVisible(m_state != DetailsWidget::NoSummary); m_summaryLabel->setVisible(m_state != DetailsWidget::NoSummary && !m_useCheckBox); m_summaryCheckBox->setVisible(m_state != DetailsWidget::NoSummary && m_useCheckBox); @@ -202,6 +207,8 @@ DetailsWidget::DetailsWidget(QWidget *parent) : { setLayout(d->m_grid); + setUseCheckBox(false); + connect(d->m_detailsButton, SIGNAL(toggled(bool)), this, SLOT(setExpanded(bool))); connect(d->m_summaryCheckBox, SIGNAL(toggled(bool)), @@ -224,8 +231,6 @@ bool DetailsWidget::useCheckBox() void DetailsWidget::setUseCheckBox(bool b) { d->m_useCheckBox = b; - QWidget *widget = b ? static_cast(d->m_summaryCheckBox) : static_cast(d->m_summaryLabel); - d->m_grid->addWidget(widget, 0, 0); d->m_summaryLabel->setVisible(b); d->m_summaryCheckBox->setVisible(!b); } @@ -260,7 +265,7 @@ void DetailsWidget::paintEvent(QPaintEvent *paintEvent) QPainter p(this); QWidget *topLeftWidget = d->m_useCheckBox ? static_cast(d->m_summaryCheckBox) : static_cast(d->m_summaryLabel); - QPoint topLeft(topLeftWidget->geometry().left(), contentsRect().top()); + QPoint topLeft(topLeftWidget->geometry().left() - MARGIN, contentsRect().top()); const QRect paintArea(topLeft, contentsRect().bottomRight()); if (d->m_state != Expanded) { diff --git a/src/libs/utils/qtcassert.h b/src/libs/utils/qtcassert.h index 5d2eb1ac703..c33581b76b0 100644 --- a/src/libs/utils/qtcassert.h +++ b/src/libs/utils/qtcassert.h @@ -44,5 +44,8 @@ #define QTC_ASSERT(cond, action) \ if(cond){}else{qDebug()<<"ASSERTION " #cond " FAILED AT " __FILE__ ":" QTC_ASSERT_STRINGIFY(__LINE__);action;} +#define QTC_CHECK(cond) \ + if(cond){}else{qDebug()<<"ASSERTION " #cond " FAILED AT " __FILE__ ":" QTC_ASSERT_STRINGIFY(__LINE__);} + #endif // QTC_ASSERT_H diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp index 773a09a9a51..7824f77fbbe 100644 --- a/src/plugins/analyzerbase/analyzermanager.cpp +++ b/src/plugins/analyzerbase/analyzermanager.cpp @@ -602,7 +602,7 @@ QAction *AnalyzerManagerPrivate::actionFromToolAndMode(IAnalyzerTool *tool, Star foreach (QAction *action, m_actions) if (m_toolFromAction.value(action) == tool && m_modeFromAction[action] == mode) return action; - QTC_ASSERT(false, /**/); + QTC_CHECK(false); return 0; } @@ -666,9 +666,9 @@ void AnalyzerManagerPrivate::selectTool(IAnalyzerTool *tool, StartMode mode) if (!m_defaultSettings.contains(tool)) { QWidget *widget = tool->createWidgets(); - QTC_ASSERT(widget, /**/); + QTC_CHECK(widget); m_defaultSettings.insert(tool, m_mainWindow->saveSettings()); - QTC_ASSERT(!m_controlsWidgetFromTool.contains(tool), /**/); + QTC_CHECK(!m_controlsWidgetFromTool.contains(tool)); m_controlsWidgetFromTool[tool] = widget; m_controlsStackWidget->addWidget(widget); } @@ -677,7 +677,7 @@ void AnalyzerManagerPrivate::selectTool(IAnalyzerTool *tool, StartMode mode) loadToolSettings(tool); - QTC_ASSERT(m_controlsWidgetFromTool.contains(tool), /**/); + QTC_CHECK(m_controlsWidgetFromTool.contains(tool)); m_controlsStackWidget->setCurrentWidget(m_controlsWidgetFromTool.value(tool)); m_toolBox->setCurrentIndex(actionIndex); diff --git a/src/plugins/analyzerbase/analyzerruncontrol.cpp b/src/plugins/analyzerbase/analyzerruncontrol.cpp index 74264c0f8f2..97ded8ff1e7 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.cpp +++ b/src/plugins/analyzerbase/analyzerruncontrol.cpp @@ -119,9 +119,11 @@ void AnalyzerRunControl::start() TaskHub *hub = pm->getObject(); hub->clearTasks(Constants::ANALYZERTASK_ID); - d->m_isRunning = true; - emit started(); - d->m_engine->start(); + if (d->m_engine->start()) { + d->m_isRunning = true; + emit started(); + } + } RunControl::StopResult AnalyzerRunControl::stop() diff --git a/src/plugins/analyzerbase/ianalyzerengine.h b/src/plugins/analyzerbase/ianalyzerengine.h index 29c2d0f0b8c..ae853d2eb2a 100644 --- a/src/plugins/analyzerbase/ianalyzerengine.h +++ b/src/plugins/analyzerbase/ianalyzerengine.h @@ -69,7 +69,7 @@ public: ProjectExplorer::RunConfiguration *runConfiguration); /// Start analyzation process. - virtual void start() = 0; + virtual bool start() = 0; /// Trigger async stop of the analyzation process. virtual void stop() = 0; diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index c00beae44f4..e21c752b55c 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -55,7 +55,8 @@ using namespace CMakeProjectManager::Internal; // CMakeEditor::CMakeEditor(CMakeEditorWidget *editor) - : BaseTextEditor(editor) + : BaseTextEditor(editor), + m_infoBarShown(false) { setContext(Core::Context(CMakeProjectManager::Constants::C_CMAKEEDITOR, TextEditor::Constants::C_TEXTEDITOR)); @@ -78,6 +79,11 @@ QString CMakeEditor::id() const void CMakeEditor::markAsChanged() { + if (!file()->isModified()) + return; + if (m_infoBarShown) + return; + m_infoBarShown = true; Core::InfoBarEntry info(QLatin1String("CMakeEditor.RunCMake"), tr("Changes to cmake files are shown in the project tree after building.")); info.setCustomButtonInfo(tr("Build now"), this, SLOT(build())); diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.h b/src/plugins/cmakeprojectmanager/cmakeeditor.h index b0cb039efc9..3b328b3262a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.h +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.h @@ -65,6 +65,8 @@ public: private slots: void markAsChanged(); void build(); +private: + bool m_infoBarShown; }; class CMakeEditorWidget : public TextEditor::BaseTextEditorWidget diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 3106626d7c0..973ddf1c7f3 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -103,6 +103,7 @@ #include #include #include +#include /* #ifdef Q_OS_UNIX diff --git a/src/plugins/coreplugin/mimedatabase.cpp b/src/plugins/coreplugin/mimedatabase.cpp index ab973f5cfe6..d69471dcba9 100644 --- a/src/plugins/coreplugin/mimedatabase.cpp +++ b/src/plugins/coreplugin/mimedatabase.cpp @@ -567,7 +567,7 @@ MimeTypeData::MimeTypeData() // "*.log[1-9]" : suffixPattern(QLatin1String("^\\*\\.[\\w+]+$")) { - QTC_ASSERT(suffixPattern.isValid(), /**/); + QTC_CHECK(suffixPattern.isValid()); } void MimeTypeData::clear() diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp index a7e1279166a..5ef5f2bb662 100644 --- a/src/plugins/coreplugin/outputpanemanager.cpp +++ b/src/plugins/coreplugin/outputpanemanager.cpp @@ -279,7 +279,7 @@ void OutputPaneManager::init() if (outPane->priorityInStatusBar() != -1) { cmd->setDefaultKeySequence(QKeySequence(paneShortCut(shortcutNumber))); - QPushButton *button = new OutputPaneToggleButton(shortcutNumber, outPane->displayName(), + QToolButton *button = new OutputPaneToggleButton(shortcutNumber, outPane->displayName(), cmd->action()); ++shortcutNumber; m_buttonsWidget->layout()->addWidget(button); @@ -339,8 +339,8 @@ void OutputPaneManager::slotMinMax() void OutputPaneManager::buttonTriggered() { - QPushButton *button = qobject_cast(sender()); - QMap::const_iterator it, end; + QToolButton *button = qobject_cast(sender()); + QMap::const_iterator it, end; end = m_buttons.constEnd(); for (it = m_buttons.begin(); it != end; ++it) { if (it.value() == button) @@ -514,22 +514,24 @@ void OutputPaneManager::clearPage() OutputPaneToggleButton::OutputPaneToggleButton(int number, const QString &text, QAction *action, QWidget *parent) - : QPushButton(parent) + : QToolButton(parent) , m_number(QString::number(number)) , m_text(text) , m_action(action) { setFocusPolicy(Qt::NoFocus); setCheckable(true); + QFont fnt = QApplication::font(); + setFont(fnt); setStyleSheet( - "QPushButton { border-image: url(:/core/images/panel_button.png) 2 2 2 19;" + "QToolButton { border-image: url(:/core/images/panel_button.png) 2 2 2 19;" " border-width: 2px 2px 2px 19px; padding-left: -17; padding-right: 4 } " - "QPushButton:checked { border-image: url(:/core/images/panel_button_checked.png) 2 2 2 19 } " - "QPushButton::menu-indicator { width:0; height:0 }" + "QToolButton:checked { border-image: url(:/core/images/panel_button_checked.png) 2 2 2 19 } " + "QToolButton::menu-indicator { width:0; height:0 }" #ifndef Q_WS_MAC // Mac UIs usually don't hover - "QPushButton:checked:hover { border-image: url(:/core/images/panel_button_checked_hover.png) 2 2 2 19 } " - "QPushButton:pressed:hover { border-image: url(:/core/images/panel_button_pressed.png) 2 2 2 19 } " - "QPushButton:hover { border-image: url(:/core/images/panel_button_hover.png) 2 2 2 19 } " + "QToolButton:checked:hover { border-image: url(:/core/images/panel_button_checked_hover.png) 2 2 2 19 } " + "QToolButton:pressed:hover { border-image: url(:/core/images/panel_button_pressed.png) 2 2 2 19 } " + "QToolButton:hover { border-image: url(:/core/images/panel_button_hover.png) 2 2 2 19 } " #endif ); if (m_action) @@ -558,7 +560,7 @@ QSize OutputPaneToggleButton::sizeHint() const void OutputPaneToggleButton::paintEvent(QPaintEvent *event) { // For drawing the style sheet stuff - QPushButton::paintEvent(event); + QToolButton::paintEvent(event); const QFontMetrics fm = fontMetrics(); const int baseLine = (height() - fm.height() + 1) / 2 + fm.ascent(); diff --git a/src/plugins/coreplugin/outputpanemanager.h b/src/plugins/coreplugin/outputpanemanager.h index 921e21dd128..5c20a31dcd4 100644 --- a/src/plugins/coreplugin/outputpanemanager.h +++ b/src/plugins/coreplugin/outputpanemanager.h @@ -34,12 +34,11 @@ #define OUTPUTPANEMANAGER_H #include -#include +#include QT_BEGIN_NAMESPACE class QAction; class QComboBox; -class QToolButton; class QStackedWidget; class QSplitter; QT_END_NAMESPACE @@ -118,14 +117,14 @@ private: QStackedWidget *m_outputWidgetPane; QStackedWidget *m_opToolBarWidgets; QWidget *m_buttonsWidget; - QMap m_buttons; + QMap m_buttons; QMap m_actions; QPixmap m_minimizeIcon; QPixmap m_maximizeIcon; bool m_maximised; }; -class OutputPaneToggleButton : public QPushButton +class OutputPaneToggleButton : public QToolButton { Q_OBJECT public: diff --git a/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp b/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp index eebcecb0060..28a5d71479e 100644 --- a/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp +++ b/src/plugins/coreplugin/scriptmanager/scriptmanager.cpp @@ -165,7 +165,7 @@ static QScriptValue fileBox(QScriptContext *context, QScriptEngine *engine) if (fileDialog.exec() == QDialog::Rejected) return QScriptValue(engine, QScriptValue::NullValue); const QStringList rc = fileDialog.selectedFiles(); - QTC_ASSERT(!rc.empty(), /**/); + QTC_CHECK(!rc.empty()); return TFileMode == QFileDialog::ExistingFiles ? engine->toScriptValue(rc) : engine->toScriptValue(rc.front()); } diff --git a/src/plugins/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp index 681b5795f9f..21e91fe23ec 100644 --- a/src/plugins/coreplugin/versiondialog.cpp +++ b/src/plugins/coreplugin/versiondialog.cpp @@ -102,7 +102,7 @@ VersionDialog::VersionDialog(QWidget *parent) QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); QPushButton *closeButton = buttonBox->button(QDialogButtonBox::Close); - QTC_ASSERT(closeButton, /**/); + QTC_CHECK(closeButton); buttonBox->addButton(closeButton, QDialogButtonBox::ButtonRole(QDialogButtonBox::RejectRole | QDialogButtonBox::AcceptRole)); connect(buttonBox , SIGNAL(rejected()), this, SLOT(reject())); diff --git a/src/plugins/cppeditor/cppclasswizard.cpp b/src/plugins/cppeditor/cppclasswizard.cpp index 5645d984418..fad5bcada44 100644 --- a/src/plugins/cppeditor/cppclasswizard.cpp +++ b/src/plugins/cppeditor/cppclasswizard.cpp @@ -232,7 +232,7 @@ bool CppClassWizard::generateHeaderAndSource(const CppClassWizardParameters &par << "\n#define " << guard << '\n'; const QRegExp qtClassExpr(QLatin1String("^Q[A-Z3].+")); - QTC_ASSERT(qtClassExpr.isValid(), /**/); + QTC_CHECK(qtClassExpr.isValid()); // Determine parent QObject type for Qt types. Provide base // class in case the user did not specify one. QString parentQObjectClass; diff --git a/src/plugins/cvs/cvseditor.cpp b/src/plugins/cvs/cvseditor.cpp index cd3778ccc40..947b351abcb 100644 --- a/src/plugins/cvs/cvseditor.cpp +++ b/src/plugins/cvs/cvseditor.cpp @@ -127,7 +127,7 @@ cvs diff -d -u -r1.1 -r1.2: VCSBase::DiffHighlighter *CVSEditor::createDiffHighlighter() const { const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*1\\.[\\d\\.]+$")); - QTC_ASSERT(filePattern.isValid(), /**/); + QTC_CHECK(filePattern.isValid()); return new VCSBase::DiffHighlighter(filePattern); } diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index 9b2a2e899b5..9d5255c3ffa 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -634,7 +634,7 @@ CVSSubmitEditor *CVSPlugin::openCVSSubmitEditor(const QString &fileName) Core::IEditor *editor = Core::EditorManager::instance()->openEditor(fileName, QLatin1String(Constants::CVSCOMMITEDITOR_ID), Core::EditorManager::ModeSwitch); CVSSubmitEditor *submitEditor = qobject_cast(editor); - QTC_ASSERT(submitEditor, /**/); + QTC_CHECK(submitEditor); submitEditor->registerActions(m_submitUndoAction, m_submitRedoAction, m_submitCurrentLogAction, m_submitDiffAction); connect(submitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffCommitFiles(QStringList))); diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index 8e73a8fbfd8..7d598454b52 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -461,7 +461,7 @@ QModelIndex BreakHandler::createIndex(int row, int column, quint32 id) const QModelIndex BreakHandler::createIndex(int row, int column, void *ptr) const { - QTC_ASSERT(false, /**/); // This function is not used. + QTC_CHECK(false); // This function is not used. return QAbstractItemModel::createIndex(row, column, ptr); } diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index cd893b1e1c6..2eefdb7c1f2 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1083,6 +1083,11 @@ unsigned CdbEngine::debuggerCapabilities() const |RunToLineCapability; } +bool CdbEngine::canWatchWidgets() const +{ + return true; +} + void CdbEngine::executeStep() { if (!m_operateByInstruction) diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 9c21dd4b0a8..27a4e7b2b87 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -99,6 +99,7 @@ public: virtual void updateWatchData(const WatchData &data, const WatchUpdateFlags & flags = WatchUpdateFlags()); virtual unsigned debuggerCapabilities() const; + virtual bool canWatchWidgets() const; virtual void watchPoint(const QPoint &); virtual void setRegisterValue(int regnr, const QString &value); diff --git a/src/plugins/debugger/cdb/cdbparsehelpers.cpp b/src/plugins/debugger/cdb/cdbparsehelpers.cpp index 15ca7ee2cae..2cdf22f8c78 100644 --- a/src/plugins/debugger/cdb/cdbparsehelpers.cpp +++ b/src/plugins/debugger/cdb/cdbparsehelpers.cpp @@ -186,7 +186,7 @@ QByteArray cdbAddBreakpointCommand(const BreakpointParameters &bpIn, break; } if (bp.ignoreCount) - str << ' ' << (bp.ignoreCount + 1); + str << " 0n" << (bp.ignoreCount + 1); // Condition currently unsupported. if (!bp.command.isEmpty()) str << " \"" << bp.command << '"'; diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 799537c9910..301407a20aa 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -743,7 +743,7 @@ static bool isAllowedTransition(DebuggerState from, DebuggerState to) void DebuggerEngine::setupSlaveEngine() { - QTC_ASSERT(state() == DebuggerNotReady, /**/); + QTC_CHECK(state() == DebuggerNotReady); d->queueSetupEngine(); } @@ -776,7 +776,7 @@ void DebuggerEngine::notifyEngineSetupOk() void DebuggerEngine::setupSlaveInferior() { - QTC_ASSERT(state() == EngineSetupOk, /**/); + QTC_CHECK(state() == EngineSetupOk); d->queueSetupInferior(); } @@ -809,7 +809,7 @@ void DebuggerEngine::notifyInferiorSetupOk() void DebuggerEngine::runSlaveEngine() { QTC_ASSERT(isSlaveEngine(), return); - QTC_ASSERT(state() == InferiorSetupOk, /**/); + QTC_CHECK(state() == InferiorSetupOk); d->queueRunEngine(); } @@ -980,7 +980,7 @@ void DebuggerEngine::notifyInferiorIll() void DebuggerEngine::shutdownSlaveEngine() { - QTC_ASSERT(isAllowedTransition(state(),EngineShutdownRequested), /**/); + QTC_CHECK(isAllowedTransition(state(),EngineShutdownRequested)); setState(EngineShutdownRequested); shutdownEngine(); } @@ -1329,7 +1329,7 @@ void DebuggerEngine::updateAll() #if 0 // FIXME: Remove explicit use of BreakpointData if (!bp->engine && acceptsBreakpoint(id)) { - QTC_ASSERT(state == BreakpointNew, /**/); + QTC_CHECK(state == BreakpointNew); // Take ownership of the breakpoint. bp->engine = this; } @@ -1355,7 +1355,7 @@ void DebuggerEngine::attemptBreakpointSynchronization() switch (handler->state(id)) { case BreakpointNew: // Should not happen once claimed. - QTC_ASSERT(false, /**/); + QTC_CHECK(false); continue; case BreakpointInsertRequested: done = false; @@ -1381,7 +1381,7 @@ void DebuggerEngine::attemptBreakpointSynchronization() continue; case BreakpointDead: // Should not only be visible inside BreakpointHandler. - QTC_ASSERT(false, /**/); + QTC_CHECK(false); continue; } QTC_ASSERT(false, qDebug() << "UNKNOWN STATE" << id << state()); @@ -1395,21 +1395,21 @@ void DebuggerEngine::insertBreakpoint(BreakpointModelId id) { BreakpointState state = breakHandler()->state(id); QTC_ASSERT(state == BreakpointInsertRequested, qDebug() << id << this << state); - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } void DebuggerEngine::removeBreakpoint(BreakpointModelId id) { BreakpointState state = breakHandler()->state(id); QTC_ASSERT(state == BreakpointRemoveRequested, qDebug() << id << this << state); - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } void DebuggerEngine::changeBreakpoint(BreakpointModelId id) { BreakpointState state = breakHandler()->state(id); QTC_ASSERT(state == BreakpointChangeRequested, qDebug() << id << this << state); - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } void DebuggerEngine::selectThread(int) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 1a5ad0d9049..3271e30aacb 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1113,7 +1113,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin) : qRegisterMetaType("ContextData"); qRegisterMetaType("DebuggerStartParameters"); - QTC_ASSERT(!theDebuggerCore, /**/); + QTC_CHECK(!theDebuggerCore); theDebuggerCore = this; m_plugin = plugin; @@ -1350,7 +1350,7 @@ void DebuggerPluginPrivate::onCurrentProjectChanged(Project *project) Target *target = project->activeTarget(); QTC_ASSERT(target, return); activeRc = target->activeRunConfiguration(); - QTC_ASSERT(activeRc, /**/); + QTC_CHECK(activeRc); } for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) { // Run controls might be deleted during exit. @@ -3148,7 +3148,7 @@ void DebuggerPluginPrivate::extensionsInitialized() SIGNAL(startupProjectChanged(ProjectExplorer::Project*)), SLOT(onCurrentProjectChanged(ProjectExplorer::Project*))); - QTC_ASSERT(m_coreSettings, /**/); + QTC_CHECK(m_coreSettings); m_globalDebuggerOptions->fromSettings(m_coreSettings); m_watchersWindow->setVisible(false); m_returnWindow->setVisible(false); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 0420a0dd97e..32413966394 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -258,7 +258,11 @@ void DebuggerRunControl::start() "languages currently active, and will be ignored."); debuggerCore()->showMessage(warningMessage, LogWarning); - QErrorMessage::qtHandler()->showMessage(warningMessage); + + QErrorMessage *msgBox = new QErrorMessage(debuggerCore()->mainWindow()); + msgBox->setAttribute(Qt::WA_DeleteOnClose); + msgBox->showMessage(warningMessage); + break; } } @@ -341,7 +345,7 @@ bool DebuggerRunControl::isRunning() const DebuggerEngine *DebuggerRunControl::engine() { - QTC_ASSERT(d->m_engine, /**/); + QTC_CHECK(d->m_engine); return d->m_engine; } diff --git a/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp b/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp index 6fe24772534..2481b787707 100644 --- a/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp +++ b/src/plugins/debugger/gdb/abstractplaingdbadapter.cpp @@ -107,7 +107,7 @@ void AbstractPlainGdbAdapter::handleExecRun(const GdbResponse &response) m_engine->postCommand("target record"); } else { QString msg = fromLocalEncoding(response.data.findChild("msg").data()); - //QTC_ASSERT(status() == InferiorRunOk, /**/); + //QTC_CHECK(status() == InferiorRunOk); //interruptInferior(); showMessage(msg); m_engine->notifyEngineRunFailed(); diff --git a/src/plugins/debugger/gdb/classicgdbengine.cpp b/src/plugins/debugger/gdb/classicgdbengine.cpp index 42f364f0f28..1cdeac8935c 100644 --- a/src/plugins/debugger/gdb/classicgdbengine.cpp +++ b/src/plugins/debugger/gdb/classicgdbengine.cpp @@ -55,7 +55,7 @@ #endif -#define PRECONDITION QTC_ASSERT(!hasPython(), /**/) +#define PRECONDITION QTC_CHECK(!hasPython()) #define CB(callback) &GdbEngine::callback, STRINGIFY(callback) @@ -543,7 +543,7 @@ void DumperHelper::evaluationParameters(const WatchData &data, // iname="local.ob.slots.2" // ".deleteLater()"? const int pos = data.iname.lastIndexOf('.'); const QByteArray slotNumber = data.iname.mid(pos + 1); - QTC_ASSERT(slotNumber.toInt() != -1, /**/); + QTC_CHECK(slotNumber.toInt() != -1); extraArgs[0] = slotNumber; } break; @@ -1111,7 +1111,7 @@ void GdbEngine::tryLoadDebuggingHelpersClassic() // Do not use STRINGIFY for RTLD_NOW as we really want to expand that to a number. #if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) // We are using Python on Windows and Symbian. - QTC_ASSERT(false, /**/); + QTC_CHECK(false); #elif defined(Q_OS_MAC) //postCommand("sharedlibrary libc"); // for malloc //postCommand("sharedlibrary libdl"); // for dlopen diff --git a/src/plugins/debugger/gdb/codagdbadapter.cpp b/src/plugins/debugger/gdb/codagdbadapter.cpp index 7ac0c704cd0..d28dda19f9c 100644 --- a/src/plugins/debugger/gdb/codagdbadapter.cpp +++ b/src/plugins/debugger/gdb/codagdbadapter.cpp @@ -417,7 +417,7 @@ void CodaGdbAdapter::logMessage(const QString &msg, int channel) void CodaGdbAdapter::handleGdbConnection() { logMessage("HANDLING GDB CONNECTION"); - QTC_ASSERT(m_gdbConnection == 0, /**/); + QTC_CHECK(m_gdbConnection == 0); m_gdbConnection = m_gdbServer->nextPendingConnection(); QTC_ASSERT(m_gdbConnection, return); connect(m_gdbConnection, SIGNAL(disconnected()), @@ -1550,7 +1550,7 @@ void CodaGdbAdapter::tryAnswerGdbMemoryRequest(bool buffered) } } // Happens when chunks are not combined - QTC_ASSERT(false, /**/); + QTC_CHECK(false); showMessage("CHUNKS NOT COMBINED"); # ifdef MEMORY_DEBUG qDebug() << "CHUNKS NOT COMBINED"; diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp index 6b80ce102c9..333fe7c68c0 100644 --- a/src/plugins/debugger/gdb/coregdbadapter.cpp +++ b/src/plugins/debugger/gdb/coregdbadapter.cpp @@ -239,7 +239,7 @@ void CoreGdbAdapter::runEngine() void CoreGdbAdapter::interruptInferior() { // A core never runs, so this cannot be called. - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } void CoreGdbAdapter::shutdownInferior() diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 1400e75e867..64dd09c5299 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1023,7 +1023,7 @@ void GdbEngine::handleResultRecord(GdbResponse *response) showMessage(_("APPLYING WORKAROUND #5")); showMessageBox(QMessageBox::Critical, tr("Setting breakpoints failed"), QString::fromLocal8Bit(msg)); - QTC_ASSERT(state() == InferiorRunOk, /**/); + QTC_CHECK(state() == InferiorRunOk); notifyInferiorSpontaneousStop(); notifyEngineIll(); } else { @@ -1147,7 +1147,7 @@ bool GdbEngine::acceptsDebuggerCommands() const void GdbEngine::executeDebuggerCommand(const QString &command) { - QTC_ASSERT(acceptsDebuggerCommands(), /**/); + QTC_CHECK(acceptsDebuggerCommands()); m_gdbAdapter->write(command.toLatin1() + "\r\n"); } @@ -1337,7 +1337,7 @@ void GdbEngine::handleStopResponse(const GdbMi &data) notifyInferiorStopOk(); flushQueuedCommands(); if (state() == InferiorStopOk) { - QTC_ASSERT(m_commandsDoneCallback == 0, /**/); + QTC_CHECK(m_commandsDoneCallback == 0); m_commandsDoneCallback = &GdbEngine::autoContinueInferior; } else { QTC_ASSERT(state() == InferiorShutdownRequested, qDebug() << state()) @@ -1969,7 +1969,7 @@ AbstractGdbAdapter *GdbEngine::createAdapter() void GdbEngine::setupEngine() { QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); - QTC_ASSERT(m_debuggingHelperState == DebuggingHelperUninitialized, /**/); + QTC_CHECK(m_debuggingHelperState == DebuggingHelperUninitialized); if (m_gdbAdapter->dumperHandling() != AbstractGdbAdapter::DumperNotAvailable) { connect(debuggerCore()->action(UseDebuggingHelpers), @@ -1977,7 +1977,7 @@ void GdbEngine::setupEngine() SLOT(setUseDebuggingHelpers(QVariant))); } - QTC_ASSERT(state() == EngineSetupRequested, /**/); + QTC_CHECK(state() == EngineSetupRequested); m_gdbAdapter->startAdapter(); } @@ -2068,7 +2068,7 @@ void GdbEngine::handleExecuteStep(const GdbResponse &response) if (response.resultClass == GdbResultDone) { // Step was finishing too quick, and a '*stopped' messages should // have preceded it, so just ignore this result. - QTC_ASSERT(state() == InferiorStopOk, /**/); + QTC_CHECK(state() == InferiorStopOk); return; } QTC_ASSERT(state() == InferiorRunRequested, qDebug() << state()); @@ -2138,7 +2138,7 @@ void GdbEngine::handleExecuteNext(const GdbResponse &response) if (response.resultClass == GdbResultDone) { // Step was finishing too quick, and a '*stopped' messages should // have preceded it, so just ignore this result. - QTC_ASSERT(state() == InferiorStopOk, /**/); + QTC_CHECK(state() == InferiorStopOk); return; } QTC_ASSERT(state() == InferiorRunRequested, qDebug() << state()); @@ -2447,7 +2447,7 @@ void GdbEngine::handleWatchInsert(const GdbResponse &response) if (exp.startsWith('*')) br.address = exp.mid(1).toULongLong(0, 0); handler->setResponse(id, br); - QTC_ASSERT(!handler->needsChange(id), /**/); + QTC_CHECK(!handler->needsChange(id)); handler->notifyBreakpointInsertOk(id); } else if (ba.startsWith("Hardware watchpoint ") || ba.startsWith("Watchpoint ")) { @@ -2459,7 +2459,7 @@ void GdbEngine::handleWatchInsert(const GdbResponse &response) if (address.startsWith('*')) br.address = address.mid(1).toULongLong(0, 0); handler->setResponse(id, br); - QTC_ASSERT(!handler->needsChange(id), /**/); + QTC_CHECK(!handler->needsChange(id)); handler->notifyBreakpointInsertOk(id); } else { showMessage(_("CANNOT PARSE WATCHPOINT FROM " + ba)); @@ -2658,7 +2658,7 @@ void GdbEngine::handleBreakList(const GdbMi &table) void GdbEngine::handleBreakListMultiple(const GdbResponse &response) { - QTC_ASSERT(response.resultClass == GdbResultDone, /**/) + QTC_CHECK(response.resultClass == GdbResultDone) const BreakpointModelId id = response.cookie.value(); const QString str = QString::fromLocal8Bit(response.consoleStreamOutput); extractDataFromInfoBreak(str, id); @@ -2666,7 +2666,7 @@ void GdbEngine::handleBreakListMultiple(const GdbResponse &response) void GdbEngine::handleBreakDisable(const GdbResponse &response) { - QTC_ASSERT(response.resultClass == GdbResultDone, /**/) + QTC_CHECK(response.resultClass == GdbResultDone) const BreakpointModelId id = response.cookie.value(); BreakHandler *handler = breakHandler(); // This should only be the requested state. @@ -2679,7 +2679,7 @@ void GdbEngine::handleBreakDisable(const GdbResponse &response) void GdbEngine::handleBreakEnable(const GdbResponse &response) { - QTC_ASSERT(response.resultClass == GdbResultDone, /**/) + QTC_CHECK(response.resultClass == GdbResultDone) const BreakpointModelId id = response.cookie.value(); BreakHandler *handler = breakHandler(); // This should only be the requested state. @@ -2692,7 +2692,7 @@ void GdbEngine::handleBreakEnable(const GdbResponse &response) void GdbEngine::handleBreakThreadSpec(const GdbResponse &response) { - QTC_ASSERT(response.resultClass == GdbResultDone, /**/) + QTC_CHECK(response.resultClass == GdbResultDone) const BreakpointModelId id = response.cookie.value(); BreakHandler *handler = breakHandler(); BreakpointResponse br = handler->response(id); @@ -2714,7 +2714,7 @@ void GdbEngine::handleBreakIgnore(const GdbResponse &response) // 29^done // // gdb 6.3 does not produce any console output - QTC_ASSERT(response.resultClass == GdbResultDone, /**/) + QTC_CHECK(response.resultClass == GdbResultDone) //QString msg = _(response.consoleStreamOutput); BreakpointModelId id = response.cookie.value(); BreakHandler *handler = breakHandler(); @@ -2734,7 +2734,7 @@ void GdbEngine::handleBreakIgnore(const GdbResponse &response) void GdbEngine::handleBreakCondition(const GdbResponse &response) { // Can happen at invalid condition strings. - //QTC_ASSERT(response.resultClass == GdbResultDone, /**/) + //QTC_CHECK(response.resultClass == GdbResultDone) const BreakpointModelId id = response.cookie.value(); BreakHandler *handler = breakHandler(); // We just assume it was successful. Otherwise we had to parse @@ -2923,7 +2923,7 @@ void GdbEngine::insertBreakpoint(BreakpointModelId id) // Set up fallback in case of pending breakpoints which aren't handled // by the MI interface. BreakHandler *handler = breakHandler(); - QTC_ASSERT(handler->state(id) == BreakpointInsertRequested, /**/); + QTC_CHECK(handler->state(id) == BreakpointInsertRequested); handler->notifyBreakpointInsertProceeding(id); BreakpointType type = handler->type(id); QVariant vid = QVariant::fromValue(id); @@ -3054,7 +3054,7 @@ void GdbEngine::changeBreakpoint(BreakpointModelId id) void GdbEngine::removeBreakpoint(BreakpointModelId id) { BreakHandler *handler = breakHandler(); - QTC_ASSERT(handler->state(id) == BreakpointRemoveRequested, /**/); + QTC_CHECK(handler->state(id) == BreakpointRemoveRequested); handler->notifyBreakpointRemoveProceeding(id); BreakpointResponse br = handler->response(id); showMessage(_("DELETING BP %1 IN %2").arg(br.id.toString()) @@ -3298,7 +3298,7 @@ void GdbEngine::reloadSourceFiles() void GdbEngine::reloadSourceFilesInternal() { - QTC_ASSERT(!m_sourcesListUpdating, /**/); + QTC_CHECK(!m_sourcesListUpdating); m_sourcesListUpdating = true; postCommand("-file-list-exec-source-files", NeedsStop, CB(handleQuerySources)); #if 0 @@ -3328,7 +3328,7 @@ void GdbEngine::selectThread(int index) void GdbEngine::handleStackSelectThread(const GdbResponse &) { - QTC_ASSERT(state() == InferiorUnrunnable || state() == InferiorStopOk, /**/); + QTC_CHECK(state() == InferiorUnrunnable || state() == InferiorStopOk); showStatusMessage(tr("Retrieving data for stack view..."), 3000); reloadStack(true); // Will reload registers. updateLocals(); @@ -4871,7 +4871,7 @@ void GdbEngine::handleInferiorPrepared() if (m_cookieForToken.isEmpty()) { finishInferiorSetup(); } else { - QTC_ASSERT(m_commandsDoneCallback == 0, /**/); + QTC_CHECK(m_commandsDoneCallback == 0); m_commandsDoneCallback = &GdbEngine::finishInferiorSetup; } } diff --git a/src/plugins/debugger/gdb/gdbmi.cpp b/src/plugins/debugger/gdb/gdbmi.cpp index 080916037a8..c4745f93705 100644 --- a/src/plugins/debugger/gdb/gdbmi.cpp +++ b/src/plugins/debugger/gdb/gdbmi.cpp @@ -183,7 +183,7 @@ void GdbMi::parseValue(const char *&from, const char *to) void GdbMi::parseTuple(const char *&from, const char *to) { //qDebug() << "parseTuple: " << QByteArray(from, to - from); - QTC_ASSERT(*from == '{', /**/); + QTC_CHECK(*from == '{'); ++from; parseTuple_helper(from, to); } @@ -211,7 +211,7 @@ void GdbMi::parseTuple_helper(const char *&from, const char *to) void GdbMi::parseList(const char *&from, const char *to) { //qDebug() << "parseList: " << QByteArray(from, to - from); - QTC_ASSERT(*from == '[', /**/); + QTC_CHECK(*from == '['); ++from; m_type = List; skipCommas(from, to); diff --git a/src/plugins/debugger/gdb/pythongdbengine.cpp b/src/plugins/debugger/gdb/pythongdbengine.cpp index 81d5ca302bf..e4e9a61a76f 100644 --- a/src/plugins/debugger/gdb/pythongdbengine.cpp +++ b/src/plugins/debugger/gdb/pythongdbengine.cpp @@ -44,7 +44,7 @@ #include -#define PRECONDITION QTC_ASSERT(hasPython(), /**/) +#define PRECONDITION QTC_CHECK(hasPython()) #define CB(callback) &GdbEngine::callback, STRINGIFY(callback) @@ -200,7 +200,7 @@ void GdbEngine::updateAllPython() { PRECONDITION; //PENDING_DEBUG("UPDATING ALL\n"); - QTC_ASSERT(state() == InferiorUnrunnable || state() == InferiorStopOk, /**/); + QTC_CHECK(state() == InferiorUnrunnable || state() == InferiorStopOk); reloadModulesInternal(); postCommand("-stack-list-frames", CB(handleStackListFrames), QVariant::fromValue(StackCookie(false, true))); diff --git a/src/plugins/debugger/gdb/symbian.cpp b/src/plugins/debugger/gdb/symbian.cpp index a3cf5f67df4..91c94a024a0 100644 --- a/src/plugins/debugger/gdb/symbian.cpp +++ b/src/plugins/debugger/gdb/symbian.cpp @@ -59,7 +59,7 @@ MemoryRange::MemoryRange(uint f, uint t) bool MemoryRange::intersects(const MemoryRange &other) const { Q_UNUSED(other); - QTC_ASSERT(false, /**/); + QTC_CHECK(false); return false; // FIXME } diff --git a/src/plugins/debugger/memoryagent.cpp b/src/plugins/debugger/memoryagent.cpp index a8fbcc8a82b..1ebbf162a11 100644 --- a/src/plugins/debugger/memoryagent.cpp +++ b/src/plugins/debugger/memoryagent.cpp @@ -93,7 +93,7 @@ namespace { const int DataRange = 1024 * 1024; } MemoryAgent::MemoryAgent(DebuggerEngine *engine) : QObject(engine), m_engine(engine) { - QTC_ASSERT(engine, /**/); + QTC_CHECK(engine); connect(engine, SIGNAL(stateChanged(Debugger::DebuggerState)), this, SLOT(engineStateChanged(Debugger::DebuggerState))); connect(engine, SIGNAL(stackFrameCompleted()), this, diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index c3cbf0d024f..a8334f96bb9 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -338,7 +338,7 @@ bool PdbEngine::acceptsBreakpoint(BreakpointModelId id) const void PdbEngine::insertBreakpoint(BreakpointModelId id) { BreakHandler *handler = breakHandler(); - QTC_ASSERT(handler->state(id) == BreakpointInsertRequested, /**/); + QTC_CHECK(handler->state(id) == BreakpointInsertRequested); handler->notifyBreakpointInsertProceeding(id); QByteArray loc; @@ -374,7 +374,7 @@ void PdbEngine::handleBreakInsert(const PdbResponse &response) void PdbEngine::removeBreakpoint(BreakpointModelId id) { BreakHandler *handler = breakHandler(); - QTC_ASSERT(handler->state(id) == BreakpointRemoveRequested, /**/); + QTC_CHECK(handler->state(id) == BreakpointRemoveRequested); handler->notifyBreakpointRemoveProceeding(id); BreakpointResponse br = handler->response(id); showMessage(_("DELETING BP %1 IN %2").arg(br.id.toString()) diff --git a/src/plugins/debugger/qml/qmladapter.cpp b/src/plugins/debugger/qml/qmladapter.cpp index 504a11416a4..d131c7ba53d 100644 --- a/src/plugins/debugger/qml/qmladapter.cpp +++ b/src/plugins/debugger/qml/qmladapter.cpp @@ -38,11 +38,12 @@ #include "debuggerengine.h" +#include +#include + #include #include -#include - namespace Debugger { namespace Internal { @@ -81,10 +82,19 @@ QmlAdapter::QmlAdapter(DebuggerEngine *engine, QObject *parent) connect(d->m_conn, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(connectionErrorOccurred(QAbstractSocket::SocketError))); + ExtensionSystem::PluginManager *pluginManager = + ExtensionSystem::PluginManager::instance(); + pluginManager->addObject(this); } QmlAdapter::~QmlAdapter() { + ExtensionSystem::PluginManager *pluginManager = + ExtensionSystem::PluginManager::instance(); + + if (pluginManager->allObjects().contains(this)) { + pluginManager->removeObject(this); + } } void QmlAdapter::beginConnection() @@ -191,7 +201,8 @@ void QmlAdapter::connectionStateChanged() { showConnectionStatusMessage(tr("connected.\n")); - createDebuggerClient(); + if (!d->m_qmlClient) + createDebuggerClient(); //reloadEngines(); emit connected(); break; @@ -226,9 +237,6 @@ bool QmlAdapter::isConnected() const QDeclarativeDebugConnection *QmlAdapter::connection() const { - if (!isConnected()) - return 0; - return d->m_conn; } diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 96728e98489..a05a7fd35f3 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -317,7 +317,7 @@ void QmlCppEngine::detachDebugger() void QmlCppEngine::executeStep() { if (d->m_activeEngine == d->m_qmlEngine) { - QTC_ASSERT(d->m_cppEngine->state() == InferiorRunOk, /**/); + QTC_CHECK(d->m_cppEngine->state() == InferiorRunOk); if (d->m_cppEngine->setupQmlStep(true)) return; // Wait for callback to readyToExecuteQmlStep() } else { @@ -666,7 +666,7 @@ void QmlCppEngine::slaveEngineStateChanged void QmlCppEngine::handleRemoteSetupDone(int gdbServerPort, int qmlPort) { EDEBUG("MASTER REMOTE SETUP DONE"); - d->m_qmlEngine->handleRemoteSetupDone(gdbServerPort, qmlPort); + d->m_qmlEngine->startParameters().qmlServerPort = qmlPort; d->m_cppEngine->handleRemoteSetupDone(gdbServerPort, qmlPort); } diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index cc07f73d245..ecac3a133d6 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -164,6 +164,7 @@ private: QmlAdapter m_adapter; ApplicationLauncher m_applicationLauncher; Utils::FileInProjectFinder fileFinder; + QTimer m_noDebugOutputTimer; }; QmlEnginePrivate::QmlEnginePrivate(QmlEngine *q) @@ -183,10 +184,43 @@ QmlEngine::QmlEngine(const DebuggerStartParameters &startParameters, d(new QmlEnginePrivate(this)) { setObjectName(QLatin1String("QmlEngine")); + + ExtensionSystem::PluginManager *pluginManager = + ExtensionSystem::PluginManager::instance(); + pluginManager->addObject(this); + + connect(&d->m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)), + SLOT(connectionError(QAbstractSocket::SocketError))); + connect(&d->m_adapter, SIGNAL(serviceConnectionError(QString)), + SLOT(serviceConnectionError(QString))); + connect(&d->m_adapter, SIGNAL(connected()), + SLOT(connectionEstablished())); + connect(&d->m_adapter, SIGNAL(connectionStartupFailed()), + SLOT(connectionStartupFailed())); + + connect(&d->m_applicationLauncher, + SIGNAL(processExited(int)), + SLOT(disconnected())); + connect(&d->m_applicationLauncher, + SIGNAL(appendMessage(QString,Utils::OutputFormat)), + SLOT(appendMessage(QString,Utils::OutputFormat))); + +// Only wait 8 seconds for the 'Waiting for connection' on application ouput, then just try to connect + // (application output might be redirected / blocked) + d->m_noDebugOutputTimer.setSingleShot(true); + d->m_noDebugOutputTimer.setInterval(8000); + connect(&d->m_noDebugOutputTimer, SIGNAL(timeout()), this, SLOT(beginConnection())); } QmlEngine::~QmlEngine() { + ExtensionSystem::PluginManager *pluginManager = + ExtensionSystem::PluginManager::instance(); + + if (pluginManager->allObjects().contains(this)) { + pluginManager->removeObject(this); + } + delete d; } @@ -195,19 +229,11 @@ void QmlEngine::setupInferior() QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); if (startParameters().startMode == AttachToRemote) { - emit requestRemoteSetup(); + if (startParameters().qmlServerPort != quint16(-1)) + notifyInferiorSetupOk(); + else + emit requestRemoteSetup(); } else { - connect(&d->m_applicationLauncher, - SIGNAL(processExited(int)), - SLOT(disconnected())); - connect(&d->m_applicationLauncher, - SIGNAL(appendMessage(QString,Utils::OutputFormat)), - SLOT(appendMessage(QString,Utils::OutputFormat))); - connect(&d->m_applicationLauncher, - SIGNAL(bringToForegroundRequested(qint64)), - runControl(), - SLOT(bringApplicationToForeground(qint64))); - d->m_applicationLauncher.setEnvironment(startParameters().environment); d->m_applicationLauncher.setWorkingDirectory(startParameters().workingDirectory); @@ -224,11 +250,6 @@ void QmlEngine::connectionEstablished() { attemptBreakpointSynchronization(); - ExtensionSystem::PluginManager *pluginManager = - ExtensionSystem::PluginManager::instance(); - pluginManager->addObject(&d->m_adapter); - pluginManager->addObject(this); - showMessage(tr("QML Debugger connected."), StatusBar); if (!watchHandler()->watcherNames().isEmpty()) { @@ -237,7 +258,12 @@ void QmlEngine::connectionEstablished() connect(watchersModel(),SIGNAL(layoutChanged()),this,SLOT(synchronizeWatchers())); notifyEngineRunAndInferiorRunOk(); +} +void QmlEngine::beginConnection() +{ + d->m_noDebugOutputTimer.stop(); + d->m_adapter.beginConnection(); } void QmlEngine::connectionStartupFailed() @@ -262,7 +288,7 @@ void QmlEngine::retryMessageBoxFinished(int result) { switch (result) { case QMessageBox::Retry: { - d->m_adapter.beginConnection(); + beginConnection(); break; } case QMessageBox::Help: { @@ -300,6 +326,9 @@ void QmlEngine::filterApplicationMessage(const QString &msg, int /*channel*/) const int index = msg.indexOf(qddserver); if (index != -1) { + // we're actually getting debug output + d->m_noDebugOutputTimer.stop(); + QString status = msg; status.remove(0, index + qddserver.length()); // chop of 'QDeclarativeDebugServer: ' @@ -311,7 +340,7 @@ void QmlEngine::filterApplicationMessage(const QString &msg, int /*channel*/) QString errorMessage; if (status.startsWith(waitingForConnection)) { - d->m_adapter.beginConnection(); + beginConnection(); } else if (status.startsWith(unableToListen)) { //: Error message shown after 'Could not connect ... debugger:" errorMessage = tr("The port seems to be in use."); @@ -345,7 +374,7 @@ void QmlEngine::filterApplicationMessage(const QString &msg, int /*channel*/) } } else if (msg.contains(cannotRetrieveDebuggingOutput)) { // we won't get debugging output, so just try to connect ... - d->m_adapter.beginConnection(); + beginConnection(); } } @@ -365,17 +394,7 @@ bool QmlEngine::acceptsWatchesWhileRunning() const void QmlEngine::closeConnection() { disconnect(watchersModel(),SIGNAL(layoutChanged()),this,SLOT(synchronizeWatchers())); - disconnect(&d->m_adapter, SIGNAL(connectionStartupFailed()), - this, SLOT(connectionStartupFailed())); d->m_adapter.closeConnection(); - - ExtensionSystem::PluginManager *pluginManager = - ExtensionSystem::PluginManager::instance(); - - if (pluginManager->allObjects().contains(this)) { - pluginManager->removeObject(&d->m_adapter); - pluginManager->removeObject(this); - } } void QmlEngine::runEngine() @@ -384,6 +403,7 @@ void QmlEngine::runEngine() if (!isSlaveEngine() && startParameters().startMode != AttachToRemote) startApplicationLauncher(); + d->m_noDebugOutputTimer.start(); } void QmlEngine::startApplicationLauncher() @@ -447,14 +467,10 @@ void QmlEngine::shutdownEngine() void QmlEngine::setupEngine() { d->m_ping = 0; - connect(&d->m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)), - SLOT(connectionError(QAbstractSocket::SocketError))); - connect(&d->m_adapter, SIGNAL(serviceConnectionError(QString)), - SLOT(serviceConnectionError(QString))); - connect(&d->m_adapter, SIGNAL(connected()), - SLOT(connectionEstablished())); - connect(&d->m_adapter, SIGNAL(connectionStartupFailed()), - SLOT(connectionStartupFailed())); + + connect(&d->m_applicationLauncher, SIGNAL(bringToForegroundRequested(qint64)), + runControl(), SLOT(bringApplicationToForeground(qint64)), + Qt::UniqueConnection); notifyEngineSetupOk(); } @@ -882,7 +898,7 @@ void QmlEngine::messageReceived(const QByteArray &message) foreach (BreakpointModelId id, handler->engineBreakpointIds(this)) { QString processedFilename = handler->fileName(id); if (processedFilename == file && handler->lineNumber(id) == line) { - QTC_ASSERT(handler->state(id) == BreakpointInserted,/**/); + QTC_CHECK(handler->state(id) == BreakpointInserted); BreakpointResponse br = handler->response(id); br.fileName = file; br.lineNumber = line; diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 3c6d6a7dd46..904a301832e 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -125,6 +125,7 @@ signals: TextEditor::ITextEditor *editor, int cursorPos); private slots: + void beginConnection(); void connectionEstablished(); void connectionStartupFailed(); void connectionError(QAbstractSocket::SocketError error); diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp index 7a3c9729073..749b18c67c6 100644 --- a/src/plugins/debugger/script/scriptengine.cpp +++ b/src/plugins/debugger/script/scriptengine.cpp @@ -246,7 +246,7 @@ void ScriptEngine::setupEngine() showMessage(_("STARTING SCRIPT DEBUGGER"), LogMisc); if (m_scriptEngine.isNull()) m_scriptEngine = Core::ICore::instance()->scriptManager()->scriptEngine(); - QTC_ASSERT(!m_scriptAgent, /**/); + QTC_CHECK(!m_scriptAgent); m_scriptAgent.reset(new ScriptAgent(this, m_scriptEngine.data())); m_scriptEngine->setAgent(m_scriptAgent.data()); //m_scriptEngine->setAgent(new ScriptAgent(this, m_scriptEngine.data())); diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 447b41292cb..2256b9460f9 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -814,7 +814,7 @@ bool WatchModel::setData(const QModelIndex &index, const QVariant &value, int ro case LocalsExpandedRole: if (value.toBool()) { // Should already have been triggered by fetchMore() - //QTC_ASSERT(m_handler->m_expandedINames.contains(data.iname), /**/); + //QTC_CHECK(m_handler->m_expandedINames.contains(data.iname)); m_handler->m_expandedINames.insert(data.iname); } else { m_handler->m_expandedINames.remove(data.iname); @@ -1552,7 +1552,7 @@ WatchModel *WatchHandler::model(WatchType type) const case WatchersWatch: return m_watchers; case TooltipsWatch: return m_tooltips; } - QTC_ASSERT(false, /**/); + QTC_CHECK(false); return 0; } diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp index 9bad66fcf90..51eabe54ba8 100644 --- a/src/plugins/debugger/watchwindow.cpp +++ b/src/plugins/debugger/watchwindow.cpp @@ -416,6 +416,7 @@ static inline void addStackLayoutMemoryView(DebuggerEngine *engine, QWidget *parent) { typedef QPair RegisterValueNamePair; + QTC_ASSERT(engine && m, return ;) // Determine suitable address range from locals quint64 start = Q_UINT64_C(0xFFFFFFFFFFFFFFFF); @@ -895,7 +896,7 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev) } else if (act == actOpenMemoryViewAtPointerValue) { addVariableMemoryView(currentEngine(), true, mi0, true, ev->globalPos(), this); } else if (act == actOpenMemoryEditorStackLayout) { - addStackLayoutMemoryView(currentEngine(), false, mi0.model(), ev->globalPos(), this); + addStackLayoutMemoryView(currentEngine(), false, model(), ev->globalPos(), this); } else if (act == actSetWatchpointAtVariableAddress) { setWatchpointAtAddress(address, size); } else if (act == actSetWatchpointAtPointerValue) { diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 9d6eb066ee8..b75737dbb5a 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -1234,7 +1234,7 @@ void FakeVimHandler::Private::exportSelection() } else if (m_visualMode == VisualCharMode) { /* Nothing */ } else { - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } } else { setAnchorAndPosition(pos, pos); @@ -1644,7 +1644,7 @@ void FakeVimHandler::Private::updateMiniBuffer() if (!msg.isEmpty() && m_mode != CommandMode) msg += QChar(10073); // '|'; // FIXME: Use a real "cursor" } else { - QTC_ASSERT(m_mode == CommandMode && m_subsubmode != SearchSubSubMode, /**/); + QTC_CHECK(m_mode == CommandMode && m_subsubmode != SearchSubSubMode); msg = "-- COMMAND --"; } @@ -3368,7 +3368,7 @@ bool FakeVimHandler::Private::handleExSetCommand(const ExCommand &cmd) showBlackMessage(QString()); SavedAction *act = theFakeVimSettings()->item(cmd.args); - QTC_ASSERT(!cmd.args.isEmpty(), /**/); // Handled by plugin. + QTC_CHECK(!cmd.args.isEmpty()); // Handled by plugin. if (act && act->value().type() == QVariant::Bool) { // Boolean config to be switched on. bool oldValue = act->value().toBool(); @@ -4255,7 +4255,7 @@ void FakeVimHandler::Private::scrollToLine(int line) QScrollBar *scrollBar = EDITOR(verticalScrollBar()); //qDebug() << "SCROLL: " << scrollBar->value() << line; scrollBar->setValue(line); - //QTC_ASSERT(firstVisibleLine() == line, /**/); + //QTC_CHECK(firstVisibleLine() == line); } int FakeVimHandler::Private::firstVisibleLine() const diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 9daa4cdf11c..ba647f9f7b5 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -625,7 +625,7 @@ void GenericProjectFile::rename(const QString &newName) { // Can't happen Q_UNUSED(newName); - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } Core::IFile::ReloadBehavior GenericProjectFile::reloadBehavior(ChangeTrigger state, ChangeType type) const diff --git a/src/plugins/git/branchadddialog.cpp b/src/plugins/git/branchadddialog.cpp index 4a4981f2abd..2579fbb3d9f 100644 --- a/src/plugins/git/branchadddialog.cpp +++ b/src/plugins/git/branchadddialog.cpp @@ -72,7 +72,7 @@ void BranchAddDialog::setTrackedBranchName(const QString &name, bool remote) bool BranchAddDialog::track() { - return m_ui->trackingCheckBox->isVisible() && m_ui->trackingCheckBox->isChecked(); + return m_ui->trackingCheckBox->isChecked(); } } // namespace Internal diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp index cb57a34417c..2efb2450229 100644 --- a/src/plugins/git/branchdialog.cpp +++ b/src/plugins/git/branchdialog.cpp @@ -154,6 +154,7 @@ void BranchDialog::checkout() Q_ASSERT(m_model->isLocal(idx)); m_model->checkoutBranch(idx); + enableButtons(); } /* Prompt to delete a local branch and do so. */ diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index 428ddf3e6a9..5d1712aeee6 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -470,15 +470,18 @@ bool BranchModel::branchIsMerged(const QModelIndex &idx) QString output; QStringList args; - args << QLatin1String("--contains") << sha(idx); + args << QLatin1String("-a") << QLatin1String("--contains") << sha(idx); if (!m_client->synchronousBranchCmd(m_workingDirectory, args, &output, &errorMessage)) { VCSBase::VCSBaseOutputWindow::instance()->appendError(errorMessage); return false; } - QStringList lines = output.split(QLatin1Char('/'), QString::SkipEmptyParts); + QStringList lines = output.split(QLatin1Char('\n'), QString::SkipEmptyParts); foreach (const QString &l, lines) { - if (l.startsWith(QLatin1String(" ")) && l.count() >= 3) + QString currentBranch = l.mid(2); // remove first letters (those are either + // " " or "* " depending on whether it is + // the currently checked out branch or not) + if (currentBranch != branch) return true; } return false; diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index e7f4807d4ba..1bd5f363c70 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1441,7 +1441,7 @@ GitCommand *GitClient::createCommand(const QString &workingDirectory, connect(command, SIGNAL(outputData(QByteArray)), outputWindow, SLOT(appendData(QByteArray))); } } else { - QTC_ASSERT(editor, /**/); + QTC_CHECK(editor); connect(command, SIGNAL(outputData(QByteArray)), editor, SLOT(setPlainTextDataFiltered(QByteArray))); } diff --git a/src/plugins/glsleditor/glsleditorplugin.cpp b/src/plugins/glsleditor/glsleditorplugin.cpp index 319982888ad..76e082ad0e6 100644 --- a/src/plugins/glsleditor/glsleditorplugin.cpp +++ b/src/plugins/glsleditor/glsleditorplugin.cpp @@ -235,7 +235,7 @@ ExtensionSystem::IPlugin::ShutdownFlag GLSLEditorPlugin::aboutToShutdown() void GLSLEditorPlugin::initializeEditor(GLSLEditor::GLSLTextEditorWidget *editor) { - QTC_ASSERT(m_instance, /**/); + QTC_CHECK(m_instance); m_actionHandler->setupActions(editor); diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 5ae357652c4..baca4988ad6 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -261,6 +261,11 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) am->actionContainer(M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP); connect(action, SIGNAL(triggered()), this, SLOT(slotOpenSupportPage())); + action = new QAction(tr("Report Bug"), this); + cmd = am->registerAction(action, Core::Id("Help.ReportBug"), globalcontext); + am->actionContainer(M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP); + connect(action, SIGNAL(triggered()), this, SLOT(slotReportBug())); + #ifndef Q_WS_MAC action = new QAction(this); action->setSeparator(true); @@ -1210,6 +1215,11 @@ void HelpPlugin::slotOpenSupportPage() switchToHelpMode(QUrl("qthelp://com.nokia.qtcreator/doc/technical-support.html")); } +void HelpPlugin::slotReportBug() +{ + QDesktopServices::openUrl(QUrl("http://bugreports.qt.nokia.com")); +} + void HelpPlugin::openFindToolBar() { if (Find::FindPlugin::instance()) diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 2700cd6ebfe..97443d5927c 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -116,6 +116,7 @@ private slots: void slotAboutToShowNextMenu(); void slotOpenActionUrl(QAction *action); void slotOpenSupportPage(); + void slotReportBug(); void openFindToolBar(); diff --git a/src/plugins/macros/macromanager.cpp b/src/plugins/macros/macromanager.cpp index 57b99e5173a..6f799818ab9 100644 --- a/src/plugins/macros/macromanager.cpp +++ b/src/plugins/macros/macromanager.cpp @@ -323,8 +323,22 @@ void MacroManager::endMacro() void MacroManager::executeLastMacro() { - if (d->currentMacro) - d->executeMacro(d->currentMacro); + if (!d->currentMacro) + return; + + // make sure the macro doesn't accidentally invoke a macro action + Core::ActionManager *am = Core::ICore::instance()->actionManager(); + am->command(Constants::START_MACRO)->action()->setEnabled(false); + am->command(Constants::END_MACRO)->action()->setEnabled(false); + am->command(Constants::EXECUTE_LAST_MACRO)->action()->setEnabled(false); + am->command(Constants::SAVE_LAST_MACRO)->action()->setEnabled(false); + + d->executeMacro(d->currentMacro); + + am->command(Constants::START_MACRO)->action()->setEnabled(true); + am->command(Constants::END_MACRO)->action()->setEnabled(false); + am->command(Constants::EXECUTE_LAST_MACRO)->action()->setEnabled(true); + am->command(Constants::SAVE_LAST_MACRO)->action()->setEnabled(true); } bool MacroManager::executeMacro(const QString &name) diff --git a/src/plugins/perforce/perforceeditor.cpp b/src/plugins/perforce/perforceeditor.cpp index e1b4b297a1b..8cc2695e08a 100644 --- a/src/plugins/perforce/perforceeditor.cpp +++ b/src/plugins/perforce/perforceeditor.cpp @@ -65,7 +65,7 @@ PerforceEditor::PerforceEditor(const VCSBase::VCSBaseEditorParameters *type, m_changeNumberPattern(QLatin1String("^\\d+$")), m_plugin(PerforcePlugin::perforcePluginInstance()) { - QTC_ASSERT(m_changeNumberPattern.isValid(), /**/); + QTC_CHECK(m_changeNumberPattern.isValid()); setAnnotateRevisionTextFormat(tr("Annotate change list \"%1\"")); if (Perforce::Constants::debug) qDebug() << "PerforceEditor::PerforceEditor" << type->type << type->id; diff --git a/src/plugins/perforce/perforcesubmiteditor.cpp b/src/plugins/perforce/perforcesubmiteditor.cpp index 163bd50e76e..591de249e22 100644 --- a/src/plugins/perforce/perforcesubmiteditor.cpp +++ b/src/plugins/perforce/perforcesubmiteditor.cpp @@ -133,7 +133,7 @@ void PerforceSubmitEditor::updateFields() lines.removeLast(); // that is the empty line at the end const QRegExp leadingTabPattern = QRegExp(QLatin1String("^\\t")); - QTC_ASSERT(leadingTabPattern.isValid(), /**/); + QTC_CHECK(leadingTabPattern.isValid()); lines.replaceInStrings(leadingTabPattern, QString()); widget->setDescriptionText(lines.join(newLine)); diff --git a/src/plugins/projectexplorer/applicationlauncher.cpp b/src/plugins/projectexplorer/applicationlauncher.cpp index 16b2879d037..c9db836642d 100644 --- a/src/plugins/projectexplorer/applicationlauncher.cpp +++ b/src/plugins/projectexplorer/applicationlauncher.cpp @@ -249,6 +249,7 @@ void ApplicationLauncher::readStandardError() #ifdef Q_OS_WIN void ApplicationLauncher::cannotRetrieveDebugOutput() { + disconnect(WinDebugInterface::instance(), 0, this, 0); emit appendMessage(msgWinCannotRetrieveDebuggingOutput(), Utils::ErrorMessageFormat); } diff --git a/src/plugins/projectexplorer/codestylesettingspropertiespage.ui b/src/plugins/projectexplorer/codestylesettingspropertiespage.ui index 4a0cd2c92cf..06c686dae6c 100644 --- a/src/plugins/projectexplorer/codestylesettingspropertiespage.ui +++ b/src/plugins/projectexplorer/codestylesettingspropertiespage.ui @@ -14,6 +14,12 @@ Form + + 0 + + + 0 + diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.ui b/src/plugins/projectexplorer/editorsettingspropertiespage.ui index 15d4fe5f34b..a07118d94af 100644 --- a/src/plugins/projectexplorer/editorsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/editorsettingspropertiespage.ui @@ -11,6 +11,12 @@ + + 0 + + + 0 + diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp index 9efca403d58..860c78aa0f1 100644 --- a/src/plugins/projectexplorer/gccparser.cpp +++ b/src/plugins/projectexplorer/gccparser.cpp @@ -39,17 +39,17 @@ using namespace ProjectExplorer; namespace { // opt. drive letter + filename: (2 brackets) - const char * const FILE_PATTERN = "(|([A-Za-z]:)?[^:]+\\.[^:]+):"; + const char * const FILE_PATTERN = "(|([A-Za-z]:)?[^:]+\\.[^:]+):"; const char * const COMMAND_PATTERN = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: "; } GccParser::GccParser() { setObjectName(QLatin1String("GCCParser")); - m_regExp.setPattern(QString(QChar('^')) + QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+):(\\d+:)?\\s((fatal |#)?(warning|error|note):?\\s)(.+)$")); + m_regExp.setPattern(QString(QChar('^')) + QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+):(\\d+:)?\\s+((fatal |#)?(warning|error|note):?\\s)?([^\\s].+)$")); m_regExp.setMinimal(true); - m_regExpIncluded.setPattern(QString::fromLatin1("^.*from\\s") + QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+)[,:]?$")); + m_regExpIncluded.setPattern(QString::fromLatin1("\\bfrom\\s") + QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+)(:\\d+)?[,:]?$")); m_regExpIncluded.setMinimal(true); // optional path with trailing slash @@ -635,6 +635,43 @@ void ProjectExplorerPlugin::testGccOutputParsers_data() QLatin1String("../../../src/shared/proparser/profileevaluator.cpp"), 2817, Constants::TASK_CATEGORY_COMPILE)) << QString(); + + QTest::newRow("include with line:column info") + << QString::fromLatin1("In file included from :0:0:\n" + "./mw.h:4:0: warning: \"STUPID_DEFINE\" redefined") + << OutputParserTester::STDERR + << QString() << QString() + << ( QList() + << Task(Task::Unknown, + QLatin1String("In file included from :0:0:"), + QLatin1String(""), 0, + Constants::TASK_CATEGORY_COMPILE) + << Task(Task::Warning, + QLatin1String("\"STUPID_DEFINE\" redefined"), + QLatin1String("./mw.h"), 4, + Constants::TASK_CATEGORY_COMPILE)) + << QString(); + QTest::newRow("instanciation with line:column info") + << QString::fromLatin1("file.h: In function 'void UnitTest::CheckEqual(UnitTest::TestResults&, const Expected&, const Actual&, const UnitTest::TestDetails&) [with Expected = unsigned int, Actual = int]':\n" + "file.cpp:87:10: instantiated from here\n" + "file.h:21:5: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]") + << OutputParserTester::STDERR + << QString() << QString() + << ( QList() + << Task(Task::Unknown, + QLatin1String("In function 'void UnitTest::CheckEqual(UnitTest::TestResults&, const Expected&, const Actual&, const UnitTest::TestDetails&) [with Expected = unsigned int, Actual = int]':"), + QLatin1String("file.h"), -1, + Constants::TASK_CATEGORY_COMPILE) + << Task(Task::Unknown, + QLatin1String("instantiated from here"), + QLatin1String("file.cpp"), 87, + Constants::TASK_CATEGORY_COMPILE) + << Task(Task::Warning, + QLatin1String("comparison between signed and unsigned integer expressions [-Wsign-compare]"), + QLatin1String("file.h"), 21, + Constants::TASK_CATEGORY_COMPILE)) + << QString(); + } void ProjectExplorerPlugin::testGccOutputParsers() diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 1c62f61b03e..9588d29ea51 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -70,7 +70,12 @@ static QByteArray runGcc(const QString &gcc, const QStringList &arguments, const return QByteArray(); QProcess cpp; - cpp.setEnvironment(env); + // Force locale: This function is used only to detect settings inside the tool chain, so this is save. + QStringList environment(env); + environment.append(QLatin1String("LC_ALL")); + environment.append(QLatin1String("C")); + + cpp.setEnvironment(environment); cpp.start(gcc, arguments); if (!cpp.waitForStarted()) { qWarning("%s: Cannot start '%s': %s", Q_FUNC_INFO, qPrintable(gcc), diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index fee45029488..8982b803c45 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -302,9 +302,11 @@ void ProjectFileWizardExtension::firstExtensionPageShown( } // Store all version controls for later use: - foreach (Core::IVersionControl *vc, ExtensionSystem::PluginManager::instance()->getObjects()) { - m_context->versionControls.append(vc); - connect(vc, SIGNAL(configurationChanged()), this, SLOT(initializeVersionControlChoices())); + if (m_context->versionControls.isEmpty()) { + foreach (Core::IVersionControl *vc, ExtensionSystem::PluginManager::instance()->getObjects()) { + m_context->versionControls.append(vc); + connect(vc, SIGNAL(configurationChanged()), this, SLOT(initializeVersionControlChoices())); + } } initializeVersionControlChoices(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index 2d048f9ea69..46061eaffd2 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -275,12 +275,17 @@ void FormEditorScene::mousePressEvent(QGraphicsSceneMouseEvent *event) void FormEditorScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (event->buttons()) - currentTool()->mouseMoveEvent(removeLayerItems(items(event->scenePos())), event); - else - currentTool()->hoverMoveEvent(removeLayerItems(items(event->scenePos())), event); + static QTime time; - event->accept(); + if (time.elapsed() > 30) { + time.restart(); + if (event->buttons()) + currentTool()->mouseMoveEvent(removeLayerItems(items(event->scenePos())), event); + else + currentTool()->hoverMoveEvent(removeLayerItems(items(event->scenePos())), event); + + event->accept(); + } } void FormEditorScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index a18aca860bc..242ee809796 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -775,6 +775,9 @@ void DesignDocumentController::paste() targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode); } + transaction.commit(); + NodeMetaInfo::clearCache(); + view.setSelectedModelNodes(QList() << pastedNode); } catch (RewritingException &e) { qWarning() << e.description(); //silent error @@ -805,12 +808,14 @@ void DesignDocumentController::undo() { if (m_d->rewriterView && !m_d->rewriterView->modificationGroupActive()) m_d->textEdit->undo(); + m_d->propertyEditorView->resetView(); } void DesignDocumentController::redo() { if (m_d->rewriterView && !m_d->rewriterView->modificationGroupActive()) m_d->textEdit->redo(); + m_d->propertyEditorView->resetView(); } static inline QtSupport::BaseQtVersion *getActiveQtVersion(DesignDocumentController *controller) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.cpp index 77a69272d73..db70b664008 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.cpp @@ -42,7 +42,7 @@ #include #include #include -#include +#include #include enum { debug = 0 }; @@ -120,9 +120,9 @@ void ItemLibraryTreeView::startDrag(Qt::DropActions /* supportedActions */) if (!mimeData) return; - QDirModel *dirModel = qobject_cast(model()); - Q_ASSERT(dirModel); - QFileInfo fileInfo = dirModel->fileInfo(selectedIndexes().front()); + QFileSystemModel *fileSystemModel = qobject_cast(model()); + Q_ASSERT(fileSystemModel); + QFileInfo fileInfo = fileSystemModel->fileInfo(selectedIndexes().front()); QPixmap pixmap(fileInfo.absoluteFilePath()); if (!pixmap.isNull()) { CustomItemLibraryDrag *drag = new CustomItemLibraryDrag(this); @@ -137,10 +137,10 @@ void ItemLibraryTreeView::startDrag(Qt::DropActions /* supportedActions */) void ItemLibraryTreeView::setModel(QAbstractItemModel *model) { - QDirModel *dirModel = dynamic_cast(model); - if (dirModel) { + QFileSystemModel *fileSystemModel = dynamic_cast(model); + if (fileSystemModel) { QTreeView::setModel(model); - m_delegate->setModel(dirModel); + m_delegate->setModel(fileSystemModel); setColumnHidden(1, true); setColumnHidden(2, true); setColumnHidden(3, true); @@ -155,9 +155,9 @@ void ItemLibraryTreeView::activateItem( const QModelIndex & /*index*/) return; QString name; - QDirModel *dirModel = qobject_cast(model()); - Q_ASSERT(dirModel); - QFileInfo fileInfo = dirModel->fileInfo(selectedIndexes().front()); + QFileSystemModel *fileSystemModel = qobject_cast(model()); + Q_ASSERT(fileSystemModel); + QFileInfo fileInfo = fileSystemModel->fileInfo(selectedIndexes().front()); QPixmap pixmap(fileInfo.absoluteFilePath()); if (!pixmap.isNull()) { name = "image^" + fileInfo.absoluteFilePath(); @@ -195,7 +195,7 @@ QSize ResourceItemDelegate::sizeHint(const QStyleOptionViewItem &/*option*/, return icon.availableSizes().front() + QSize(25, 4); } -void ResourceItemDelegate::setModel(QDirModel *model) +void ResourceItemDelegate::setModel(QFileSystemModel *model) { m_model = model; } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.h index c576cf15f77..4b420bdb7bb 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarycomponents.h @@ -42,7 +42,7 @@ #include QT_BEGIN_NAMESPACE -class QDirModel; +class QFileSystemModel; class QLabel; QT_END_NAMESPACE @@ -83,10 +83,10 @@ public: QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; - void setModel(QDirModel *model); + void setModel(QFileSystemModel *model); private: - QDirModel *m_model; + QFileSystemModel *m_model; }; } // namespace Internal diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 3fe167f2eeb..2397c974e78 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -45,7 +45,7 @@ #include #include -#include +#include #include #include #include @@ -107,7 +107,7 @@ public: ItemLibraryWidgetPrivate(QObject *object); Internal::ItemLibraryModel *m_itemLibraryModel; - QDirModel *m_resourcesDirModel; + QFileSystemModel *m_resourcesFileSystemModel; QStackedWidget *m_stackedWidget; Utils::FilterLineEdit *m_lineEdit; @@ -122,7 +122,7 @@ public: ItemLibraryWidgetPrivate::ItemLibraryWidgetPrivate(QObject *object) : m_itemLibraryModel(0), - m_resourcesDirModel(0), + m_resourcesFileSystemModel(0), m_stackedWidget(0), m_lineEdit(0), m_itemsView(0), @@ -172,10 +172,10 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : connect(this, SIGNAL(resetItemsView()), rootItem, SLOT(resetView())); /* create Resources view and its model */ - m_d->m_resourcesDirModel = new QDirModel(this); - m_d->m_resourcesDirModel->setIconProvider(&m_d->m_iconProvider); + m_d->m_resourcesFileSystemModel = new QFileSystemModel(this); + m_d->m_resourcesFileSystemModel->setIconProvider(&m_d->m_iconProvider); m_d->m_resourcesView = new Internal::ItemLibraryTreeView(this); - m_d->m_resourcesView->setModel(m_d->m_resourcesDirModel); + m_d->m_resourcesView->setModel(m_d->m_resourcesFileSystemModel); m_d->m_resourcesView->setIconSize(m_d->m_resIconSize); /* create image provider for loading item icons */ @@ -333,8 +333,9 @@ void ItemLibraryWidget::setSearchFilter(const QString &searchFilter) } } - m_d->m_resourcesDirModel->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); - m_d->m_resourcesDirModel->setNameFilters(nameFilterList); + m_d->m_resourcesFileSystemModel->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); + m_d->m_resourcesFileSystemModel->setNameFilterDisables(false); + m_d->m_resourcesFileSystemModel->setNameFilters(nameFilterList); m_d->m_resourcesView->expandToDepth(1); m_d->m_resourcesView->scrollToTop(); } @@ -454,8 +455,10 @@ void ItemLibraryWidget::updateSearch() void ItemLibraryWidget::setResourcePath(const QString &resourcePath) { - if (m_d->m_resourcesView->model() == m_d->m_resourcesDirModel) - m_d->m_resourcesView->setRootIndex(m_d->m_resourcesDirModel->index(resourcePath)); + if (m_d->m_resourcesView->model() == m_d->m_resourcesFileSystemModel) { + m_d->m_resourcesFileSystemModel->setRootPath(resourcePath); + m_d->m_resourcesView->setRootIndex(m_d->m_resourcesFileSystemModel->index(resourcePath)); + } updateSearch(); } diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index d29a7d76380..4a603289686 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -45,6 +46,18 @@ #include #include #include +#include +#include + +static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos) +{ + QmlDesigner::QmlItemNode parentNode = modelNode.parentProperty().parentQmlObjectNode().toQmlItemNode(); + if (parentNode.isValid()) { + QPointF localPos = parentNode.instanceSceneTransform().inverted().map(pos); + modelNode.variantProperty(QLatin1String("x")) = localPos.toPoint().x(); + modelNode.variantProperty(QLatin1String("y")) = localPos.toPoint().y(); + } +} namespace QmlDesigner { @@ -542,7 +555,14 @@ void NavigatorTreeModel::moveNodesInteractive(NodeAbstractProperty parentPropert currentNode.removeProperty("y"); parentProperty.reparentHere(currentNode); } else { - parentProperty.reparentHere(node); + if (QmlItemNode(node).isValid()) { + QPointF scenePos = QmlItemNode(node).instanceScenePosition(); + parentProperty.reparentHere(node); + if (!scenePos.isNull()) + setScenePos(node, scenePos); + } else { + parentProperty.reparentHere(node); + } } } diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index 37f0d8d3edc..61eccf09fe6 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -38,8 +38,18 @@ #include #include +#include #include +static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos) +{ + QmlDesigner::QmlItemNode parentNode = modelNode.parentProperty().parentQmlObjectNode().toQmlItemNode(); + if (parentNode.isValid()) { + QPointF localPos = parentNode.instanceSceneTransform().inverted().map(pos); + modelNode.variantProperty(QLatin1String("x")) = localPos.toPoint().x(); + modelNode.variantProperty(QLatin1String("y")) = localPos.toPoint().y(); + } +} namespace QmlDesigner { @@ -275,8 +285,16 @@ void NavigatorView::leftButtonClicked() bool blocked = blockSelectionChangedSignal(true); foreach (const ModelNode &node, selectedModelNodes()) { - if (!node.isRootNode() && !node.parentProperty().parentModelNode().isRootNode()) - node.parentProperty().parentModelNode().parentProperty().reparentHere(node); + if (!node.isRootNode() && !node.parentProperty().parentModelNode().isRootNode()) { + if (QmlItemNode(node).isValid()) { + QPointF scenePos = QmlItemNode(node).instanceScenePosition(); + node.parentProperty().parentModelNode().parentProperty().reparentHere(node); + if (!scenePos.isNull()) + setScenePos(node, scenePos); + } else { + node.parentProperty().parentModelNode().parentProperty().reparentHere(node); + } + } } updateItemSelection(); blockSelectionChangedSignal(blocked); @@ -294,7 +312,15 @@ void NavigatorView::rightButtonClicked() index--; if (index >= 0) { //for the first node the semantics are not clear enough. Wrapping would be irritating. ModelNode newParent = node.parentProperty().toNodeListProperty().at(index); - newParent.nodeAbstractProperty(newParent.metaInfo().defaultPropertyName()).reparentHere(node); + + if (QmlItemNode(node).isValid()) { + QPointF scenePos = QmlItemNode(node).instanceScenePosition(); + newParent.nodeAbstractProperty(newParent.metaInfo().defaultPropertyName()).reparentHere(node); + if (!scenePos.isNull()) + setScenePos(node, scenePos); + } else { + newParent.nodeAbstractProperty(newParent.metaInfo().defaultPropertyName()).reparentHere(node); + } } } } diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index 243b9c60b1d..ac1dcabb6fe 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -80,6 +80,7 @@ public: QRectF instancePaintedBoundingRect() const; QTransform instanceTransform() const; QTransform instanceSceneTransform() const; + QPointF instanceScenePosition() const; QPointF instancePosition() const; QSizeF instanceSize() const; int instancePenWidth() const; diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 77b0064aaf0..c313ea9ac1e 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -244,6 +244,17 @@ QTransform QmlItemNode::instanceSceneTransform() const return nodeInstance().sceneTransform(); } +QPointF QmlItemNode::instanceScenePosition() const +{ + QmlItemNode parentNode = instanceParent().toQmlItemNode(); + if (!parentNode.isValid()) + parentNode = modelNode().parentProperty().parentQmlObjectNode().toQmlItemNode(); + if (parentNode.isValid()) + return parentNode.instanceSceneTransform().map(nodeInstance().position()); + + return QPointF(); +} + QPointF QmlItemNode::instancePosition() const { return nodeInstance().position(); diff --git a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp index c6159d3a0cb..0a299778c0c 100644 --- a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp @@ -116,7 +116,7 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept return QString(QLatin1String("\"%1\"")).arg(properColorName(value.value())); case QVariant::Double: - return QString::number(value.toDouble(), 'g', 3); + return QString::number(value.toDouble(), 'f', 3); case QVariant::Int: case QVariant::LongLong: case QVariant::UInt: diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 21924548049..461745619f2 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -853,6 +853,15 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, return; } + if (modelNode.isRootNode() && isComponentType(typeName)) { + for (UiObjectMemberList *iter = astInitializer->members; iter; iter = iter->next) { + if (UiObjectDefinition *def = cast(iter->member)) { + syncNode(modelNode, def, context, differenceHandler); + return; + } + } + } + bool isImplicitComponent = modelNode.parentProperty().isValid() && propertyIsComponentType(modelNode.parentProperty(), typeName, modelNode.model()); diff --git a/src/plugins/qmldesigner/symbianplugin/images/statusbar.png b/src/plugins/qmldesigner/symbianplugin/images/statusbar.png new file mode 100644 index 00000000000..ebd0775a885 Binary files /dev/null and b/src/plugins/qmldesigner/symbianplugin/images/statusbar.png differ diff --git a/src/plugins/qmldesigner/symbianplugin/images/statusbar16.png b/src/plugins/qmldesigner/symbianplugin/images/statusbar16.png new file mode 100644 index 00000000000..fec4585dcea Binary files /dev/null and b/src/plugins/qmldesigner/symbianplugin/images/statusbar16.png differ diff --git a/src/plugins/qmldesigner/symbianplugin/symbian.metainfo b/src/plugins/qmldesigner/symbianplugin/symbian.metainfo index b69eb688418..a9781d73879 100644 --- a/src/plugins/qmldesigner/symbianplugin/symbian.metainfo +++ b/src/plugins/qmldesigner/symbianplugin/symbian.metainfo @@ -28,6 +28,10 @@ + + + + diff --git a/src/plugins/qmldesigner/symbianplugin/symbianplugin.qrc b/src/plugins/qmldesigner/symbianplugin/symbianplugin.qrc index 2b5848e8cb6..92c2cc2062d 100644 --- a/src/plugins/qmldesigner/symbianplugin/symbianplugin.qrc +++ b/src/plugins/qmldesigner/symbianplugin/symbianplugin.qrc @@ -41,5 +41,7 @@ images/listview-icon.png images/listview-icon16.png source/SymbianListView.qml + images/statusbar.png + images/statusbar16.png diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 175f1386e53..ebfdf17f0c4 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1370,6 +1370,10 @@ void QmlJSTextEditorWidget::contextMenuEvent(QContextMenuEvent *e) menu->addAction(action); if (action->objectName() == QmlJSEditor::Constants::M_REFACTORING_MENU_INSERTION_POINT) menu->addMenu(refactoringMenu); + if (action->objectName() == QmlJSEditor::Constants::SHOW_QT_QUICK_HELPER) { + bool enabled = m_contextPane->isAvailable(editor(), semanticInfo().document, m_semanticInfo.declaringMemberNoProperties(position())); + action->setEnabled(enabled); + } } } diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index 0c691a63a17..7f8c5853a08 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -265,7 +265,7 @@ ExtensionSystem::IPlugin::ShutdownFlag QmlJSEditorPlugin::aboutToShutdown() void QmlJSEditorPlugin::initializeEditor(QmlJSEditor::QmlJSTextEditorWidget *editor) { - QTC_ASSERT(m_instance, /**/); + QTC_CHECK(m_instance); m_actionHandler->setupActions(editor); diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.cpp b/src/plugins/qmljsinspector/qmljsclientproxy.cpp index e2257459d86..135dc58e9a6 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.cpp +++ b/src/plugins/qmljsinspector/qmljsclientproxy.cpp @@ -65,11 +65,11 @@ ClientProxy::ClientProxy(Debugger::QmlAdapter *adapter, QObject *parent) void ClientProxy::connectToServer() { - m_engineClient = new QDeclarativeEngineDebug(m_adapter->connection(), this); + m_engineClient = new QDeclarativeEngineDebug(m_adapter.data()->connection(), this); connect(m_engineClient, SIGNAL(newObjects()), this, SLOT(newObjects())); - m_inspectorClient = new QmlJSInspectorClient(m_adapter->connection(), this); + m_inspectorClient = new QmlJSInspectorClient(m_adapter.data()->connection(), this); connect(m_inspectorClient, SIGNAL(connectedStatusChanged(QDeclarativeDebugClient::Status)), this, SLOT(clientStatusChanged(QDeclarativeDebugClient::Status))); @@ -96,7 +96,7 @@ void ClientProxy::connectToServer() connect(m_inspectorClient, SIGNAL(selectedColorChanged(QColor)), SIGNAL(selectedColorChanged(QColor))); connect(m_inspectorClient, SIGNAL(logActivity(QString,QString)), - m_adapter, SLOT(logServiceActivity(QString,QString))); + m_adapter.data(), SLOT(logServiceActivity(QString,QString))); updateConnected(); } @@ -108,7 +108,8 @@ void ClientProxy::clientStatusChanged(QDeclarativeDebugClient::Status status) serviceName = client->name(); } - m_adapter->logServiceStatusChange(serviceName, status); + if (m_adapter) + m_adapter.data()->logServiceStatusChange(serviceName, status); updateConnected(); } @@ -186,7 +187,8 @@ void ClientProxy::log(LogDirection direction, const QString &message) } msg += message; - m_adapter->logServiceActivity("QDeclarativeDebug", msg); + if (m_adapter) + m_adapter.data()->logServiceActivity("QDeclarativeDebug", msg); } QList QmlJSInspector::Internal::ClientProxy::rootObjectReference() const @@ -323,13 +325,16 @@ QDeclarativeDebugExpressionQuery *ClientProxy::queryExpressionResult(int objectD if (!isConnected()) return 0; - bool block = m_adapter->disableJsDebugging(true); + bool block = false; + if (m_adapter) + block = m_adapter.data()->disableJsDebugging(true); log(LogSend, QString("EVAL_EXPRESSION %1 %2").arg(QString::number(objectDebugId), expr)); QDeclarativeDebugExpressionQuery *query = m_engineClient->queryExpressionResult(objectDebugId, expr, m_engineClient); - m_adapter->disableJsDebugging(block); + if (m_adapter) + m_adapter.data()->disableJsDebugging(block); return query; } @@ -662,7 +667,7 @@ void ClientProxy::updateEngineList() Debugger::QmlAdapter *ClientProxy::qmlAdapter() const { - return m_adapter; + return m_adapter.data(); } bool ClientProxy::isConnected() const diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.h b/src/plugins/qmljsinspector/qmljsclientproxy.h index ed28b751c6a..b971fa220c7 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.h +++ b/src/plugins/qmljsinspector/qmljsclientproxy.h @@ -164,7 +164,7 @@ private: private: void buildDebugIdHashRecursive(const QDeclarativeDebugObjectReference &ref); - Debugger::QmlAdapter *m_adapter; + QWeakPointer m_adapter; QDeclarativeEngineDebug *m_engineClient; QmlJSInspectorClient *m_inspectorClient; diff --git a/src/plugins/qmlprofiler/codaqmlprofilerrunner.cpp b/src/plugins/qmlprofiler/codaqmlprofilerrunner.cpp index a2414b8f3b7..345d5b61fc4 100644 --- a/src/plugins/qmlprofiler/codaqmlprofilerrunner.cpp +++ b/src/plugins/qmlprofiler/codaqmlprofilerrunner.cpp @@ -49,7 +49,7 @@ CodaQmlProfilerRunner::CodaQmlProfilerRunner(S60DeviceRunConfiguration *configur QObject *parent) : AbstractQmlProfilerRunner(parent), m_configuration(configuration), - m_runControl(new CodaRunControl(configuration, "QmlProfiler")) + m_runControl(new CodaRunControl(configuration, Analyzer::Constants::MODE_ANALYZE)) { connect(m_runControl, SIGNAL(finished()), this, SIGNAL(stopped())); connect(m_runControl, diff --git a/src/plugins/qmlprofiler/qml/MainView.qml b/src/plugins/qmlprofiler/qml/MainView.qml index ff4bc99f3d3..1d7058c53cf 100644 --- a/src/plugins/qmlprofiler/qml/MainView.qml +++ b/src/plugins/qmlprofiler/qml/MainView.qml @@ -37,8 +37,8 @@ import "MainView.js" as Plotter Rectangle { id: root - property bool dataAvailable: false; - property int eventCount: 0; + property bool dataAvailable: true; + property int eventCount: Plotter.ranges.length; // move the cursor in the editor signal updateCursorPosition diff --git a/src/plugins/qmlprofiler/qml/StatusDisplay.qml b/src/plugins/qmlprofiler/qml/StatusDisplay.qml index 751c8dffdb1..f09e886fa51 100644 --- a/src/plugins/qmlprofiler/qml/StatusDisplay.qml +++ b/src/plugins/qmlprofiler/qml/StatusDisplay.qml @@ -13,7 +13,7 @@ Rectangle { } } - width: 200 + width: Math.max(200, statusText.width+20); height: displayColumn.height + 20 visible: false; @@ -27,11 +27,11 @@ Rectangle { id: displayColumn y: 10 spacing: 5 + width: parent.width Text { id: statusText - width: statusDisplay.width horizontalAlignment: "AlignHCenter" - y: 10 + anchors.horizontalCenter: parent.horizontalCenter } Rectangle { diff --git a/src/plugins/qmlprofiler/qmlprofilerengine.cpp b/src/plugins/qmlprofiler/qmlprofilerengine.cpp index 9a3c5dc2c5e..931afd81a29 100644 --- a/src/plugins/qmlprofiler/qmlprofilerengine.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerengine.cpp @@ -54,6 +54,7 @@ #include #include +#include using namespace Analyzer; using namespace ProjectExplorer; @@ -69,7 +70,7 @@ class QmlProfilerEngine::QmlProfilerEnginePrivate { public: QmlProfilerEnginePrivate(QmlProfilerEngine *qq) : q(qq), m_runner(0) {} - ~QmlProfilerEnginePrivate() {} + ~QmlProfilerEnginePrivate() { delete m_runner; } bool attach(const QString &address, uint port); static AbstractQmlProfilerRunner *createRunner(ProjectExplorer::RunConfiguration *runConfiguration, @@ -81,7 +82,9 @@ public: AbstractQmlProfilerRunner *m_runner; bool m_running; bool m_fetchingData; + bool m_fetchDataFromStart; bool m_delayedDelete; + QTimer m_noDebugOutputTimer; }; AbstractQmlProfilerRunner * @@ -116,7 +119,7 @@ QmlProfilerEngine::QmlProfilerEnginePrivate::createRunner(ProjectExplorer::RunCo qobject_cast(runConfiguration)) { runner = new RemoteLinuxQmlProfilerRunner(rmConfig, parent); } else { - QTC_ASSERT(false, /**/); + QTC_CHECK(false); } return runner; } @@ -132,7 +135,14 @@ QmlProfilerEngine::QmlProfilerEngine(IAnalyzerTool *tool, { d->m_running = false; d->m_fetchingData = false; + d->m_fetchDataFromStart = false; d->m_delayedDelete = false; + + // Only wait 4 seconds for the 'Waiting for connection' on application ouput, then just try to connect + // (application output might be redirected / blocked) + d->m_noDebugOutputTimer.setSingleShot(true); + d->m_noDebugOutputTimer.setInterval(4000); + connect(&d->m_noDebugOutputTimer, SIGNAL(timeout()), this, SLOT(processIsRunning())); } QmlProfilerEngine::~QmlProfilerEngine() @@ -142,16 +152,19 @@ QmlProfilerEngine::~QmlProfilerEngine() delete d; } -void QmlProfilerEngine::start() +bool QmlProfilerEngine::start() { - QTC_ASSERT(!d->m_runner, return); + if (d->m_runner) { + delete d->m_runner; + d->m_runner = 0; + } if (QmlProjectManager::QmlProjectRunConfiguration *rc = qobject_cast(runConfiguration())) { if (rc->observerPath().isEmpty()) { QmlProjectManager::QmlProjectPlugin::showQmlObserverToolWarning(); AnalyzerManager::stopTool(); - return; + return false; } } @@ -161,7 +174,7 @@ void QmlProfilerEngine::start() if (!qmlRunner->hasExecutable()) { showNonmodalWarning(tr("No executable file to launch.")); AnalyzerManager::stopTool(); - return; + return false; } } @@ -169,16 +182,24 @@ void QmlProfilerEngine::start() connect(d->m_runner, SIGNAL(appendMessage(QString,Utils::OutputFormat)), this, SLOT(logApplicationMessage(QString,Utils::OutputFormat))); + d->m_noDebugOutputTimer.start(); d->m_runner->start(); d->m_running = true; d->m_delayedDelete = false; + if (d->m_fetchDataFromStart) { + d->m_fetchingData = true; + } + AnalyzerManager::handleToolStarted(); + return true; } void QmlProfilerEngine::stop() { + // keep the flag for the next restart + d->m_fetchDataFromStart = d->m_fetchingData; if (d->m_fetchingData) { if (d->m_running) d->m_delayedDelete = true; @@ -191,6 +212,10 @@ void QmlProfilerEngine::stop() void QmlProfilerEngine::stopped() { + // if it was killed, preserve recording flag + if (d->m_running) + d->m_fetchDataFromStart = d->m_fetchingData; + // user feedback if (d->m_running && d->m_fetchingData) { showNonmodalWarning(tr("Application finished before loading profiled data.\n Please use the stop button instead.")); @@ -204,6 +229,8 @@ void QmlProfilerEngine::stopped() void QmlProfilerEngine::setFetchingData(bool b) { d->m_fetchingData = b; + if (!d->m_running) + d->m_fetchDataFromStart = b; } void QmlProfilerEngine::dataReceived() @@ -230,6 +257,9 @@ void QmlProfilerEngine::filterApplicationMessage(const QString &msg) const int index = msg.indexOf(qddserver); if (index != -1) { + // we're actually getting debug output + d->m_noDebugOutputTimer.stop(); + QString status = msg; status.remove(0, index + qddserver.length()); // chop of 'QDeclarativeDebugServer: ' @@ -241,7 +271,7 @@ void QmlProfilerEngine::filterApplicationMessage(const QString &msg) QString errorMessage; if (status.startsWith(waitingForConnection)) { - emit processRunning(d->m_runner->debugPort()); + processIsRunning(); } else if (status.startsWith(unableToListen)) { //: Error message shown after 'Could not connect ... debugger:" errorMessage = tr("The port seems to be in use."); @@ -273,7 +303,7 @@ void QmlProfilerEngine::filterApplicationMessage(const QString &msg) } } else if (msg.contains(cannotRetrieveDebuggingOutput)) { // we won't get debugging output, so just try to connect ... - emit processRunning(d->m_runner->debugPort()); + processIsRunning(); } } @@ -305,5 +335,11 @@ void QmlProfilerEngine::showNonmodalWarning(const QString &warningMsg) noExecWarning->show(); } +void QmlProfilerEngine::processIsRunning() +{ + d->m_noDebugOutputTimer.stop(); + emit processRunning(d->m_runner->debugPort()); +} + } // namespace Internal } // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/qmlprofilerengine.h b/src/plugins/qmlprofiler/qmlprofilerengine.h index 8b0133b9c92..359ba8ebe86 100644 --- a/src/plugins/qmlprofiler/qmlprofilerengine.h +++ b/src/plugins/qmlprofiler/qmlprofilerengine.h @@ -54,7 +54,7 @@ signals: void stopRecording(); public slots: - void start(); + bool start(); void stop(); private slots: @@ -66,6 +66,7 @@ private slots: void logApplicationMessage(const QString &msg, Utils::OutputFormat format); void filterApplicationMessage(const QString &msg); void wrongSetupMessageBoxFinished(int); + void processIsRunning(); private: class QmlProfilerEnginePrivate; diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp index 1b0edfeef42..6f2d4ae04d9 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp @@ -40,11 +40,13 @@ #include #include +#include #include #include #include #include +#include #include @@ -112,12 +114,12 @@ RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfigurat sp.displayName = rc3->displayName(); } else if (Qt4ProjectManager::S60DeviceRunConfiguration *rc4 = qobject_cast(runConfiguration)) { - //sp.environment = rc4->environment(); - //sp.workingDirectory = rc4->workingDirectory(); - //sp.debuggee = rc4->executable(); + Qt4ProjectManager::S60DeployConfiguration *deployConf = + qobject_cast(runConfiguration->target()->activeDeployConfiguration()); + sp.debuggeeArgs = rc4->commandLineArguments(); sp.displayName = rc4->displayName(); - sp.connParams.host = QLatin1String("localhost"); + sp.connParams.host = deployConf->deviceAddress(); sp.connParams.port = rc4->qmlDebugServerPort(); } else { // What could that be? diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 50d31c25603..228b3a96895 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -64,6 +64,7 @@ #include #include #include +#include #include #include @@ -102,7 +103,6 @@ public: Utils::FileInProjectFinder m_projectFinder; ProjectExplorer::RunConfiguration *m_runConfiguration; bool m_isAttached; - QAction *m_attachAction; QToolButton *m_recordButton; QToolButton *m_clearButton; bool m_recordingEnabled; @@ -127,7 +127,6 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent) d->m_project = 0; d->m_runConfiguration = 0; d->m_isAttached = false; - d->m_attachAction = 0; d->m_recordingEnabled = true; d->m_connectionTimer.setInterval(200); @@ -227,16 +226,6 @@ IAnalyzerEngine *QmlProfilerTool::createEngine(const AnalyzerStartParameters &sp return engine; } -void QmlProfilerTool::toolSelected() -{ - updateAttachAction(true); -} - -void QmlProfilerTool::toolDeselected() -{ - updateAttachAction(false); -} - QWidget *QmlProfilerTool::createWidgets() { QTC_ASSERT(!d->m_traceWindow, return 0); @@ -279,15 +268,6 @@ QWidget *QmlProfilerTool::createWidgets() Core::ActionContainer *manalyzer = am->actionContainer(Analyzer::Constants::M_DEBUG_ANALYZER); const Core::Context globalcontext(Core::Constants::C_GLOBAL); - d->m_attachAction = new QAction(tr("Attach..."), manalyzer); - Core::Command *command = am->registerAction(d->m_attachAction, - Constants::ATTACH, globalcontext); - command->setAttribute(Core::Command::CA_UpdateText); - //manalyzer->addAction(command, Analyzer::Constants::G_ANALYZER_STARTSTOP); - connect(d->m_attachAction, SIGNAL(triggered()), this, SLOT(attach())); - - updateAttachAction(false); - QDockWidget *eventsDock = AnalyzerManager::createDockWidget (this, tr("Events"), d->m_eventsView, Qt::BottomDockWidgetArea); QDockWidget *timelineDock = AnalyzerManager::createDockWidget @@ -363,14 +343,10 @@ void QmlProfilerTool::connectToClient() return; if (d->m_connectMode == QmlProfilerToolPrivate::TcpConnection) { - if (QmlProfilerPlugin::debugOutput) - qWarning("QML Profiler: Connecting to %s:%lld ...", qPrintable(d->m_tcpHost), d->m_tcpPort); - + logStatus(QString("QML Profiler: Connecting to %1:%2 ...").arg(d->m_tcpHost, QString::number(d->m_tcpPort))); d->m_client->connectToHost(d->m_tcpHost, d->m_tcpPort); } else { - if (QmlProfilerPlugin::debugOutput) - qWarning("QML Profiler: Connecting to ost device %s...", qPrintable(d->m_ostDevice)); - + logStatus(QString("QML Profiler: Connecting to %1 ...").arg(d->m_tcpHost)); d->m_client->connectToOst(d->m_ostDevice); } } @@ -479,16 +455,6 @@ void QmlProfilerTool::attach() } d->m_isAttached = !d->m_isAttached; - updateAttachAction(true); -} - -void QmlProfilerTool::updateAttachAction(bool isCurrentTool) -{ - if (d->m_isAttached) - d->m_attachAction->setText(tr("Detach")); - else - d->m_attachAction->setText(tr("Attach...")); - d->m_attachAction->setEnabled(isCurrentTool); } void QmlProfilerTool::tryToConnect() @@ -501,12 +467,11 @@ void QmlProfilerTool::tryToConnect() } else if (d->m_connectionAttempts == 50) { d->m_connectionTimer.stop(); d->m_connectionAttempts = 0; - if (QmlProfilerPlugin::debugOutput) { - if (d->m_client) { - qWarning("QML Profiler: Failed to connect: %s", qPrintable(d->m_client->errorString())); - } else { - qWarning("QML Profiler: Failed to connect."); - } + + if (d->m_client) { + logError("QML Profiler: Failed to connect! " + d->m_client->errorString()); + } else { + logError("QML Profiler: Failed to connect!"); } emit connectionFailed(); } else { @@ -575,3 +540,16 @@ void QmlProfilerTool::startTool(StartMode mode) Project *pro = pe->startupProject(); pe->runProject(pro, id()); } + +void QmlProfilerTool::logStatus(const QString &msg) +{ + Core::MessageManager *messageManager = Core::MessageManager::instance(); + messageManager->printToOutputPane(msg, false); +} + +void QmlProfilerTool::logError(const QString &msg) +{ + // TODO: Rather show errors in the application ouput + Core::MessageManager *messageManager = Core::MessageManager::instance(); + messageManager->printToOutputPane(msg, true); +} diff --git a/src/plugins/qmlprofiler/qmlprofilertool.h b/src/plugins/qmlprofiler/qmlprofilertool.h index 490bbd26504..2c627e9c876 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.h +++ b/src/plugins/qmlprofiler/qmlprofilertool.h @@ -53,8 +53,6 @@ public: ToolMode toolMode() const; void extensionsInitialized() {} - void toolSelected(); - void toolDeselected(); Analyzer::IAnalyzerEngine *createEngine(const Analyzer::AnalyzerStartParameters &sp, ProjectExplorer::RunConfiguration *runConfiguration = 0); @@ -88,10 +86,11 @@ private slots: void connectionStateChanged(); private: - void updateAttachAction(bool isCurrentTool); void connectToClient(); void updateRecordingState(); void ensureWidgets(); + void logStatus(const QString &msg); + void logError(const QString &msg); class QmlProfilerToolPrivate; QmlProfilerToolPrivate *d; diff --git a/src/plugins/qmlprofiler/qmlprofilertraceclient.h b/src/plugins/qmlprofiler/qmlprofilertraceclient.h index 39a3a929693..6e698e9aae4 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceclient.h +++ b/src/plugins/qmlprofiler/qmlprofilertraceclient.h @@ -55,6 +55,9 @@ class QmlProfilerTraceClient : public QmlJsDebugClient::QDeclarativeDebugClient Q_OBJECT Q_PROPERTY(bool recording READ isRecording WRITE setRecording NOTIFY recordingChanged) + // don't hide by signal + using QObject::event; + public: QmlProfilerTraceClient(QmlJsDebugClient::QDeclarativeDebugConnection *client); diff --git a/src/plugins/qmlprofiler/tracewindow.cpp b/src/plugins/qmlprofiler/tracewindow.cpp index f5dee6e244a..13aaa0f37e5 100644 --- a/src/plugins/qmlprofiler/tracewindow.cpp +++ b/src/plugins/qmlprofiler/tracewindow.cpp @@ -159,7 +159,8 @@ void TraceWindow::clearDisplay() void TraceWindow::updateToolbar() { - bool dataAvailable = m_view->rootObject()->property("dataAvailable").toBool(); + bool dataAvailable = m_view->rootObject()->property("dataAvailable").toBool() && + m_view->rootObject()->property("eventCount").toInt() > 0; emit enableToolbar(dataAvailable); } diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp index a3360b280a3..f0da0a29e16 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp @@ -110,9 +110,6 @@ QmlProjectRunConfigurationWidget::QmlProjectRunConfigurationWidget(QmlProjectRun layout->addWidget(detailsWidget); - updateFileComboBox(); - updateQtVersionComboBox(); - // // Debugging // @@ -166,6 +163,9 @@ QmlProjectRunConfigurationWidget::QmlProjectRunConfigurationWidget(QmlProjectRun layout->addWidget(m_environmentWidget); + + updateFileComboBox(); + updateQtVersionComboBox(); } static bool caseInsensitiveLessThan(const QString &s1, const QString &s2) @@ -252,6 +252,7 @@ void QmlProjectRunConfigurationWidget::onQtVersionSelectionChanged() QTC_ASSERT(data.isValid() && data.canConvert(QVariant::Int), return) m_runConfiguration->setQtVersionId(data.toInt()); m_runConfiguration->updateEnabled(); + m_environmentWidget->setBaseEnvironment(m_runConfiguration->baseEnvironment()); } void QmlProjectRunConfigurationWidget::onViewerArgsChanged() @@ -301,6 +302,8 @@ void QmlProjectRunConfigurationWidget::updateQtVersionComboBox() m_qtVersionComboBox->addItem(tr("Invalid Qt version"), -1); m_qtVersionComboBox->setCurrentIndex(0); } + // Might have edited the qt version or changed e.g. the sysroot of a SymbianQtVersion + m_environmentWidget->setBaseEnvironment(m_runConfiguration->baseEnvironment()); } void QmlProjectRunConfigurationWidget::userChangesChanged() diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp index 35eb8df7b43..2c442619923 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp @@ -94,6 +94,7 @@ static Debugger::DebuggerStartParameters s60DebuggerStartParams(const S60DeviceR sp.serverAddress = activeDeployConf->deviceAddress(); sp.serverPort = activeDeployConf->devicePort().toInt(); sp.displayName = rc->displayName(); + sp.qmlServerAddress = activeDeployConf->deviceAddress(); sp.qmlServerPort = rc->qmlDebugServerPort(); if (rc->useQmlDebugger()) { QString qmlArgs = rc->qmlCommandLineArguments(); @@ -185,7 +186,7 @@ void S60DeviceDebugRunControl::codaConnected() { QTC_ASSERT(m_codaState == EWaitingForCodaConnection, return); m_codaState = ECodaConnected; - engine()->handleRemoteSetupDone(-1, 0); // calls notifyInferiorSetupOk() + engine()->handleRemoteSetupDone(-1, -1); // calls notifyInferiorSetupOk() } void S60DeviceDebugRunControl::qmlEngineStateChanged(const Debugger::DebuggerState &state) diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp index 219692fbe7b..0ba9ba60a09 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfigurationwidget.cpp @@ -36,6 +36,8 @@ #include #include +#include + #include #include #include @@ -104,6 +106,8 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget( this, SLOT(useQmlDebuggerToggled(bool))); connect(m_debuggerLanguageChooser, SIGNAL(qmlDebugServerPortChanged(uint)), this, SLOT(qmlDebugServerPortChanged(uint))); + connect(m_debuggerLanguageChooser, SIGNAL(openHelpUrl(QString)), + Core::HelpManager::instance(), SLOT(handleHelpRequest(QString))); runConfigurationEnabledChange(m_runConfiguration->isEnabled()); } diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index 898832c00c0..2e310ac6ab9 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -370,7 +370,7 @@ void Qt4ProjectConfigWidget::updateImportLabel() newVersion = QtSupport::QtVersionFactory::createQtVersionFromQMakePath(qmakePath); mustDelete = true; } - targetMatches = newVersion->supportsTargetId(m_buildConfiguration->target()->id()); + targetMatches = newVersion ? newVersion->supportsTargetId(m_buildConfiguration->target()->id()) : false; if (mustDelete) delete newVersion; } else { diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 1e4d1813aae..03eb34594a6 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -177,7 +177,7 @@ BaseQtVersion::BaseQtVersion(const QString &qmakeCommand, bool isAutodetected, c m_hasExamples(false), m_hasDemos(false), m_hasDocumentation(false), - m_qmakeIsExecutable(false) + m_qmakeIsExecutable(true) { ctor(qmakeCommand); setDisplayName(defaultDisplayName(qtVersionString(), qmakeCommand, false)); @@ -197,7 +197,8 @@ BaseQtVersion::BaseQtVersion() m_notInstalled(false), m_hasExamples(false), m_hasDemos(false), - m_hasDocumentation(false) + m_hasDocumentation(false), + m_qmakeIsExecutable(true) { ctor(QString()); } @@ -661,12 +662,15 @@ BaseQtVersion::QmakeBuildConfigs BaseQtVersion::defaultBuildConfig() const QString BaseQtVersion::qtVersionString() const { - if (m_qtVersionString.isNull()) { - QFileInfo qmake(m_qmakeCommand); - if (qmake.exists() && qmake.isExecutable()) - m_qtVersionString = ProjectExplorer::DebuggingHelperLibrary::qtVersionForQMake(qmake.absoluteFilePath()); - else - m_qtVersionString = QLatin1String(""); + if (!m_qtVersionString.isNull()) + return m_qtVersionString; + m_qtVersionString.clear(); + if (m_qmakeIsExecutable) { + const QString qmake = QFileInfo(qmakeCommand()).absoluteFilePath(); + m_qtVersionString = + ProjectExplorer::DebuggingHelperLibrary::qtVersionForQMake(qmake, &m_qmakeIsExecutable); + } else { + qWarning("Cannot determine the Qt version: %s cannot be run.", qPrintable(qmakeCommand())); } return m_qtVersionString; } @@ -680,6 +684,11 @@ void BaseQtVersion::updateVersionInfo() const { if (m_versionInfoUpToDate) return; + if (!m_qmakeIsExecutable) { + qWarning("Cannot update Qt version information: %s cannot be run.", + qPrintable(qmakeCommand())); + return; + } // extract data from qmake executable m_versionInfo.clear(); @@ -691,15 +700,7 @@ void BaseQtVersion::updateVersionInfo() const m_hasQmlDebuggingLibrary = false; m_hasQmlObserver = false; - m_qmakeIsExecutable = true; - - QFileInfo fi(qmakeCommand()); - if (!fi.exists() || !fi.isExecutable() || fi.isDir()) { - m_qmakeIsExecutable = false; - return; - } - - if (!queryQMakeVariables(qmakeCommand(), &m_versionInfo)) + if (!queryQMakeVariables(qmakeCommand(), &m_versionInfo, &m_qmakeIsExecutable)) return; if (m_versionInfo.contains("QT_INSTALL_DATA")) { @@ -982,10 +983,18 @@ QtConfigWidget *BaseQtVersion::createConfigurationWidget() const } bool BaseQtVersion::queryQMakeVariables(const QString &binary, QHash *versionInfo) +{ + bool qmakeIsExecutable; + return BaseQtVersion::queryQMakeVariables(binary, versionInfo, &qmakeIsExecutable); +} + +bool BaseQtVersion::queryQMakeVariables(const QString &binary, QHash *versionInfo, + bool *qmakeIsExecutable) { const int timeOutMS = 30000; // Might be slow on some machines. - QFileInfo qmake(binary); - if (!qmake.exists() || !qmake.isExecutable() || qmake.isDir()) + const QFileInfo qmake(binary); + *qmakeIsExecutable = qmake.exists() && qmake.isExecutable() && !qmake.isDir(); + if (!*qmakeIsExecutable) return false; static const char * const variables[] = { "QT_VERSION", @@ -1003,12 +1012,14 @@ bool BaseQtVersion::queryQMakeVariables(const QString &binary, QHash *versionInfo); + static bool queryQMakeVariables(const QString &binary, QHash *versionInfo, bool *qmakeIsExecutable); static QString mkspecFromVersionInfo(const QHash &versionInfo); diff --git a/src/plugins/qtsupport/debugginghelperbuildtask.cpp b/src/plugins/qtsupport/debugginghelperbuildtask.cpp index 2564710c13f..e59e31937db 100644 --- a/src/plugins/qtsupport/debugginghelperbuildtask.cpp +++ b/src/plugins/qtsupport/debugginghelperbuildtask.cpp @@ -37,6 +37,7 @@ #include "baseqtversion.h" #include "qtversionmanager.h" #include +#include #include #include #include @@ -96,13 +97,21 @@ DebuggingHelperBuildTask::DebuggingHelperBuildTask(const BaseQtVersion *version, if (toolChain->targetAbi().os() == ProjectExplorer::Abi::LinuxOS && ProjectExplorer::Abi::hostAbi().os() == ProjectExplorer::Abi::WindowsOS) m_target = QLatin1String("-unix"); + if (toolChain->targetAbi().os() == ProjectExplorer::Abi::SymbianOS) { + m_makeArguments << QLatin1String("debug-") + toolChain->defaultMakeTarget(); + m_makeArguments << QLatin1String("release-") + toolChain->defaultMakeTarget(); + m_makeArguments << QLatin1String("-k"); + } else { + m_makeArguments << QLatin1String("all") + << QLatin1String("-k"); + } m_qmakeCommand = version->qmakeCommand(); m_makeCommand = toolChain->makeCommand(); m_mkspec = version->mkspec(); // Make sure QtVersion cache is invalidated - connect(this, SIGNAL(finished(int,QString,DebuggingHelperBuildTask::Tools)), - QtVersionManager::instance(), SLOT(updateQtVersion(int)), + connect(this, SIGNAL(updateQtVersions(QString)), + QtVersionManager::instance(), SLOT(updateDumpFor(QString)), Qt::QueuedConnection); } @@ -156,6 +165,7 @@ void DebuggingHelperBuildTask::run(QFutureInterface &future) log(result, QString()); } + emit updateQtVersions(m_qmakeCommand); emit finished(m_qtId, m_log, m_tools); deleteLater(); } @@ -164,7 +174,9 @@ bool DebuggingHelperBuildTask::buildDebuggingHelper(QFutureInterface &futu { Utils::BuildableHelperLibrary::BuildHelperArguments arguments; arguments.makeCommand = m_makeCommand; + arguments.makeArguments = m_makeArguments; arguments.qmakeCommand = m_qmakeCommand; + arguments.qmakeArguments = QStringList() << QLatin1String("-nocache"); arguments.targetMode = m_target; arguments.mkspec = m_mkspec; arguments.environment = m_environment; @@ -205,8 +217,6 @@ bool DebuggingHelperBuildTask::buildDebuggingHelper(QFutureInterface &futu bool success = true; arguments.directory = qmlDebuggingDirectory; - arguments.makeArguments += QLatin1String("all"); // build debug and release - arguments.makeArguments += QLatin1String("-k"); // don't stop if one fails if (arguments.directory.isEmpty() || !QmlDebuggingLibrary::build(arguments, &output, &error)) { success = false; @@ -216,7 +226,6 @@ bool DebuggingHelperBuildTask::buildDebuggingHelper(QFutureInterface &futu if (!success) { return false; } - arguments.makeArguments.clear(); } future.setProgressValue(4); diff --git a/src/plugins/qtsupport/debugginghelperbuildtask.h b/src/plugins/qtsupport/debugginghelperbuildtask.h index fc854958242..aa836e128d2 100644 --- a/src/plugins/qtsupport/debugginghelperbuildtask.h +++ b/src/plugins/qtsupport/debugginghelperbuildtask.h @@ -69,9 +69,11 @@ public: static Tools availableTools(const BaseQtVersion *version); signals: + void finished(int qtVersionId, const QString &output, DebuggingHelperBuildTask::Tools tools); + // used internally void logOutput(const QString &output, bool bringToForeground); - void finished(int qtVersionId, const QString &output, DebuggingHelperBuildTask::Tools tools); + void updateQtVersions(const QString &qmakeCommand); private: bool buildDebuggingHelper(QFutureInterface &future); @@ -84,6 +86,7 @@ private: QString m_target; QString m_qmakeCommand; QString m_makeCommand; + QStringList m_makeArguments; QString m_mkspec; Utils::Environment m_environment; QString m_log; diff --git a/src/plugins/qtsupport/gettingstartedwelcomepage.cpp b/src/plugins/qtsupport/gettingstartedwelcomepage.cpp index eb225a2501c..794d46525cd 100644 --- a/src/plugins/qtsupport/gettingstartedwelcomepage.cpp +++ b/src/plugins/qtsupport/gettingstartedwelcomepage.cpp @@ -41,6 +41,8 @@ #include #include +#include +#include #include #include #include @@ -54,6 +56,19 @@ namespace Internal { const char *C_FALLBACK_ROOT = "ProjectsFallbackRoot"; +class Fetcher : public QObject +{ + Q_OBJECT +public slots: + void fetchData(const QUrl &url) + { + fetchedData = Core::HelpManager::instance()->fileData(url); + } + +public: + QByteArray fetchedData; +}; + class HelpImageProvider : public QDeclarativeImageProvider { public: @@ -62,18 +77,29 @@ public: { } + // gets called by declarative in separate thread QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) { + QMutexLocker lock(&m_mutex); QUrl url = QUrl::fromEncoded(id.toAscii()); - QByteArray imgData = Core::HelpManager::instance()->fileData(url); - QBuffer imgBuffer(&imgData); + if (!QMetaObject::invokeMethod(&m_fetcher, + "fetchData", + Qt::BlockingQueuedConnection, + Q_ARG(QUrl, url))) { + return QImage(); + } + QBuffer imgBuffer(&m_fetcher.fetchedData); imgBuffer.open(QIODevice::ReadOnly); QImageReader reader(&imgBuffer); QImage img = reader.read(); if (size && requestedSize != *size) img = img.scaled(requestedSize); + m_fetcher.fetchedData.clear(); return img; } +private: + Fetcher m_fetcher; + QMutex m_mutex; }; GettingStartedWelcomePage::GettingStartedWelcomePage() @@ -202,3 +228,4 @@ void GettingStartedWelcomePage::updateTagsModel() } // namespace Internal } // namespace QtSupport +#include "gettingstartedwelcomepage.moc" diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index ca9a457c66f..f8e829a2e08 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -58,7 +58,7 @@ #include #include -enum ModelRoles { VersionIdRole = Qt::UserRole, BuildLogRole, BuildRunningRole}; +enum ModelRoles { VersionIdRole = Qt::UserRole, ToolChainIdRole, BuildLogRole, BuildRunningRole}; using namespace QtSupport; using namespace QtSupport::Internal; @@ -172,6 +172,7 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList item->setText(0, version->displayName()); item->setText(1, QDir::toNativeSeparators(version->qmakeCommand())); item->setData(0, VersionIdRole, version->uniqueId()); + item->setData(0, ToolChainIdRole, defaultToolChainId(version)); const ValidityInfo info = validInformation(version); item->setIcon(0, info.icon); } @@ -204,6 +205,8 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList connect(m_debuggingHelperUi->showLogButton, SIGNAL(clicked()), this, SLOT(slotShowDebuggingBuildLog())); + connect(m_debuggingHelperUi->toolChainComboBox, SIGNAL(activated(int)), + this, SLOT(selectedToolChainChanged(int))); connect(m_ui->cleanUpButton, SIGNAL(clicked()), this, SLOT(cleanUpQtVersions())); userChangedCurrentVersion(); @@ -288,11 +291,6 @@ void QtOptionsPageWidget::debuggingHelperBuildFinished(int qtVersionId, const QS if (tools & DebuggingHelperBuildTask::QmlObserver) success &= version->hasQmlObserver(); - // Update bottom control if the selection is still the same - if (index == currentIndex()) { - updateDebuggingHelperUi(); - } - if (!success) showDebuggingBuildLog(item); } @@ -331,15 +329,30 @@ void QtOptionsPageWidget::toolChainsUpdated() { for (int i = 0; i < m_versions.count(); ++i) { QTreeWidgetItem *item = treeItemForIndex(i); - if (item == m_ui->qtdirList->currentItem()) + if (item == m_ui->qtdirList->currentItem()) { updateDescriptionLabel(); - else { + updateDebuggingHelperUi(); + } else { const ValidityInfo info = validInformation(m_versions.at(i)); item->setIcon(0, info.icon); } } } +void QtOptionsPageWidget::selectedToolChainChanged(int comboIndex) +{ + const int index = currentIndex(); + if (index < 0) + return; + + QTreeWidgetItem *item = treeItemForIndex(index); + QTC_ASSERT(item, return); + + QString toolChainId = m_debuggingHelperUi->toolChainComboBox->itemData(comboIndex).toString(); + + item->setData(0, ToolChainIdRole, toolChainId); +} + void QtOptionsPageWidget::qtVersionsDumpUpdated(const QString &qmakeCommand) { foreach (BaseQtVersion *version, m_versions) { @@ -429,6 +442,14 @@ QList QtOptionsPageWidget::toolChains(const BaseQtV return toolChains.values(); } +QString QtOptionsPageWidget::defaultToolChainId(const BaseQtVersion *version) +{ + QList possibleToolChains = toolChains(version); + if (!possibleToolChains.isEmpty()) + return possibleToolChains.first()->id(); + return QString(); +} + void QtOptionsPageWidget::buildDebuggingHelper(DebuggingHelperBuildTask::Tools tools) { const int index = currentIndex(); @@ -574,6 +595,7 @@ void QtOptionsPageWidget::addQtDir() item->setText(0, version->displayName()); item->setText(1, QDir::toNativeSeparators(version->qmakeCommand())); item->setData(0, VersionIdRole, version->uniqueId()); + item->setData(0, ToolChainIdRole, defaultToolChainId(version)); item->setIcon(0, version->isValid()? m_validVersionIcon : m_invalidVersionIcon); m_ui->qtdirList->setCurrentItem(item); // should update the rest of the ui m_versionUi->nameEdit->setFocus(); @@ -607,6 +629,8 @@ void QtOptionsPageWidget::editPath() if (qtVersion.isNull()) return; BaseQtVersion *version = QtVersionFactory::createQtVersionFromQMakePath(qtVersion); + if (!version) + return; // Same type? then replace! if (current->type() != version->type()) { // not the same type, error out @@ -629,6 +653,7 @@ void QtOptionsPageWidget::editPath() item->setText(0, version->displayName()); item->setText(1, QDir::toNativeSeparators(version->qmakeCommand())); item->setData(0, VersionIdRole, version->uniqueId()); + item->setData(0, ToolChainIdRole, defaultToolChainId(version)); item->setIcon(0, version->isValid()? m_validVersionIcon : m_invalidVersionIcon); } @@ -785,8 +810,7 @@ void QtOptionsPageWidget::updateDebuggingHelperUi() & !isBuildingQmlObserver); QList toolchains = toolChains(currentVersion()); - QString selectedToolChainId = m_debuggingHelperUi->toolChainComboBox->itemData( - m_debuggingHelperUi->toolChainComboBox->currentIndex()).toString(); + QString selectedToolChainId = currentItem->data(0, ToolChainIdRole).toString(); m_debuggingHelperUi->toolChainComboBox->clear(); for (int i = 0; i < toolchains.size(); ++i) { if (!toolchains.at(i)->isValid()) @@ -802,14 +826,17 @@ void QtOptionsPageWidget::updateDebuggingHelperUi() const bool hasLog = currentItem && !currentItem->data(0, BuildLogRole).toString().isEmpty(); m_debuggingHelperUi->showLogButton->setEnabled(hasLog); - m_debuggingHelperUi->rebuildButton->setEnabled((!isBuildingGdbHelper - && !isBuildingQmlDumper - && !isBuildingQmlDebuggingLib - && !isBuildingQmlObserver) - && (canBuildGdbHelper - || canBuildQmlDumper - || (canBuildQmlDebuggingLib && needsQmlDebuggingLib) - || canBuildQmlObserver)); + const bool canBuild = canBuildGdbHelper + || canBuildQmlDumper + || (canBuildQmlDebuggingLib && needsQmlDebuggingLib) + || canBuildQmlObserver; + const bool isBuilding = isBuildingGdbHelper + || isBuildingQmlDumper + || isBuildingQmlDebuggingLib + || isBuildingQmlObserver; + + m_debuggingHelperUi->rebuildButton->setEnabled(canBuild && !isBuilding); + m_debuggingHelperUi->toolChainComboBox->setEnabled(canBuild && !isBuilding); m_ui->debuggingHelperWidget->setVisible(true); } diff --git a/src/plugins/qtsupport/qtoptionspage.h b/src/plugins/qtsupport/qtoptionspage.h index 99c1fe4ace9..743cd5a4ba5 100644 --- a/src/plugins/qtsupport/qtoptionspage.h +++ b/src/plugins/qtsupport/qtoptionspage.h @@ -111,9 +111,11 @@ private slots: void buildQmlDebuggingLibrary(); void buildQmlObserver(); void slotShowDebuggingBuildLog(); - void debuggingHelperBuildFinished(int qtVersionId, const QString &output, DebuggingHelperBuildTask::Tools tools); + void debuggingHelperBuildFinished(int qtVersionId, const QString &output, + DebuggingHelperBuildTask::Tools tools); void cleanUpQtVersions(); void toolChainsUpdated(); + void selectedToolChainChanged(int index); void qtVersionsDumpUpdated(const QString &qmakeCommand); @@ -125,6 +127,7 @@ private: }; ValidityInfo validInformation(const BaseQtVersion *version); QList toolChains(const BaseQtVersion *version); + QString defaultToolChainId(const BaseQtVersion *verison); }; class QtOptionsPage : public Core::IOptionsPage diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index a259363c174..6c8878a1582 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -498,13 +498,8 @@ void QtVersionManager::updateDocumentation() helpManager->registerDocumentation(files); } -void QtVersionManager::updateQtVersion(int id) +void QtVersionManager::updateDumpFor(const QString &qmakeCommand) { - BaseQtVersion *qtVersion = version(id); - QTC_ASSERT(qtVersion, return); - - // update actually all Qt versions with the same qmake command - const QString qmakeCommand = qtVersion->qmakeCommand(); foreach (BaseQtVersion *v, versions()) { if (v->qmakeCommand() == qmakeCommand) v->recheckDumper(); diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h index 83462411870..9ab0f65529a 100644 --- a/src/plugins/qtsupport/qtversionmanager.h +++ b/src/plugins/qtsupport/qtversionmanager.h @@ -124,7 +124,7 @@ signals: void updateExamples(QString, QString, QString); public slots: - void updateQtVersion(int id); + void updateDumpFor(const QString &qmakeCommand); private slots: void updateSettings(); diff --git a/src/plugins/remotelinux/maemoinstalltosysrootstep.cpp b/src/plugins/remotelinux/maemoinstalltosysrootstep.cpp index 0a94b4cc0af..f46f5fc0833 100644 --- a/src/plugins/remotelinux/maemoinstalltosysrootstep.cpp +++ b/src/plugins/remotelinux/maemoinstalltosysrootstep.cpp @@ -241,11 +241,10 @@ BuildStepConfigWidget *MaemoInstallDebianPackageToSysrootStep::createConfigWidge return new MaemoInstallDebianPackageToSysrootWidget(this); } - QStringList MaemoInstallDebianPackageToSysrootStep::madArguments() const { - return QStringList() << QLatin1String("xdpkg") << QLatin1String("-i") - << QLatin1String("--no-force-downgrade"); + return QStringList() << QLatin1String("xdpkg") << QLatin1String("--no-force-downgrade") + << QLatin1String("-i"); } const QString MaemoInstallDebianPackageToSysrootStep::Id diff --git a/src/plugins/remotelinux/maemoqemuruntimeparser.cpp b/src/plugins/remotelinux/maemoqemuruntimeparser.cpp index 1b3620ac403..ff9c7c8c8d9 100644 --- a/src/plugins/remotelinux/maemoqemuruntimeparser.cpp +++ b/src/plugins/remotelinux/maemoqemuruntimeparser.cpp @@ -423,7 +423,7 @@ MaemoQemuSettings::OpenGlMode MaemoQemuRuntimeParserV2::openGlTagToEnum(const QS return MaemoQemuSettings::SoftwareRendering; if (tag == QLatin1String("autodetect")) return MaemoQemuSettings::AutoDetect; - QTC_ASSERT(false, /**/); + QTC_CHECK(false); return MaemoQemuSettings::AutoDetect; } diff --git a/src/plugins/remotelinux/publickeydeploymentdialog.cpp b/src/plugins/remotelinux/publickeydeploymentdialog.cpp index 28e2a36290d..303cd9a2951 100644 --- a/src/plugins/remotelinux/publickeydeploymentdialog.cpp +++ b/src/plugins/remotelinux/publickeydeploymentdialog.cpp @@ -33,6 +33,7 @@ #include "linuxdeviceconfiguration.h" #include "sshkeydeployer.h" +#include #include namespace RemoteLinux { @@ -66,7 +67,7 @@ PublicKeyDeploymentDialog::PublicKeyDeploymentDialog(const LinuxDeviceConfigurat tr("Choose Public Key File"), dir, tr("Public Key Files (*.pub);;All Files (*)")); if (publicKeyFileName.isEmpty()) { - reject(); + QTimer::singleShot(0, this, SLOT(reject())); return; } diff --git a/src/plugins/subversion/subversioneditor.cpp b/src/plugins/subversion/subversioneditor.cpp index f978e9035c0..20df0204688 100644 --- a/src/plugins/subversion/subversioneditor.cpp +++ b/src/plugins/subversion/subversioneditor.cpp @@ -113,7 +113,7 @@ QString SubversionEditor::changeUnderCursor(const QTextCursor &c) const VCSBase::DiffHighlighter *SubversionEditor::createDiffHighlighter() const { const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*|^Index: .*|^==*$")); - QTC_ASSERT(filePattern.isValid(), /**/); + QTC_CHECK(filePattern.isValid()); return new VCSBase::DiffHighlighter(filePattern); } diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index de9b301fb67..c4b72d3cc35 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -640,7 +640,7 @@ SubversionSubmitEditor *SubversionPlugin::openSubversionSubmitEditor(const QStri QLatin1String(Constants::SUBVERSIONCOMMITEDITOR_ID), Core::EditorManager::ModeSwitch); SubversionSubmitEditor *submitEditor = qobject_cast(editor); - QTC_ASSERT(submitEditor, /**/); + QTC_CHECK(submitEditor); submitEditor->registerActions(m_submitUndoAction, m_submitRedoAction, m_submitCurrentLogAction, m_submitDiffAction); connect(submitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffCommitFiles(QStringList))); submitEditor->setCheckScriptWorkingDirectory(m_commitRepository); diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index e73516ad7bf..5a8ff5f382f 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -119,7 +119,7 @@ void BaseFileFind::findAll(const QString &txt, Find::FindFlags findFlags) } Core::FutureProgress *progress = Core::ICore::instance()->progressManager()->addTask(m_watcher.future(), - "Search", + tr("Search"), Constants::TASK_SEARCH); progress->setWidget(createProgressWidget()); connect(progress, SIGNAL(clicked()), m_resultWindow, SLOT(popup())); @@ -147,7 +147,7 @@ void BaseFileFind::replaceAll(const QString &txt, Find::FindFlags findFlags) } Core::FutureProgress *progress = Core::ICore::instance()->progressManager()->addTask(m_watcher.future(), - "Search", + tr("Search"), Constants::TASK_SEARCH); progress->setWidget(createProgressWidget()); connect(progress, SIGNAL(clicked()), m_resultWindow, SLOT(popup())); @@ -351,17 +351,27 @@ QStringList BaseFileFind::replaceAll(const QString &text, } else { Utils::FileReader reader; if (reader.fetch(fileName, Core::ICore::instance()->mainWindow())) { + // Keep track of line ending since QTextDocument is '\n' based. + bool convertLineEnding = false; + const QByteArray &data = reader.data(); + const int lf = data.indexOf('\n'); + if (lf > 0 && data.at(lf - 1) == '\r') + convertLineEnding = true; + QTextDocument doc; // ### set the encoding - doc.setPlainText(QString::fromLocal8Bit(reader.data())); - + doc.setPlainText(QString::fromLocal8Bit(data)); applyChanges(&doc, text, changeItems); + QString plainText = doc.toPlainText(); + + if (convertLineEnding) + plainText.replace(QLatin1Char('\n'), QLatin1String("\r\n")); Utils::FileSaver saver(fileName); if (!saver.hasError()) { QTextStream stream(saver.file()); // ### set the encoding - stream << doc.toPlainText(); + stream << plainText; saver.setResult(&stream); } saver.finalize(Core::ICore::instance()->mainWindow()); diff --git a/src/plugins/valgrind/callgrindengine.cpp b/src/plugins/valgrind/callgrindengine.cpp index 72ead6e3503..022314077d4 100644 --- a/src/plugins/valgrind/callgrindengine.cpp +++ b/src/plugins/valgrind/callgrindengine.cpp @@ -101,10 +101,10 @@ Valgrind::ValgrindRunner * CallgrindEngine::runner() return &m_runner; } -void CallgrindEngine::start() +bool CallgrindEngine::start() { emit outputReceived(tr("Profiling %1\n").arg(executable()), Utils::NormalMessageFormat); - ValgrindEngine::start(); + return ValgrindEngine::start(); } void CallgrindEngine::dump() diff --git a/src/plugins/valgrind/callgrindengine.h b/src/plugins/valgrind/callgrindengine.h index 53a10a8a416..e00d21d5db2 100644 --- a/src/plugins/valgrind/callgrindengine.h +++ b/src/plugins/valgrind/callgrindengine.h @@ -49,7 +49,7 @@ public: CallgrindEngine(Analyzer::IAnalyzerTool *tool, const Analyzer::AnalyzerStartParameters &sp, ProjectExplorer::RunConfiguration *runConfiguration); - void start(); + bool start(); Valgrind::Callgrind::ParseData *takeParserData(); diff --git a/src/plugins/valgrind/memcheckengine.cpp b/src/plugins/valgrind/memcheckengine.cpp index 863d6c885de..e98296e27f7 100644 --- a/src/plugins/valgrind/memcheckengine.cpp +++ b/src/plugins/valgrind/memcheckengine.cpp @@ -75,13 +75,13 @@ Valgrind::ValgrindRunner *MemcheckEngine::runner() return &m_runner; } -void MemcheckEngine::start() +bool MemcheckEngine::start() { m_runner.setParser(&m_parser); emit outputReceived(tr("Analyzing memory of %1\n").arg(executable()), Utils::NormalMessageFormat); - ValgrindEngine::start(); + return ValgrindEngine::start(); } void MemcheckEngine::stop() diff --git a/src/plugins/valgrind/memcheckengine.h b/src/plugins/valgrind/memcheckengine.h index 22d00a181ba..0b7e607a9cf 100644 --- a/src/plugins/valgrind/memcheckengine.h +++ b/src/plugins/valgrind/memcheckengine.h @@ -51,7 +51,7 @@ public: MemcheckEngine(Analyzer::IAnalyzerTool *tool, const Analyzer::AnalyzerStartParameters &sp, ProjectExplorer::RunConfiguration *runConfiguration); - void start(); + bool start(); void stop(); QStringList suppressionFiles() const; diff --git a/src/plugins/valgrind/valgrindengine.cpp b/src/plugins/valgrind/valgrindengine.cpp index 6e9728249b4..fc63c24e454 100644 --- a/src/plugins/valgrind/valgrindengine.cpp +++ b/src/plugins/valgrind/valgrindengine.cpp @@ -77,7 +77,7 @@ ValgrindEngine::~ValgrindEngine() delete m_progress; } -void ValgrindEngine::start() +bool ValgrindEngine::start() { emit starting(this); @@ -115,6 +115,8 @@ void ValgrindEngine::start() runner()->startRemotely(sp.connParams); else runner()->start(); + + return true; } void ValgrindEngine::stop() diff --git a/src/plugins/valgrind/valgrindengine.h b/src/plugins/valgrind/valgrindengine.h index 72901fe6489..a6e28b1075c 100644 --- a/src/plugins/valgrind/valgrindengine.h +++ b/src/plugins/valgrind/valgrindengine.h @@ -63,7 +63,7 @@ public: ProjectExplorer::RunConfiguration *runConfiguration); ~ValgrindEngine(); - void start(); + bool start(); void stop(); QString executable() const; diff --git a/src/plugins/vcsbase/diffhighlighter.cpp b/src/plugins/vcsbase/diffhighlighter.cpp index 06560d53ed2..d94458fb342 100644 --- a/src/plugins/vcsbase/diffhighlighter.cpp +++ b/src/plugins/vcsbase/diffhighlighter.cpp @@ -110,7 +110,7 @@ DiffHighlighterPrivate::DiffHighlighterPrivate(const QRegExp &filePattern) : m_diffOutIndicator(QLatin1Char('-')), m_foldingState(StartOfFile) { - QTC_ASSERT(filePattern.isValid(), /**/); + QTC_CHECK(filePattern.isValid()); } DiffFormats DiffHighlighterPrivate::analyzeLine(const QString &text) const diff --git a/src/share/qtcreator/externaltools/qmlviewer.xml b/src/share/qtcreator/externaltools/qmlviewer.xml new file mode 100644 index 00000000000..4638964ce74 --- /dev/null +++ b/src/share/qtcreator/externaltools/qmlviewer.xml @@ -0,0 +1,43 @@ + + + + Runs the current QML file with qmlviewer + Preview (qmlviewer) + Qt Quick + 1 + + %{CurrentProject:QT_INSTALL_BINS}/qmlviewer + qmlviewer + %{CurrentDocument:FilePath} + %{CurrentDocument:Path} + + diff --git a/src/shared/symbianutils/json.cpp b/src/shared/symbianutils/json.cpp index 699ba02d0a0..7ac1c8c2c6a 100644 --- a/src/shared/symbianutils/json.cpp +++ b/src/shared/symbianutils/json.cpp @@ -240,7 +240,7 @@ void JsonValue::parseObject(const char *&from, const char *to) { JDEBUG("parseObject: " << QByteArray(from, to - from)); #ifdef TODO_USE_CREATOR - QTC_ASSERT(*from == '{', /**/); + QTC_CHECK(*from == '{'); #endif ++from; m_type = Object; @@ -263,7 +263,7 @@ void JsonValue::parseArray(const char *&from, const char *to) { JDEBUG("parseArray: " << QByteArray(from, to - from)); #ifdef TODO_USE_CREATOR - QTC_ASSERT(*from == '[', /**/); + QTC_CHECK(*from == '['); #endif ++from; m_type = Array;