From 36f87655962f3d6434640df8284c83ecdb9896d8 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 12 Dec 2014 14:39:30 +0100 Subject: [PATCH 01/36] Doc: prepare for describing JSON-based wizards Move XML-wizard specific information into a separate file. Change-Id: I7fe80c28747fa20d274eae7d3bf0b65f3624fd20 Reviewed-by: Alessandro Portale --- doc/src/howto/creator-vcs.qdoc | 2 +- .../creator-projects-custom-wizards-xml.qdoc | 663 ++++++++++++++++++ .../creator-projects-custom-wizards.qdoc | 634 +---------------- doc/src/qtcreator.qdoc | 3 + 4 files changed, 671 insertions(+), 631 deletions(-) create mode 100644 doc/src/projects/creator-projects-custom-wizards-xml.qdoc diff --git a/doc/src/howto/creator-vcs.qdoc b/doc/src/howto/creator-vcs.qdoc index 886727a5107..9ac51edd7a4 100644 --- a/doc/src/howto/creator-vcs.qdoc +++ b/doc/src/howto/creator-vcs.qdoc @@ -24,7 +24,7 @@ /*! \contentspage {Qt Creator Manual} - \previouspage creator-project-wizards.html + \previouspage creator-project-wizards-xml.html \page creator-version-control.html \nextpage creator-configuring-projects.html diff --git a/doc/src/projects/creator-projects-custom-wizards-xml.qdoc b/doc/src/projects/creator-projects-custom-wizards-xml.qdoc new file mode 100644 index 00000000000..bc4ff8da7eb --- /dev/null +++ b/doc/src/projects/creator-projects-custom-wizards-xml.qdoc @@ -0,0 +1,663 @@ +/**************************************************************************** +** +** Copyright (c) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator +** +** +** GNU Free Documentation License +** +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of this +** file. +** +** +****************************************************************************/ + +// ********************************************************************** +// NOTE: the sections are not ordered by their logical order to avoid +// reshuffling the file each time the index order changes (i.e., often). +// Run the fixnavi.pl script to adjust the links to the index order. +// ********************************************************************** + +/*! + \contentspage {Qt Creator Manual} + \previouspage creator-project-wizards.html + \page creator-project-wizards-xml.html + \nextpage creator-version-control.html + + \title Adding XML-Based Wizards + + To display the XML-based example wizards in \QC, rename wizard_sample.xml as wizard.xml in the + \c {\share\qtcreator\templates\wizards\helloworld} and + \c {\share\qtcreator\templates\wizards\listmodel} folders. After + you restart \QC, the \gui {Custom Classes} + and \gui {Custom Projects} categories (1) appear in the \gui New dialog. For + each category, an icon (2), a display name (3), and a description (4) are + displayed. + + \image qtcreator-custom-project-wizards.png "The New dialog with custom projects and classes" + + A custom wizard defines the user interface of a wizard page. The values the + user enters in the wizard are assigned field names. Field name and value + pairs are then passed to the file creation process. File creation can happen + in the following ways: + + \list 1 + + \li Template-based, where source files that contain placeholders for + the field names are provided. During processing, the placeholders + are replaced by the values from the wizard page. Optionally, + modifier characters are applied. For more information, see + \l{Processing Template Files}. + + \li Generator script, where a script is called to create the files. + + \note This option mainly exists to accommodate existing generator + scripts or cases where complicated algorithmic logic is required + when generating files. Writing cross-platform scripts is inherently + difficult, and therefore, it is not recommended for new wizards. For + more information, see \l{Using Generator Scripts}. + + \endlist + + Custom wizards are located in subdirectories of the following directories: + + \list + + \li \c{share/qtcreator/templates/wizards} + + \li the local user's configuration folder, + \c{$HOME/.config/QtProject/qtcreator/templates/wizards} + + \li \c{%APPDATA%\QtProject\qtcreator\templates\wizards} + + \endlist + + They contain an XML configuration file called wizard.xml, the template + source files, and optionally, the generator script. + + \section1 Creating Project Wizards + + To create a project wizard: + + \list 1 + + \li Make a copy of the \c {share/qtcreator/templates/wizards/helloworld} + or \c {share/qtcreator/templates/wizards/listmodel} folder. + + \li Modify the wizard_example.xml file. + + \li The following code determines the type of the wizard and its place + in the \gui New dialog: + + \code + + + + \endcode + + \list + + \li \c version is the version of the file contents. Do not modify + this value. + + \li \c kind specifies the type of the wizard: \c project or + \c class. + + \li \c class specifies the type of the project. This attribute is + optional. Use the value \c qmakeproject to add Qt specific pages. + + \li \c firstpage specifies the place of the new page in the standard + project wizard. The value 10 ensures that the custom page + appears after the standard pages, as the last page of the + wizard. + + \li \c id is the unique identifier for your wizard. The letter + specifies the position of the wizard within the \c category. The + HelloWorld wizard appears as the first wizard in the second + category in the \gui New dialog. + + \li \c category is the category in which to place the wizard in the + list. The letter specifies the position of the category in the + list in the \gui New dialog. + + \endlist + + \li The following code specifies the icon and text that appear in the + \gui New dialog: + + \code + + console.png + Creates a hello-world-project with custom message. + Erzeugt ein Hello-Welt-Projekt mit einer Nachricht. + Hello World; + Hallo Welt; + Custom Projects + Benutzerdefinierte Projekte + + \endcode + + \list + + \li \c displayCategory appears in the \gui New dialog, under + \gui Projects. + + \li \c icon appears next to the \c displayName in the middle panel + when \c displayCategory is selected. + + \li \c description appears in the right-most panel when + \c displayCategory is selected. + + You can add translations as values for the text elements. Specify the target + language as an attribute for the element. Use locale names (QLocale). + For example, \c {xml:lang="de"}. + + \endlist + + \li Files to be added to the project: + + \list + + \li Template-based: The following code specifies the files to add to + the project: + \code + + + + + \endcode + + \list + + \li \c source specifies the file to copy to the project. The + files must be located in the wizard folder. + + \li \c openeditor indicates that the file is to be opened in an + editor after the wizard has finished. + + \li \c binary indicates that the file is a binary file (for + example, an image file). It is to be copied to the target + folder as is. Placeholders are not replaced with values. + + \li \c target specifies the new filename for the file. The + \c {%ProjectName%} variable is replaced with the string that + users specify in the \gui Name field on the first page of + the wizard. + + \li \c openproject indicates that the file is a project file + which is to be opened after the wizard has finished. + + \endlist + + See also \l{Processing Template Files}. + + \li Generator-script: The following code specifies that the script + \c generate.pl is to be used to create the files: + + \code + + + + + + + + \endcode + + In each argument, the field placeholders are replaced by the + field values. There are additional boolean attributes which give + fine-grained control: + + \list + + \li \c omit-empty specifies that complete argument is to be + omitted when all placeholders expand to empty values. In + the above example, the option \c --source-suffix will + not be passed to the script if the value is empty. + + \li \c write-file indicates that instead of the expanded + value, the value will be written to a temporary file and + its file name will be passed to the script instead. This + is useful for multi-line text fields. + + \endlist + + See also \l{Using Generator Scripts}. + + \endlist + + \li The following code creates a page that specifies settings for the project: + + \code + + Hello World Parameters + Hallo Welt Parameter + + + + Hello world message: + Hallo-Welt-Nachricht: + + + \endcode + + \list + + \li \c fieldpagetitle specifies the title of the page. + + \li \c fields specifies the user interface objects on the page. + + \li \c field specifies one object. You can use a set of interface objects + from QtWidgets classes, derived from QWidget, to create fields. This example + uses QLineEdit to create an input field. For more information about the objects + that you can add, see \l {Supported Widgets}. + + \li \c mandatory specifies whether the field is mandatory (\c true or + \c false). For more information, see QWizardPage::registerField(). + + \li \c name specifies a name that you can use as a placeholder variable in the + template file (for example, \c {%MESSAGE%}). + + \li \c class specifies the type of the \c fieldcontrol. The XML attributes that you + can specify for the field depend on the field type. + + \li For a QLineEdit, \c validator specifies a regular expression to check the + characters allowed in the field. + + \li \c defaulttext specifies text that appears in the field by + default. + + \li For a QLineEdit, \c placeholdertext specifies placeholder text that appears in the + field. + + \li \c fielddescription specifies the field name that appears on the + wizard page. + + \endlist + + \endlist + + \section1 Creating Class Wizards + + The wizard.xml file for a class wizard is very similar to that for a project + wizard. The differences are discussed below. + + To create a class wizard: + + \list 1 + + \li The following code specifies settings for the wizard: + + \code + + + + Creates a QAbstractListModel implementation. + Erzeugt eine Implementierung von QAbstractListModel. + + QAbstractListModel implementation + Implementierung von QAbstractListModel + + Custom Classes + Benutzerdefinierte Klassen + + \endcode + + For more information about the elements and their values, see + \l {Creating Project Wizards}. + + \li The following code specifies the files to add to the project: + + \code + + + + + + + \endcode + + Here, \c target contains the following variables that are used to + construct the filename: + + \list + + \li \c {%ClassName:l%} is replaced with the value of the + \c ClassName field. The modifier \c l converts the string to + lower case, to observe Qt conventions. + + \li \c {%CppSourceSuffix%} and \c {%CppHeaderSuffix%} are + pre-defined. For more information, see + \l{Pre-defined Standard Variables}. + + \endlist + + \code + + + + ListModel parameters + Parameter des ListModel + + + + + + Class name: + Klassenname: + + + + + + class QString + Klasse QString + + + Integer + Ganzzahlwert + + + + Data type: + Datentyp: + + + + \endcode + + In addition to QLineEdit, QComboBox is used in the class wizard to + create a field. Specify the following XML attributes: + + \list + + \li \c defaultindex specifies which comboentry is displayed by default. In the above + example, "0" means that the first comboentry is the default value. + + \li \c comboentries specifies the options in the combobox. + + \li \c value specifies the type of each \c comboentry, QString or integer. + + \li \c comboentrytext specifies the text of the entry. + + \endlist + + \endlist + + \section1 Supported Widgets + + You can use the following interface objects to create fields in the wizards: + + \list + + \li PathChooser utility to set paths + + \li Check boxes with text labels (QCheckBox) + + \li Combined button and popup lists (QComboBox) + + \li One-line text editors (QLineEdit) + + \li Multi-line rich text editors (QTextEdit) + + \endlist + + Using QLineEdit and QComboBox is described in the previous sections. + The following sections show examples of using the other classes and describe the XML + attributes that you can specify for the \c fieldcontrol element of a field in a particular + \c class. + + \section2 Path Choosers + + \code + + + Qt Creator sources: + + \endcode + + The \c defaulttext attribute specifies text that appears in the field by default. + + The text attribute \c expectedkind specifies which type of path is expected: + + \list + + \li \c any accepts any kind of path. + + \li \c file expects a file. + + \li \c directory expects a directory. + + \li \c existingdirectory expects an existing directory. + + \li \c command expects an executable file. + + \li \c existingcommand expects an existing, executable file. + + \endlist + + \section2 Check Boxes + + To make check boxes appear selected by default, set the \c fieldcontrol attribute + \c defaultvalue to \c true. Any other value or omitting the attribute makes the check box + appear not selected. + + For example: + + \code + + + Console application + + \endcode + + For more examples about using check boxes, see \l{Processing Template Files}. + + \section2 Text Editors + + \code + + + License: + + \endcode + + The \c defaulttext attribute specifies text that appears in the field by default. + + The boolean attribute \c acceptRichText sets the property QTextEdit::acceptRichText. + It is disabled by default (as opposed to the default value of QTextEdit::acceptRichText) + to prevent pasting of rich text with formatting, which is not desirable for code templates. + + \section1 Processing Template Files + + When processing a template source file, placeholders specifying the field + names in the format \c{%FIELDNAME%} are replaced by the values entered by + the user. In addition, modifier characters are supported. For example, + \c{%FIELDNAME:u%} specifies that the value is converted to upper case. This + enables generating header guards for C++ header files. + + The following modifier characters are supported: + + \list + + \li \c{l} for lower case. + + \li \c{u} for upper case. + + \li \c{c} for upper case initial letter ("project" > "Project"). + + \endlist + + In the \c{helloworld} example, the placeholder \c %NETWORK% is used together with the + QCheckBox class. The following line is added to the project file: + + \code + %NETWORK%QT += network + \endcode + + And the following field is specified in the wizard.xml: + + \code + + + Include network module + Netzwerk-Modul verwenden + + \endcode + + If the checkbox is checked, the placeholder is replaced by \c truevalue. If it is not + checked, the placeholder is replaced by \c falsevalue. + + You can use conditions to add sections of the file depending on field + values. Use a syntax that is similar to C++ preprocessing, as demonstrated + in the project file of the \c{helloworld} example: + + \code + + @if "%SCRIPT%" == "true" + QT += script + @endif + + \endcode + + The value of the Boolean (QCheckBox) field labeled \c{SCRIPT} determines + whether the script module is added. The expressions must expand to valid + Javascript expressions after field replacement. + + For example, the following field is specified in the wizard.xml: + + \code + + + Include script module + Script-Modul verwenden + + \endcode + + \section1 Pre-defined Standard Variables + + In addition to the field values entered by the user, you can use + the following pre-defined standard values: + + \list + + \li \c {%ProjectName%} is replaced by the name of the project in the + case of project wizards. + + \li \c {%Path%} is replaced by the path to the target directory. For + classes, this is the directory, where the files are created. For + project wizards, an additional subdirectory named after the project + is created. + + \li \c {%TargetPath%} is replaced by the path to the directory where the + actual files are created. For non-project wizards, it is identical + to \c %Path%. For project wizards, it is \c %Path%/%ProjectName%. + + \li \c {%CppSourceSuffix%} is replaced by the default source suffix, + which is defined in \QC in \gui {Tools > Options > C++ > + File Naming}. For example, if users enter \b MyClass, the + filename becomes myclass.cpp when the project is created. + + \li \c {%CppHeaderSuffix%} is replaced by the default header suffix, + which is also defined in \gui {File Naming}. + + \li \c {%CurrentDate%} is replaced by the current date in the format + \c {YYYY-MM-DD} as specified by ISO 8601. + + \li \c {%CurrentTime%} is replaced by the current time in the format + \c {HH:MM:SS} as specified by ISO 8601. + + \li \c {%CurrentDate:Locale%} is replaced by the current date in the short format + specified by the application's locale. + + \li \c {%CurrentTime:Locale%} is replaced by the current time in the short format + specified by the application's locale. + + \li \c {%CurrentDate:ISO%} is replaced by the current date in the format + \c {YYYY-MM-DD} as specified by ISO 8601. + + \li \c {%CurrentTime:ISO%} is replaced by the current time in the format + \c {HH:MM:SS} as specified by ISO 8601. + + \li \c {%CurrentDate:RFC%} is replaced by the current date in the format + \c {DD Mon YYYY}, where \c {Mon} is the three letter month name, as specified by RFC 2822. + + \li \c {%CurrentTime:RFC%} is replaced by the current time in the format + \c {HH:MM:SS} as specified by RFC 2822. + + \endlist + + \section1 Validating User Input + + You can specify validation rules for user input. The rules consist of a + Boolean JavaScript expression and an error message. The placeholders in them + are replaced with values before they are evaluated or displayed. + + Consider the following rule used in the \l{Creating Class Wizards} example: + + \code + + + %ClassName% cannot be used as class name. + %ClassName% kann nicht als Klassenname verwendet werden. + + + \endcode + + It ensures that the class name entered by the user does not match the name + of the base class. If the validation fails, a red label displaying the + message appears at the bottom of the wizard page. + + \section1 Using Generator Scripts + + The values entered in the wizard page are passed to the script + as command line arguments as defined by the wizard configuration file. + + In addition, the script must implement a \c{--dry-run} command line option. + + \QC needs to know the file names before the files are created to check + whether files with identical names already exist, for example. Therefore, + script file generation is a two-step process: + + \list 1 + + \li Determine file names and attributes: The script is called with the + command line \c{--dry-run} option and the field values. It then prints + the relative path names of the files it intends to create, followed by + comma-separated attributes matching those of the \c{} element, for + example: + + \code + myclass.cpp,openeditor + myclass.h,openeditor + myproject.pro,openproject + \endcode + + \li Create files: The script is called with the parameters only in the + working directory. It then actually creates the files. If directories + are needed, the script should create them, too. + + \endlist + + The \c{scriptgeneratedproject} sample wizard illustrates the usage. + A typical script invocation for this example (obtained by running \QC with + \c{--customwizard-verbose}) looks as follows: + + \code + generate.pl --class-name=TestClass --project-name=TestProject --header-suffix=h --source-suffix=cpp --description=/tmp/qtcreatorj26629.txt + \endcode + + By default, the scripts are run in the directory corresponding to + \c %TargetPath%. This can be overridden by specifying the attribute + \c workingdirectory on the element \c generatorscript. For example, if the + script creates the project directory by itself, %Path% can be specified. In + that case, \c --dry-run should output the correct relative paths or absolute + paths constructed using the value of \c %Path%. + +*/ diff --git a/doc/src/projects/creator-projects-custom-wizards.qdoc b/doc/src/projects/creator-projects-custom-wizards.qdoc index 1e4a43b3c4e..f0b1b183b15 100644 --- a/doc/src/projects/creator-projects-custom-wizards.qdoc +++ b/doc/src/projects/creator-projects-custom-wizards.qdoc @@ -26,7 +26,7 @@ \contentspage {Qt Creator Manual} \previouspage creator-project-qmake-libraries.html \page creator-project-wizards.html - \nextpage creator-version-control.html + \nextpage creator-project-wizards-xml.html \title Adding New Custom Wizards @@ -45,636 +45,10 @@ In a class wizard, you can allow developers to specify the class name, base class, and header and source files for the class. - To see how this works, rename wizard_sample.xml as wizard.xml in the - \c {\share\qtcreator\templates\wizards\helloworld} and - \c {\share\qtcreator\templates\wizards\listmodel} folders. After - you restart \QC, the \uicontrol {Custom Classes} - and \uicontrol {Custom Projects} categories (1) appear in the \uicontrol New dialog. For - each category, an icon (2), a display name (3), and a description (4) are - displayed. - - \image qtcreator-custom-project-wizards.png "The New dialog with custom projects and classes" - - \section1 Overview of Custom Wizards - - A custom wizard defines the user interface of a wizard page. The values the - user enters in the wizard are assigned field names. Field name and value - pairs are then passed to the file creation process. File creation can happen - in the following ways: - - \list 1 - - \li Template-based, where source files that contain placeholders for - the field names are provided. During processing, the placeholders - are replaced by the values from the wizard page. Optionally, - modifier characters are applied. For more information, see - \l{Processing Template Files}. - - \li Generator script, where a script is called to create the files. - - \note This option mainly exists to accommodate existing generator - scripts or cases where complicated algorithmic logic is required - when generating files. Writing cross-platform scripts is inherently - difficult, and therefore, it is not recommended for new wizards. For - more information, see \l{Using Generator Scripts}. - - \endlist - - Custom wizards are located in subdirectories of the following directories: + You can create either JSON-based or XML-based wizards. We recommend creating + JSON-based wizards for new projects. \list - - \li \c{share/qtcreator/templates/wizards} - - \li the local user's configuration folder, - \c{$HOME/.config/QtProject/qtcreator/templates/wizards} - - \li \c{%APPDATA%\QtProject\qtcreator\templates\wizards} - + \li \l{Adding XML-Based Wizards} \endlist - - They contain an XML configuration file called wizard.xml, the template - source files, and optionally, the generator script. - - \section1 Creating Project Wizards - - To create a project wizard: - - \list 1 - - \li Make a copy of the \c {share/qtcreator/templates/wizards/helloworld} - or \c {share/qtcreator/templates/wizards/listmodel} folder. - - \li Modify the wizard_example.xml file. - - \li The following code determines the type of the wizard and its place - in the \uicontrol New dialog: - - \code - - - - \endcode - - \list - - \li \c version is the version of the file contents. Do not modify - this value. - - \li \c kind specifies the type of the wizard: \c project or - \c class. - - \li \c class specifies the type of the project. This attribute is - optional. Use the value \c qmakeproject to add Qt specific pages. - - \li \c firstpage specifies the place of the new page in the standard - project wizard. The value 10 ensures that the custom page - appears after the standard pages, as the last page of the - wizard. - - \li \c id is the unique identifier for your wizard. The letter - specifies the position of the wizard within the \c category. The - HelloWorld wizard appears as the first wizard in the second - category in the \uicontrol New dialog. - - \li \c category is the category in which to place the wizard in the - list. The letter specifies the position of the category in the - list in the \uicontrol New dialog. - - \endlist - - \li The following code specifies the icon and text that appear in the - \uicontrol New dialog: - - \code - - console.png - Creates a hello-world-project with custom message. - Erzeugt ein Hello-Welt-Projekt mit einer Nachricht. - Hello World; - Hallo Welt; - Custom Projects - Benutzerdefinierte Projekte - - \endcode - - \list - - \li \c displayCategory appears in the \uicontrol New dialog, under - \uicontrol Projects. - - \li \c icon appears next to the \c displayName in the middle panel - when \c displayCategory is selected. - - \li \c description appears in the right-most panel when - \c displayCategory is selected. - - You can add translations as values for the text elements. Specify the target - language as an attribute for the element. Use locale names (QLocale). - For example, \c {xml:lang="de"}. - - \endlist - - \li Files to be added to the project: - - \list - - \li Template-based: The following code specifies the files to add to - the project: - \code - - - - - \endcode - - \list - - \li \c source specifies the file to copy to the project. The - files must be located in the wizard folder. - - \li \c openeditor indicates that the file is to be opened in an - editor after the wizard has finished. - - \li \c binary indicates that the file is a binary file (for - example, an image file). It is to be copied to the target - folder as is. Placeholders are not replaced with values. - - \li \c target specifies the new filename for the file. The - \c {%ProjectName%} variable is replaced with the string that - users specify in the \uicontrol Name field on the first page of - the wizard. - - \li \c openproject indicates that the file is a project file - which is to be opened after the wizard has finished. - - \endlist - - See also \l{Processing Template Files}. - - \li Generator-script: The following code specifies that the script - \c generate.pl is to be used to create the files: - - \code - - - - - - - - \endcode - - In each argument, the field placeholders are replaced by the - field values. There are additional boolean attributes which give - fine-grained control: - - \list - - \li \c omit-empty specifies that complete argument is to be - omitted when all placeholders expand to empty values. In - the above example, the option \c --source-suffix will - not be passed to the script if the value is empty. - - \li \c write-file indicates that instead of the expanded - value, the value will be written to a temporary file and - its file name will be passed to the script instead. This - is useful for multi-line text fields. - - \endlist - - See also \l{Using Generator Scripts}. - - \endlist - - \li The following code creates a page that specifies settings for the project: - - \code - - Hello World Parameters - Hallo Welt Parameter - - - - Hello world message: - Hallo-Welt-Nachricht: - - - \endcode - - \list - - \li \c fieldpagetitle specifies the title of the page. - - \li \c fields specifies the user interface objects on the page. - - \li \c field specifies one object. You can use a set of interface objects - from QtWidgets classes, derived from QWidget, to create fields. This example - uses QLineEdit to create an input field. For more information about the objects - that you can add, see \l {Supported Widgets}. - - \li \c mandatory specifies whether the field is mandatory (\c true or - \c false). For more information, see QWizardPage::registerField(). - - \li \c name specifies a name that you can use as a placeholder variable in the - template file (for example, \c {%MESSAGE%}). - - \li \c class specifies the type of the \c fieldcontrol. The XML attributes that you - can specify for the field depend on the field type. - - \li For a QLineEdit, \c validator specifies a regular expression to check the - characters allowed in the field. - - \li \c defaulttext specifies text that appears in the field by - default. - - \li For a QLineEdit, \c placeholdertext specifies placeholder text that appears in the - field. - - \li \c fielddescription specifies the field name that appears on the - wizard page. - - \endlist - - \endlist - - \section1 Creating Class Wizards - - The wizard.xml file for a class wizard is very similar to that for a project - wizard. The differences are discussed below. - - To create a class wizard: - - \list 1 - - \li The following code specifies settings for the wizard: - - \code - - - - Creates a QAbstractListModel implementation. - Erzeugt eine Implementierung von QAbstractListModel. - - QAbstractListModel implementation - Implementierung von QAbstractListModel - - Custom Classes - Benutzerdefinierte Klassen - - \endcode - - For more information about the elements and their values, see - \l {Creating Project Wizards}. - - \li The following code specifies the files to add to the project: - - \code - - - - - - - \endcode - - Here, \c target contains the following variables that are used to - construct the filename: - - \list - - \li \c {%ClassName:l%} is replaced with the value of the - \c ClassName field. The modifier \c l converts the string to - lower case, to observe Qt conventions. - - \li \c {%CppSourceSuffix%} and \c {%CppHeaderSuffix%} are - pre-defined. For more information, see - \l{Pre-defined Standard Variables}. - - \endlist - - \code - - - - ListModel parameters - Parameter des ListModel - - - - - - Class name: - Klassenname: - - - - - - class QString - Klasse QString - - - Integer - Ganzzahlwert - - - - Data type: - Datentyp: - - - - \endcode - - In addition to QLineEdit, QComboBox is used in the class wizard to - create a field. Specify the following XML attributes: - - \list - - \li \c defaultindex specifies which comboentry is displayed by default. In the above - example, "0" means that the first comboentry is the default value. - - \li \c comboentries specifies the options in the combobox. - - \li \c value specifies the type of each \c comboentry, QString or integer. - - \li \c comboentrytext specifies the text of the entry. - - \endlist - - \endlist - - \section1 Supported Widgets - - You can use the following interface objects to create fields in the wizards: - - \list - - \li PathChooser utility to set paths - - \li Check boxes with text labels (QCheckBox) - - \li Combined button and popup lists (QComboBox) - - \li One-line text editors (QLineEdit) - - \li Multi-line rich text editors (QTextEdit) - - \endlist - - Using QLineEdit and QComboBox is described in the previous sections. - The following sections show examples of using the other classes and describe the XML - attributes that you can specify for the \c fieldcontrol element of a field in a particular - \c class. - - \section2 Path Choosers - - \code - - - Qt Creator sources: - - \endcode - - The \c defaulttext attribute specifies text that appears in the field by default. - - The text attribute \c expectedkind specifies which type of path is expected: - - \list - - \li \c any accepts any kind of path. - - \li \c file expects a file. - - \li \c directory expects a directory. - - \li \c existingdirectory expects an existing directory. - - \li \c command expects an executable file. - - \li \c existingcommand expects an existing, executable file. - - \endlist - - \section2 Check Boxes - - To make check boxes appear selected by default, set the \c fieldcontrol attribute - \c defaultvalue to \c true. Any other value or omitting the attribute makes the check box - appear not selected. - - For example: - - \code - - - Console application - - \endcode - - For more examples about using check boxes, see \l{Processing Template Files}. - - \section2 Text Editors - - \code - - - License: - - \endcode - - The \c defaulttext attribute specifies text that appears in the field by default. - - The boolean attribute \c acceptRichText sets the property QTextEdit::acceptRichText. - It is disabled by default (as opposed to the default value of QTextEdit::acceptRichText) - to prevent pasting of rich text with formatting, which is not desirable for code templates. - - \section1 Processing Template Files - - When processing a template source file, placeholders specifying the field - names in the format \c{%FIELDNAME%} are replaced by the values entered by - the user. In addition, modifier characters are supported. For example, - \c{%FIELDNAME:u%} specifies that the value is converted to upper case. This - enables generating header guards for C++ header files. - - The following modifier characters are supported: - - \list - - \li \c{l} for lower case. - - \li \c{u} for upper case. - - \li \c{c} for upper case initial letter ("project" > "Project"). - - \endlist - - In the \c{helloworld} example, the placeholder \c %NETWORK% is used together with the - QCheckBox class. The following line is added to the project file: - - \code - %NETWORK%QT += network - \endcode - - And the following field is specified in the wizard.xml: - - \code - - - Include network module - Netzwerk-Modul verwenden - - \endcode - - If the checkbox is checked, the placeholder is replaced by \c truevalue. If it is not - checked, the placeholder is replaced by \c falsevalue. - - You can use conditions to add sections of the file depending on field - values. Use a syntax that is similar to C++ preprocessing, as demonstrated - in the project file of the \c{helloworld} example: - - \code - - @if "%SCRIPT%" == "true" - QT += script - @endif - - \endcode - - The value of the Boolean (QCheckBox) field labeled \c{SCRIPT} determines - whether the script module is added. The expressions must expand to valid - Javascript expressions after field replacement. - - For example, the following field is specified in the wizard.xml: - - \code - - - Include script module - Script-Modul verwenden - - \endcode - - \section1 Pre-defined Standard Variables - - In addition to the field values entered by the user, you can use - the following pre-defined standard values: - - \list - - \li \c {%ProjectName%} is replaced by the name of the project in the - case of project wizards. - - \li \c {%Path%} is replaced by the path to the target directory. For - classes, this is the directory, where the files are created. For - project wizards, an additional subdirectory named after the project - is created. - - \li \c {%TargetPath%} is replaced by the path to the directory where the - actual files are created. For non-project wizards, it is identical - to \c %Path%. For project wizards, it is \c %Path%/%ProjectName%. - - \li \c {%CppSourceSuffix%} is replaced by the default source suffix, - which is defined in \QC in \uicontrol {Tools > Options > C++ > - File Naming}. For example, if users enter \b MyClass, the - filename becomes myclass.cpp when the project is created. - - \li \c {%CppHeaderSuffix%} is replaced by the default header suffix, - which is also defined in \uicontrol {File Naming}. - - \li \c {%CurrentDate%} is replaced by the current date in the format - \c {YYYY-MM-DD} as specified by ISO 8601. - - \li \c {%CurrentTime%} is replaced by the current time in the format - \c {HH:MM:SS} as specified by ISO 8601. - - \li \c {%CurrentDate:Locale%} is replaced by the current date in the short format - specified by the application's locale. - - \li \c {%CurrentTime:Locale%} is replaced by the current time in the short format - specified by the application's locale. - - \li \c {%CurrentDate:ISO%} is replaced by the current date in the format - \c {YYYY-MM-DD} as specified by ISO 8601. - - \li \c {%CurrentTime:ISO%} is replaced by the current time in the format - \c {HH:MM:SS} as specified by ISO 8601. - - \li \c {%CurrentDate:RFC%} is replaced by the current date in the format - \c {DD Mon YYYY}, where \c {Mon} is the three letter month name, as specified by RFC 2822. - - \li \c {%CurrentTime:RFC%} is replaced by the current time in the format - \c {HH:MM:SS} as specified by RFC 2822. - - \endlist - - \section1 Validating User Input - - You can specify validation rules for user input. The rules consist of a - Boolean JavaScript expression and an error message. The placeholders in them - are replaced with values before they are evaluated or displayed. - - Consider the following rule used in the \l{Creating Class Wizards} example: - - \code - - - %ClassName% cannot be used as class name. - %ClassName% kann nicht als Klassenname verwendet werden. - - - \endcode - - It ensures that the class name entered by the user does not match the name - of the base class. If the validation fails, a red label displaying the - message appears at the bottom of the wizard page. - - \section1 Using Generator Scripts - - The values entered in the wizard page are passed to the script - as command line arguments as defined by the wizard configuration file. - - In addition, the script must implement a \c{--dry-run} command line option. - - \QC needs to know the file names before the files are created to check - whether files with identical names already exist, for example. Therefore, - script file generation is a two-step process: - - \list 1 - - \li Determine file names and attributes: The script is called with the - command line \c{--dry-run} option and the field values. It then prints - the relative path names of the files it intends to create, followed by - comma-separated attributes matching those of the \c{} element, for - example: - - \code - myclass.cpp,openeditor - myclass.h,openeditor - myproject.pro,openproject - \endcode - - \li Create files: The script is called with the parameters only in the - working directory. It then actually creates the files. If directories - are needed, the script should create them, too. - - \endlist - - The \c{scriptgeneratedproject} sample wizard illustrates the usage. - A typical script invocation for this example (obtained by running \QC with - \c{--customwizard-verbose}) looks as follows: - - \code - generate.pl --class-name=TestClass --project-name=TestProject --header-suffix=h --source-suffix=cpp --description=/tmp/qtcreatorj26629.txt - \endcode - - By default, the scripts are run in the directory corresponding to - \c %TargetPath%. This can be overridden by specifying the attribute - \c workingdirectory on the element \c generatorscript. For example, if the - script creates the project directory by itself, %Path% can be specified. In - that case, \c --dry-run should output the correct relative paths or absolute - paths constructed using the value of \c %Path%. - */ diff --git a/doc/src/qtcreator.qdoc b/doc/src/qtcreator.qdoc index 3d12ca6a365..bdd124d1e61 100644 --- a/doc/src/qtcreator.qdoc +++ b/doc/src/qtcreator.qdoc @@ -143,6 +143,9 @@ \li \l{Opening Projects} \li \l{Adding Libraries to Projects} \li \l{Adding New Custom Wizards} + \list + \li \l{Adding XML-Based Wizards} + \endlist \endlist \li \l{Using Version Control Systems} \li \l{Configuring Projects} From ef5a784f95aaf7f4419fd2991d3cff08458fdbde Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 12 Dec 2014 16:14:57 +0100 Subject: [PATCH 02/36] Update qbs submodule. To HEAD of 1.3 branch. Change-Id: I1778a3405963768126ea8ab5535a3fc4b8db5d1c Reviewed-by: Joerg Bornemann --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index ce91f562feb..67d039b9684 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit ce91f562feb9b6f45ba8bd5b3fe29e875be7f67f +Subproject commit 67d039b96849fd1a6f45c8fd8ff72c54946519a6 From 7692addd71a625bcd137169e449626bcf1dd4408 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Mon, 15 Dec 2014 11:12:42 +0100 Subject: [PATCH 03/36] Fix desing typo. Change-Id: I3357b57a034e0c5445e7c1d66e6c0d6b89b18b7a Reviewed-by: Leena Miettinen --- ...ode.png => qmldesigner-tutorial-design-mode.png} | Bin doc/src/qtquick/qtquick-app-tutorial.qdoc | 2 +- doc/src/qtquick/qtquick-designer.qdoc | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename doc/images/{qmldesigner-tutorial-desing-mode.png => qmldesigner-tutorial-design-mode.png} (100%) diff --git a/doc/images/qmldesigner-tutorial-desing-mode.png b/doc/images/qmldesigner-tutorial-design-mode.png similarity index 100% rename from doc/images/qmldesigner-tutorial-desing-mode.png rename to doc/images/qmldesigner-tutorial-design-mode.png diff --git a/doc/src/qtquick/qtquick-app-tutorial.qdoc b/doc/src/qtquick/qtquick-app-tutorial.qdoc index 4322a95896b..42757d8f15b 100644 --- a/doc/src/qtquick/qtquick-app-tutorial.qdoc +++ b/doc/src/qtquick/qtquick-app-tutorial.qdoc @@ -102,7 +102,7 @@ \li Click \uicontrol Design to open the file in \QMLD. - \image qmldesigner-tutorial-desing-mode.png "Transitions project in Design Mode" + \image qmldesigner-tutorial-design-mode.png "Transitions project in Design Mode" \li In the \uicontrol Navigator, select \uicontrol Text and press \key Delete to delete it. diff --git a/doc/src/qtquick/qtquick-designer.qdoc b/doc/src/qtquick/qtquick-designer.qdoc index e05beee83cd..3ec1f82b3c7 100644 --- a/doc/src/qtquick/qtquick-designer.qdoc +++ b/doc/src/qtquick/qtquick-designer.qdoc @@ -32,7 +32,7 @@ You can edit \l{Qt Quick UI Forms} (ui.qml files) in \QMLD. \QC opens the UI forms in the \uicontrol Design mode. It is recommended that you use UI forms - for components that you want to desing in \QMLD. + for components that you want to design in \QMLD. \image qmldesigner-visual-editor.png "Visual editor" From 65bb5856d0f771c069f0687bc9382ae963fe126c Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 3 Dec 2014 14:40:08 +0100 Subject: [PATCH 04/36] CppTools: Do not append '/' to fallback header paths ...since this will confuse the completer. Task-number: QTCREATORBUG-13567 Change-Id: I4172d433f23f3907690d4c00f92fadb68fa354e8 Reviewed-by: Erik Verbruggen Reviewed-by: Eike Ziller --- src/plugins/coreplugin/testdatadir.cpp | 11 +---------- src/plugins/cpptools/cppmodelmanager.cpp | 3 +-- src/plugins/cpptools/cppmodelmanager_test.cpp | 2 +- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/plugins/coreplugin/testdatadir.cpp b/src/plugins/coreplugin/testdatadir.cpp index b582d6ea68f..1da766c6236 100644 --- a/src/plugins/coreplugin/testdatadir.cpp +++ b/src/plugins/coreplugin/testdatadir.cpp @@ -38,17 +38,9 @@ using namespace Core::Tests; -static void maybeAppendSlash(QString *string) -{ - const QChar slash = QLatin1Char('/'); - if (!string->endsWith(slash)) - string->append(slash); -} - TestDataDir::TestDataDir(const QString &directory) : m_directory(directory) { - maybeAppendSlash(&m_directory); QFileInfo fi(m_directory); QVERIFY(fi.exists()); QVERIFY(fi.isDir()); @@ -56,7 +48,7 @@ TestDataDir::TestDataDir(const QString &directory) QString TestDataDir::file(const QString &fileName) const { - return directory() + fileName; + return directory() + QLatin1Char('/') + fileName; } QString TestDataDir::directory(const QString &subdir, bool clean) const @@ -66,6 +58,5 @@ QString TestDataDir::directory(const QString &subdir, bool clean) const path += QLatin1Char('/') + subdir; if (clean) path = QDir::cleanPath(path); - maybeAppendSlash(&path); return path; } diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index e2948e9fd75..3ba59d1d88e 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -393,8 +393,7 @@ ProjectPart::HeaderPaths CppModelManager::internalHeaderPaths() const const ProjectInfo pinfo = it.value(); foreach (const ProjectPart::Ptr &part, pinfo.projectParts()) { foreach (const ProjectPart::HeaderPath &path, part->headerPaths) { - const ProjectPart::HeaderPath hp(CppSourceProcessor::cleanPath(path.path), - path.type); + const ProjectPart::HeaderPath hp(QDir::cleanPath(path.path), path.type); if (!headerPaths.contains(hp)) headerPaths += hp; } diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 0e7b35f3643..3d380359529 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -75,7 +75,7 @@ public: { return directory(_("frameworks"), cleaned); } QString fileFromSourcesDir(const QString &fileName) const - { return directory(_("sources")) + fileName; } + { return directory(_("sources")) + QLatin1Char('/') + fileName; } }; // TODO: When possible, use this helper class in all tests From cbc64077d5fb1eb8d9d65bca72b85749f27b2404 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 4 Dec 2014 12:42:31 +0100 Subject: [PATCH 05/36] CppEditor: Fix comment continuation Do not continue a comment with '*' for *foo // and *foo /* Task-number: QTCREATORBUG-13415 Change-Id: I0bf062fb96942930f8c9a268bff832de219c7787 Reviewed-by: Erik Verbruggen Reviewed-by: Eike Ziller --- .../cppdocumentationcommenthelper.cpp | 48 ++++++++++++++++--- src/plugins/cppeditor/cppdoxygen_test.cpp | 18 +++++++ 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/src/plugins/cppeditor/cppdocumentationcommenthelper.cpp b/src/plugins/cppeditor/cppdocumentationcommenthelper.cpp index 094a94c7732..6403aa399c8 100644 --- a/src/plugins/cppeditor/cppdocumentationcommenthelper.cpp +++ b/src/plugins/cppeditor/cppdocumentationcommenthelper.cpp @@ -122,8 +122,8 @@ bool isCppStyleContinuation(const QTextCursor& cursor) return (isPreviousLineCppStyleComment(cursor) || isNextLineCppStyleComment(cursor)); } -/// Check if line is a CppStyle Doxygen comment and the cursor is after the comment -bool isCursorAfterCppComment(const QTextCursor &cursor, const QTextDocument *doc) +bool lineStartsWithCppDoxygenCommentAndCursorIsAfter(const QTextCursor &cursor, + const QTextDocument *doc) { QTextCursor cursorFirstNonBlank(cursor); cursorFirstNonBlank.movePosition(QTextCursor::StartOfLine); @@ -139,6 +139,27 @@ bool isCursorAfterCppComment(const QTextCursor &cursor, const QTextDocument *doc return false; } +bool isCursorAfterNonNestedCppStyleComment(const QTextCursor &cursor, + TextEditor::TextEditorWidget *editorWidget) +{ + QTextDocument *document = editorWidget->document(); + QTextCursor cursorBeforeCppComment(cursor); + while (document->characterAt(cursorBeforeCppComment.position()) != QLatin1Char('/') + && cursorBeforeCppComment.movePosition(QTextCursor::PreviousCharacter)) { + } + + if (!cursorBeforeCppComment.movePosition(QTextCursor::PreviousCharacter)) + return false; + + if (document->characterAt(cursorBeforeCppComment.position()) != QLatin1Char('/')) + return false; + + if (!cursorBeforeCppComment.movePosition(QTextCursor::PreviousCharacter)) + return false; + + return !editorWidget->autoCompleter()->isInComment(cursorBeforeCppComment); +} + bool handleDoxygenCppStyleContinuation(QTextCursor &cursor, QKeyEvent *e) { const int blockPos = cursor.positionInBlock(); @@ -171,16 +192,23 @@ bool handleDoxygenCppStyleContinuation(QTextCursor &cursor, QKeyEvent *e) bool handleDoxygenContinuation(QTextCursor &cursor, QKeyEvent *e, - const QTextDocument *doc, + TextEditor::TextEditorWidget *editorWidget, const bool enableDoxygen, const bool leadingAsterisks) { + const QTextDocument *doc = editorWidget->document(); + // It might be a continuation if: // a) current line starts with /// or //! and cursor is positioned after the comment // b) current line is in the middle of a multi-line Qt or Java style comment - if (enableDoxygen && !cursor.atEnd() && isCursorAfterCppComment(cursor, doc)) - return handleDoxygenCppStyleContinuation(cursor, e); + if (!cursor.atEnd()) { + if (enableDoxygen && lineStartsWithCppDoxygenCommentAndCursorIsAfter(cursor, doc)) + return handleDoxygenCppStyleContinuation(cursor, e); + + if (isCursorAfterNonNestedCppStyleComment(cursor, editorWidget)) + return false; + } // We continue the comment if the cursor is after a comment's line asterisk and if // there's no asterisk immediately after the cursor (that would already be considered @@ -224,6 +252,14 @@ bool handleDoxygenContinuation(QTextCursor &cursor, else newLine.append(QLatin1String(" ")); } else { + // If '*' is not within a comment, skip. + QTextCursor cursorOnFirstNonWhiteSpace(cursor); + const int positionOnFirstNonWhiteSpace = cursor.position() - blockPos + offset; + cursorOnFirstNonWhiteSpace.setPosition(positionOnFirstNonWhiteSpace); + if (!editorWidget->autoCompleter()->isInComment(cursorOnFirstNonWhiteSpace)) + return false; + + // ...otherwise do the continuation int start = offset; while (offset < blockPos && currentLine.at(offset) == QLatin1Char('*')) ++offset; @@ -316,7 +352,7 @@ bool CppDocumentationCommentHelper::handleKeyPressEvent(QKeyEvent *e) const return handleDoxygenContinuation(cursor, e, - m_editorWidget->document(), + m_editorWidget, m_settings.m_enableDoxygen, m_settings.m_leadingAsterisks); } diff --git a/src/plugins/cppeditor/cppdoxygen_test.cpp b/src/plugins/cppeditor/cppdoxygen_test.cpp index 3cd9a13f3b9..c412ab8ee99 100644 --- a/src/plugins/cppeditor/cppdoxygen_test.cpp +++ b/src/plugins/cppeditor/cppdoxygen_test.cpp @@ -268,6 +268,24 @@ void CppEditorPlugin::test_doxygen_comments_data() "void d(); ///\n" "\n" ); + + QTest::newRow("noContinuationForExpressionAndComment1") << _( + "bool preventFolding;\n" + "*foo //|\n" + ) << _( + "bool preventFolding;\n" + "*foo //\n" + "\n" + ); + + QTest::newRow("noContinuationForExpressionAndComment2") << _( + "bool preventFolding;\n" + "*foo /*|\n" + ) << _( + "bool preventFolding;\n" + "*foo /*\n" + " \n" + ); } void CppEditorPlugin::test_doxygen_comments() From dcad56568e39bf6a705f6dd948e0cea1ed1efc5c Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Fri, 5 Dec 2014 15:47:49 +0100 Subject: [PATCH 06/36] CMake: Fix syntax highlighting for cmake files The newest kate definition files for cmake contain no mimetype for the cmake definitions, which lead to us not finding the right definition. Instead add a method to find the definition based on the name, which is not as generic, but we know which one we want for cmake anyway. Task-number: QTCREATORBUG-13588 Change-Id: Ib57fe531a225310c32ca1ef909a31bd7f52c612f Reviewed-by: Guilhem Vallat Reviewed-by: Eike Ziller Reviewed-by: David Schulz --- src/plugins/cmakeprojectmanager/cmakeeditor.cpp | 2 +- src/plugins/texteditor/texteditor.cpp | 14 ++++++++++++++ src/plugins/texteditor/texteditor.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index 873c5b5debe..fa19445743d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -276,7 +276,7 @@ CMakeEditorFactory::CMakeEditorFactory(CMakeSettingsPage *settingsPage) setEditorCreator([]() { return new CMakeEditor; }); setEditorWidgetCreator([]() { return new CMakeEditorWidget; }); setDocumentCreator([]() { return new CMakeDocument; }); - setGenericSyntaxHighlighter(QLatin1String(Constants::CMAKEMIMETYPE)); + setGenericSyntaxHighlighterByName(QLatin1String("CMake")); setCommentStyle(Utils::CommentDefinition::HashStyle); setCodeFoldingSupported(true); diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 0de6b93ee08..51a61203dfb 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -7377,6 +7377,20 @@ void TextEditorFactory::setGenericSyntaxHighlighter(const QString &mimeType) }; } +void TextEditorFactory::setGenericSyntaxHighlighterByName(const QString &name) +{ + d->m_syntaxHighlighterCreator = [this, name]() -> SyntaxHighlighter * { + TextEditor::Highlighter *highlighter = new TextEditor::Highlighter(); + QString definitionId = Manager::instance()->definitionIdByName(name); + if (!definitionId.isEmpty()) { + const QSharedPointer &definition = Manager::instance()->definition(definitionId); + if (!definition.isNull() && definition->isValid()) + highlighter->setDefaultContext(definition->initialContext()); + } + return highlighter; + }; +} + void TextEditorFactory::setAutoCompleterCreator(const AutoCompleterCreator &creator) { d->m_autoCompleterCreator = creator; diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index c364df2ff13..caee57de046 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -667,6 +667,7 @@ public: void setIndenterCreator(const IndenterCreator &creator); void setSyntaxHighlighterCreator(const SyntaxHighLighterCreator &creator); void setGenericSyntaxHighlighter(const QString &mimeType); + void setGenericSyntaxHighlighterByName(const QString &name); void setAutoCompleterCreator(const AutoCompleterCreator &creator); void setEditorActionHandlers(Core::Id contextId, uint optionalActions); From 0a00bac452b4b839a587b65228785b981f144b4e Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 4 Dec 2014 16:29:49 +0100 Subject: [PATCH 07/36] ClangCodeModel: Ignore child diagnostics of type 'note' and 'ignored' This avoids appending "previous declaration here" to the parent diagnostic. Clang's diagnostics are only used in the C++ editor for denoting code warnings. Task-number: QTCREATORBUG-13398 Change-Id: I8ed5ce2cdaa828877596745e29bb55b2d23f9735 Reviewed-by: Erik Verbruggen Reviewed-by: Eike Ziller --- src/plugins/clangcodemodel/semanticmarker.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/clangcodemodel/semanticmarker.cpp b/src/plugins/clangcodemodel/semanticmarker.cpp index 0d7c6946fd2..025ef0398cc 100644 --- a/src/plugins/clangcodemodel/semanticmarker.cpp +++ b/src/plugins/clangcodemodel/semanticmarker.cpp @@ -154,6 +154,12 @@ QList SemanticMarker::diagnostics() const const unsigned size = qMin(ATTACHED_NOTES_LIMIT, numChildren); for (unsigned di = 0; di < size; ++di) { ScopedCXDiagnostic child(clang_getDiagnosticInSet(cxChildren, di)); + + const Diagnostic::Severity severity + = static_cast(clang_getDiagnosticSeverity(child)); + if (severity == Diagnostic::Ignored || severity == Diagnostic::Note) + continue; + spelling.append(QLatin1String("\n ")); spelling.append(Internal::getQString(clang_getDiagnosticSpelling(child))); } From 7386ac35097b5dc7a32a07978eddb4e1338ff7ad Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 12 Dec 2014 13:33:03 +0100 Subject: [PATCH 08/36] iossim: Fix compilation against SDKs earlier than 10.9 Looks like firstObject is not exported in SDKs ealier than 10.9, even though the documentation claims differently. Latest Xcode on OS X 10.7 doesn't provide the 10.9 SDK, so avoid using firstObject and lastObject Change-Id: Ia266c6aa2030d4799a3cec13e97ab7175adf5138 Reviewed-by: Kevin Funk Reviewed-by: Erik Verbruggen --- src/tools/3rdparty/iossim/iphonesimulator.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/3rdparty/iossim/iphonesimulator.mm b/src/tools/3rdparty/iossim/iphonesimulator.mm index b120fab64e8..c75acef7a9d 100644 --- a/src/tools/3rdparty/iossim/iphonesimulator.mm +++ b/src/tools/3rdparty/iossim/iphonesimulator.mm @@ -608,8 +608,8 @@ static void ChildSignal(int /*arg*/) { NSArray* devices = [deviceSet availableDevices]; NSArray* deviceTypeAndVersion = [devTypeId componentsSeparatedByString:@","]; if(deviceTypeAndVersion.count == 2) { - NSString* typeIdentifier = [deviceTypeAndVersion.firstObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - NSString* versionString = [deviceTypeAndVersion.lastObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];; + NSString* typeIdentifier = [[deviceTypeAndVersion objectAtIndex:0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + NSString* versionString = [[deviceTypeAndVersion objectAtIndex:1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];; for (SimDevice* device in devices) { if ([device.deviceType.identifier isEqualToString:typeIdentifier] && [device.runtime.versionString isEqualToString:versionString]) { return device; From c64a3891a20719c66c671ecfea6081d013fcab8b Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 12 Dec 2014 12:13:56 +0100 Subject: [PATCH 09/36] CppEditor: make convert from/to pointer aware of auto Change-Id: Ic378ea1f7fc58fdb9351c9eaa9e9602e568d5ac9 Task-number: QTCREATORBUG-13605 Reviewed-by: Robert Loehning Reviewed-by: Nikolai Kosjar --- src/plugins/cppeditor/cppquickfix_test.cpp | 51 ++++++++++++++++ src/plugins/cppeditor/cppquickfixes.cpp | 68 ++++++++++++++++++---- 2 files changed, 108 insertions(+), 11 deletions(-) diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index c32e96bf586..533f0365820 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -1497,6 +1497,57 @@ void CppEditorPlugin::test_quickfix_data() " f1(*str);\n" "}\n"); + QTest::newRow("ConvertAutoFromPointer") + << CppQuickFixFactoryPtr(new ConvertFromAndToPointer) + << _("void foo() {\n" + " auto @str = new QString(QLatin1String(\"foo\"));\n" + " if (!str->isEmpty())\n" + " str->clear();\n" + " f1(*str);\n" + " f2(str);\n" + "}\n") + << _("void foo() {\n" + " auto str = QString(QLatin1String(\"foo\"));\n" + " if (!str.isEmpty())\n" + " str.clear();\n" + " f1(str);\n" + " f2(&str);\n" + "}\n"); + + QTest::newRow("ConvertAutoFromPointer2") + << CppQuickFixFactoryPtr(new ConvertFromAndToPointer) + << _("void foo() {\n" + " auto *@str = new QString;\n" + " if (!str->isEmpty())\n" + " str->clear();\n" + " f1(*str);\n" + " f2(str);\n" + "}\n") + << _("void foo() {\n" + " auto str = QString();\n" + " if (!str.isEmpty())\n" + " str.clear();\n" + " f1(str);\n" + " f2(&str);\n" + "}\n"); + + QTest::newRow("ConvertAutoToPointer") + << CppQuickFixFactoryPtr(new ConvertFromAndToPointer) + << _("void foo() {\n" + " auto @str = QString(QLatin1String(\"foo\"));\n" + " if (!str.isEmpty())\n" + " str.clear();\n" + " f1(str);\n" + " f2(&str);\n" + "}\n") + << _("void foo() {\n" + " auto @str = new QString(QLatin1String(\"foo\"));\n" + " if (!str->isEmpty())\n" + " str->clear();\n" + " f1(*str);\n" + " f2(str);\n" + "}\n"); + QTest::newRow("InsertQtPropertyMembers_noTriggerInvalidCode") << CppQuickFixFactoryPtr(new InsertQtPropertyMembers) << _("class C { @Q_PROPERTY(typeid foo READ foo) };\n") diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 691d7687dec..5613c60bf2f 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -3862,12 +3862,14 @@ public: enum Mode { FromPointer, FromVariable, FromReference }; ConvertFromAndToPointerOp(const CppQuickFixInterface &interface, int priority, Mode mode, + bool isAutoDeclaration, const SimpleDeclarationAST *simpleDeclaration, const DeclaratorAST *declaratorAST, const SimpleNameAST *identifierAST, Symbol *symbol) : CppQuickFixOperation(interface, priority) , m_mode(mode) + , m_isAutoDeclaration(isAutoDeclaration) , m_simpleDeclaration(simpleDeclaration) , m_declaratorAST(declaratorAST) , m_identifierAST(identifierAST) @@ -3906,6 +3908,8 @@ public: private: void removePointerOperator(ChangeSet &changes) const { + if (!m_declaratorAST->ptr_operator_list) + return; PointerAST *ptrAST = m_declaratorAST->ptr_operator_list->value->asPointer(); QTC_ASSERT(ptrAST, return); const int pos = m_file->startOf(ptrAST->star_token); @@ -3942,12 +3946,26 @@ private: } } + void removeNewKeyword(ChangeSet &changes, NewExpressionAST *newExprAST) const + { + // remove 'new' keyword before initializer + changes.remove(m_file->startOf(newExprAST->new_token), + m_file->startOf(newExprAST->new_type_id)); + } + void convertToStackVariable(ChangeSet &changes) const { // Handle the initializer. if (m_declaratorAST->initializer) { - if (NewExpressionAST *newExpression = m_declaratorAST->initializer->asNewExpression()) - removeNewExpression(changes, newExpression); + if (NewExpressionAST *newExpression = m_declaratorAST->initializer->asNewExpression()) { + if (m_isAutoDeclaration) { + if (!newExpression->new_initializer) + changes.insert(m_file->endOf(newExpression), QStringLiteral("()")); + removeNewKeyword(changes, newExpression); + } else { + removeNewExpression(changes, newExpression); + } + } } // Fix all occurrences of the identifier in this function. @@ -3955,10 +3973,15 @@ private: foreach (const SemanticInfo::Use &use, semanticInfo().localUses.value(m_symbol)) { const QList path = astPath(use.line, use.column); AST *idAST = path.last(); + bool declarationFound = false; bool starFound = false; int ampersandPos = 0; bool memberAccess = false; for (int i = path.count() - 2; i >= 0; --i) { + if (path.at(i) == m_declaratorAST) { + declarationFound = true; + break; + } if (MemberAccessAST *memberAccessAST = path.at(i)->asMemberAccess()) { if (m_file->tokenAt(memberAccessAST->access_token).kind() != T_ARROW) continue; @@ -3987,7 +4010,7 @@ private: break; } } - if (!starFound && !memberAccess) { + if (!declarationFound && !starFound && !memberAccess) { if (ampersandPos) { changes.insert(ampersandPos, QLatin1String("&(")); changes.insert(m_file->endOf(idAST->firstToken()), QLatin1String(")")); @@ -4017,11 +4040,13 @@ private: void insertNewExpression(ChangeSet &changes, CallAST *callAST) const { const QString typeName = typeNameOfDeclaration(); - if (typeName.isEmpty()) - return; - changes.insert(m_file->startOf(callAST), - QLatin1String("new ") + typeName + QLatin1Char('(')); - changes.insert(m_file->startOf(callAST->lastToken()), QLatin1String(")")); + if (typeName.isEmpty()) { + changes.insert(m_file->startOf(callAST), QLatin1String("new ")); + } else { + changes.insert(m_file->startOf(callAST), + QLatin1String("new ") + typeName + QLatin1Char('(')); + changes.insert(m_file->startOf(callAST->lastToken()), QLatin1String(")")); + } } void insertNewExpression(ChangeSet &changes, ExpressionListParenAST *exprListAST) const @@ -4054,6 +4079,10 @@ private: AST *idAST = path.last(); bool insertStar = true; for (int i = path.count() - 2; i >= 0; --i) { + if (m_isAutoDeclaration && path.at(i) == m_declaratorAST) { + insertStar = false; + break; + } if (MemberAccessAST *memberAccessAST = path.at(i)->asMemberAccess()) { const int pos = m_file->startOf(memberAccessAST->access_token); changes.replace(pos, pos + 1, QLatin1String("->")); @@ -4076,6 +4105,7 @@ private: } const Mode m_mode; + const bool m_isAutoDeclaration; const SimpleDeclarationAST * const m_simpleDeclaration; const DeclaratorAST * const m_declaratorAST; const SimpleNameAST * const m_identifierAST; @@ -4129,7 +4159,23 @@ void ConvertFromAndToPointer::match(const CppQuickFixInterface &interface, if (!symbol) return; - if (declarator->ptr_operator_list) { + bool isAutoDeclaration = false; + if (symbol->storage() == Symbol::Auto) { + // For auto variables we must deduce the type from the initializer. + if (!declarator->initializer) + return; + + isAutoDeclaration = true; + TypeOfExpression typeOfExpression; + typeOfExpression.init(interface.semanticInfo().doc, interface.snapshot()); + typeOfExpression.setExpandTemplates(true); + CppRefactoringFilePtr file = interface.currentFile(); + Scope *scope = file->scopeAt(declarator->firstToken()); + QList result = typeOfExpression(file->textOf(declarator->initializer).toUtf8(), + scope, TypeOfExpression::Preprocess); + if (!result.isEmpty() && result.first().type()->isPointerType()) + mode = ConvertFromAndToPointerOp::FromPointer; + } else if (declarator->ptr_operator_list) { for (PtrOperatorListAST *ops = declarator->ptr_operator_list; ops; ops = ops->next) { if (ops != declarator->ptr_operator_list) { // Bail out on more complex pointer types (e.g. pointer of pointer, @@ -4144,8 +4190,8 @@ void ConvertFromAndToPointer::match(const CppQuickFixInterface &interface, } const int priority = path.size() - 1; - result.append(new ConvertFromAndToPointerOp(interface, priority, mode, simpleDeclaration, - declarator, identifier, symbol)); + result.append(new ConvertFromAndToPointerOp(interface, priority, mode, isAutoDeclaration, + simpleDeclaration, declarator, identifier, symbol)); } namespace { From 2be6973daf00e60023c2bad4daab4ac20c361eec Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 8 Dec 2014 17:18:32 +0100 Subject: [PATCH 10/36] CppEditor: Updating local uses before matching quick fixes This is necessary since invoking the context menu changes the cursor position, on which the local uses and some refactoring actions depend. Change-Id: I32563085bfb106f754992704e569915b9ee5b127 Task-number: QTCREATORBUG-13388 Reviewed-by: Joerg Bornemann Reviewed-by: Erik Verbruggen Reviewed-by: Eike Ziller --- src/plugins/cppeditor/cppeditor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index dbd5be7ff89..65c834bacad 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -496,7 +496,8 @@ void CppEditorWidget::contextMenuEvent(QContextMenuEvent *e) QSignalMapper mapper; connect(&mapper, SIGNAL(mapped(int)), this, SLOT(performQuickFix(int))); - if (isSemanticInfoValid()) { + if (isSemanticInfoValidExceptLocalUses()) { + d->m_useSelectionsUpdater.update(CppUseSelectionsUpdater::Synchronous); AssistInterface *interface = createAssistInterface(QuickFix, ExplicitlyInvoked); if (interface) { QScopedPointer processor( From ce8ad44692c347a2815ce2b6be991cb0be50dd9c Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 17 Dec 2014 16:59:29 +0100 Subject: [PATCH 11/36] Doc: fix changed UI string in docs and update screenshot Change-Id: I1edd879e7389467fbeee0cb0c78c65900a7fa1dd Reviewed-by: Eike Ziller --- doc/api/first-plugin.qdoc | 2 +- doc/api/images/firstplugin-wizard.png | Bin 42083 -> 16240 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/first-plugin.qdoc b/doc/api/first-plugin.qdoc index d81cee4a13f..b1ffcfa215a 100644 --- a/doc/api/first-plugin.qdoc +++ b/doc/api/first-plugin.qdoc @@ -42,7 +42,7 @@ version that it was created with. \list 1 - \li Select \gui{File > New File or Project > Libraries > Qt Creator Plugin > Choose}. + \li Select \gui{File > New File or Project > Library > Qt Creator Plugin > Choose}. \image firstplugin-wizard.png "Choose the \QC Plugin Wizard" diff --git a/doc/api/images/firstplugin-wizard.png b/doc/api/images/firstplugin-wizard.png index 8ad598e1d216a2ef926a72871e064ce2cb56949a..30b445bb5aec5ebf9196ce56f4d2cf9460044d45 100644 GIT binary patch literal 16240 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 N44$rjF6*2UngC%2+MECY literal 42083 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 Date: Wed, 17 Dec 2014 17:15:42 +0100 Subject: [PATCH 12/36] Doc: replace remaining \gui commands with \uicontrol Missed the Extending Qt Creator Manual the last time I did this. Change-Id: I33b9b59ef204d0f7c6a5f98665c4839c6646c9b1 Reviewed-by: Eike Ziller --- doc/api/coding-style.qdoc | 2 +- doc/api/external-tool-spec.qdoc | 2 +- doc/api/first-plugin.qdoc | 44 ++++++++++++++-------------- doc/api/plugin-metadata.qdoc | 4 +-- doc/api/qtcreator-api.qdoc | 4 +-- doc/api/qtcreator-dev-wizards.qdoc | 8 ++--- doc/api/qtcreator-dev.qdoc | 6 ++-- doc/api/qtcreator-documentation.qdoc | 4 +-- doc/api/qtcreator-ui-text.qdoc | 20 ++++++------- 9 files changed, 47 insertions(+), 47 deletions(-) diff --git a/doc/api/coding-style.qdoc b/doc/api/coding-style.qdoc index c384d7b4e1d..4c061c6e047 100644 --- a/doc/api/coding-style.qdoc +++ b/doc/api/coding-style.qdoc @@ -676,7 +676,7 @@ For example, the Find plugin provides the FindFilter interface for other plugins to implement. With the FindFilter interface, additional search - scopes can be added, that appear in the \gui {Advanced Search} dialog. The + scopes can be added, that appear in the \uicontrol {Advanced Search} dialog. The Find plugin retrieves all FindFilter implementations from the global object pool and presents them in the dialog. The plugin forwards the actual search request to the correct FindFilter implementation, which diff --git a/doc/api/external-tool-spec.qdoc b/doc/api/external-tool-spec.qdoc index d839a27dc14..e30c732d012 100644 --- a/doc/api/external-tool-spec.qdoc +++ b/doc/api/external-tool-spec.qdoc @@ -23,7 +23,7 @@ \title External Tool Specification Files An external tool specification file describes a tool that can be run from - the \gui { Tools > External } menu. + the \uicontrol { Tools > External } menu. It specifies the name of the tool, the executable to run, optional arguments, and how to handle the output from the tool. diff --git a/doc/api/first-plugin.qdoc b/doc/api/first-plugin.qdoc index b1ffcfa215a..8bbad51554b 100644 --- a/doc/api/first-plugin.qdoc +++ b/doc/api/first-plugin.qdoc @@ -42,11 +42,11 @@ version that it was created with. \list 1 - \li Select \gui{File > New File or Project > Library > Qt Creator Plugin > Choose}. + \li Select \uicontrol{File > New File or Project > Library > Qt Creator Plugin > Choose}. \image firstplugin-wizard.png "Choose the \QC Plugin Wizard" - The \gui{Introduction and Project Location} dialog opens. + The \uicontrol{Introduction and Project Location} dialog opens. \image firstplugin-nameandpath.png "Choose Name and Place of the Project" @@ -55,62 +55,62 @@ from the project name. You will choose that name later in the wizard. Continue to the next page. - The \gui{Kit Selection} dialog opens. + The \uicontrol{Kit Selection} dialog opens. \image firstplugin-kitselection.png "Choose the kit to build and run your project with" \li Select the \l{glossary-buildandrun-kit}{kit} to build and run your project with. - For a \QC plugin this needs to be a kit with \gui{Desktop} device type, + For a \QC plugin this needs to be a kit with \uicontrol{Desktop} device type, and a Qt version that is compatible with the Qt version that your \QC was built with (in the best case the exact same build). If you use an incompatible Qt version to build your plugin, you will get errors while \QC tries to load your plugin. Continue to the next page. - The \gui{Plugin Information} dialog opens. + The \uicontrol{Plugin Information} dialog opens. \image firstplugin-pluginsetup.png "Specify Your Plugin Details" - \li In the \gui{Plugin name} field, type \gui{Example}. The name of the plugin + \li In the \uicontrol{Plugin name} field, type \uicontrol{Example}. The name of the plugin is used as its identifier, and also is the base for the file names and classes in the code. \li The values of the following fields are mainly informational, and are shown in the detailed view in \QC's plugin overview - (\gui{Help > About Plugins}, or \gui{Qt Creator > About Plugins} + (\uicontrol{Help > About Plugins}, or \uicontrol{Qt Creator > About Plugins} on Mac). \list - \li \gui{Vendor name} is a short one-word name of the company + \li \uicontrol{Vendor name} is a short one-word name of the company or organization that created the plugin. This is also used for the path name where the plugin will be deployed to. - \li \gui{Copyright} is a one-line, short copyright string. - \li \gui{License} is a multi-line license text (but shouldn't be pages over pages long, + \li \uicontrol{Copyright} is a one-line, short copyright string. + \li \uicontrol{License} is a multi-line license text (but shouldn't be pages over pages long, since the interface doesn't allow nice reading of long texts). - \li \gui{Description} is a relatively short, but + \li \uicontrol{Description} is a relatively short, but possibly multi-line description of what the plugin does. - \li \gui{URL} is a website where the user can find more + \li \uicontrol{URL} is a website where the user can find more information about the plugin and/or organization providing it. \endlist - \li Set the \gui{Qt Creator sources} and \gui{Qt Creator build} fields to + \li Set the \uicontrol{Qt Creator sources} and \uicontrol{Qt Creator build} fields to the source and build directory of the \QC instance you want to use to test your plugin with, respectively. If you don't do that correctly you will get compile errors for your plugin, and your plugin might not show up in \QC at all. - \li In the \gui{Deploy into} list, select \gui{Qt Creator build}. This sets + \li In the \uicontrol{Deploy into} list, select \uicontrol{Qt Creator build}. This sets your .pro file up to deploy your plugin directly into your \QC build's plugin directory (requires you to have write permissions there). - The other option, \gui{Local user settings}, sets your .pro file up to + The other option, \uicontrol{Local user settings}, sets your .pro file up to deploy your plugin into \QC's user plugin path (for example \c{~/.config/QtProject/qtcreator/plugins} on Unix systems). - We choose \gui{Qt Creator build} because we use a self-compiled + We choose \uicontrol{Qt Creator build} because we use a self-compiled \QC, and want the plugin to be only loaded by that \QC instance. Continue to the next page. - The \gui{Project Management} dialog opens. + The \uicontrol{Project Management} dialog opens. \image firstplugin-summary.png "Summary of Created Files" @@ -129,10 +129,10 @@ \image firstplugin-runsettings.png "Specify the Executable to Run" Select the path to the \QC executable from the build that you specified - in the \gui{Qt Creator build} setting in the project wizard and click \gui OK. + in the \uicontrol{Qt Creator build} setting in the project wizard and click \uicontrol OK. \QC starts up, and you can verify that your plugin successfully loaded - by looking for a menu entry \gui{Tools > Example} and by looking for - the plugin in the \gui{About Plugins} dialog. + by looking for a menu entry \uicontrol{Tools > Example} and by looking for + the plugin in the \uicontrol{About Plugins} dialog. \image firstplugin-menuitem.png "Menu Registered by the Plugin" @@ -323,12 +323,12 @@ \snippet exampleplugin/exampleplugin.cpp add menu Here a new menu item is created, the created command added to it, and the menu - added to the \gui{Tools} menu in the menu bar. Again, this is covered in more + added to the \uicontrol{Tools} menu in the menu bar. Again, this is covered in more detail in \l{Menus and Menu Items}. \snippet exampleplugin/exampleplugin.cpp slot implementation This part defines the code that is called when the menu item is triggered. It uses the Qt API to open a message box that displays informative text and - an \gui OK button. + an \uicontrol OK button. */ diff --git a/doc/api/plugin-metadata.qdoc b/doc/api/plugin-metadata.qdoc index 23185141303..4ad28eefdff 100644 --- a/doc/api/plugin-metadata.qdoc +++ b/doc/api/plugin-metadata.qdoc @@ -78,7 +78,7 @@ \li Required \li Boolean \li Optional. Defaults to \c false. - Is used as a hint for the \gui{About Plugins...} dialog, that the user may not + Is used as a hint for the \uicontrol{About Plugins...} dialog, that the user may not manually disable this plugin. Only used for the Core plugin. \row \li Platform @@ -100,7 +100,7 @@ \li Category \li String \li Defaults to \c Utilities. Is used to put related plugins - under the same tree node in the plugin overview \gui{About Plugins...}. + under the same tree node in the plugin overview \uicontrol{About Plugins...}. \row \li Vendor \li String diff --git a/doc/api/qtcreator-api.qdoc b/doc/api/qtcreator-api.qdoc index 81d8e9f77d3..4ee0e7dc8e9 100644 --- a/doc/api/qtcreator-api.qdoc +++ b/doc/api/qtcreator-api.qdoc @@ -202,12 +202,12 @@ \li \l{Core::INavigationWidgetFactory} \row - \li Add an options page to the \gui Options dialog. + \li Add an options page to the \uicontrol Options dialog. \li Add a new page to existing or new category in Tools > Options. \li \l{Core::IOptionsPage} \row - \li Add a find filter to the \gui Find dialog. + \li Add a find filter to the \uicontrol Find dialog. \li Implement any kind of search term based search. \li \l{Find::IFindFilter}, \l{Core::SearchResultWindow} diff --git a/doc/api/qtcreator-dev-wizards.qdoc b/doc/api/qtcreator-dev-wizards.qdoc index 7a4432c8c6d..118b2b05f26 100644 --- a/doc/api/qtcreator-dev-wizards.qdoc +++ b/doc/api/qtcreator-dev-wizards.qdoc @@ -42,7 +42,7 @@ \endlist \li Providing a set of parameters that determine how the wizard shows up - in the list of wizards in the \gui{New File or Project} dialog. + in the list of wizards in the \uicontrol{New File or Project} dialog. When deriving from Core::IWizard, virtual functions returning the values have to be implemented. @@ -117,7 +117,7 @@ \section2 Parameters The parameters listed below determine how the wizard shows up - in the list of wizards in the \gui{New File or Project} dialog. + in the list of wizards in the \uicontrol{New File or Project} dialog. Wizards in Qt Creator are grouped by categories. @@ -190,7 +190,7 @@ On top of that, we implement validation logic to ensure content is entered. We implement QWizardPage::isComplete() to return true when both input widgets - have contents, enabling the \gui{Next} button. For this to happen + have contents, enabling the \uicontrol{Next} button. For this to happen as the user enters text, we need to connect to the changed() signal of the controls and emit QWizardPage::completeChanged() once the complete status changes. @@ -227,7 +227,7 @@ \section2 Plugin Registration - In order for the wizard to be found by the \gui{New} dialog, we need to + In order for the wizard to be found by the \uicontrol{New} dialog, we need to register it with ExtensionSystem::PluginManager, which also takes care of deleting it: diff --git a/doc/api/qtcreator-dev.qdoc b/doc/api/qtcreator-dev.qdoc index b8ef2680f61..34615d37319 100644 --- a/doc/api/qtcreator-dev.qdoc +++ b/doc/api/qtcreator-dev.qdoc @@ -60,7 +60,7 @@ \section2 File, Class and Project Templates - You can extend the wizards in \gui {File > New File or Project} with your + You can extend the wizards in \uicontrol {File > New File or Project} with your own file and project templates by writing XML definition files for them. \list @@ -187,7 +187,7 @@ tool. If starting the tool and handling its output require more complex logic, you can add a menu item to Qt Creator with a plugin. If you need a way to configure the tool in Qt Creator, you can add an - \gui Options page for it. + \uicontrol Options page for it. \list \li \l{http://doc.qt.digia.com/qtcreator/creator-editor-external.html} {Using External Tools} @@ -211,7 +211,7 @@ file, which is then opened within Qt Creator. You provide an editor (probably read-only) for handling this file. For lists of issues, consider creating task list files which are shown in - the \gui {Issues} output + the \uicontrol {Issues} output pane. \list \li \l{http://doc.qt.digia.com/qtcreator/creator-task-lists.html} diff --git a/doc/api/qtcreator-documentation.qdoc b/doc/api/qtcreator-documentation.qdoc index c97f952f3d5..9bbc40c5558 100644 --- a/doc/api/qtcreator-documentation.qdoc +++ b/doc/api/qtcreator-documentation.qdoc @@ -242,7 +242,7 @@ Compare the initial and optimized images to check that image quality is preserved. If the image quality deteriorates, do not use color reduction - (select the \gui {True Color} option, instead). + (select the \uicontrol {True Color} option, instead). You can also see the sizes of the initial and optimized image. @@ -294,7 +294,7 @@ \c {share/doc/qtcreator} directory in the \QC build directory on Windows and Linux, and in the \c {bin/Qt Creator.app/Contents/Resources/app} directory on OS X. You can view the HTML files in a browser and the help files in - the \QC \gui Help mode. For more information about adding the help files to + the \QC \uicontrol Help mode. For more information about adding the help files to \QC, see \l{http://qt-project.org/doc/qtcreator/creator-help.html#adding-external-documentation} {Adding External Documentation}. diff --git a/doc/api/qtcreator-ui-text.qdoc b/doc/api/qtcreator-ui-text.qdoc index 60498d7e6c1..3318a410c1e 100644 --- a/doc/api/qtcreator-ui-text.qdoc +++ b/doc/api/qtcreator-ui-text.qdoc @@ -86,7 +86,7 @@ from the user or carries special weight. \li Use quotation marks ("") around variable values. For example, - \gui {Close Project "qtcreator"}. + \uicontrol {Close Project "qtcreator"}. For consistency, use double quotes to emphasize or set apart file names, directory names, URLs, and so on, in user visible strings. @@ -121,14 +121,14 @@ short, canonical HTML in the source tab of the rich text editor: \c {Note: text.} - In Qt 4.7, use only the \gui Source tab of the Qt Designer rich text + In Qt 4.7, use only the \uicontrol Source tab of the Qt Designer rich text editor. The automatic conversion performed by the rich text editor tab generates a lot of redundant stylesheet information and uses hard-coded fonts that look bad on other platforms and make translation in Qt Linguist difficult. Qt Designer 4.8 has a feature that simplifies the rich text (on by - default), but still, you should verify by looking at the \gui Source tab. + default), but still, you should verify by looking at the \uicontrol Source tab. \section2 Writing Messages @@ -197,7 +197,7 @@ \li Enter the UI text in the field. - \li Click \gui Convert. + \li Click \uicontrol Convert. \endlist @@ -357,9 +357,9 @@ \image qtcreator-dialog.png "Dialog" \li Use the menu item or button name as the dialog name. You can also combine the menu item or button name and the name of the - object that is managed in the dialog. For example, the \gui Add - button in the \gui Documentation options opens the - \gui {Add Documentation} dialog. + object that is managed in the dialog. For example, the \uicontrol Add + button in the \uicontrol Documentation options opens the + \uicontrol {Add Documentation} dialog. \row \li Locator \li Allows you to browse not only files, but any items defined by @@ -398,7 +398,7 @@ \image qtcreator-mode-selector.png "Mode selector" \li You can add a mode for a new type of editor, for example. Use descriptive, but short mode names. They have to fit in the - \gui {Mode selector}. + \uicontrol {Mode selector}. \row \li Output pane \li A pane displayed in the task pane that displays output from Qt Creator. @@ -406,7 +406,7 @@ \li Use descriptive names for output panes. \row \li Sidebar - \li A view available in the \gui Edit and \gui Debug modes that + \li A view available in the \uicontrol Edit and \uicontrol Debug modes that you can use to browse projects, files, and bookmarks, and to view the class hierarchy. \image qtcreator-sidebar-menu.png "Sidebar" @@ -416,7 +416,7 @@ \li View \li An area of the screen that displays information for users and provides them with functions for managing the information. - Available in \gui Debug mode, for interaction with the program + Available in \uicontrol Debug mode, for interaction with the program that is running under the control of the debugger. \image qtcreator-debugger-views.png "Views" \li Use descriptive names for views. From 32b8e71bb775f621bf4d132d86ecb077e8d04d10 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 18 Dec 2014 14:35:30 +0100 Subject: [PATCH 13/36] prune some more qt4 vestiges from project files Change-Id: Ic71e1b4f10b08274d109c24c7c9de7724b25962b Reviewed-by: Eike Ziller Reviewed-by: Oswald Buddenhagen --- share/qtcreator/static.pro | 1 - share/qtcreator/translations/translations.pro | 1 - src/plugins/clangcodemodel/clang_installation.pri | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro index 360fbf39cb7..66af1198f0a 100644 --- a/share/qtcreator/static.pro +++ b/share/qtcreator/static.pro @@ -45,7 +45,6 @@ macx: DATA_DIRS += scripts for(data_dir, DATA_DIRS) { files = $$files($$PWD/$$data_dir/*, true) - win32:files ~= s|\\\\|/|g # Info.plist.in are handled below for(file, files):!contains(file, ".*/Info\\.plist\\.in$"):!exists($$file/*):FILES += $$file } diff --git a/share/qtcreator/translations/translations.pro b/share/qtcreator/translations/translations.pro index 8afeaf67493..ed8cc97062d 100644 --- a/share/qtcreator/translations/translations.pro +++ b/share/qtcreator/translations/translations.pro @@ -51,7 +51,6 @@ extract.commands += \ QMAKE_EXTRA_TARGETS += extract plugin_sources = $$files($$IDE_SOURCE_TREE/src/plugins/*) -win32:plugin_sources ~= s,\\\\,/,g plugin_sources ~= s,^$$re_escape($$IDE_SOURCE_TREE/),,g$$i_flag plugin_sources -= src/plugins/plugins.pro \ src/plugins/helloworld \ # just an example diff --git a/src/plugins/clangcodemodel/clang_installation.pri b/src/plugins/clangcodemodel/clang_installation.pri index 584e844caeb..079b00ebc1d 100644 --- a/src/plugins/clangcodemodel/clang_installation.pri +++ b/src/plugins/clangcodemodel/clang_installation.pri @@ -1,5 +1,5 @@ isEmpty(LLVM_INSTALL_DIR):LLVM_INSTALL_DIR=$$(LLVM_INSTALL_DIR) -LLVM_INSTALL_DIR ~= s,\\\\,/,g +LLVM_INSTALL_DIR = $$clean_path($$LLVM_INSTALL_DIR) DEFINES += CLANG_COMPLETION DEFINES += CLANG_HIGHLIGHTING From 475c065dc8e9d4644e210658755504de614ab112 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Wed, 17 Dec 2014 16:36:29 +0100 Subject: [PATCH 14/36] Removing wrong info from Qt Quick Controls 1.3 template Intentionally breaking string freeze. Change-Id: I163e9e1148e46e539b02f8adb4f6c1e3d58da102 Reviewed-by: Leena Miettinen Reviewed-by: Eike Ziller Reviewed-by: Thomas Hartmann --- .../templates/qtquick/qtquickcontrols_1_3/template.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/template.xml b/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/template.xml index 288bc02c8f9..cb58b474551 100644 --- a/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/template.xml +++ b/share/qtcreator/templates/qtquick/qtquickcontrols_1_3/template.xml @@ -4,5 +4,5 @@ qrcdeployment="qrcdeployment.pri" stubversionminor="1"> Qt Quick Controls 1.3 - Creates a deployable Qt Quick 2 application that contains a .ui.qml file and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.4 or newer. + Creates a deployable Qt Quick 2 application that contains a .ui.qml file and uses Qt Quick Controls. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.4 or newer. From 487b05dba8b6e8f548ec3cd451965fdb6df71e4d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 15 Dec 2014 09:31:53 +0100 Subject: [PATCH 15/36] Adapt bugtracker URL Change-Id: I93a256f18e720edb0bcfc2b409c119abfdcf2a2b Reviewed-by: Alex Blasche --- README | 2 +- dist/known-issues | 2 +- doc/src/howto/qtcreator-faq.qdoc | 2 +- doc/src/overview/creator-issues.qdoc | 6 ++--- src/plugins/help/helpplugin.cpp | 2 +- .../valgrind/callgrind/callgrinddatamodel.cpp | 2 +- src/plugins/valgrind/callgrindtool.cpp | 2 +- .../valgrind/callgrindvisualisation.cpp | 2 +- src/plugins/valgrind/workarounds.h | 2 +- src/tools/qtcreatorcrashhandler/utils.h | 2 +- tests/auto/debugger/tst_dumpers.cpp | 14 +++++------ .../debugger/simple/simple_test_app.cpp | 24 +++++++++---------- tests/system/shared/workarounds.py | 2 +- 13 files changed, 32 insertions(+), 32 deletions(-) diff --git a/README b/README index d59cd8cbf38..a43854af876 100644 --- a/README +++ b/README @@ -83,7 +83,7 @@ http://qt-project.org/wiki/Building_Qt_5_from_Git . When using Visual C++ 2010, you must apply a hotfix that is available from http://support.microsoft.com/kb/2280741 - (See https://bugreports.qt-project.org/browse/QTBUG-11445). + (See https://bugreports.qt.io/browse/QTBUG-11445). For the Visual C++ compilers, it is recommended to use the tool 'jom'. It is a replacement for nmake that utilizes all CPU cores and thus diff --git a/dist/known-issues b/dist/known-issues index dfeb6078c8e..33275b31979 100644 --- a/dist/known-issues +++ b/dist/known-issues @@ -4,7 +4,7 @@ http://qt-project.org/doc/qtcreator/creator-known-issues.html For a complete list of reported issues, see the Qt Bug Tracker: -https://bugreports.qt-project.org/ +https://bugreports.qt.io/ For a list of fixed issues and added features, see the changelog file in the qtcreator\dist folder or the Qt Bug Tracker. diff --git a/doc/src/howto/qtcreator-faq.qdoc b/doc/src/howto/qtcreator-faq.qdoc index 521e2feba02..8c9504c2dcd 100644 --- a/doc/src/howto/qtcreator-faq.qdoc +++ b/doc/src/howto/qtcreator-faq.qdoc @@ -161,7 +161,7 @@ \b {Has a reported issue been addressed?} You can look up any issue in the - \l{http://bugreports.qt-project.org/}{Qt bug tracker}. + \l{https://bugreports.qt.io/}{Qt bug tracker}. \include widgets/creator-faq-qtdesigner.qdocinc diff --git a/doc/src/overview/creator-issues.qdoc b/doc/src/overview/creator-issues.qdoc index 893cdf0c4a5..8725eda4099 100644 --- a/doc/src/overview/creator-issues.qdoc +++ b/doc/src/overview/creator-issues.qdoc @@ -35,7 +35,7 @@ bugs. For a list of fixed issues and added features, see the changelog file in - the \c{qtcreator\dist} folder or the \l{http://bugreports.qt-project.org} + the \c{qtcreator\dist} folder or the \l{https://bugreports.qt.io} {Qt Bug Tracker}. \section1 General Issues @@ -56,7 +56,7 @@ \li Qt 4.7.4 is known to contain a bug exposed by g++ 4.6 which triggers a crash in \QC. For more information, see - \l{http://bugreports.qt-project.org/browse/QTBUG-21265}{QTBUG-21265} + \l{https://bugreports.qt.io/browse/QTBUG-21265}{QTBUG-21265} \li The Okteta KDE custom widget plugin might be installed as part of some Linux distributions. It can cause Qt Designer to crash. For @@ -67,7 +67,7 @@ \li \l{http://bugs.launchpad.net/ubuntu/+source/kdeutils/+bug/662005} {Ubuntu bug 662005} - \li \l{http://bugreports.qt-project.org/browse/QTBUG-12025} + \li \l{https://bugreports.qt.io/browse/QTBUG-12025} {QTBUG-12025} \endlist diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 2cd1973535d..b6c71eaeb6d 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -660,7 +660,7 @@ void HelpPlugin::slotOpenSupportPage() void HelpPlugin::slotReportBug() { - QDesktopServices::openUrl(QUrl(QLatin1String("https://bugreports.qt-project.org"))); + QDesktopServices::openUrl(QUrl(QLatin1String("https://bugreports.qt.io"))); } void HelpPlugin::doSetupIfNeeded() diff --git a/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp b/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp index c1f01bcc84a..7c82d08f723 100644 --- a/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp +++ b/src/plugins/valgrind/callgrind/callgrinddatamodel.cpp @@ -186,7 +186,7 @@ QModelIndex DataModel::indexForObject(const Function *function) const } /** - * Evil workaround for https://bugreports.qt-project.org/browse/QTBUG-1135 + * Evil workaround for https://bugreports.qt.io/browse/QTBUG-1135 * Just replace the bad hyphens by a 'NON-BREAKING HYPHEN' unicode char */ static QString noWrap(const QString &str) diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp index be13feb7e93..b40286cc89d 100644 --- a/src/plugins/valgrind/callgrindtool.cpp +++ b/src/plugins/valgrind/callgrindtool.cpp @@ -794,7 +794,7 @@ QWidget *CallgrindToolPrivate::createWidgets() m_filterProjectCosts = action; // filter - ///FIXME: find workaround for https://bugreports.qt-project.org/browse/QTCREATORBUG-3247 + ///FIXME: find workaround for https://bugreports.qt.io/browse/QTCREATORBUG-3247 QLineEdit *filter = new QLineEdit; filter->setPlaceholderText(tr("Filter...")); connect(filter, SIGNAL(textChanged(QString)), m_updateTimer, SLOT(start())); diff --git a/src/plugins/valgrind/callgrindvisualisation.cpp b/src/plugins/valgrind/callgrindvisualisation.cpp index 8507a1c9b16..0ad4a6c78cd 100644 --- a/src/plugins/valgrind/callgrindvisualisation.cpp +++ b/src/plugins/valgrind/callgrindvisualisation.cpp @@ -54,7 +54,7 @@ // Margin from hardcoded value in: // QGraphicsView::fitInView(const QRectF &rect, // Qt::AspectRatioMode aspectRatioMode) -// Bug report here: https://bugreports.qt-project.org/browse/QTBUG-11945 +// Bug report here: https://bugreports.qt.io/browse/QTBUG-11945 static const int FIT_IN_VIEW_MARGIN = 2; using namespace Valgrind::Callgrind; diff --git a/src/plugins/valgrind/workarounds.h b/src/plugins/valgrind/workarounds.h index 80d545d23bf..0ecd8c20994 100644 --- a/src/plugins/valgrind/workarounds.h +++ b/src/plugins/valgrind/workarounds.h @@ -37,7 +37,7 @@ QT_BEGIN_NAMESPACE class QPalette; QT_END_NAMESPACE -///FIXME: remove this once https://bugreports.qt-project.org/browse/QTCREATORBUG-3247 gets fixed +///FIXME: remove this once https://bugreports.qt.io/browse/QTCREATORBUG-3247 gets fixed QPalette panelPalette(const QPalette &oldPalette, bool lightColored = false); #endif // WORKAROUNDS_H diff --git a/src/tools/qtcreatorcrashhandler/utils.h b/src/tools/qtcreatorcrashhandler/utils.h index 4c7c74bad2e..294503be874 100644 --- a/src/tools/qtcreatorcrashhandler/utils.h +++ b/src/tools/qtcreatorcrashhandler/utils.h @@ -35,7 +35,7 @@ #include const char APPLICATION_NAME[] = "Qt Creator Crash Handler"; -const char URL_BUGTRACKER[] = "https://bugreports.qt-project.org/"; +const char URL_BUGTRACKER[] = "https://bugreports.qt.io/"; QByteArray fileContents(const QString &filePath); diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index f055f9a3afc..54ed8b167dd 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -5299,7 +5299,7 @@ void tst_Dumpers::dumper_data() + Check("vector.1", "[1]", "2", "double"); #endif - // https://bugreports.qt-project.org/browse/QTCREATORBUG-3611 + // https://bugreports.qt.io/browse/QTCREATORBUG-3611 QTest::newRow("Bug3611") << Data("typedef unsigned char byte;\n" "byte f = '2';\n" @@ -5308,7 +5308,7 @@ void tst_Dumpers::dumper_data() + Check("f", "50", "byte") % GdbEngine; - // https://bugreports.qt-project.org/browse/QTCREATORBUG-4904 + // https://bugreports.qt.io/browse/QTCREATORBUG-4904 QTest::newRow("Bug4904") << Data("#include \n" "struct CustomStruct {\n" @@ -5334,7 +5334,7 @@ void tst_Dumpers::dumper_data() #if 0 - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5106 + // https://bugreports.qt.io/browse/QTCREATORBUG-5106 QTest::newRow("Bug5106") << Data("struct A5106 {\n" " A5106(int a, int b) : m_a(a), m_b(b) {}\n" @@ -5356,7 +5356,7 @@ void tst_Dumpers::dumper_data() #endif - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5184 + // https://bugreports.qt.io/browse/QTCREATORBUG-5184 // Note: The report there shows type field "QUrl &" instead of QUrl"); // It's unclear how this can happen. It should never have been like @@ -5382,7 +5382,7 @@ void tst_Dumpers::dumper_data() + Check5("url", "\"http://127.0.0.1/\"", "@QUrl &"); - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5799 + // https://bugreports.qt.io/browse/QTCREATORBUG-5799 QTest::newRow("Bug5799") << Data("typedef struct { int m1; int m2; } S1;\n" "struct S2 : S1 { };\n" @@ -5408,7 +5408,7 @@ void tst_Dumpers::dumper_data() + CheckType("s4.@1.m2", "int"); - // https://bugreports.qt-project.org/browse/QTCREATORBUG-6465 + // https://bugreports.qt.io/browse/QTCREATORBUG-6465 QTest::newRow("Bug6465") << Data("typedef char Foo[20];\n" "Foo foo = \"foo\";\n" @@ -5417,7 +5417,7 @@ void tst_Dumpers::dumper_data() #ifndef Q_OS_WIN - // https://bugreports.qt-project.org/browse/QTCREATORBUG-6857 + // https://bugreports.qt.io/browse/QTCREATORBUG-6857 QTest::newRow("Bug6857") << Data("#include \n" "#include \n" diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index d7d869a6174..ee7cc0bd366 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -5103,7 +5103,7 @@ namespace basic { dummyStatement(&foo); } - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5326 + // https://bugreports.qt.io/browse/QTCREATORBUG-5326 void testChar() { @@ -6360,7 +6360,7 @@ namespace bug842 { void test842() { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-842 + // https://bugreports.qt.io/browse/QTCREATORBUG-842 qWarning("Test"); BREAK_HERE; // Continue. @@ -6375,7 +6375,7 @@ namespace bug3611 { void test3611() { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-3611 + // https://bugreports.qt.io/browse/QTCREATORBUG-3611 typedef unsigned char byte; byte f = '2'; int *x = (int*)&f; @@ -6397,7 +6397,7 @@ namespace bug3611 { namespace bug4019 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-4019 + // https://bugreports.qt.io/browse/QTCREATORBUG-4019 class A4019 { @@ -6423,7 +6423,7 @@ namespace bug4019 { namespace bug4997 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-4997 + // https://bugreports.qt.io/browse/QTCREATORBUG-4997 void test4997() { @@ -6437,7 +6437,7 @@ namespace bug4997 { namespace bug4904 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-4904 + // https://bugreports.qt.io/browse/QTCREATORBUG-4904 struct CustomStruct { int id; @@ -6472,7 +6472,7 @@ namespace bug4904 { namespace bug5046 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5046 + // https://bugreports.qt.io/browse/QTCREATORBUG-5046 struct Foo { int a, b, c; }; @@ -6501,7 +6501,7 @@ namespace bug5046 { namespace bug5106 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5106 + // https://bugreports.qt.io/browse/QTCREATORBUG-5106 class A5106 { @@ -6533,7 +6533,7 @@ namespace bug5106 { namespace bug5184 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5184 + // https://bugreports.qt.io/browse/QTCREATORBUG-5184 // Note: The report there shows type field "QUrl &" instead of QUrl. // It's unclear how this can happen. It should never have been like @@ -6606,7 +6606,7 @@ namespace qc42170 { namespace bug5799 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-5799 + // https://bugreports.qt.io/browse/QTCREATORBUG-5799 typedef struct { int m1; int m2; } S1; @@ -6646,7 +6646,7 @@ namespace bug5799 { namespace bug6813 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-6813 + // https://bugreports.qt.io/browse/QTCREATORBUG-6813 void test6813() { int foo = 0; @@ -6724,7 +6724,7 @@ namespace cp42895 { namespace bug6465 { - // https://bugreports.qt-project.org/browse/QTCREATORBUG-6465 + // https://bugreports.qt.io/browse/QTCREATORBUG-6465 void test6465() { diff --git a/tests/system/shared/workarounds.py b/tests/system/shared/workarounds.py index 36d62ed0f82..e750af7f528 100644 --- a/tests/system/shared/workarounds.py +++ b/tests/system/shared/workarounds.py @@ -60,7 +60,7 @@ def macHackActivateContextMenuItem(item, widget=None): ################ workarounds for issues tracked inside jira ################# -JIRA_URL='https://bugreports.qt-project.org/browse' +JIRA_URL='https://bugreports.qt.io/browse' class JIRA: __instance__ = None From d948408aacad2d12dd62dcbf0f36980fcb4127fa Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 19 Dec 2014 11:29:51 +0100 Subject: [PATCH 16/36] Update qbs submodule. To HEAD of 1.3 branch. Change-Id: I66cd93f5a825319fb4c571eb6f77da7917fb7de0 Reviewed-by: Joerg Bornemann --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 67d039b9684..86e872bd991 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 67d039b96849fd1a6f45c8fd8ff72c54946519a6 +Subproject commit 86e872bd99184fe862bfe30ef43acd9806e34bc5 From 18b1d9270d49a49c713cf75dffad9cdcf3a93edd Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 1 Jan 2015 21:59:23 -0200 Subject: [PATCH 17/36] Enforce prefixes "a/" and "b/" when doing git diff The user can set different prefix using diff.mnemonicprefix or diff.noprefix (see git-config(1)), so we need to force them to the values that the diffeditor and PatchTool expect. Task-number: QTCREATORBUG-13782 Change-Id: I3110a34b2575b89abe840e040690f3f0c36e955b Reviewed-by: Orgad Shaneh --- src/plugins/git/gitclient.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 1b8210bdc58..0f0e7322e6a 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -270,6 +270,7 @@ void GitDiffHandler::addJob(VcsCommand *command, args << QLatin1String("--ignore-space-change"); args << QLatin1String("--unified=") + QString::number( m_controller->contextLinesNumber()); + args << QLatin1String("--src-prefix=a/") << QLatin1String("--dst-prefix=b/"); args << arguments; command->addJob(args, timeout()); } From ebb04e77ee6e49541ee2c7fb655d403d222f1272 Mon Sep 17 00:00:00 2001 From: Knut Petter Svendsen Date: Sat, 3 Jan 2015 22:36:57 +0100 Subject: [PATCH 18/36] ClearCase: Set focus on Ok button Change-Id: I7d872f90bce914100c912db4c310001b8597b102 Reviewed-by: Orgad Shaneh --- src/plugins/clearcase/checkoutdialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/clearcase/checkoutdialog.cpp b/src/plugins/clearcase/checkoutdialog.cpp index 0d9fc756171..8ee423e65c7 100644 --- a/src/plugins/clearcase/checkoutdialog.cpp +++ b/src/plugins/clearcase/checkoutdialog.cpp @@ -36,6 +36,7 @@ #include #include #include +#include namespace ClearCase { namespace Internal { @@ -57,6 +58,8 @@ CheckOutDialog::CheckOutDialog(const QString &fileName, bool isUcm, QWidget *par ui->verticalLayout->insertWidget(1, line); } + + ui->buttonBox->button(QDialogButtonBox::Ok)->setFocus(); } CheckOutDialog::~CheckOutDialog() From 8f920be61b59c654d1a93912b222469137cd24dd Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Fri, 2 Jan 2015 10:56:57 +0200 Subject: [PATCH 19/36] Dumper: Fix PPToken dumper Change-Id: Ia6a062319fdcd84a16e83e8f9c96a440f7e4dec9 Reviewed-by: hjk --- share/qtcreator/debugger/creatortypes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 2c36166a382..fdf301f3602 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -128,8 +128,8 @@ def qdump__CPlusPlus__Token(d, value): def qdump__CPlusPlus__Internal__PPToken(d, value): data, size, alloc = d.byteArrayData(value["m_src"]) - length = int(value["f"]["length"]) - offset = int(value["offset"]) + length = int(value["f"]["utf16chars"]) + offset = int(value["utf16charOffset"]) #warn("size: %s, alloc: %s, offset: %s, length: %s, data: %s" # % (size, alloc, offset, length, data)) d.putValue(d.readMemory(data + offset, min(100, length)), From e1b39f1e35c153244890e94ec8a6dbb69f6b1ec7 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Fri, 2 Jan 2015 11:31:16 +0200 Subject: [PATCH 20/36] TextEditor: Adapt include guard to file rename Change-Id: I1a7c677bd0fcee19780dfab02472f081cc22ace7 Reviewed-by: hjk --- src/plugins/texteditor/textdocumentlayout.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/texteditor/textdocumentlayout.h b/src/plugins/texteditor/textdocumentlayout.h index 7f5e46c468f..b1271c37e61 100644 --- a/src/plugins/texteditor/textdocumentlayout.h +++ b/src/plugins/texteditor/textdocumentlayout.h @@ -28,8 +28,8 @@ ** ****************************************************************************/ -#ifndef BASETEXTDOCUMENTLAYOUT_H -#define BASETEXTDOCUMENTLAYOUT_H +#ifndef TEXTDOCUMENTLAYOUT_H +#define TEXTDOCUMENTLAYOUT_H #include "texteditor_global.h" @@ -229,4 +229,4 @@ signals: } // namespace TextEditor -#endif // BASETEXTDOCUMENTLAYOUT_H +#endif // TEXTDOCUMENTLAYOUT_H From 9e32c1abc13bd13365ad4980b367aa0073f4736c Mon Sep 17 00:00:00 2001 From: Knut Petter Svendsen Date: Sat, 3 Jan 2015 21:44:28 +0200 Subject: [PATCH 21/36] ClearCase: Fix not detecting that a file is already checked out ClearCase violates POSIX since it gives a file a new inode when checked out. This gives QtCreator problems with noticing that a file has changed permissions to writeable and thus it will insist on trying to check out the file again in some cases. Change-Id: Ia3f621daff258b3ea5d9ff4f5cec7629ca46e6bd Reviewed-by: Knut Petter Svendsen Reviewed-by: Orgad Shaneh --- src/plugins/clearcase/clearcaseplugin.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index c77a3aa458d..3d697178ca8 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -1648,6 +1649,14 @@ bool ClearCasePlugin::vcsOpen(const QString &workingDir, const QString &fileName && !m_settings.disableIndexer) { setStatus(absPath, FileStatus::CheckedOut); } + + foreach (DocumentModel::Entry *e, DocumentModel::entries()) { + if (e->fileName() == absPath) { + e->document->checkPermissions(); + break; + } + } + return !response.error; } return true; From 4ee78bfb8a526f250184958fda717032b47a5e96 Mon Sep 17 00:00:00 2001 From: Raphael Kubo da Costa Date: Tue, 30 Dec 2014 16:33:15 +0200 Subject: [PATCH 22/36] buildoutputparser: Respect $QTC_PREFIX. Do what all other targets already do and take $$QTC_PREFIX into consideration when setting the target's installation path. Change-Id: I6ca87d36b345ec256518fe2d349e58d213f5c6d5 Reviewed-by: Christian Kandeler Reviewed-by: Tobias Hunger --- src/tools/buildoutputparser/buildoutputparser.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/buildoutputparser/buildoutputparser.pro b/src/tools/buildoutputparser/buildoutputparser.pro index 4f762f2b022..207890898ed 100644 --- a/src/tools/buildoutputparser/buildoutputparser.pro +++ b/src/tools/buildoutputparser/buildoutputparser.pro @@ -13,7 +13,7 @@ include(../../rpath.pri) win32|equals(TEST, 1):DEFINES += HAS_MSVC_PARSER DESTDIR = $$IDE_BIN_PATH -target.path = /bin +target.path = $$QTC_PREFIX/bin INSTALLS += target SOURCES = \ From 3397e1c89b3f714eb5006aeeff7a01efda53a936 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 22 Dec 2014 23:16:31 +0200 Subject: [PATCH 23/36] ProjectExplorer: Add missing "return"s in MsvcToolChain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I62f830104fa9f3599a9e5ea85f404dd17c6ea38f Reviewed-by: André Hartmann Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/msvctoolchain.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index cbf49621660..082738c58e4 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -391,16 +391,14 @@ QList MsvcToolChain::suggestedMkspecList() const case Abi::WindowsMsvc2010Flavor: return QList() << Utils::FileName::fromLatin1("win32-msvc2010"); case Abi::WindowsMsvc2012Flavor: - QList() + return QList() << Utils::FileName::fromLatin1("win32-msvc2012") << Utils::FileName::fromLatin1("win32-msvc2010"); - break; case Abi::WindowsMsvc2013Flavor: - QList() + return QList() << Utils::FileName::fromLatin1("win32-msvc2013") << Utils::FileName::fromLatin1("win32-msvc2012") << Utils::FileName::fromLatin1("win32-msvc2010"); - break; default: break; } From b158b7e51dee1c14848359b4c6960bd048e6221a Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 6 Jan 2015 08:39:05 +0200 Subject: [PATCH 24/36] Theming: Use a lighter color for splitters in the dark theme This is a workaround for 3.3. In master the splitter color (among some other widgets) should have its own value. Task-number: QTCREATORBUG-13768 Change-Id: I8456fba3866e4857985e07a4708333952512484d Reviewed-by: Eike Ziller --- src/plugins/coreplugin/manhattanstyle.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index ef849f427c3..aec3259de7d 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -619,7 +619,10 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt switch (element) { case CE_Splitter: - painter->fillRect(option->rect, Utils::StyleHelper::borderColor()); + if (creatorTheme()->widgetStyle() == Theme::StyleFlat) + painter->fillRect(option->rect, creatorTheme()->color(Theme::BackgroundColorSelected)); + else + painter->fillRect(option->rect, Utils::StyleHelper::borderColor()); break; case CE_TabBarTabShape: From a5e2b4b149ade9ea4260c12be1db9e423cdedc74 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 5 Jan 2015 11:54:52 +0100 Subject: [PATCH 25/36] CppTools: Check for valid active target The active target might be 0 if e.g. there are not kits and a project is imported. Task-number: QTCREATORBUG-13730 Change-Id: I48ade507fefc555d1d3f8230ba82c00270fa457b Reviewed-by: Tobias Hunger Reviewed-by: Eike Ziller --- src/plugins/cpptools/cppprojects.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/plugins/cpptools/cppprojects.cpp b/src/plugins/cpptools/cppprojects.cpp index 2e35d4a178d..ff7a636b2aa 100644 --- a/src/plugins/cpptools/cppprojects.cpp +++ b/src/plugins/cpptools/cppprojects.cpp @@ -37,6 +37,8 @@ #include #include +#include + #include #include @@ -457,12 +459,16 @@ void ProjectPartBuilder::createProjectPart(const QStringList &theSources, CppTools::ProjectPart::Ptr part(m_templatePart->copy()); part->displayName = partName; - Kit *k = part->project->activeTarget()->kit(); - if (ToolChain *tc = ToolChainKitInformation::toolChain(k)) - part->evaluateToolchain(tc, - languageVersion >= ProjectPart::CXX98 ? m_cxxFlags - : m_cFlags, - SysRootKitInformation::sysRoot(k)); + QTC_ASSERT(part->project, return); + if (ProjectExplorer::Target *activeTarget = part->project->activeTarget()) { + if (Kit *kit = activeTarget->kit()) { + if (ToolChain *toolChain = ToolChainKitInformation::toolChain(kit)) { + const QStringList flags = languageVersion >= ProjectPart::CXX98 ? m_cxxFlags + : m_cFlags; + part->evaluateToolchain(toolChain, flags, SysRootKitInformation::sysRoot(kit)); + } + } + } part->languageExtensions |= languageExtensions; From bced09cd1f195c5fb8dde34efae1fd7835d0c59e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Jan 2015 14:35:22 +0100 Subject: [PATCH 26/36] QmlDesigner.PropertyEditor: Fix control for saturation If the lightness or saturation are 0 then hue is undefined. If lightness is 0 then saturation is undefined/0. Nevertheless we should keep the old values in the ui, because the user should not loose the values in case he increases lightness or saturation later. Change-Id: I9fd80f6ca84fa08ef62d9fbb6dd4afce992c3546 Reviewed-by: Tim Jenssen --- .../HelperWidgets/ColorButton.qml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorButton.qml index 6f0b0ef7cf5..8fe2ca171ae 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/HelperWidgets/ColorButton.qml @@ -74,9 +74,17 @@ Item { block = true colorButton.color = Qt.hsla(hue, saturation, lightness, alpha); - hueSlider.value = hue - hueSlider2.value = hue - saturationSlider.value = saturation + + if (saturation > 0.0 && lightness > 0.0) { + hueSlider.value = hue + hueSlider2.value = hue + } + + if (lightness > 0.0) + saturationSlider.value = saturation + else + saturation = saturationSlider.value + lightnessSlider.value = lightness alphaSlider.value = alpha From 77fa5688706dea90b8eb86b0665bee91c59a9235 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 6 Jan 2015 14:34:14 +0100 Subject: [PATCH 27/36] ++year in copyright template Change-Id: I0f2ae9d25a964c2feb9762fcd8ceca72a5f42d7e Reviewed-by: Eike Ziller --- dist/copyright_template.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/copyright_template.txt b/dist/copyright_template.txt index 69caf4c2f6e..fed3da5b8b8 100644 --- a/dist/copyright_template.txt +++ b/dist/copyright_template.txt @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of Qt Creator. From 3b86184d12205cff5e10bdc7e22abd7b1455e741 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 16 Dec 2014 17:31:38 +0100 Subject: [PATCH 28/36] Doc: adding JSON-based custom wizards Task-number: QTCREATORBUG-13642 Change-Id: Ie3af0d4bdef33364cc442449ccfb5e770c0c3a99 Reviewed-by: Tobias Hunger --- .../creator-projects-custom-wizards-json.qdoc | 686 ++++++++++++++++++ .../creator-projects-custom-wizards-xml.qdoc | 74 +- .../creator-projects-custom-wizards.qdoc | 59 +- doc/src/qtcreator.qdoc | 1 + 4 files changed, 764 insertions(+), 56 deletions(-) create mode 100644 doc/src/projects/creator-projects-custom-wizards-json.qdoc diff --git a/doc/src/projects/creator-projects-custom-wizards-json.qdoc b/doc/src/projects/creator-projects-custom-wizards-json.qdoc new file mode 100644 index 00000000000..6cb14c6d2d7 --- /dev/null +++ b/doc/src/projects/creator-projects-custom-wizards-json.qdoc @@ -0,0 +1,686 @@ +/**************************************************************************** +** +** Copyright (c) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator +** +** +** GNU Free Documentation License +** +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of this +** file. +** +** +****************************************************************************/ + +// ********************************************************************** +// NOTE: the sections are not ordered by their logical order to avoid +// reshuffling the file each time the index order changes (i.e., often). +// Run the fixnavi.pl script to adjust the links to the index order. +// ********************************************************************** + +/*! + \contentspage {Qt Creator Manual} + \previouspage creator-project-wizards.html + \page creator-project-wizards-json.html + \nextpage creator-project-wizards-xml.html + + \title Adding JSON-Based Wizards + + \image qtcreator-new-qt-gui-application.png + + The JSON-based wizards are displayed in the \uicontrol New dialog. To + customize them, copy a directory that contains a wizard.json file in + \c {share/qtcreator/templates/wizards/} and modify it to fit your needs. + After you run qmake and restart \QC, the wizard name appears in the + selected or added category. For each wizard, an icon, a display name, and + a description are displayed. + + JSON-based wizard template directories contain a JSON configuration file + called wizard.json and the template files. The configuration file contains + sections that specify information about the wizard, variables that you can + use, wizard pages, and generators for creating files. + + \section1 Using Variables in Wizards + + You can use variables (\c %{}) in the configuration and + template source files. A set of variables is predefined by the wizards and + their pages. You can introduce new variables as shortcuts to be used later. + Define the variable key names and values in the \c options section in the + .json file. + + The variables always return strings. In places where a boolean value is + expected and a string is given, an empty string is treated as \c false and + anything else as \c true. A common pitfall is that a string containing + \c "false" is not empty and is therefore treated as the value \c true when + converted to a boolean value. To avoid this pitfall, use the following type + of construction: + + \code + {"condition": "%{JS: ('%{VersionControl}' === 'G.Git') ? 'yes' : ''}" + \endcode + + \section1 Localizing Wizards + + If a setting name starts with the \c tr prefix, the value is visible to + users and should be translated. If the new wizard is included in the \QC + sources, the translatable strings appear in the \QC translation files and + can be translated as a part of \QC. Alternatively, you can place the + translations in the .json file using the following syntax: + + \code + "trDisplayName": { "C": "default", "en_US": "english", "de_DE": "deutsch" } + \endcode + + For example: + + \code + "trDisplayName": { "C": "Project Location", "en_US": "Project Location", "de_DE": "Projekt Verzeichnis" } + \endcode + + \section1 Creating Wizards + + \QC contains wizards for adding classes, files, and projects. You can + use them as basis for adding your own wizards. We use the C++ wizard + to explain the process and the sections and settings in the .json file. + + \image qtcreator-cpp-class-wizard.png + + For more information about the pages and widgets that you can add, see + \l {Available Pages} and \l{Available Widgets}. + + To create a JSON-based C++ class wizard: + + \list 1 + + \li Make a copy of \c {share/qtcreator/templates/wizards/classes/cpp} + and rename it. + + \li Right-click the project name in \uicontrol Projects and select + \uicontrol {Run qmake} to register the new wizard. Basically, qmake + generates a fixed list of files to copy. Therefore, you need to run + qmake each time the names or locations of the files change. + + \li Open the wizard configuration file, \c wizard.json for editing: + + \list + + \li The following settings determine the type of the wizard and + its place in the \uicontrol New dialog: + + \code + "version": 1, + "kind": "class", + "id": "A.Class", + "category": "O.C++", + \endcode + + \list + + \li \c version is the version of the file contents. Do not + modify this value. + + \li \c kind specifies the type of the wizard: \c class, + \c file, or \c project. + + \li \c id is the unique identifier for your wizard. You can + use a leading letter to specify the position of the + wizard within the \c category. + + \li \c category is the category in which to place the wizard + in the list. You can use a leading letter to specify the + position of the category in the list in the + \uicontrol New dialog. + + \li \c disabled is set to to \c true to hide the wizard. By + default, it is set to \c{false}. + \endlist + + \li The following settings specify the icon and text that appear in + the \uicontrol New dialog: + + \code + "trDescription": "Creates a C++ header and a source file for a new class that you can add to a C++ project.", + "trDisplayName": "C++ Class", + "trDisplayCategory": "C++", + "icon": "../../global/genericfilewizard.png", + "featuresRequired": [ "Plugin.CppEditor" ], + \endcode + + \list + + \li \c trDescription appears in the right-most panel when + \c trDisplayCategory is selected. + + \li \c trDisplayName appears in the middle panel when + \c trDisplayCategory is selected. + + \li \c trDisplayCategory appears in the \uicontrol New dialog, + under \uicontrol Projects. + + \li \c icon appears next to the \c trDisplayName in the middle + panel when \c trDisplayCategory is selected. We recommend + that you specify the path relative to the wizard.json file, + but you can also use an absolute path. + + \li \c featuresRequired specifies the \QC features that the + wizard depends on. If a required feature is missing, the + wizard is hidden. For example, if the CppEditor plugin is + disabled, the C++ Class wizard is hidden. + + \li \c featuresPreferred specifies the build and run kits to + preselect. + + \li \c platformIndependent is set to \c true if the wizard is + supported by all target platforms. By default, it is set to + \c{false}. + + \endlist + + \li The \c options section contains an array of objects with \e key + and \e value attributes. You can define your own variables to + use in the configuration and template source files, in addition + to the predefined variables. For example, the following + variables are used in the C++ class creation wizard: + + \code + "options": + [ + { "key": "TargetPath", "value": "%{Path}" }, + { "key": "HdrPath", "value": "%{Path}/%{HdrFileName}" }, + { "key": "SrcPath", "value": "%{Path}/%{SrcFileName}" }, + { "key": "CN", "value": "%{JS: Cpp.className('%{Class}')}" }, + { "key": "Base", "value": "%{JS: ( '%{BaseCB}' === '' ) ? '%{BaseEdit}' : '%{BaseCB}'}" }, + { "key": "isQObject", "value": "%{JS: ('%{Base}' === 'QObject' || '%{Base}' === 'QWidget' || '%{Base}' === 'QMainWindow' || '%{Base}' === 'QDeclarativeItem' || '%{Base}' === 'QQuickItem' ) ? 'yes' : ''}" }, + { "key": "GUARD", "value": "%{JS: Cpp.classToHeaderGuard('%{Class}', '%{JS: Util.preferredSuffix('text/x-c++hdr')}')}" }, + { "key": "SharedDataInit", "value": "%{JS: ('%{IncludeQSharedData}') ? 'data(new %{CN}Data)' : '' }" } + ], + \endcode + + This section is optional. For more examples of variables, see + the wizard.json files for other wizards. + + \li The \c pages section specifies the wizard pages. The pages + used depend on the wizard type. You can add standard pages to + wizards or create new pages using the available widgets. The + following settings specify the display name, title, and type of + the page: + + \code + "pages": + [ + { + "trDisplayName": "Define Class", + "trShortTitle": "Details", + "typeId": "Fields", + "data" : + [ + { + "name": "Class", + "trDisplayName": "Class name:", + "mandatory": true, + "type": "LineEdit", + "data": { "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)+[a-zA-Z_][a-zA-Z_0-9]*|)" } + }, + ... + ] + \endcode + + \list + + \li \c typeId specifies the page to use: \c Fields, \c File, + \c Form, \c Kits, \c Project, or \c Summary. Full page + ID, as used in the code, consists of the \c typeId + prefixed with \c {"PE.Wizard.Page."}. For more + information, about the pages, see \l{Available Pages}. + + \li \c trDisplayName specifies the title of the page. By + default, the page title is used. + + \li \c trShortTitle specifies the title used in the sidebar + of the Wizard. By default, the page title is used. + + \li \c trSubTitle specifies the subtitle of the page. By + default, the page title is used. + + \li \c index is an integer value that specifies the page ID. + It is automatically assigned if you do not set it. + + \li \c enabled is set to \c true to show the page and to + \c false to hide it. + + \li \c data specifies the wizard pages. In the C++ wizard, + it specifies a \c Fields page and a \c Summary page. The + \c Fields page contains the \c CheckBox, \c ComboBox, + \c LineEdit, \c PathChooser, and \c Spacer widgets. For + more information about the widgets, see + \l{Available Widgets}. + + \endlist + + \li The \c generators section specifies the files to be added to the + project: + + \code + "generators": + [ + { + "typeId": "File", + "data": + [ + { + "source": "file.h", + "target": "%{HdrPath}", + "openInEditor": true + }, + { + "source": "file.cpp", + "target": "%{SrcPath}", + "openInEditor": true + } + ] + \endcode + + \list + + \li \c typeId specifies the type of the generator. Currently, + only \c File is supported. + + \li \c data spefices the files to generate. For a each file + to be generated, specify the following values: + + \list + + \li \c source specifies the path and filename of the + template file relative to the wizard.json file. + + \li \c target specifies the location of the generated + file, either absolute or relative to + \c %{TargetPath}, which is usually set by one of the + wizard pages. + + \li \c openInEditor opens the file in the appropriate + editor if it is set to \c{true}. + + \li \c openAsProject opens the project file in \QC if it + is set to \c{true}. + + \li \c condition generates the file if the condition + returns \c{true}. For more information, see + \l{Using Variables in Wizards}. + + \endlist + + \endlist + + \endlist + + \endlist + + \section1 Available Pages + + You can add predefined pages to wizards by specifying them in the \c pages + section of a wizard.json file. + + \section2 Field Page + + A Field page has the \c typeId value \c Field and contains widgets. For more + information about widget definitions, see \l{Available Widgets}. + + \code + "pages": + [ + { + "trDisplayName": "Define Class", + "trShortTitle": "Details", + "typeId": "Fields", + "data" : + [ + { + "name": "Class", + "trDisplayName": "Class name:", + "mandatory": true, + "type": "LineEdit", + "data": { "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)+[a-zA-Z_][a-zA-Z_0-9]*|)" } + }, + ... + ], + \endcode + + \section2 File Page + + A File page has the \c typeId value \c File. You can leave out the \c data + key or assign an empty object to it. + + \code + { + "trDisplayName": "Location", + "trShortTitle": "Location", + "typeId": "File" + }, + \endcode + + The page evaluates \c InitialFileName and \c InitialPath from the wizard to + set the initial path and filename. The page sets \c TargetPath to the full + path of the file to be created. + + \section2 Form Page + + A Form page has the \c typeId value \c Form. You can leave out the \c data + key or assign an empty object to it. + + \code + { + "trDisplayName": "Choose a Form Template", + "trShortTitle": "Form Template", + "typeId": "Form" + }, + \endcode + + The page sets \c FormContents to an array of strings with the form contents. + + \section2 Kits + + A Kits page has the \c typeId value \c Kits. The \c data section of a Kits + page contains an object with the field \c projectFilePath set. + + \code + { + "trDisplayName": "Kit Selection", + "trShortTitle": "Kits", + "typeId": "Kits", + "enabled": "%{IsTopLevelProject}", + "data": { "projectFilePath": "%{ProFileName}" } + }, + \endcode + + The page evaluates \c Platform to set the platform selected in + \uicontrol File > \uicontrol New, \c PreferredFeatures to set the preferred + features for the project, and \c RequiredFeatures to set the required + features for the project. The feature set is used to determine which kits to + display and pre-select for the project. + + \section2 Project + + A Project page has the \c typeId value \c Project. It contains no data or an + empty object. + + \code + { + "trDisplayName": "Project Location", + "trShortTitle": "Location", + "typeId": "Project" + }, + \endcode + + The page evaluates \c InitialPath to set the initial project path. The page + sets \c ProjectDirectory and \c TargetPath to the project directory. + + \section2 Summary + + A Summary page has the \c typeId value \c Summary. It contains no data or + an empty object. + + \code + { + "trDisplayName": "Project Management", + "trShortTitle": "Summary", + "typeId": "Summary" + } + \endcode + + The page sets \c IsSubproject to an empty string if this is a toplevel + project and to \c yes otherwise. It sets \c VersionControl to the ID of the + version control system in use. + + \section1 Available Widgets + + You can add the following widgets on a Field page: + + \list + \li Check Box + \li Combo Box + \li Label + \li Line Edit + \li Path Chooser + \li Spacer + \li Text Edit + \endlist + + Specify the following settings for each widget: + + \list + + \li \c name specifies the widget name. This name is used as the variable + name to access the value again. + + \li \c trDisplayName specifies the label text visible in the UI (if + \c span is not \c true). + + \li \c type specifies the type of the widget: \c CheckBox, \c ComboBox, + \c Label, \c LineEdit, \c PathChooser, \c Spacer, and \c TextEdit. + + \li \c data specifies settings for the widget: + + \list + + \li \c visible is set to \c true if the widget is visible, otherwise + it is set to \c false. By default, it is set to \c true. + + \li \c enabled is set to \c true if the widget is enabled, otherwise + it is set to \c false. By default, it is set to \c true. + + \li \c mandatory is set to \c true if this widget must have a value + for the \uicontrol Next button to become enabled. By default, it + is set to \c true. + + \li \c span is set to hide the label and to span the form. By + default, it is set to \c false. For more information, see + \l{Using Variables in Wizards}. + + \endlist + + The additional settings available for a particular widget are described + in the following sections. + + \endlist + + \section2 Check Box + + \code + { + "name": "IncludeQObject", + "trDisplayName": "Include QObject", + "type": "CheckBox", + "data": + { + "checkedValue": "QObject", + "uncheckedValue": "", + "checked": "%{JS: ('%{BaseCB}' === 'QObject' ) ? 'yes' : ''}" + } + }, + \endcode + + \list + + \li \c checkedValue specifies the value to set when the check box is + enabled. By default, set to \c 0. + + \li \c uncheckedValue specifies the value to set when the check box is + disabled. By default, set to \c 1. + + \li \c checked is set to \c true if the check box is enabled, otherwise + \c{false}. + + \endlist + + \section2 Combo Box + + \code + { + "name": "BaseCB", + "trDisplayName": "Base class:", + "type": "ComboBox", + "data": + { + "items": [ { "trKey": "", "value": "" }, + "QObject", "QWidget", "QMainWindow", "QDeclarativeItem", "QQuickItem" ] + } + }, + \endcode + + \list + + \li \c items specifies a list of items to put into the combo box. The + list can contain both JSON objects and plain strings. For JSON + objects, define \c trKey and \c value pairs, where the \c trKey is + the list item visible to users and \c value contains the data + associated with the item. + + \li \c index specifies the index to select when the combo box is + enabled. By default, it is set to \c 0. + + \li \c disabledIndex specifies the index to show if the combo box is + disabled. + + \endlist + + \section2 Label + + \code + { + "name": "LabelQQC_1_0", + "type": "Label", + "span": true, + "visible": "%{( '%{CS}' === 'QQC_1_0' ) ? 'yes' : ''}", + "data": + { + "wordWrap": true, + "trText": "Creates a deployable Qt Quick 2 application using Qt Quick Controls. Requires Qt 5.1 or newer." + } + }, + \endcode + + \list + + \li \c wordWrap is set to \c true to enable word wrap. By default, it is + set to \c{false}. + + \li \c trText contains the label text to display. + + \endlist + + \section2 Line Edit + + \code + { + "name": "Class", + "trDisplayName": "Class name:", + "mandatory": true, + "type": "LineEdit", + "data": { "validator": "(?:(?:[a-zA-Z_][a-zA-Z_0-9]*::)+[a-zA-Z_][a-zA-Z_0-9]*|)" } + }, + { + "name": "BaseEdit", + "type": "LineEdit", + "enabled": "%{JS: ( '%{BaseCB}' === '' ) ? 'yes' : ''}", + "mandatory": false, + "data": + { + "trText": "%{BaseCB}", + "trDisabledText": "%{BaseCB}" + } + }, + \endcode + + \list + + \li \c trText specifies the default text to display. + + \li \c trDisabledText specifies the text to display in a disabled field. + + \li \c trPlaceholder specifies the placeholder text. + + \li \c validator specifies a QRegularExpression to validate the line + edit against. + + \li \c fixup specifies a variable that is used to fix up the string. + For example, to turn the first character in the line edit to upper + case. + + \endlist + + \section2 Path Chooser + + \code + { + "name": "Path", + "type": "PathChooser", + "trDisplayName": "Path:", + "mandatory": true, + "data": + { + "kind": "existingDirectory", + "basePath": "%{InitialPath}", + "path": "%{InitialPath}" + } + }, + \endcode + + \list + + \li \c path specifies the selected path. + + \li \c basePath specifies a base path that lookups are relative to. + + \li \c kind defines what to look for: \c existingDirectory, + \c directory, \c file, \c saveFile, \c existingCommand, \c command, + or \c any. + + \endlist + + \section2 Spacer + + \code + { + "name": "Sp1", + "type": "Spacer", + "data": + { + "factor": 2 + } + }, + \endcode + + The \c factor setting specifies the factor (an integer) to multiply the + layout spacing for this spacer. + + \section2 Text Edit + + \code + { + "name": "TextField", + "type": "TextEdit", + "data" : + { + "trText": "This is some text", + "richText": true + } + } + \endcode + + \list + + \li \c trText specifies the text to display. + + \li \c trDisabledText specifies the text to display when the text edit + is disabled. + + \li \c richText is set to \c true for rich text, otherwise \c{false}. + + \endlist + +*/ diff --git a/doc/src/projects/creator-projects-custom-wizards-xml.qdoc b/doc/src/projects/creator-projects-custom-wizards-xml.qdoc index bc4ff8da7eb..7e386023ca3 100644 --- a/doc/src/projects/creator-projects-custom-wizards-xml.qdoc +++ b/doc/src/projects/creator-projects-custom-wizards-xml.qdoc @@ -24,7 +24,7 @@ /*! \contentspage {Qt Creator Manual} - \previouspage creator-project-wizards.html + \previouspage creator-project-wizards-json.html \page creator-project-wizards-xml.html \nextpage creator-version-control.html @@ -33,55 +33,29 @@ To display the XML-based example wizards in \QC, rename wizard_sample.xml as wizard.xml in the \c {\share\qtcreator\templates\wizards\helloworld} and \c {\share\qtcreator\templates\wizards\listmodel} folders. After - you restart \QC, the \gui {Custom Classes} - and \gui {Custom Projects} categories (1) appear in the \gui New dialog. For + you restart \QC, the \uicontrol {Custom Classes} + and \uicontrol {Custom Projects} categories (1) appear in the \uicontrol New dialog. For each category, an icon (2), a display name (3), and a description (4) are displayed. \image qtcreator-custom-project-wizards.png "The New dialog with custom projects and classes" - A custom wizard defines the user interface of a wizard page. The values the - user enters in the wizard are assigned field names. Field name and value - pairs are then passed to the file creation process. File creation can happen - in the following ways: + Files can be generated by using either \l{Processing Template Files} + {templates} or \l{Using Generator Scripts}{generator scripts}, where a + script is called to create the files. - \list 1 + \note The generator option mainly exists to accommodate existing generator + scripts or cases where complicated algorithmic logic is required when + generating files. Writing cross-platform scripts is inherently difficult, + and therefore, it is not recommended for new wizards. - \li Template-based, where source files that contain placeholders for - the field names are provided. During processing, the placeholders - are replaced by the values from the wizard page. Optionally, - modifier characters are applied. For more information, see - \l{Processing Template Files}. + XML-based wizard template directories contain an XML configuration file + called wizard.xml, the template source files, and optionally, the generator + script. - \li Generator script, where a script is called to create the files. + \section1 Creating XML-Based Project Wizards - \note This option mainly exists to accommodate existing generator - scripts or cases where complicated algorithmic logic is required - when generating files. Writing cross-platform scripts is inherently - difficult, and therefore, it is not recommended for new wizards. For - more information, see \l{Using Generator Scripts}. - - \endlist - - Custom wizards are located in subdirectories of the following directories: - - \list - - \li \c{share/qtcreator/templates/wizards} - - \li the local user's configuration folder, - \c{$HOME/.config/QtProject/qtcreator/templates/wizards} - - \li \c{%APPDATA%\QtProject\qtcreator\templates\wizards} - - \endlist - - They contain an XML configuration file called wizard.xml, the template - source files, and optionally, the generator script. - - \section1 Creating Project Wizards - - To create a project wizard: + To create an XML-based project wizard: \list 1 @@ -91,7 +65,7 @@ \li Modify the wizard_example.xml file. \li The following code determines the type of the wizard and its place - in the \gui New dialog: + in the \uicontrol New dialog: \code @@ -120,16 +94,16 @@ \li \c id is the unique identifier for your wizard. The letter specifies the position of the wizard within the \c category. The HelloWorld wizard appears as the first wizard in the second - category in the \gui New dialog. + category in the \uicontrol New dialog. \li \c category is the category in which to place the wizard in the list. The letter specifies the position of the category in the - list in the \gui New dialog. + list in the \uicontrol New dialog. \endlist \li The following code specifies the icon and text that appear in the - \gui New dialog: + \uicontrol New dialog: \code @@ -145,8 +119,8 @@ \list - \li \c displayCategory appears in the \gui New dialog, under - \gui Projects. + \li \c displayCategory appears in the \uicontrol New dialog, under + \uicontrol Projects. \li \c icon appears next to the \c displayName in the middle panel when \c displayCategory is selected. @@ -187,7 +161,7 @@ \li \c target specifies the new filename for the file. The \c {%ProjectName%} variable is replaced with the string that - users specify in the \gui Name field on the first page of + users specify in the \uicontrol Name field on the first page of the wizard. \li \c openproject indicates that the file is a project file @@ -560,12 +534,12 @@ to \c %Path%. For project wizards, it is \c %Path%/%ProjectName%. \li \c {%CppSourceSuffix%} is replaced by the default source suffix, - which is defined in \QC in \gui {Tools > Options > C++ > + which is defined in \QC in \uicontrol {Tools > Options > C++ > File Naming}. For example, if users enter \b MyClass, the filename becomes myclass.cpp when the project is created. \li \c {%CppHeaderSuffix%} is replaced by the default header suffix, - which is also defined in \gui {File Naming}. + which is also defined in \uicontrol {File Naming}. \li \c {%CurrentDate%} is replaced by the current date in the format \c {YYYY-MM-DD} as specified by ISO 8601. diff --git a/doc/src/projects/creator-projects-custom-wizards.qdoc b/doc/src/projects/creator-projects-custom-wizards.qdoc index f0b1b183b15..fc57ff4c7ff 100644 --- a/doc/src/projects/creator-projects-custom-wizards.qdoc +++ b/doc/src/projects/creator-projects-custom-wizards.qdoc @@ -26,17 +26,23 @@ \contentspage {Qt Creator Manual} \previouspage creator-project-qmake-libraries.html \page creator-project-wizards.html - \nextpage creator-project-wizards-xml.html + \nextpage creator-project-wizards-json.html \title Adding New Custom Wizards If you have a team working on a large application or several applications, - you might want to standardize the way the team members create projects - and classes. + you might want to standardize the way the team members create projects, + classes, and files. You can copy the wizard templates in the template folders to create your own - project and class wizards. They are displayed in the \uicontrol New dialog that - opens when you choose \uicontrol {File > New File or Project}. + project, class, and file wizards. They are displayed in the \uicontrol New + dialog that opens when you choose \uicontrol {File > New File or Project}. + + A custom wizard defines the user interface of a wizard page. The values the + user enters in the wizard are assigned field names. Field name and value + pairs are then passed to the file creation process. + + \section1 Wizard Types In a project wizard, you can specify the files needed in a project. You can add wizard pages to allow developers to specify settings for the @@ -45,10 +51,51 @@ In a class wizard, you can allow developers to specify the class name, base class, and header and source files for the class. + In a file wizard, you can allow developers to specify the type and location + of the file. + You can create either JSON-based or XML-based wizards. We recommend creating - JSON-based wizards for new projects. + JSON-based wizards for new projects. For more information, see: \list + \li \l{Adding JSON-Based Wizards} \li \l{Adding XML-Based Wizards} \endlist + + The following table summarizes the wizards you can create: + + \table + \header + \li Wizard Type + \li JSON-Based + \li XML-Based + \row + \li Class + \li \image ok + \li \image ok + \row + \li File + \li \image ok + \li \image ok + \row + \li Project + \li \image ok + \li \image ok + \endtable + + \section1 Locating Wizards + + Wizards are located in subdirectories of the following directories: + + \list + + \li \c{share/qtcreator/templates/wizards} + + \li the local user's configuration folder, + \c{$HOME/.config/QtProject/qtcreator/templates/wizards} + + \li \c{%APPDATA%\QtProject\qtcreator\templates\wizards} + + \endlist + */ diff --git a/doc/src/qtcreator.qdoc b/doc/src/qtcreator.qdoc index bdd124d1e61..3f3090b7632 100644 --- a/doc/src/qtcreator.qdoc +++ b/doc/src/qtcreator.qdoc @@ -144,6 +144,7 @@ \li \l{Adding Libraries to Projects} \li \l{Adding New Custom Wizards} \list + \li \l{Adding JSON-Based Wizards} \li \l{Adding XML-Based Wizards} \endlist \endlist From 6ff6edf8d7a59b852a7e6084f658a1d3e1ee7500 Mon Sep 17 00:00:00 2001 From: Raphael Kubo da Costa Date: Tue, 30 Dec 2014 14:23:49 +0200 Subject: [PATCH 29/36] Abi: Correctly set ABI information for the BSDs in hostAbi(). Add another #ifdef block for BSD operating systems so that qtcreator stops complaining that it does not have enough information about the host's ABI. Change-Id: I5841e162eda7f34fa4a962ab1c035d1727613f6f Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/abi.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index 6f6f0e3f184..0d3ecc23fa7 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -744,6 +744,16 @@ Abi Abi::hostAbi() os = MacOS; subos = GenericMacFlavor; format = MachOFormat; +#elif defined (Q_OS_BSD4) + os = BsdOS; +# if defined (Q_OS_FREEBSD) + subos = FreeBsdFlavor; +# elif defined (Q_OS_NETBSD) + subos = NetBsdFlavor; +# elif defined (Q_OS_OPENBSD) + subos = OpenBsdFlavor; +# endif + format = ElfFormat; #endif const Abi result(arch, os, subos, format, QSysInfo::WordSize); From 48cfedf438a4b6361dea9da74a4ccfb760bc0b2a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 7 Jan 2015 10:36:21 +0100 Subject: [PATCH 30/36] Doc: fix a broken link A section title changed. Change-Id: I514a7dd3d89cf0d042d10acc027edbbcc94859c8 Reviewed-by: Leena Miettinen --- doc/src/projects/creator-projects-custom-wizards-xml.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/projects/creator-projects-custom-wizards-xml.qdoc b/doc/src/projects/creator-projects-custom-wizards-xml.qdoc index 7e386023ca3..cc887034da3 100644 --- a/doc/src/projects/creator-projects-custom-wizards-xml.qdoc +++ b/doc/src/projects/creator-projects-custom-wizards-xml.qdoc @@ -284,7 +284,7 @@ \endcode For more information about the elements and their values, see - \l {Creating Project Wizards}. + \l {Creating XML-Based Project Wizards}. \li The following code specifies the files to add to the project: From e6f94433947ced362ac1a21eca064367973a2104 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 7 Jan 2015 11:34:44 +0100 Subject: [PATCH 31/36] Doc: fix broken links to Qt 5 reference docs Some titles had changed and the hash mark references do not seem to work anymore. Change-Id: I4ebb877a483eff0a11c32932cc84b6e15935dcec Reviewed-by: Leena Miettinen --- doc/src/android/deploying-android.qdoc | 2 +- doc/src/howto/creator-cli.qdoc | 2 +- doc/src/projects/creator-projects-creating.qdoc | 2 +- doc/src/qtquick/qtquick-connection-editor.qdoc | 2 +- doc/src/qtquick/qtquick-designer.qdoc | 4 ++-- doc/src/qtquick/qtquick-modules-with-plugins.qdoc | 3 ++- doc/src/widgets/qtdesigner-app-tutorial.qdoc | 2 +- 7 files changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/src/android/deploying-android.qdoc b/doc/src/android/deploying-android.qdoc index c23e6ecf28f..d849abb9282 100644 --- a/doc/src/android/deploying-android.qdoc +++ b/doc/src/android/deploying-android.qdoc @@ -147,7 +147,7 @@ The anddroiddeployqt tool uses the information in the project .pro file to create APKs. For more information about the qmake variables that you can set in the .pro file to tailor the APK, see - \l{Deploying an Application on Android#qmake-variables}{qmake Variables}. + \l{Deploying an Application on Android}. You can view information about what the anddroiddeployqt tool is doing in the \uicontrol {Compile Output} pane. To view additional information, select the diff --git a/doc/src/howto/creator-cli.qdoc b/doc/src/howto/creator-cli.qdoc index 4d8e531abc3..c8c496e7a70 100644 --- a/doc/src/howto/creator-cli.qdoc +++ b/doc/src/howto/creator-cli.qdoc @@ -198,7 +198,7 @@ {Qt application}, and therefore, it accepts the command line options that all Qt applications accept. For example, you can use the \c {-style} and \c {-stylesheet} options to apply custom styles and - \l{QApplication#stylesheet}{stylesheets}. + \l{Qt Style Sheets}{stylesheets}. The styling is only applied during the current session. Exercise caution when applying styles, as overriding the existing styling diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc index c9aa9851c3c..1ad9bea699e 100644 --- a/doc/src/projects/creator-projects-creating.qdoc +++ b/doc/src/projects/creator-projects-creating.qdoc @@ -322,7 +322,7 @@ Qt provides support for integration with OpenGL implementations on all platforms, which allows you to display hardware accelerated 3D graphics alongside a more conventional user interface. For more information, see - \l{Qt Gui#opengl-and-opengl-es-integration}{OpenGL and OpenGL ES integration}. + \l{Qt GUI}. You can use the QOpenGLShader class to compile OpenGL shaders written in the OpenGL Shading Language (GLSL) and in the OpenGL/ES Shading Language diff --git a/doc/src/qtquick/qtquick-connection-editor.qdoc b/doc/src/qtquick/qtquick-connection-editor.qdoc index 822acd4b50e..5a280b15cde 100644 --- a/doc/src/qtquick/qtquick-connection-editor.qdoc +++ b/doc/src/qtquick/qtquick-connection-editor.qdoc @@ -49,7 +49,7 @@ \section1 Connecting Objects to Signals - To connect objects to signals in QML, create \l{Connection} objects. + To connect objects to signals in QML, create \l{Connections} objects. \image qmldesigner-connections.png diff --git a/doc/src/qtquick/qtquick-designer.qdoc b/doc/src/qtquick/qtquick-designer.qdoc index 3ec1f82b3c7..9d4fc48dc21 100644 --- a/doc/src/qtquick/qtquick-designer.qdoc +++ b/doc/src/qtquick/qtquick-designer.qdoc @@ -125,8 +125,8 @@ \section2 Setting the Stacking Order - The \l{Item#z-prop}{z property} of an - item determines its position in relation to its sibling items in the + The \c z property of an \l Item determines its position in relation to its + sibling items in the type hierarchy. By default, items with a higher stacking value are drawn on top of siblings with a lower stacking value. Items with the same stacking value are drawn in the order they are listed, from the last item diff --git a/doc/src/qtquick/qtquick-modules-with-plugins.qdoc b/doc/src/qtquick/qtquick-modules-with-plugins.qdoc index 792e3dad29d..c1908260cf4 100644 --- a/doc/src/qtquick/qtquick-modules-with-plugins.qdoc +++ b/doc/src/qtquick/qtquick-modules-with-plugins.qdoc @@ -36,7 +36,8 @@ information for code completion and the semantic checks to work correctly. When you write a QML module or use QML from a C++ application you typically - register new types with \l{QQmlEngine#qmlRegisterType-3}{qmlRegisterType()} or expose some + register new types with the \l{QQmlEngine} class \c qmlRegisterType() + function or expose some class instances with \l{QQmlContext::setContextProperty()}. The \QC C++ code model now scans for these calls and tells the QML code model about them. This means that properties are diff --git a/doc/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/src/widgets/qtdesigner-app-tutorial.qdoc index 201daa2f1f4..89748e0682b 100644 --- a/doc/src/widgets/qtdesigner-app-tutorial.qdoc +++ b/doc/src/widgets/qtdesigner-app-tutorial.qdoc @@ -32,7 +32,7 @@ This tutorial describes how to use \QC to create a small Qt application, Text Finder. It is a simplified version of the Qt UI Tools \l{Text Finder - example}. The application user interface is constructed from Qt widgets by + Example}. The application user interface is constructed from Qt widgets by using \QD. The application logic is written in C++ by using the code editor. \image qtcreator-textfinder-screenshot.png From 7661ba74eda5b896f94286eb882efb216708ba4f Mon Sep 17 00:00:00 2001 From: Aki Koskinen Date: Tue, 6 Jan 2015 09:06:42 +0200 Subject: [PATCH 32/36] Prevent using an invalidated reference Inserting to a std::vector (possibly) invalidates all iterators and references for it. In this piece of code tok is a reference to a member in _tokens and it should not be used after an insertion is made to _tokens. Switched the order of two code lines to prevent this. Change-Id: Ia9d1ce66fc67406f56b426e7431402c6fe68a38f Reviewed-by: Eike Ziller Reviewed-by: Nikolai Kosjar --- src/libs/3rdparty/cplusplus/TranslationUnit.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp index 86eb25f1e35..4f1ff721390 100644 --- a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp +++ b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp @@ -534,9 +534,10 @@ bool TranslationUnit::maybeSplitGreaterGreaterToken(unsigned tokenIndex) newGreater.byteOffset = tok.byteOffset + 1; newGreater.utf16charOffset = tok.utf16charOffset + 1; + TokenLineColumn::const_iterator it = _expandedLineColumn.find(tok.bytesBegin()); + _tokens->insert(_tokens->begin() + tokenIndex + 1, newGreater); - TokenLineColumn::const_iterator it = _expandedLineColumn.find(tok.bytesBegin()); if (it != _expandedLineColumn.end()) { const std::pair newPosition(it->second.first, it->second.second + 1); _expandedLineColumn.insert(std::make_pair(newGreater.bytesBegin(), newPosition)); From 566aaba933edf3948060a6e5ed6f885fe06b0af4 Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Tue, 6 Jan 2015 12:14:00 +0100 Subject: [PATCH 33/36] German translation Change-Id: If9869a5d4e0999a7422a5e876ef4b69202b371e7 Reviewed-by: Christian Stenger Reviewed-by: Robert Loehning --- share/qtcreator/translations/qtcreator_de.ts | 6210 +++++++++--------- 1 file changed, 3203 insertions(+), 3007 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 85e348e4cc3..2ca6365af30 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -16,19 +16,12 @@ Die Kommandozeilen-Argumente konnten nicht an die laufende Instanz übermittelt werden. Sie antwortet nicht. Möchten Sie eine neue Instanz von Qt Creator starten? - Could not find 'Core.pluginspec' in %1 - Die Datei 'Core.pluginspec' konnte im Verzeichnis %1 nicht gefunden werden - - - - BINEditor::Internal::BinEditorPlugin - - &Undo - &Rückgängig + Could not find Core plugin in %1 + Das Core-Plugin wurde nicht in %1 gefunden - &Redo - &Wiederholen + No valid theme '%1' + Kein gültiges Theme '%1' @@ -111,14 +104,6 @@ Rename Bookmark Lesezeichen umbenennen - - Add - Hinzufügen - - - Remove - Entfernen - Bookmarks::Internal::BookmarkView @@ -358,6 +343,10 @@ CMakeProjectManager::Internal::MakeStepConfigWidget + + Override command: + Kommando überschreiben: + Additional arguments: Zusätzliche Argumente: @@ -468,6 +457,14 @@ Filelog Current File Filelog für Datei + + Checks out a CVS repository and tries to load the contained project. + Erstellt einen Checkout eines CVS-Repositorys und versucht, das darin enthaltene Projekt zu laden. + + + CVS Checkout + Projekt aus CVS-Repository + Meta+C,Meta+D Meta+C,Meta+D @@ -566,15 +563,15 @@ Diff Repository - Diff des Repositories + Diff des Repositorys Repository Status - Status des Repositories + Status des Repositorys Repository Log - Log des Repositories + Log des Repositorys Update Repository @@ -618,7 +615,7 @@ Revert all pending changes to the repository? - Möchten Sie alle ausstehenden Änderungen des Repositories verwerfen? + Möchten Sie alle ausstehenden Änderungen des Repositorys verwerfen? Revert failed: %1 @@ -638,7 +635,7 @@ Would you like to discard your changes to the repository "%1"? - Möchten Sie alle ausstehenden Änderungen des Repositories "%1" verwerfen? + Möchten Sie alle ausstehenden Änderungen des Repositorys "%1" verwerfen? Would you like to discard your changes to the file "%1"? @@ -648,23 +645,22 @@ Could not find commits of id "%1" on %2. Es konnten keine Commits des Datums %2 mit der ID "%1" gefunden werden. + + No cvs executable specified. + Es wurde keine ausführbare Datei angegeben. + Project status Status des Projekts Repository status - Status des Repositories + Status des Repositorys The initial revision %1 cannot be described. Die erste Version (%1) kann nicht weiter beschrieben werden. - - No cvs executable specified! - Es wurde keine ausführbare Datei angegeben! - - Cvs::Internal::CvsSubmitEditor @@ -768,10 +764,6 @@ Meta+C,Meta+P Meta+C,Meta+P - - Paste Clipboard... - Zwischenablage einfügen... - Fetch Snippet... Ausschnitt holen... @@ -852,22 +844,18 @@ Close Others Andere schließen - - Revert File to Saved - Gespeicherten Stand wiederherstellen - - - Ctrl+F4 - Ctrl+F4 - - - Ctrl+W - Ctrl+W - Close All Except Visible Alle außer Sichtbare schließen + + Copy Full Path to Clipboard + Vollständigen Pfad in die Zwischenablage kopieren + + + Copy File Name to Clipboard + Dateinamen in die Zwischenablage kopieren + &Save &Speichern @@ -876,126 +864,6 @@ Save &As... Speichern &unter... - - Alternative Close - Schließen (alternativ) - - - Ctrl+Shift+W - Ctrl+Shift+W - - - Alt+Tab - Alt+Tab - - - Ctrl+Tab - Ctrl+Tab - - - Alt+Shift+Tab - Alt+Shift+Tab - - - Ctrl+Shift+Tab - Ctrl+Shift+Tab - - - Ctrl+Alt+Left - Ctrl+Alt+Left - - - Alt+Left - Alt+Left - - - Ctrl+Alt+Right - Ctrl+Alt+Right - - - Alt+Right - Alt+Right - - - Split - Teilen - - - Meta+E,2 - Meta+E,2 - - - Ctrl+E,2 - Ctrl+E,2 - - - Split Side by Side - Nebeneinander teilen - - - Meta+E,3 - Meta+E,3 - - - Ctrl+E,3 - Ctrl+E,3 - - - Meta+E,4 - Meta+E,4 - - - Ctrl+E,4 - Ctrl+E,4 - - - Remove Current Split - Teilung aufheben - - - Meta+E,0 - Meta+E,0 - - - Ctrl+E,0 - Ctrl+E,0 - - - Remove All Splits - Alle Teilungen aufheben - - - Meta+E,1 - Meta+E,1 - - - Ctrl+E,1 - Ctrl+E,1 - - - Go to Next Split or Window - Gehe zu nächster Teilung oder zu nächstem Fenster - - - Meta+E,o - Meta+E,o - - - Ctrl+E,o - Ctrl+E,o - - - Ad&vanced - Er&weitert - - - X-coordinate of the current editor's upper left corner, relative to screen. - X-Koordinate der linken, oberen Ecke des aktuellen Editors, relativ zum Bildschirm. - - - Y-coordinate of the current editor's upper left corner, relative to screen. - Y-Koordinate der linken, oberen Ecke des aktuellen Editors, relativ zum Bildschirm. - Close "%1" "%1" schließen @@ -1020,46 +888,10 @@ File Error Dateifehler - - Cannot Open File - Datei kann nicht geöffnet werden - - - Cannot open the file for editing with VCS. - Die Datei konnte nicht mit Hilfe der Versionsverwaltung schreibbar gemacht werden. - - - Qt Creator - Qt Creator - - - <b>Warning:</b> This file was not opened in %1 yet. - <b>Warnung:</b> Die Datei wurde noch nicht von %1 angefordert. - - - Open - Öffnen - - - Make Writable - Schreibbar machen - - - Save %1 &As... - Speichere '%1' &unter... - Opening File Datei Öffnen - - Open in New Window - Öffne in neuem Fenster - - - <b>Warning:</b> You are changing a read-only file. - <b>Hinweis:</b> Sie sind im Begriff, eine schreibgeschützte Datei zu ändern. - Next Open Document in History Nächstes geöffnetes Dokument im Verlauf @@ -1076,42 +908,6 @@ Go Forward Nächstes - - Current document - Aktuelles Dokument - - - &Save %1 - &Speichere %1 - - - Revert %1 to Saved - Stelle %1 wieder her - - - Reload %1 - %1 neu laden - - - Close %1 - Schließe %1 - - - Close All Except %1 - Alle außer %1 schließen - - - You will lose your current changes if you proceed reverting %1. - Bei der Wiederherstellung von %1 gehen Ihre derzeitigen Änderungen verloren. - - - Proceed - Weiter - - - Cancel - Abbrechen - Core::Internal::EditMode @@ -1239,6 +1035,10 @@ Patch command: Patch-Kommando: + + Theme: + Theme: + Core::Internal::MainWindow @@ -1366,10 +1166,6 @@ &Options... &Einstellungen... - - Ctrl+, - Ctrl+, - Minimize Minimieren @@ -1390,10 +1186,6 @@ Ctrl+Meta+W Ctrl+Meta+W - - Show Sidebar - Seitenleiste anzeigen - Ctrl+0 Ctrl+0 @@ -1727,35 +1519,6 @@ Gehe zu Modus <b>'%1'</b> - - CppEditor::Internal::ClassNamePage - - Enter Class Name - Name der Klasse - - - The header and source file names will be derived from the class name - Die Dateinamen werden aus dem Klassennamen generiert - - - Details - Details - - - - CppEditor::Internal::CppClassWizard - - Error while generating file contents. - Fehler beim Generieren der Dateien. - - - - CppEditor::Internal::CppClassWizardDialog - - C++ Class Wizard - Neue C++ Klasse - - CppTools @@ -1774,6 +1537,22 @@ C++ C++ + + C11 + C11 + + + Obj-C11 + Obj-C11 + + + C++11 + C++11 + + + Obj-C++11 + Obj-C++11 + CppTools::Internal::CompletionSettingsPage @@ -1873,6 +1652,10 @@ Adds leading asterisks when continuing C/C++ "/*", Qt "/*!" and Java "/**" style comments on new lines. Fügt voranstehende Asterisk-Zeichen ein, wenn Kommentare im C/C++-Stil "/*", Qt-Stil "/*!" oder Java-Stil "/**" auf neuen Zeilen fortgesetzt werden. + + Automatically split strings + Zeichenketten automatisch teilen + CppTools::Internal::CppCurrentDocumentFilter @@ -1959,6 +1742,14 @@ Ctrl+E, F4 Ctrl+E, F4 + + The license template. + Die Lizenzvorlage. + + + The configured path to the license template + Der eingestellte Pfad der Lizenzvorlage + Debugger @@ -2713,7 +2504,7 @@ Sie haben die Wahl zu warten oder das Debuggen abzubrechen. Jumped. Stopped - Übersprungen / Angehalten + Übersprungen. Angehalten Target line hit. Stopped @@ -2783,6 +2574,10 @@ Try: %2 Fehlende Debug-Informationen für %1 Versuchen Sie: %2 + + Cannot jump. Stopped + Kann nicht überspringen. Angehalten. + Raw structure Rohdaten @@ -3514,10 +3309,6 @@ receives a signal like SIGSEGV during debugging. Designer Designer - - Class Generation - Klassenerzeugung - Form Editor Formulareditor @@ -3535,45 +3326,6 @@ Rebuilding the project might help. Versuchen Sie, das Projekt neu zu erstellen. - - Designer::Internal::CppSettingsPageWidget - - Form - Formular - - - Embedding of the UI Class - Verwendung der UI-Klasse - - - Aggregation as a pointer member - Aggregation als Zeiger - - - Aggregation - Aggregation - - - Code Generation - Code-Erzeugung - - - Support for changing languages at runtime - Wechsel der Sprache zur Laufzeit unterstützen - - - Use Qt module name in #include-directive - Qt-Modulnamen in #include-Direktive verwenden - - - Multiple inheritance - Mehrfachvererbung - - - Add Qt version #ifdef for module names - Von Qt-Version abhängige #ifdef-Direktiven für Modulnamen einfügen - - Designer::Internal::FormClassWizardDialog @@ -3614,14 +3366,6 @@ Versuchen Sie, das Projekt neu zu erstellen. Shift+F4 Shift+F4 - - Qt Designer Form - Qt-Designer-Formular - - - Creates a Qt Designer form that you can add to a Qt Widget Project. This is useful if you already have an existing class for the UI business logic. - Erstellt ein Qt-Designer-Formular für ein Qt-Widget-Projekt. Verwenden Sie diese Vorlage, wenn bereits eine Klasse für den Programmablauf existiert. - Creates a Qt Designer form along with a matching class (C++ header and source file) for implementation purposes. You can add the form and class to an existing Qt Widget Project. Erstellt ein Qt-Designer-Formular mit zugehörigem Klassenrumpf (bestehend aus C++-Header- und -Quelldatei) für Implementierungszwecke. Sie können Formular und Klasse zu einem existierenden Qt-Widget-Projekt hinzufügen. @@ -3631,109 +3375,6 @@ Versuchen Sie, das Projekt neu zu erstellen. Qt-Designer-Formularklasse - - Designer::Internal::FormEditorW - - Widget Box - Widget-Box - - - Object Inspector - Objektanzeige - - - Property Editor - Eigenschaften - - - Action Editor - Aktionseditor - - - F3 - F3 - - - F4 - F4 - - - Ctrl+H - Ctrl+H - - - Meta+L - Meta+L - - - Ctrl+L - Ctrl+L - - - Ctrl+G - Ctrl+G - - - Meta+J - Meta+J - - - Ctrl+J - Ctrl+J - - - Alt+Shift+R - Alt+Shift+R - - - Signals && Slots Editor - Signale und Slots - - - Widget box - Widget-Box - - - Edit Widgets - Widgets bearbeiten - - - Edit Signals/Slots - Signale und Slots bearbeiten - - - Edit Buddies - Buddies bearbeiten - - - Edit Tab Order - Tabulatorreihenfolge bearbeiten - - - Meta+Shift+H - Meta+Shift+H - - - Meta+Shift+G - Meta+Shift+G - - - About Qt Designer Plugins... - Über Qt Designer-Plugins... - - - Preview in - Vorschau in - - - Designer - Designer - - - The image could not be created: %1 - Das Bild konnte nicht erstellt werden: %1 - - Designer::Internal::FormTemplateWizardPage @@ -3749,13 +3390,6 @@ Versuchen Sie, das Projekt neu zu erstellen. %1 - Fehler - - Designer::Internal::FormWizardDialog - - Qt Designer Form - Qt-Designer-Formular - - Designer::Internal::QtCreatorIntegration @@ -3844,12 +3478,28 @@ Versuchen Sie, das Projekt neu zu erstellen. ExtensionSystem::Internal::PluginSpecPrivate - Cannot open file %1 for reading: %2 - Die Datei %1 kann nicht zum Lesen geöffnet werden: %2 + Plugin meta data not found + Plugin-Metadaten nicht gefunden - Error parsing file %1: %2, at line %3, column %4 - Fehler beim Lesen der Datei %1: %2 in Zeile %3, Spalte %4 + Invalid platform specification "%1": %2 + Ungültige Plattformspezifikation "%1": %2 + + + Dependency: %1 + Abhängigkeit: %1 + + + Dependency: "%1" must be "%2" or "%3" (is "%4") + Abhängigkeit: "%1" muss "%2" oder "%3" sein (ist "%4") + + + Argument: %1 + Argument: %1 + + + Argument: "%1" is empty + Argument: "%1" ist leer @@ -3940,174 +3590,8 @@ Reason: %3 Grund: %3 - - FakeVim::Internal - - Use Vim-style Editing - Vim benutzen - - - Read .vimrc - .vimrc lesen - - - Path to .vimrc - Pfad zu .vimrc - - - - FakeVim::Internal::FakeVimHandler - - %1%2% - %1%2% - - - %1All - %1Alle - - - "%1" %2 %3L, %4C written - "%1" %2 %3L, %4C geschrieben - - - "%1" %2L, %3C - "%1" %2L, %3C - - - Pattern not found: %1 - Suchmuster nicht gefunden: %1 - - - Not implemented in FakeVim. - In FakeVim nicht implementiert. - - - Unknown option: - Unbekannte Option: - - - Invalid argument: - Ungültiges Argument: - - - Trailing characters: - Nachfolgende Zeichen: - - - Move lines into themselves. - Message left untranslated as it is not really clear. - Move lines into themselves. - - - %n lines moved. - - Eine Zeile verschoben. - %n Zeilen verschoben. - - - - File "%1" exists (add ! to override) - Die Datei '%1' existiert bereits (Fügen Sie ! an, um sie zu überschreiben) - - - Cannot open file "%1" for writing - Die Datei '%1' kann nicht zum Schreiben geöffnet werden - - - "%1" %2 %3L, %4C written. - "%1" %2 %3L, %4C geschrieben. - - - Cannot open file "%1" for reading - Die Datei '%1' kann nicht zum Lesen geöffnet werden - - - %n lines filtered. - - Eine Zeile gefiltert. - %n Zeilen gefiltert. - - - - Search hit BOTTOM, continuing at TOP. - Die Suche hat das Ende erreicht, setze am Anfang fort. - - - Search hit TOP, continuing at BOTTOM. - Die Suche hat den Anfang erreicht, setze am Ende fort. - - - Search hit BOTTOM without match for: %1 - Die Suche hat das Ende erreicht, ohne %1 zu finden. - - - Search hit TOP without match for: %1 - Die Suche hat den Anfang erreicht, ohne %1 zu finden - - - %n lines indented. - - Eine Zeile eingerückt. - %n Zeilen eingerückt. - - - - %n lines %1ed %2 time. - - %1 auf eine Zeile %2 mal angewandt. - %1 auf %n Zeilen %2 mal angewandt. - - - - %n lines yanked. - - Eine Zeile kopiert. - %n Zeilen kopiert. - - - - Already at oldest change. - Älteste Änderung erreicht. - - - Already at newest change. - Neueste Änderung erreicht. - - - Cannot open file %1 - Die Datei '%1' kann nicht geöffnet werden - - - Mark "%1" not set. - Die Marke "%1" ist nicht gesetzt. - - - Invalid regular expression: %1 - Ungültiger regulärer Ausdruck: %1 - - - Unknown option: %1 - Unbekannte Option: %1 - - - Argument must be positive: %1=%2 - Das Argument muss positiv sein: %1=%2 - - FakeVim::Internal::FakeVimOptionPage - - General - Allgemein - - - FakeVim - FakeVim - - - Default: %1 - Vorgabe: %1 - Use FakeVim FakeVim benutzen @@ -4208,10 +3692,6 @@ Grund: %3 Scroll offset: Rollversatz: - - Keep empty to use the default path, i.e. %USERPROFILE%\_vimrc on Windows, ~/.vimrc otherwise. - Leer lassen, um den Vorgabepfad zu verwenden, d.h., %USERPROFILE%\_vimrc auf Windows, ansonsten ~/.vimrc. - Read .vimrc from location: Verwende .vimrc aus: @@ -4237,44 +3717,6 @@ Grund: %3 Vim-Tabulator-Einstellung. - - FakeVim::Internal::FakeVimPluginPrivate - - Meta+V,Meta+V - Meta+V,Meta+V - - - Alt+V,Alt+V - Alt+V,Alt+V - - - Execute User Action #%1 - Benutzerdefinierte Aktion #%1 ausführen - - - Meta+V,%1 - Meta+V,%1 - - - Alt+V,%1 - Alt+V,%1 - - - File not saved - Datei nicht gespeichert - - - Saving succeeded - Gespeichert - - - %n files not saved - - Eine Datei nicht gespeichert - %n Dateien nicht gespeichert - - - FilterNameDialogClass @@ -4601,6 +4043,10 @@ Grund: %3 Cannot run "%1 %2" in "%2": %3 Das Kommando "%1 %2" konnte im Verzeichnis "%2" nicht ausgeführt werden: %3 + + Git Diff Project + Git Diff für Projekt + Create Local Branch Lokalen Branch erstellen @@ -4711,13 +4157,9 @@ Jetzt Commit durchführen? Chunk successfully staged Chunk wurde für Commit vorgesehen - - Git Diff Projects - Git Diff für Projekte - Git Diff Repository - Git Diff des Repositories + Git Diff des Repositorys Git Diff Files @@ -5226,6 +4668,14 @@ Jetzt Commit durchführen? Meta+G,Meta+C Meta+G,Meta+C + + Clones a Git repository and tries to load the contained project. + Erstellt einen Clone eines Git-Repositorys und versucht, das darin enthaltene Projekt zu laden. + + + Git Repository Clone + Git-Repository Clone + Current &File Aktuelle &Datei @@ -5461,8 +4911,8 @@ Jetzt Commit durchführen? E-Mail-Adresse: - By&pass hooks - Hooks umgehen + By&pass hooks: + Hooks umgehen: @@ -5540,154 +4990,6 @@ Jetzt Commit durchführen? Repository Browser - - Gitorious::Internal::Gitorious - - Error parsing reply from "%1": %2 - Fehler beim Auswerten der Antwort von "%1": %2 - - - Request failed for "%1": %2 - Die Anforderung "%1" schlug fehl: %2 - - - Open source projects that use Git. - Open-Source-Projekte, die git verwenden. - - - - Gitorious::Internal::GitoriousCloneWizard - - Cloning - Klonen - - - Cloning started... - Klonen begonnen... - - - - Gitorious::Internal::GitoriousHostWidget - - ... - ... - - - <New Host> - <Neuer Server> - - - Host - Server - - - Projects - Projekte - - - Description - Beschreibung - - - - Gitorious::Internal::GitoriousHostWizardPage - - Host - Server - - - Select a host. - Wählen Sie einen Server aus. - - - - Gitorious::Internal::GitoriousProjectWidget - - WizardPage - WizardPage - - - ... - ... - - - Keep updating - Liste weiter ergänzen - - - Project - Projekt - - - Description - Beschreibung - - - - Gitorious::Internal::GitoriousProjectWizardPage - - Project - Projekt - - - Choose a project from "%1" - Wählen Sie ein Projekt von "%1" - - - - Gitorious::Internal::GitoriousRepositoryWizardPage - - WizardPage - WizardPage - - - Name - Name - - - Owner - Verwalter - - - Description - Beschreibung - - - Repository - Repository - - - Choose a repository of the project "%1". - Wählen Sie ein Repository des Projekts "%1". - - - Mainline Repositories - Mainline-Repositories - - - Clones - Clones - - - Baseline Repositories - Baseline-Repositories - - - Shared Project Repositories - Shared Project Repositories - - - Personal Repositories - Persönliche Repositories - - - - Help::Internal::CentralWidget - - Print Document - Dokument drucken - - Help::Internal::DocSettingsPage @@ -5936,110 +5238,14 @@ Add, modify, and remove document filters, which determine the documentation set Bookmarks Lesezeichen - - Home - Startseite - - - Previous Page - Vorangehende Seite - - - Next Page - Nächste Seite - - - Meta+M - Meta+M - - - Ctrl+M - Ctrl+M - Technical Support Technischer Support - - Increase Font Size - Schrift vergrößern - - - Decrease Font Size - Schrift verkleinern - - - Reset Font Size - Schriftgröße zurücksetzen - - - Meta+I - Meta+I - - - Ctrl+Shift+I - Ctrl+Shift+I - - - Meta+Shift+C - Meta+Shift+C - - - Ctrl+Shift+C - Ctrl+Shift+C - - - Activate Search in Help mode - Suche im Modus "Hilfe" aktivieren - - - Meta+/ - Meta+/ - - - Ctrl+Shift+/ - Ctrl+Shift+/ - - - Activate Bookmarks in Help mode - Lesezeichen im Modus "Hilfe" aktivieren - - - Meta+B - Meta+B - - - Ctrl+Shift+B - Ctrl+Shift+B - Open Pages Offene Seiten - - Activate Open Pages in Help mode - Offene Seiten im Hilfsmodus aktivieren - - - Meta+O - Meta+O - - - Ctrl+Shift+O - Ctrl+Shift+O - - - Show Sidebar - Seitenleiste anzeigen - - - Close current page - Diese Seite schließen - - - Hide Sidebar - Seitenleiste verbergen - Index Index @@ -6048,10 +5254,6 @@ Add, modify, and remove document filters, which determine the documentation set Contents Inhalt - - Add Bookmark - Lesezeichen hinzufügen - Context Help Kontexthilfe @@ -6061,25 +5263,13 @@ Add, modify, and remove document filters, which determine the documentation set Fehler melden... - Activate Index in Help mode - Index im Modus "Hilfe" zeigen - - - Activate Contents in Help mode - Inhalt im Modus "Hilfe" zeigen + <html><head><title>No Documentation</title></head><body><br/><center><font color="%1"><b>%2</b></font><br/><font color="%3">No documentation available.</font></center></body></html> + <html><head><title>Dokumentation fehlt</title></head><body><br/><center><font color="%1"><b>%2</b></font><br/><font color="%3">Es ist keine Dokumentation verfügbar.</font></center></body></html> Unfiltered Kein - - <html><head><title>No Documentation</title></head><body><br/><center><b>%1</b><br/>No documentation available.</center></body></html> - <html><head><title>Dokumentation fehlt</title></head><body><br/><center><b>%1</b><br/>Es ist keine Dokumentation verfügbar.</center></body></html> - - - Filtered by: - Filter: - Help::Internal::SearchWidget @@ -6119,21 +5309,6 @@ Add, modify, and remove document filters, which determine the documentation set Unbekannter Titel - - IndexWindow - - &Look for: - &Suche nach: - - - Open Link - Adresse öffnen - - - Open Link as New Page - Verweis in neuer Seite öffnen - - Locator @@ -6323,6 +5498,10 @@ Add, modify, and remove document filters, which determine the documentation set Qt Build Suite file Qt Build Suite-Datei + + QtQuick Designer ui file + QtQuick-Designer ui-Datei + Qt Creator Qt UI project file Qt Creator Qt UI-Projektdatei @@ -6689,7 +5868,7 @@ Add, modify, and remove document filters, which determine the documentation set Repository Log - Log des Repositories + Log des Repositorys Submit @@ -6747,6 +5926,10 @@ Add, modify, and remove document filters, which determine the documentation set The process terminated with exit code %1. Der Prozess wurde beendet, Rückgabewert %1. + + [Only %1 MB of output shown] + [Nur %1 MB der Ausgabe werden angezeigt] + The commit message check failed. Do you want to submit this change list? Die Überprüfung der Beschreibung schlug fehl. Möchten Sie den Submit-Vorgang trotzdem ausführen? @@ -6978,28 +6161,28 @@ Add, modify, and remove document filters, which determine the documentation set PluginSpec - Unexpected token - Falsch platziertes Token + "%1" is missing + "%1" fehlt - "%1" misses attribute "%2" - Das Attribut "%2" fehlt bei "%1" + Value for key "%1" is not a string + Wert des Schlüssels "%1" ist keine Zeichenkette - "%1" has invalid format - "%1" ist in einem ungültigen Format + Value for key "%1" is not a bool + Wert des Schlüssels "%1" ist kein Boolescher Wert - Invalid element "%1" - Ungültiges Element "%1" + Value for key "%1" is not an array of objects + Wert des Schlüssels "%1" ist kein Feld von Objekten - Unexpected closing element "%1" - Falsch platziertes schließendes Element "%1" + Value for key "%1" is not a string and not an array of strings + Wert des Schlüssels "%1" ist keine Zeichenkette und auch kein Feld von Zeichenketten - Expected element "%1" as top level element - Das Wurzelelement muss "%1" sein + Value "%2" for key "%1" has invalid format + Wert "%2" des Schlüssels "%1" ist in ungültigem Format Resolving dependencies failed because state != Read @@ -7048,6 +6231,10 @@ Add, modify, and remove document filters, which determine the documentation set Configuration is faulty. Check the Issues view for details. Die Konfiguration ist fehlerhaft. Details befinden sich in der Ansicht "Build-Probleme". + + Could not create directory "%1" + Das Verzeichnis "%1" konnte nicht angelegt werden + Starting: "%1" %2 Starte "%1" %2 @@ -7559,10 +6746,6 @@ Add, modify, and remove document filters, which determine the documentation set ProjectExplorer::Internal::ProjectFileWizardExtension - - <None> - <Kein> - Open project anyway? Projekt trotzdem öffnen? @@ -7582,14 +6765,6 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. "%1" (%2). Einige Dateien (%2) konnten nicht zum Projekt "%1" hinzugefügt werden. - - A version control system repository could not be created in "%1". - Das Versionskontrollsystem konnte im Ordner "%1" kein Repository anlegen. - - - Failed to add "%1" to the version control system. - "%1" konnte nicht unter Versionskontrolle gestellt werden. - ProjectExplorer::Internal::ProjectTreeWidget @@ -7650,6 +6825,18 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Add to &project: Zu Projekt &hinzufügen: + + <None> + <Kein> + + + A version control system repository could not be created in "%1". + Das Versionskontrollsystem konnte im Ordner "%1" kein Repository anlegen. + + + Failed to add "%1" to the version control system. + "%1" konnte nicht unter Versionskontrolle gestellt werden. + Files to be added: Zu erzeugende Dateien: @@ -7974,6 +7161,22 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Open Build and Run Kit Selector... Kit-Auswahl für Erstellung und Ausführung öffnen... + + The name of the current project. + Der Name des aktuellen Projekts. + + + The name of the currently active kit. + Der Name des aktiven Kits. + + + The name of the currently active kit in a filesystem friendly version. + Der Name des aktiven Kits zur Verwendung als Dateiname. + + + The id of the currently active kit. + Die ID des aktiven Kits. + The username with which to log into the device in the currently active kit. Der Nutzername zum Einloggen in das Gerät im aktiven Kit. @@ -7998,11 +7201,6 @@ konnte dem Projekt "%2" nicht hinzugefügt werden. Do you want to cancel the build process and unload the project anyway? Möchten Sie die Erstellung abbrechen und das Projekt trotzdem schließen? - - Project File Factory - ProjectExplorer::ProjectFileFactory display name. - Project File Factory - Failed to open project Das Projekt konnte nicht geöffnet werden @@ -8053,42 +7251,6 @@ Möchten Sie sie ignorieren? Deploy Deployment - - No project loaded. - Es ist kein Projekt geladen. - - - Currently building the active project. - Das aktive Projekt wird gerade erstellt. - - - The project %1 is not configured. - Das Projekt %1 nicht konfiguriert. - - - Project has no build settings. - Das Projekt hat keine Build-Einstellungen. - - - Building "%1" is disabled: %2<br> - Das Erstellen von "%1" ist deaktiviert: %2<br> - - - No project loaded - Kein Projekt geladen - - - Project has no build settings - Das Projekt hat keine Build-Einstellungen - - - A build is in progress - Zur Zeit läuft ein Build-Vorgang - - - Building "%1" is disabled: %2 - Das Erstellen von "%1" ist deaktiviert: %2 - The project "%1" has no active kit. Das Projekt "%1" hat kein aktives Kit. @@ -8154,6 +7316,10 @@ Möchten Sie sie ignorieren? Do you want to cancel the build process and close Qt Creator anyway? Möchten Sie die Erstellung abbrechen und Qt Creator schließen? + + The project "%1" is not configured. + Das Projekt "%1" ist nicht konfiguriert. + New Subproject Title of dialog @@ -8175,6 +7341,10 @@ Möchten Sie sie ignorieren? Close Project "%1" Projekt "%1" schließen + + Configure Project + Projekt konfigurieren + Recent P&rojects Zuletzt bearbeitete P&rojekte @@ -8236,22 +7406,6 @@ Möchten Sie sie ignorieren? Full build path of the current project's active build configuration. Vollständiger Pfad der aktiven Build-Konfiguration des aktuellen Projekts. - - The current project's name. - Name des aktuellen Projekts. - - - The currently active kit's name. - Name des aktiven Kits. - - - The currently active kit's name in a filesystem friendly version. - Names des aktiven Kits zur Verwendung als Dateiname. - - - The currently active kit's id. - ID des aktiven Kits. - The host address of the device in the currently active kit. Die Host-Adresse des Geräts im aktiven Kit. @@ -8325,10 +7479,6 @@ Möchten Sie sie ignorieren? Build step Build - - The project %1 is not configured, skipping it. - Das Projekt "%1" ist nicht konfiguriert, es wird übersprungen. - Do Not Close Nicht schließen @@ -8337,10 +7487,6 @@ Möchten Sie sie ignorieren? No active project. Kein aktives Projekt. - - Run %1 - Führe %1 aus - New File Title of dialog @@ -8542,14 +7688,6 @@ Möchten Sie sie ignorieren? ResourceEditor::Internal::ResourceEditorPlugin - - Creates a Qt Resource file (.qrc) that you can add to a Qt Widget Project. - Erstellt eine Qt-Ressourcen-Datei (.qrc), die zu einem Qt-Widget-Projekt hinzugefügt werden kann. - - - Qt Resource file - Qt-Ressourcendatei - &Undo &Rückgängig @@ -8644,6 +7782,10 @@ Möchten Sie sie ignorieren? Subversion::Internal::CheckoutWizardPage + + Trust Server Certificate + Trust Server Zertifikat + Location Pfad @@ -8803,15 +7945,15 @@ Möchten Sie sie ignorieren? Diff Repository - Diff des Repositories + Diff des Repositorys Repository Status - Status des Repositories + Status des Repositorys Log Repository - Log des Repositories + Log des Repositorys Update Repository @@ -8843,7 +7985,7 @@ Möchten Sie sie ignorieren? Revert all pending changes to the repository? - Möchten Sie alle ausstehenden Änderungen des Repositories verwerfen? + Möchten Sie alle ausstehenden Änderungen des Repositorys verwerfen? The file has been changed. Do you want to revert it? @@ -8853,6 +7995,14 @@ Möchten Sie sie ignorieren? Delete... Löschen... + + Checks out a Subversion repository and tries to load the contained project. + Erstellt einen Checkout eines Subversion-Repositorys und versucht, das darin enthaltene Projekt zu laden. + + + Subversion Checkout + Projekt aus Subversion-Repository + Meta+S,Meta+D Meta+S,Meta+D @@ -8930,9 +8080,8 @@ Möchten Sie sie ignorieren? Revisionsnummer: - No subversion executable specified! - Es wurde keine ausführbaren Subversion-Datei angegeben! - + No subversion executable specified. + Es wurde keine Subversion-Anwendung angegeben. @@ -8957,22 +8106,15 @@ Möchten Sie sie ignorieren? Breche Ersetzung ab. - - TextEditor::BaseTextDocument - - Opening File - Öffne Datei - - TextEditor::BaseTextEditor - Line: %1, Col: %2 - Zeile: %1, Spalte: %2 + A highlight definition was not found for this file. Would you like to try to find one? + Für diese Datei ist keine Definition der Syntaxhervorhebung vorhanden. Möchten Sie nach einer Definition suchen? - Line: 9999, Col: 999 - Zeile: 9999, Spalte: 999 + Show Highlighter Options... + Einstellungen der Syntaxhervorhebung anzeigen... @@ -9941,8 +9083,8 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Utils::ProjectNameValidatingLineEdit - Invalid character "%1" found! - Ungültiges Zeichen "%1" gefunden! + Invalid character "%1" found. + Ungültiges Zeichen "%1" gefunden. Invalid character '.'. @@ -10048,29 +9190,6 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Datei - - VcsBase::VcsBaseOutputWindow - - Open "%1" - "%1" öffnen - - - Clear - Löschen - - - Version Control - Versionskontrolle - - - Executing: %1 %2 - Kommando: %1 %2 - - - Executing in %1: %2 %3 - Kommando in %1: %2 %3 - - VcsBase::VcsBaseSubmitEditor @@ -10575,6 +9694,14 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen. Core + + Show Sidebar + Seitenleiste anzeigen + + + Hide Sidebar + Seitenleiste verbergen + Qt Qt @@ -10741,13 +9868,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.ClearCase Diff-Editor - - Cvs::Internal::CvsEditor - - Annotate revision "%1" - Annotation für Revision "%1" - - Debugger::Internal::CdbOptionsPage @@ -10766,29 +9886,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Datei - - FakeVim::Internal::FakeVimExCommandsPage - - Ex Command Mapping - Zuordnung von Ex-Kommandos - - - FakeVim - FakeVim - - - Ex Trigger Expression - Kommando - - - Regular expression: - Regulärer Ausdruck: - - - Ex Command - Ex-Kommando - - GenericProjectManager::Internal::GenericMakeStep @@ -10808,53 +9905,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Ziele: - - Git::Internal::GitEditor - - Blame %1 - Blame für %1 - - - Blame Parent Revision %1 - Blame der übergeordneten Revision %1 - - - Reset - Zurücksetzen - - - All changes in working directory will be discarded. Are you sure? - Alle Änderungen im Arbeitsverzeichnis werden verworfen. Sind Sie sicher? - - - Chunk successfully staged - Chunk wurde für Commit vorgesehen - - - Stage Chunk... - Chunk für Commit vorsehen... - - - Unstage Chunk... - Chunk aus Commit entfernen... - - - Cherry-Pick Change %1 - Cherry-Pick von Änderung %1 - - - Revert Change %1 - Änderung %1 rückgängig machen - - - Checkout Change %1 - Änderung %1 auschecken? - - - Hard Reset to Change %1 - Zurücksetzen auf Änderung %1 (Modus hard) - - Help @@ -10937,17 +9987,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Mercurial - - Mercurial::Internal::MercurialEditor - - Annotate %1 - Annotation für %1 - - - Annotate parent revision %1 - Annotation der übergeordneten Revision "%1" - - Mercurial::Internal::MercurialPlugin @@ -10970,10 +10009,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Diff "%1" Diff für "%1" - - Alt+H,Alt+D - Alt+H,Alt+D - Meta+H,Meta+D Meta+H,Meta+D @@ -10986,10 +10021,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Log "%1" Log für "%1" - - Alt+H,Alt+L - Alt+H,Alt+L - Meta+H,Meta+L Meta+H,Meta+L @@ -11003,13 +10034,29 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Status von "%1" - Alt+H,Alt+S - Alt+H,Alt+S + Clones a Mercurial repository and tries to load the contained project. + Erstellt einen Clone eines Mercurial-Repositorys und versucht, das darin enthaltene Projekt zu laden. + + + Mercurial Clone + Mercurial Clone + + + Alt+G,Alt+D + Alt+G,Alt+D + + + Alt+G,Alt+L + Alt+G,Alt+L Meta+H,Meta+S Meta+H,Meta+S + + Alt+G,Alt+S + Alt+G,Alt+S + Add Hinzufügen @@ -11078,14 +10125,14 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Commit... Abgeben... - - Alt+H,Alt+C - Alt+H,Alt+C - Meta+H,Meta+C Meta+H,Meta+C + + Alt+G,Alt+C + Alt+G,Alt+C + Create Repository... Repository erzeugen... @@ -11190,13 +10237,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Es ist existiert kein Repository "%1". - - Perforce::Internal::PerforceEditor - - Annotate change list "%1" - Annotation der Change-Liste "%1" - - ProjectExplorer::BaseProjectWizardDialog @@ -11352,12 +10392,12 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Anderes Projekt - Applications - Anwendungen + Application + Anwendung - Libraries - Bibliotheken + Library + Bibliothek Import Project @@ -11367,6 +10407,14 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Devices Geräte + + Name of current build + Name der gegenwärtigen Build-Konfiguration + + + Name of current project + Name des aktuellen Projekts + ProjectExplorer::Internal::TargetSettingsPanelWidget @@ -11614,30 +10662,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.QML QML - - Creates a QML file with boilerplate code, starting with "import QtQuick 1.1". - Erstellt eine QML-Datei, die den erforderlichem Standardcode enthält und mit "import QtQuick 1.1" beginnt. - - - QML File (Qt Quick 1) - QML-Datei (Qt Quick 1) - - - Creates a QML file with boilerplate code, starting with "import QtQuick 2.0". - Erstellt eine QML-Datei, die den erforderlichem Standardcode enthält und mit "import QtQuick 2.0" beginnt. - - - QML File (Qt Quick 2) - QML-Datei (Qt Quick 2) - - - Creates a JavaScript file. - Erstellt eine JavaScript-Datei. - - - JS File - JS-Datei - Find Usages Verwendung suchen @@ -11678,13 +10702,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Das Projekt "%1" konnte nicht geöffnet werden: Die angegebene Projektdatei ist keine Datei. - - Qt4ProjectManager - - Qt Versions - Qt Versionen - - QtVersion @@ -11708,12 +10725,12 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.System - Qt %1 in PATH (%2) - Qt %1 in Pfad (%2) + Qt %{Qt:Version} in PATH (%2) + Qt %{Qt:Version} in PATH (%2) - Qt %1 (%2) - Qt %1 (%2) + Qt %{Qt:Version} (%2) + Qt %{Qt:Version} (%2) Qt version is not properly installed, please run make install @@ -11798,13 +10815,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Embedded Linux - - Subversion::Internal::SubversionEditor - - Annotate revision "%1" - Annotation für Revision "%1" - - TextEditor @@ -11840,7 +10850,7 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen. Repository Creation Failed - Fehlschlag bei Erstellung des Repositories + Fehlschlag bei Erstellung des Repositorys A version control repository has been created in %1. @@ -11869,13 +10879,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.URL %1 konnte nicht geöffnet werden. - - BuildSettingsPanelFactory - - Build Settings - Build-Einstellungen - - BuildSettingsPanel @@ -11883,13 +10886,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Build-Einstellungen - - DependenciesPanel - - Dependencies - Abhängigkeiten - - DependenciesPanelFactory @@ -11904,13 +10900,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Editor - - EditorSettingsPanel - - Editor - Editor - - QmlDesigner::XUIFileDialog @@ -12014,7 +11003,7 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen. There were errors when cleaning the repository %1: - Beim Bereinigen des Repositories %1 traten Fehler auf: + Beim Bereinigen des Repositorys %1 traten Fehler auf: Delete... @@ -12189,6 +11178,10 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen. Core::EditorToolBar + + Drag to drag documents between splits + Ziehen um Dokumente in andere Editor-Ansichten zu verschieben + Split Teilen @@ -12197,14 +11190,6 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Remove Split Teilung entfernen - - Copy Full Path to Clipboard - Vollständigen Pfad in die Zwischenablage kopieren - - - Copy File Name to Clipboard - Dateinamen in die Zwischenablage kopieren - Make Writable Schreibbar machen @@ -12226,6 +11211,14 @@ Sie können die Änderungen in einem Stash ablegen oder zurücksetzen.Display name of the clean build step list. Used as part of the labels in the project window. Bereinigen + + Build Settings + Build-Einstellungen + + + Build directory + Build-Verzeichnis + System Environment Systemumgebung @@ -12361,22 +11354,11 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Einfügen - - Designer::Internal::FormEditorFactory - - This file can only be edited in <b>Design</b> mode. - Datei kann nur im <b>Designmodus</b> bearbeitet werden. - - - Switch Mode - Modus umschalten - - Help::Internal::HelpViewer - Unknown or unsupported content! - Unbekannter oder nicht unterstützter Inhalt! + Unknown or unsupported content. + Unbekannter oder nicht unterstützter Inhalt. @@ -12435,10 +11417,6 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Qt5 Application descriptor Anwendungsbeschreibung für Qt 5 - - Libraries - Bibliotheken - Qt Creator Plugin Qt Creator-Plugin @@ -12459,10 +11437,6 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Code Snippet Code-Ausschnitt - - Other Projects - Andere Projekte - Snippet Parameters Parameter für Ausschnitt @@ -12491,6 +11465,10 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Gui application (QtCore, QtGui, QtWidgets) GUI-Anwendung (QtCore, QtGui, QtWidgets) + + Library + Bibliothek + Plugin Information Plugin-Information @@ -12603,6 +11581,10 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Qt Quick 1 Extension Plugin Plugin zur Erweiterung von QtQuick 1 + + Other Project + Anderes Projekt + Creates a C++ plugin to load extensions dynamically into applications using the QQmlEngine class. Requires Qt 5.0 or newer. Erstellt ein C++-Plugin zum dynamischen Laden von Erweiterungen in Anwendungen mittels der Klasse QQmlEngine. Erfordert Qt 5.0 oder neuer. @@ -12651,13 +11633,6 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Größe der Bildquelle - - CppEditor - - C++ - C++ - - QmlDesigner::Internal::ModelPrivate @@ -12671,6 +11646,10 @@ Verwenden Sie die Eigenschaft importPaths, um Importpfade zu qmlproject-basierte Reset to Default Layout Vorgabe wiederherstellen + + Automatically Hide View Title Bars + Titelleisten von Anzeigen automatisch ausblenden + SshKeyGenerator @@ -12763,26 +11742,6 @@ with a password, which you can enter below. TextEditor::Internal::TextEditorPlugin - - Creates a text file. The default file extension is <tt>.txt</tt>. You can specify a different extension as part of the filename. - Erstellt eine Textdatei mit der Erweiterung <tt>.txt</tt>. Sie können eine andere Erweiterung als Teil des Dateinamens angeben. - - - Text File - Textdatei - - - General - Allgemein - - - Creates a scratch buffer using a temporary file. - Erstellt eine temporäre Textdatei. - - - Scratch Buffer - Temporäre Textdatei - Ctrl+Space Ctrl+Space @@ -12803,10 +11762,6 @@ with a password, which you can enter below. Alt+Return Alt+Return - - Create Scratch Buffer Using a Temporary File - Erstelle eine temporäre Textdatei - Selected text within the current document. Ausgewählter Text im aktuellen Dokument. @@ -13017,8 +11972,16 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Zur Übersetzung vorsehen - #include Header File - #include Header-Datei + Escape String Literal as UTF-8 + Zeichenkette als UTF-8-Escape-Sequenzen darstellen + + + Unescape String Literal as UTF-8 + Zeichenkette ohne UTF-8-Escape-Sequenzen darstellen + + + Convert connect() to Qt 5 Style + connect() in Qt5-Stil umwandeln Add Local Declaration @@ -13118,25 +12081,6 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Ungefiltert - - FakeVim::Internal::FakeVimHandler::Private - - Recursive mapping - Rekursive Zuordnung - - - Type Alt-V, Alt-V to quit FakeVim mode. - Alt-V, Alt-V beendet den FakeVim-Modus. - - - [New] - [Neu] - - - Not an editor command: %1 - Kein Editor-Kommando: %1 - - ContextPaneWidgetBorderImage @@ -13467,16 +12411,8 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. Core::NavigationWidget - Activate %1 Pane - Aktiviere Panel %1 - - - Hide Sidebar - Seitenleiste verbergen - - - Show Sidebar - Seitenleiste anzeigen + Activate %1 View + Anzeige "%1" aktivieren @@ -13709,39 +12645,6 @@ Flags: %3 Ordner kann nicht angelegt werden - - Debugger::DebuggerPlugin - - Debug - Debuggen - - - Option "%1" is missing the parameter. - Das Kommandozeilenargument "%1" erfordert einen Parameter. - - - The parameter "%1" of option "%2" does not match the pattern <handle>:<pid>. - Der Parameter "%1" der Option "%2" entspricht nicht dem Muster <Handle>:<PID>. - - - Only one executable allowed! - Es ist nur eine ausführbare Datei erlaubt! - - - Invalid debugger option: %1 - Ungültiger Debugger-Kommandozeilenparameter: %1 - - - Some breakpoints cannot be handled by the debugger languages currently active, and will be ignored. -Affected are breakpoints %1 - Einige Haltepunkte werden von den Debuggern der gegenwärtig aktiven Sprachen nicht unterstützt und werden daher nicht berücksichtigt. -Dies betrifft die Haltepunkte %1 - - - Not enough free ports for QML debugging. - Nicht genügend freie Ports für das QML-Debuggen vorhanden. - - Debugger::DebuggerRunControl @@ -13982,6 +12885,10 @@ wenn es außerhalb von git bash aufgerufen wird. Default DeployConfiguration display name Lokales Deployment + + Deploy Settings + Deployment-Einstellungen + ProjectExplorer::DeployConfigurationFactory @@ -14217,17 +13124,6 @@ wenn es außerhalb von git bash aufgerufen wird. Überblick - - TextEditor::Internal::PlainTextEditorFactory - - A highlight definition was not found for this file. Would you like to try to find one? - Für diese Datei konnte ist keine Definition der Syntaxhervorhebung vorhanden. Möchten Sie nach einer Definition suchen? - - - Show Highlighter Options... - Einstellungen der Syntaxhervorhebung anzeigen... - - Debugger::DebuggerEngine @@ -14432,8 +13328,8 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Core::Internal::CommandComboBox - Activate %1 Pane - Aktiviere Panel %1 + Activate %1 View + Anzeige "%1" aktivieren @@ -15012,13 +13908,6 @@ Fehler: %2 <Wert> - - Utils::IpAddressLineEdit - - The IP address is not valid. - Die IP-Adresse ist ungültig. - - Utils::QtcProcess @@ -15368,22 +14257,6 @@ konnte nicht unter Versionsverwaltung (%2) gestellt werden Zoom Vergrößern - - From - Von - - - To - Bis - - - Flags - Flags - - - Sections in "%1" - Sektionen in "%1" - Start Debugging Debuggen @@ -15574,30 +14447,6 @@ Qt Creator kann sich nicht anhängen. Threads: Threads: - - Symbol - Symbol - - - Address - Adresse - - - Code - Code - - - Section - Abschnitt - - - Name - Name - - - Symbols in "%1" - Symbole in "%1" - DebuggerEngine @@ -15744,53 +14593,6 @@ Soll es noch einmal versucht werden? GLSL - - GLSLEditor::Internal::GLSLEditorPlugin - - GLSL - GLSL sub-menu in the Tools menu - GLSL - - - Creates a fragment shader in the OpenGL/ES 2.0 Shading Language (GLSL/ES). Fragment shaders generate the final pixel colors for triangles, points and lines rendered with OpenGL. - Erstellt einen Fragment Shader in der OpenGL/ES 2.0 Shading Language (GLSL/ES). Fragment Shader generieren die Farben der Pixel für von OpenGL gerenderte Dreiecke, Punkte und Linien. - - - Fragment Shader (OpenGL/ES 2.0) - Fragment Shader (OpenGL/ES 2.0) - - - Creates a vertex shader in the OpenGL/ES 2.0 Shading Language (GLSL/ES). Vertex shaders transform the positions, normals and texture co-ordinates of triangles, points and lines rendered with OpenGL. - Erstellt einen Vertex Shader in der OpenGL/ES 2.0 Shading Language (GLSL/ES). Vertex Shader transfomieren die Positionen, Normalen und Texturkoordinaten von mit OpenGL gerenderten Dreiecken, Punkten und Linien. - - - Vertex Shader (OpenGL/ES 2.0) - Vertex Shader (OpenGL/ES 2.0) - - - Creates a fragment shader in the Desktop OpenGL Shading Language (GLSL). Fragment shaders generate the final pixel colors for triangles, points and lines rendered with OpenGL. - Erstellt einen Fragment Shader in der Desktop OpenGL Shading Language (GLSL). Fragment Shader generieren die Farben der Pixel für von OpenGL gerenderte Dreiecke, Punkte und Linien. - - - Fragment Shader (Desktop OpenGL) - Fragment Shader (Desktop OpenGL) - - - Creates a vertex shader in the Desktop OpenGL Shading Language (GLSL). Vertex shaders transform the positions, normals and texture co-ordinates of triangles, points and lines rendered with OpenGL. - Erstellt einen Vertex Shader in der Desktop OpenGL Shading Language (GLSL). Vertex Shader transfomieren die Positionen, Normalen und Texturkoordinaten von mit OpenGL gerenderten Dreiecken, Punkten und Linien. - - - Vertex Shader (Desktop OpenGL) - Vertex Shader (Desktop OpenGL) - - - - GLSLEditor::GLSLFileWizard - - New %1 - Neue %1 - - Macros::Internal::MacroLocatorFilter @@ -15927,35 +14729,6 @@ Soll es noch einmal versucht werden? Grundzustand - - JsFileOptionsPage - - Options - Einstellungen - - - Stateless library - Bibliothek ohne internen Zustand - - - Usually each QML component instance has a unique copy of -imported JavaScript libraries. Indicating that a library is -stateless means that a single instance will be shared among -all components. Stateless libraries will not be able to access -QML component instance objects and properties directly. - Für gewöhnlich hat jede Instanz einer QML-Komponente eine eindeutige Kopie -der importierten Java-Script-Bibliotheken. Eine zustandslose Bibliothek wird -von allen Komponenten verwendet. Zustandslose Bibliotheken können nicht direkt -auf Instanzen von QML-Komponenten-Objekten und Eigenschaften zugreifen. - - - - QmlJSEditor::JsFileWizard - - New %1 - Neue %1 - - QmlJSEditor::Internal::QmlJSOutlineTreeView @@ -16421,6 +15194,10 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt. Core::VariableChooser + + Select a variable to insert. + Wählen Sie eine Variable aus, die eingefügt werden soll. + Variables Variablen @@ -16433,17 +15210,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Bazaar - - Bazaar::Internal::BazaarEditor - - Annotate %1 - Annotation für %1 - - - Annotate parent revision %1 - Annotation der übergeordneten Revision "%1" - - Bazaar::Internal::BazaarPlugin @@ -16486,6 +15252,14 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.ALT+Z,Alt+D ALT+Z,Alt+D + + Clones a Bazaar branch and tries to load the contained project. + Erstellt einen Clone eines Bazaar-Branches und versucht, das darin enthaltene Projekt zu laden. + + + Bazaar Clone (Or Branch) + Bazaar Clone (oder Branch) + Meta+Z,Meta+D Meta+Z,Meta+D @@ -16817,13 +15591,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Externe Werkzeuge - - CppEditor::Internal::CPPEditorWidget - - &Refactor - &Refactoring - - ProjectExplorer::Internal::GccToolChainFactory @@ -16936,41 +15703,6 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Entfernen - - TextEditor::BaseTextEditorWidget - - CTRL+D - CTRL+D - - - Print Document - Dokument drucken - - - File Error - Dateifehler - - - <b>Error:</b> Could not decode "%1" with "%2"-encoding. Editing not possible. - <b>Fehler:</b> Die Datei "%1" kann nicht mit der Zeichenkodierung "%2" dargestellt werden. Sie kann nicht editiert werden. - - - Select Encoding - Zeichenkodierung auswählen - - - Delete UTF-8 BOM on Save - UTF-8 BOM beim Speichern entfernen - - - Add UTF-8 BOM on Save - UTF-8 BOM beim Speichern hinzufügen - - - The text is too large to be displayed (%1 MB). - Texte dieser Größe (%1 MB) können nicht angezeigt werden. - - VcsBase::VcsBaseClient @@ -17287,8 +16019,8 @@ Lokale Pull-Operationen werden nicht auf den Master-Branch angewandt.Quellpfad-Zuordnung - <html><head/><body><p>Mappings of source file folders to be used in the debugger can be entered here.</p><p>This is useful when using a copy of the source tree at a location different from the one at which the modules where built, for example, while doing remote debugging.</body></html> - <html><head/><body><p>Hier können Zuordnungen für die beim Debuggen benutzten Quelldateien festgelegt werden.</p><p>Das ist nützlich, wenn eine lokale Kopie des Quelldateibaums verwendet wird, der sich von der beim Erstellen der Module verwendeten unterscheidet, zum Beispiel beim Remote-Debuggen.</body></html> + <html><head/><body><p>Mappings of source file folders to be used in the debugger can be entered here.</p><p>This is useful when using a copy of the source tree at a location different from the one at which the modules where built, for example, while doing remote debugging.</p><p>If source is specified as a regular expression by starting it with an open parenthesis, Qt Creator matches the paths in the ELF with the regular expression to automatically determine the source path.</p><p>Example: <b>(/home/.*/Project)/KnownSubDir -> D:\Project</b> will substitute ELF built by any user to your local project directory.</p></body></html> + <html><head/><body><p>Hier können Zuordnungen für die beim Debuggen benutzten Quelldateien festgelegt werden.</p><p>Das ist nützlich, wenn eine lokale Kopie des Quelldateibaums verwendet wird, der sich von der beim Erstellen der Module verwendeten unterscheidet, zum Beispiel beim Remote-Debuggen.</p><p>Wenn die Zuordnung durch eine öffnende Klammer am Anfang als regulärer Ausdruck angegeben wird, verwendet Qt Creator die passenden Pfade im ELF um den Quellpfad automatisch zu bestimmen.</p><p>Beispiel: <b>(/home/.*/Projekt)/BekanntesUnterverzeichnis -> D:\Projekt</b> wird von einem beliebigen Benutzer erstelltes ELF in Ihr lokales Projektverzeichnis umleiten.</p></body></html> Add a mapping for Qt's source folders when using an unpatched version of Qt. @@ -18402,21 +17134,6 @@ Bei vollständiger Cache-Simulation werden weitere Ereigniszähler aktiviert: Jetzt erstellen - - Core::Internal::PromptOverwriteDialog - - Overwrite Existing Files - Existierende Dateien überschreiben - - - The following files already exist in the folder -%1. -Would you like to overwrite them? - Die folgenden Dateien existieren bereits im Ordner -%1 -Sollen sie überschrieben werden? - - Core::InfoBarDisplay @@ -18466,13 +17183,6 @@ Sollen sie überschrieben werden? Leerzeilen nicht berücksichtigen - - Debugger::Internal::DebuggerToolTipWidget - - Previous - Vorige - - Debugger::Internal::RegisterMemoryView @@ -18484,32 +17194,6 @@ Sollen sie überschrieben werden? Register "%1" - - FakeVim::Internal::FakeVimUserCommandsModel - - Action - Aktion - - - Command - Kommando - - - User command #%1 - Nutzerkommando #%1 - - - - FakeVim::Internal::FakeVimUserCommandsPage - - User Command Mapping - Zuordnung von Kommandos - - - FakeVim - FakeVim - - ImageViewer::Internal::ImageViewer @@ -18603,13 +17287,6 @@ Sollen sie überschrieben werden? Coding-Stil - - CodeStyleSettingsPanel - - Code Style - Coding-Stil - - ProjectExplorer::EditorConfiguration @@ -18656,21 +17333,6 @@ Sollen sie überschrieben werden? Sie nehmen einen Ausgabestrom von Puppet auf, welche abgestürzt ist. Es wird empfohlen, Qt Quick Designer neu zu öffnen und von vorn zu beginnen. - - QmlJSEditor::Internal::HoverHandler - - Library at %1 - Bibliothek bei %1 - - - Dumped plugins successfully. - Plugin-Information erfolgreich bestimmt. - - - Read typeinfo files successfully. - typeinfo-Dateien gelesen. - - QmlJSTools @@ -18740,11 +17402,21 @@ Wollen Sie fortfahren? QML traces (*%1) QML-Traces (*%1) + + You are about to discard the profiling data, including unsaved notes. Do you want to continue? + Sie sind dabei die Profildaten einschließlich ungespeicherter Notizen zu verwerfen. Wollen Sie fortfahren? + Application finished before loading profiled data. Please use the stop button instead. Die Anwendung wurde vor dem Laden der Profildaten beendet. Bitte verwenden Sie den Stop-Button. + + + Starting a new profiling session will discard the previous data, including unsaved notes. +Do you want to save the data first? + Wenn Sie eine neue Profiling-Sitzung beginnen, werden die Profildaten einschließlich ungespeicherter Notizen verworfen. +Wollen Sie die Daten vorher speichern? Discard data @@ -18813,6 +17485,10 @@ Bitte verwenden Sie den Stop-Button. Requires Qt 4.8.0 or newer. Erfordert Qt 4.8.0 oder neuer. + + Requires Qt 5.3.0 or newer. + Erfordert Qt 5.3.0 oder neuer. + Building Debugging Helpers Erstelle Ausgabe-Hilfsbibliothek @@ -18844,10 +17520,6 @@ Bitte verwenden Sie den Stop-Button. Qmake Not Executable Qmake nicht ausführbar. - - Select a qmake executable - Wählen Sie die ausführbare qmake-Datei aus - This Qt version was already registered as "%1". Diese Qt-Version ist bereits unter "%1" registriert. @@ -18977,10 +17649,6 @@ Bitte verwenden Sie den Stop-Button. Visualization Visualisierung - - Load External XML Log File - Externe XML-Logdatei laden - Go back one step in history. This will select the previously selected item. Gehe einen Schritt im Verlauf zurück. Das vorher ausgewählte Element wird wieder ausgewählt. @@ -18989,6 +17657,10 @@ Bitte verwenden Sie den Stop-Button. Reset all event counters. Alle Ereigniszähler zurücksetzen. + + Load External Log File + Externe Logdatei laden + Request the dumping of profile information. This will update the Callgrind visualization. Fordere das Ausschreiben der Profiler-Informationen an. Die Callgrind-Visualisierung wird dadurch aktualisiert. @@ -19723,6 +18395,22 @@ Zusätzlich wird die Verbindung zum Gerät getestet. MainView + + Memory Usage + Speicherverbrauch + + + Pixmap Cache + Pixmap Cache + + + Scene Graph + Scene Graph + + + Animations + Animationen + Painting Zeichnen @@ -19743,6 +18431,10 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Handling Signal Signal wird behandelt + + Input Events + Eingabeereignisse + JavaScript JavaScript @@ -20430,17 +19122,6 @@ Filter: %2 Ausgabe: - - VcsBase::Command - - Unable to start process, binary is empty - Der Prozess kann nicht gestartet werden, da keine ausführbare Datei angegeben wurde - - - Error: Executable timed out after %1s. - Fehler: Zeitüberschreitung nach %1s. - - TextEditor::CodeStyleEditor @@ -21380,7 +20061,7 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Retrieve list of branches in repository. - Abfrage der Liste der Branches des Repositories. + Abfrage der Liste der Branches des Repositorys. ... @@ -21455,7 +20136,7 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. 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). - Kommando zur graphischen Passwortabfrage bei SSH-Authorisierung eines Repositories + Kommando zur graphischen Passwortabfrage bei SSH-Authorisierung eines Repositorys (siehe SSH-Dokumentation zur Umgebungsvariable SSH-ASKPASS). @@ -21547,84 +20228,6 @@ should a repository require SSH-authentication (see documentation on SSH and the Umbenennen... - - ZeroConf - - Zeroconf could not load a valid library, failing. - Zeroconf konnte keine gültige Bibliothek laden, Fehler. - - - Zeroconf giving up on non working %1 (%2). - Zeroconf verwendet die nicht funktionierende Bibliothek %1 nicht mehr (%2). - - - Zeroconf has no valid library, aborting connection. - Zeroconf hat keine gültige Bibliothek, beende Verbindung. - - - Zeroconf giving up on %1, switching to %2. - Zeroconf verwendet die nicht funktionierende Bibliothek %1 nicht mehr, schaltet auf %2 um. - - - Zeroconf giving up on %1, no fallback provided, aborting connection. - Zeroconf verwendet die Bibliothek %1 nicht mehr; Verbindung wird abgebrochen, da keine Ausweichlösung vorhanden. - - - Trying %1... - Versuche %1... - - - Zeroconf using %1 failed the initialization of the main library connection with error %2. - Zeroconf: Die Initialisierung der Hauptverbindung unter Verwendung der Bibliothek %1 schlug fehl: %2. - - - Zeroconf using %1 failed because no daemon is running. - Zeroconf unter Verwendung von %1 schlug fehl, da kein Hintergrundprozess läuft. - - - Starting the Zeroconf daemon using %1 seems successful, continuing. - Das Starten des Zeroconf-Dämons %1 schien erfolgreich zu sein, setze fort. - - - Succeeded using %1. - Erfolg bei Verwendung von %1. - - - Zeroconf using %1 failed getProperty call with error %2. - Der Aufruf von getProperty schlug bei Zeroconf unter Verwendung von %1 fehl: %2. - - - MainConnection could successfully create a connection using %1. - Die Hauptverbindung konnte unter Verwendung von %1 erfolgreich hergestellt werden. - - - Zeroconf, unexpected start status, aborting. - Unerwarteter Status beim Start von Zeroconf, Abbruch. - - - Zeroconf detected an unexpected return status of handleEvent. - Zeroconf hat einen unerwarteten Rückgabstatus von handleEvent festgestellt. - - - Zeroconf for [%1] accumulated %n consecutive errors, aborting. - - Zeroconf hat bei [%1] einen Fehler festgestellt, Abbruch. - Zeroconf hat bei [%1] %n aufeinanderfolgende Fehler festgestellt, Abbruch. - - - - Could not load native library. - Die native Bibliothek konnte nicht geladen werden. - - - Skipping over Avahi compatibility lib (or obsolete mdnsd). - Überspringe Avahi-Kompatibilitätsbibliothek (oder veralteten mdnsd). - - - Warning: Detected an obsolete version of Apple Bonjour. Disable, uninstall, or upgrade it, or zeroconf will fail. - Warnung: Es wurde eine veraltete Version von Apple Bonjour festgestellt, bitte deaktivieren oder deinstallieren Sie es oder installieren Sie eine neuere Version, ansonsten wird zeroconf fehlschlagen. - - AutotoolsProjectManager::Internal::AutogenStepFactory @@ -22093,53 +20696,6 @@ Referenzen zu Elementen in anderen Dateien, Schleifen, o.ä.) Projekt konnte nicht geöffnet werden - - ZeroConf::Internal::ZConfLib - - AvahiZConfLib could not load the native library "%1": %2 - AvahiZConfLib konnte die native Bibliothek "%1" nicht laden: %2 - - - %1 cannot create a client. The daemon is probably not running. - %1 konnte keinen Client erzeugen (möglicherweise läuft kein Hintergrundprozess). - - - cAvahiClient, server collision. - cAvahiClient, Server-Kollision. - - - cAvahiClient, an error occurred on the client side. - cAvahiClient, client-seitiger Fehler. - - - cAvahiClient, still connecting, no server available. - cAvahiClient, versuche Verbindung herzustellen, es ist kein Server verfügbar. - - - Unexpected state %1 in cAvahiClientReply. - Unerwarteter Status %1 in cAvahiClientReply. - - - Unexpected state %1 in cAvahiBrowseReply. - Unerwarteter Status %1 in cAvahiBrowseReply. - - - %1 failed to kill other daemons with "%2". - %1 konnte die anderen Hintergrundprozesse mit dem Befehl "%2" nicht beenden. - - - %1 detected a file at /tmp/mdnsd, daemon startup will probably fail. - %1 hat eine Datei bei /tmp/mdnsd festgestellt, der Start des Hintergrundprozesses wird voraussichtlich fehlschlagen. - - - %1: log of previous daemon run is: "%2". - %1: Das Log des vorangegangenen Hintergrundprozesses ist: "%2". - - - %1 failed starting embedded daemon at %2. - %1 konnte den eingebetteten Hintergrundprozess %2 nicht starten. - - QmlJSEditor::AddAnalysisMessageSuppressionComment @@ -22244,6 +20800,14 @@ Referenzen zu Elementen in anderen Dateien, Schleifen, o.ä.) QtSupport + + Qt Versions + Qt Versionen + + + Qt Class Generation + Qt-Klassenerzeugung + Desktop Desktop @@ -22429,21 +20993,6 @@ Referenzen zu Elementen in anderen Dateien, Schleifen, o.ä.) %1 (aktuelle Sitzung) - - BinEditorDocument - - The Binary Editor cannot open empty files. - Der Binäreditor kann keine leeren Dateien öffnen. - - - Cannot open %1: %2 - Die Datei %1 kann nicht geöffnet werden: %2 - - - File Error - Dateifehler - - Core::DocumentManager @@ -22728,128 +21277,6 @@ Referenzen zu Elementen in anderen Dateien, Schleifen, o.ä.) Keystore-Passwort verwenden - - AndroidDeployStepWidget - - Form - Form - - - Qt Deployment - Deployment von Qt - - - Use Ministro service to install Qt - Verwende den Ministro-Dienst, um Qt zu installieren - - - Deploy local Qt libraries to temporary directory - Lokale Qt-Bibliotheken in temporäres Verzeichnis kopieren - - - Creates a standalone APK. - Eigenständiges APK erstellen. - - - Bundle Qt libraries in APK - Qt-Bibliotheken in APK einpacken - - - Advanced Actions - Erweiterte Aktionen - - - Clean Temporary Libraries Directory on Device - Verzeichnis mit temporären Bibliotheken auf dem Gerät leeren - - - Install Ministro from APK - Ministro aus APK installieren - - - Reset Default Devices - Geräteauswahl zurücksetzen - - - Uses the external Ministro application to download and maintain Qt libraries. - Verwendet die externe Ministro-Anwendung, um die Qt-Bibliotheken herunterzuladen und zu verwalten. - - - Pushes local Qt libraries to device. You must have Qt libraries compiled for that platform. -The APK will not be usable on any other device. - Lokale Qt-Bibliotheken auf das Gerät kopieren. Sie müssen die für diese Plattform übersetzten Qt-Bibliotheken bereitstellen. -Dieses APK kann auf keinem anderen Gerät verwendet werden. - - - - AndroidPackageCreationWidget - - Application - Anwendung - - - Libraries - Bibliotheken - - - Read information from application (must be compiled) - Lese Information von Anwendung (muss kompiliert vorliegen) - - - Required Qt libraries - Erforderliche Qt-Bibliotheken - - - Up - Nach oben - - - Down - Nach unten - - - Sign package - Paket signieren - - - Keystore: - Keystore: - - - Create - Erzeugen - - - Browse - Auswählen - - - Open package location after is complete - Pfad zu Paket nach Beendigung öffnen - - - Certificate alias: - Alias des Zertifikats: - - - <b>Android target SDK:</b> - <b>Android-Ziel-SDK:</b> - - - <center>Prebundled libraries</center> -<p align="justify">Please be aware that the order is very important: If library <i>A</i> depends on library <i>B</i>, <i>B</i> <b>must</b> go before <i>A</i>.</p> - <center>Prebundled</center> -<p align="justify">Bitte beachten Sie, dass die Reihenfolge sehr wichtig ist: Wenn Bibliothek <i>A</i> von Bibliothek <i>B</i> abhängt, <b>muss</b> <i>B</i> vor <i>A</i> erscheinen.</p> - - - Signing a debug package - Signiere Debug-Paket - - - Automatically check required Qt libraries from compiled application. - Für die Anwendung erforderliche Qt-Bibliotheken automatisch bestimmen. - - AndroidSettingsWidget @@ -22924,6 +21351,10 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. <a href="xx">The GDB in the NDK appears to have broken python support.</a> <a href="xx">Die GDB-Version im NDK scheint Python nicht korrekt zu unterstützen.</a> + + Use Gradle instead of Ant + Gradle statt Ant verwenden + Core::RemoveFileDialog @@ -23500,17 +21931,6 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Arbeitsverzeichnis: - - Android::Internal::AndroidConfigurations - - Android Debugger for %1 - Android-Debugger für %1 - - - Android for %1 (GCC %2, Qt %3) - Android für %1 (GCC %2, Qt %3) - - Android @@ -23571,76 +21991,6 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Deployment auf Android-Gerät - - Android::Internal::AndroidDeployStep - - Deploy to Android device - AndroidDeployStep default display name - Deployment auf Android-Gerät - - - No Android toolchain selected. - Es ist keine Android-Toolchain ausgewählt. - - - Package deploy: Running command '%1 %2'. - Paket-Deployment: Führe Befehl '%1 %2' aus. - - - Packaging error: Could not start command '%1 %2'. Reason: %3 - Fehler bei Paketerstellung: Das Kommando '%1 %2' konnte nicht ausgeführt werden. Grund: %3 - - - Packaging Error: Command '%1 %2' failed. - Fehler bei Paketerstellung: Das Kommando '%1 %2' schlug fehl. - - - Reason: %1 - Ursache: %1 - - - Exit code: %1 - Rückgabewert: %1 - - - Deploy Qt libraries. This may take some time, please wait. - Das Deployment der Qt-Bibliotheken kann einige Zeit dauern, bitte warten Sie. - - - Package installation failed. - Die Installation des Pakets schlug fehl. - - - Pulling files necessary for debugging. - Die für das Debuggen erforderlichen Dateien werden installiert. - - - Installing package onto %1. - Paket wird auf %1 installiert. - - - - Android::Internal::AndroidDeployStepFactory - - Deploy to Android device or emulator - Deployment auf Android-Gerät oder Emulator - - - - Android::Internal::AndroidDeployStepWidget - - <b>Deploy configurations</b> - <b>Deployment-Konfigurationen</b> - - - Qt Android Smart Installer - Qt Android Smart Installer - - - Android package (*.apk) - Android-Paket (*.apk) - - Android::Internal::AndroidDeviceFactory @@ -23648,193 +21998,6 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Android-Gerät - - Android::Internal::AndroidManager - - Error creating Android directory "%1". - Fehler beim Anlegen des Android-Verzeichnisses "%1". - - - No Qt for Android SDKs were found. -Please install at least one SDK. - Es wurden keine SDKs mit Qt für Android gefunden. -Bitte installieren Sie zumindest ein SDK. - - - Warning - Warnung - - - Android files have been updated automatically. - Die Android-Dateien wurden automatisch aktualisiert. - - - Unknown Android version. API Level: %1 - Unbekannte Android-Version. API-Level: %1 - - - Cannot parse "%1". - "%1" kann nicht ausgewertet werden. - - - Cannot open "%1". - "%1" kann nicht geöffnet werden. - - - Error creating Android templates. - Fehlschlag beim Erstellen der Android-Vorlagendateien. - - - Starting Android virtual device failed. - Das Starten des virtuellen Android-Geräts schlug fehl. - - - - Android::Internal::AndroidPackageCreationStep - - Packaging for Android - Paketierung für Android - - - Cannot create Android package: current build configuration is not Qt 4. - Es konnte kein Android-Paket erstellt werden: Die gegenwärtige Build-Konfiguration ist keine Qt 4-Build-Konfiguration. - - - Cannot create Android package: No ANDROID_TARGET_ARCH set in make spec. - Kann Android-Paket nicht erzeugen: ANDROID_TARGET_ARCH in make spec nicht gesetzt. - - - Warning: Signing a debug package. - Warnung: Es wird ein Debug-Paket signiert. - - - Cannot find ELF information - Es konnte keine ELF-Information gefunden werden - - - Error - Fehler - - - Failed to run keytool - Das keytool konnte nicht ausgeführt werden - - - Invalid password - Ungültiges Passwort - - - Copy Qt app & libs to Android package ... - Kopiere Qt-Anwendung und -Bibliotheken zu Android-Paket... - - - Cannot find "%1". -Please make sure your application is built successfully and is selected in Application tab ('Run option'). - "%1" konnte nicht gefunden werden. -Bitte stellen Sie sicher, dass Ihre Anwendung erfolgreich erstellt und im Reiter 'Anwendung' ('Ausführungseinstellungen') ausgewählt wurde. - - - Can't copy gdbserver from "%1" to "%2" - gdbserver kann nicht von "%1" nach "%2" kopiert werden - - - Creating package file ... - Erzeuge Paketdatei... - - - Signing package ... - Paketdatei wird signiert... - - - Failed, try again - Fehler, bitte wiederholen - - - Release signed package created to %1 - Signiertes Paket für %1 freigeben - - - Package created. - Paketdatei erzeugt. - - - Package deploy: Running command '%1 %2'. - Paket-Deployment: Führe Befehl '%1 %2' aus. - - - Packaging failed. - Die Paketerstellung schlug fehl. - - - Packaging error: Could not start command '%1 %2'. Reason: %3 - Fehler bei Paketerstellung: Das Kommando '%1 %2' konnte nicht ausgeführt werden. Grund: %3 - - - Packaging Error: Command '%1 %2' failed. - Fehler bei Paketerstellung: Das Kommando '%1 %2' schlug fehl. - - - Reason: %1 - Ursache: %1 - - - Exit code: %1 - Rückgabewert: %1 - - - Keystore - Keystore - - - Keystore password: - Keystore-Passwort: - - - Certificate - Zertifikat - - - Certificate password (%1): - Passwort des Zertifikats (%1): - - - - Android::Internal::AndroidPackageCreationWidget - - <b>Package configurations</b> - <b>Paket-Konfigurationen</b> - - - Select keystore file - Wählen Sie eine Keystore-Datei aus - - - Keystore files (*.keystore *.jks) - Keystore-Dateien (*.keystore *.jks) - - - - Android::Internal::AndroidPackageInstallationStep - - Copy application data - Anwendungsdaten kopieren - - - Removing directory %1 - Lösche Verzeichnis %1 - - - - Android::Internal::AndroidRunConfiguration - - The .pro file "%1" is currently being parsed. - Die .pro-Datei "%1" wird gerade ausgewertet. - - - Run on Android device - Ausführung auf Android-Gerät - - Android::Internal::AndroidRunControl @@ -23864,6 +22027,14 @@ Bitte stellen Sie sicher, dass Ihre Anwendung erfolgreich erstellt und im Reiter Failed to forward C++ debugging ports. C++-Debuggerports konnten nicht übermittelt werden. + + Failed to forward ping pong ports. Reason: %1. + Die Ping-Pong-Ports konnten nicht übermittelt werden. Grund: %1. + + + Failed to forward ping pong ports. + Die Ping-Pong-Ports konnten nicht übermittelt werden. + Failed to forward QML debugging ports. Reason: %1. Die QML-Debuggerports konnten nicht übermittelt werden. Grund: %1. @@ -23876,6 +22047,10 @@ Bitte stellen Sie sicher, dass Ihre Anwendung erfolgreich erstellt und im Reiter Failed to start the activity. Reason: %1. Die Aktivität konnte nicht gestartet werden: Grund: %1. + + Failed to contact debugging port. + Debuggerport konnte nicht erreicht werden. + "%1" terminated. "%1" beendet. @@ -24075,10 +22250,6 @@ Wählen Sie Einstellungen > Erstellung und Ausführung > Qt Versionen, um Tries to install missing debug information. Versucht, fehlende Debuginformationen zu installieren. - - Unable to create a debugger engine of the type "%1" - Es konnte keine Debugger-Engine des Typs "%1" erzeugt werden - Debugger::Internal::GdbAttachEngine @@ -24837,10 +23008,6 @@ Einzelschritt in den Modul und das Setzen von Haltepunkten nach Datei und Zeilen Parse error: "%1" Fehler bei Auswertung: "%1" - - Parse error in line "%1" - Fehler bei Auswertung in Zeile "%1" - Gerrit::Internal::QueryContext @@ -25179,12 +23346,12 @@ Soll es noch einmal versucht werden? Ereignisse - Timeline - Timeline + V8 + V8 - JavaScript - JavaScript + Timeline + Zeitleiste @@ -25522,8 +23689,8 @@ Wollen Sie sie aktualisieren? Initialisierung fehlgeschlagen: %1 - Warning: "slog2info" is not found on the device, debug output not available! - Warnung: "slog2info" konnte nicht auf dem Gerät gefunden werden, es ist daher keine Debugausgabe verfügbar! + Warning: "slog2info" is not found on the device, debug output not available. + Warnung: "slog2info" konnte nicht auf dem Gerät gefunden werden, es ist daher keine Debugausgabe verfügbar. @@ -25726,13 +23893,6 @@ konnte nicht im Pfad gefunden werden. Alle Dateien (*) - - Android::Internal::AndroidPackageCreationFactory - - Create Android (.apk) Package - Android-Paket (*.apk) erstellen - - Android::Internal::AndroidDevice @@ -25744,13 +23904,6 @@ konnte nicht im Pfad gefunden werden. Android - - Android::Internal::AndroidPackageInstallationFactory - - Deploy to device - Deployment auf Gerät - - Android::Internal::AndroidQtVersion @@ -25956,13 +24109,6 @@ Qt Creator know about a likely URI. Der Sektionsname %1 von %2 ist hinter dem Dateiende - - ZeroConf::ServiceBrowser - - Starting Zeroconf Browsing - Beginne Zeroconf-Suche - - ProjectExplorer::DeviceUsedPortsGatherer @@ -26225,13 +24371,6 @@ Qt Creator know about a likely URI. Aktivität des Elements beibehalten - - ClearCase::Internal::ClearCaseEditor - - Annotate version "%1" - Annotation für Version "%1" - - ClearCase::Internal::ClearCasePlugin @@ -26801,6 +24940,14 @@ Qt Creator know about a likely URI. The debugger location must be given as an absolute path (%1). Der Pfad zum Debugger muss als absoluter Pfad angegeben werden (%1). + + Type of Debugger Backend + Typ des Debugger-Backends + + + unknown + unbekannt + No Debugger Kein Debugger @@ -26843,6 +24990,30 @@ Qt Creator know about a likely URI. Unnamed Unbenannt + + Kit + Kit + + + Kit ID + Kit-ID + + + Kit filesystem-friendly name + Kit-Name zur Verwendung als Dateiname + + + The name of the currently active kit. + Der Name des aktiven Kits. + + + The name of the currently active kit in a filesystem friendly version. + Der Name des aktiven Kits zur Verwendung als Dateiname. + + + The id of the currently active kit. + Die ID des aktiven Kits. + Clone of %1 Kopie von %1 @@ -26895,14 +25066,14 @@ Qt Creator know about a likely URI. ProjectExplorer::DeviceKitInformation - - Device does not match device type. - Das Gerät entspricht nicht dem Gerätetyp. - No device set. Es kein Gerät eingestellt. + + Device is incompatible with this kit. + Das Gerät ist inkompatibel zu diesem Kit. + Device Gerät @@ -26911,6 +25082,22 @@ Qt Creator know about a likely URI. Unconfigured Nicht konfiguriert + + Host address + Host-Adresse + + + SSH port + SSH-Port + + + User name + Benutzername + + + Private key file + Private Schlüsseldatei + ProjectExplorer::KitManager @@ -26937,6 +25124,10 @@ Qt Creator know about a likely URI. File system name: Dateisystemname: + + Display name is not unique. + Der anzuzeigende Name ist nicht einmalig. + Mark as Mutable Als veränderlich kennzeichnen @@ -27021,13 +25212,37 @@ Qt Creator know about a likely URI. Qt version Qt-Version: + + The version string of the current Qt version. + Die Versionsbezeichnung der aktuellen Qt-Version. + + + The type of the current Qt version. + Der Typ der aktuellen Qt-Version. + + + The mkspec of the current Qt version. + Die mkspec der aktuellen Qt-Version. + None Keine + + Name of Qt Version + Name der Qt-Version + + + unknown + unbekannt + ProjectExplorer::RunConfiguration + + Run Settings + Einstellungen zur Ausführung + Unknown error. Unbekannter Fehler. @@ -27435,14 +25650,6 @@ wirklich löschen? Populate source file view automatically Quelldatei-Ansicht automatisch aktualisieren - - Close temporary views on debugger exit - Temporäre Ansichten bei Beendigung des Debuggens schließen - - - Stopping and stepping in the debugger will automatically open source or disassembler views associated with the current location. Select this option to automatically close them when the debugger exits. - Das Anhalten oder die Ausführung von Einzelschritten im Debugger öffnet automatisch Ansichten mit Quelltext oder Disassembler der betreffenden Stelle. Aktivieren Sie diese Einstellung, um diese beim Beenden des Debuggers automatisch zu schließen. - Switch to previous mode on debugger exit Bei Beginn des Debuggens aktiven Modus bei Beendigung wiederherstellen @@ -27471,6 +25678,26 @@ wirklich löschen? Show QML object tree QML-Objektbaum anzeigen + + Stopping and stepping in the debugger will automatically open views associated with the current location. + Das Anhalten oder die Ausführung von Einzelschritten im Debugger öffnet automatisch Anzeigen mit Quelltext oder Disassembler der betreffenden Stelle. + + + Close temporary source views on debugger exit + Temporäre Quelltextanzeigen bei Beendigung des Debuggens schließen + + + Select this option to close automatically opened source views when the debugger exits. + Aktivieren Sie diese Einstellung, um automatisch geöffnete Quelltextanzeigen beim Beenden des Debuggers zu schließen. + + + Close temporary memory views on debugger exit + Temporäre Speicheranzeigen bei Beendigung des Debuggens schließen + + + Select this option to close automatically opened memory views when the debugger exits. + Aktivieren Sie diese Einstellung, um automatisch geöffnete Speicheranzeigen beim Beenden des Debuggers zu schließen. + Set breakpoints using a full absolute path Vollständiger Pfad für Haltepunkte als Vorgabe @@ -27938,6 +26165,14 @@ Entfernt: %4 Show debug, log, and info messages. Zeige Debug-, Log- und informative Nachrichten. + + Show warning messages. + Warnungen anzeigen. + + + Show error messages. + Fehlermeldungen anzeigen. + QML/JS Console QML/JS-Konsole @@ -28520,8 +26755,40 @@ Entfernt: %4 Zur Steigerung der Ausführungsgeschwindigkeit sollte %1 an Stelle von 'var' oder 'variant' verwendet werden. - This type is not supported as a root element by Qt Quick Designer %1. - Dieser Typ wird von Qt Quick Designer %1 nicht als Wurzelelement unterstützt. + This type (%1) is not supported in the Qt Quick Designer. + Dieser Typ (%1) wird von Qt Quick Designer nicht unterstützt. + + + This type (%1) is not supported as a root element by Qt Quick Designer. + Dieser Typ (%1) wird von Qt Quick Designer nicht als Wurzelelement unterstützt. + + + This type (%1) is not supported as a root element of a Qt Quick UI form. + Dieser Typ (%1) wird nicht als Wurzelelement eines Qt Quick UI-Formulars unterstützt. + + + This type (%1) is not supported in a Qt Quick UI form. + Dieser Typ (%1) wird in einem Qt Quick UI-Formular nicht unterstützt. + + + Functions are not supported in a Qt Quick UI form. + Funktionen werden in einem Qt Quick UI-Formular nicht unterstützt. + + + Java Script blocks are not supported in a Qt Quick UI form. + JavaScript Blöcke werden in einem Qt Quick UI-Formular nicht unterstützt. + + + Behavior type is not supported in a Qt Quick UI form. + Typ "Behavior" wird in einem Qt Quick UI-Formular nicht unterstützt. + + + States are only supported in the root item in a Qt Quick UI form. + States werden nur im Wurzelelement eines Qt Quick UI-Formulars unterstützt. + + + Referencing the parent of the root item is not supported in a Qt Quick UI form. + Bezüge auf das übergeordnete Element des Wurzelelements werden in einem Qt Quick UI-Formular nicht unterstützt. Do not use "%1" as a constructor. @@ -28632,10 +26899,6 @@ Entfernt: %4 Imperative code is not supported in the Qt Quick Designer. Imperativer Code wird von Qt Quick Designer nicht unterstützt. - - This type is not supported in the Qt Quick Designer. - Dieser Typ wird von Qt Quick Designer nicht unterstützt. - Reference to parent item cannot be resolved correctly by the Qt Quick Designer. Der Verweis auf das Elternelement kann von Qt Quick Designer nicht korrekt aufgelöst werden. @@ -28719,14 +26982,6 @@ Entfernt: %4 Keep going when errors occur (if at all possible). Beim Auftreten von Fehlern fortsetzen (falls möglich). - - Instead of using the file timestamps that are stored in the build graph, retrieve the timestamps from the file system. - Zeitstempel vom Dateisystem anstelle der im Build-Graphen gespeicherten Zeitstempel verwenden. - - - Check timestamps - Zeitstempel prüfen - QbsProjectManager::Internal::QbsCleanStepConfigWidget @@ -28820,6 +27075,14 @@ Entfernt: %4 QbsProjectManager::Internal::QbsProject + + Failed! + Fehler! + + + Could not write project file %1. + Die Projektdatei %1 konnte nicht geschrieben werden. + Reading Project "%1" Lese Projekt "%1" @@ -28893,17 +27156,17 @@ Entfernt: %4 Text Text - - The text shown on the button - Der auf der Schaltfläche gezeigte Text - Checked Eingeschaltet - The state of the button - Zustand der Schaltfläche + Text displayed on the button. + Der auf der Schaltfläche angezeigte Text. + + + State of the button. + Zustand der Schaltfläche. Checkable @@ -28941,6 +27204,10 @@ Entfernt: %4 Focus on press Fokussieren durch Betätigen + + Determines whether the button gets focus if pressed. + Bestimmt, ob die Schaltfäche bei Betätigung den Fokus bekommt. + Icon source Bildquelle @@ -28960,14 +27227,6 @@ Entfernt: %4 Text Text - - The text shown on the check box - Der Text für die Checkbox - - - The state of the check box - Zustand der Checkbox - Determines whether the check box gets focus if pressed. Bestimmt, ob die Checkbox bei Betätigung den Fokus bekommt. @@ -28976,6 +27235,14 @@ Entfernt: %4 Checked Eingeschaltet + + Text shown on the check box. + Der Text für die Checkbox. + + + State of the check box. + Zustand der Checkbox. + Focus on press Fokussieren durch Betätigen @@ -28991,6 +27258,10 @@ Entfernt: %4 Focus on press Fokussieren durch Betätigen + + Determines whether the combobox gets focus if pressed. + Bestimmt, ob die Combobox bei Betätigung den Fokus bekommt. + RadioButtonSpecifics @@ -29003,8 +27274,8 @@ Entfernt: %4 Text - The text label for the radio button - Der Text für den Radioknopf + Text label for the radio button. + Der Text für den Radioknopf. Checked @@ -29012,12 +27283,16 @@ Entfernt: %4 Determines whether the radio button is checked or not. - Bestimmt, ob die Schaltfläche eingeschaltet ist oder nicht. + Bestimmt, ob der Radioknopf eingeschaltet ist oder nicht. Focus on press Fokussieren durch Betätigen + + Determines whether the radio button gets focus if pressed. + Bestimmt, ob der Radioknopf bei Betätigung den Fokus bekommt. + TextAreaSpecifics @@ -29025,6 +27300,10 @@ Entfernt: %4 Text Text + + Text shown on the text area. + Der im Textfeld angezeigte Text. + Read only Schreibgeschützt @@ -29041,25 +27320,21 @@ Entfernt: %4 Document margins Ränder des Dokuments - - The margins of the text area - Ränder des Textfelds - Text Area Textfeld - - The text shown on the text area - Der im Textfeld angezeigte Text - Frame width Rahmenbreite - The width of the frame - Breite des Rahmens + Margins of the text area. + Ränder des Textfelds. + + + Width of the frame. + Breite des Rahmens. Contents frame @@ -29108,17 +27383,17 @@ Entfernt: %4 Text Text - - The text shown on the text field - Der auf der Textzeile gezeigte Text - Placeholder text Platzhaltertext - The placeholder text - Platzhaltertext + Text shown on the text field. + Der auf der Textzeile gezeigte Text. + + + Placeholder text. + Platzhaltertext. Read only @@ -29652,70 +27927,10 @@ Entfernt: %4 Select all, if possible: Möglichst alle auswählen: - - Mixed - Gemischt - Make Writable Schreibbar machen - - Failed to %1 File - Fehlschlag bei: %1 Datei - - - No Version Control System Found - Es konnte kein Versionskontrollsystem gefunden werden - - - Cannot Set Permissions - Fehlschlag beim Setzen von Dateizugriffsrechten - - - Cannot Save File - Die Datei konnte nicht gespeichert werden - - - Canceled Changing Permissions - Ändern der Berechtigungen abgebrochen - - - Could Not Change Permissions on Some Files - Die Berechtigungen konnten bei einigen Dateien nicht geändert werden - - - See details for a complete list of files. - Die komplette Dateiliste finden Sie unter Details. - - - Change &Permission - &Berechtigung ändern - - - The following files are not checked out yet. -Do you want to check them out now? - Die folgenden Dateien sind noch nicht ausgecheckt. -Möchten Sie sie jetzt auschecken? - - - %1 file %2 from version control system %3 failed. - Fehlschlag bei %1 von Datei %2 vom Versionskontrollsystem %3. - - - Cannot open file %1 from version control system. -No version control system found. - Die Datei %1 kann nicht vom Versionskontrollsystem geöffnet werden. -Es konnte kein Versionskontrollsystem gefunden werden. - - - Cannot set permissions for %1 to writable. - Die Datei %1 konnte nicht schreibbar gemacht werden. - - - Cannot save file %1 - Die Datei %1 kann nicht gespeichert werden - Open with VCS Öffnen mittels Versionskontrollsystem @@ -29775,14 +27990,6 @@ Es konnte kein Versionskontrollsystem gefunden werden. &Reviewers: &Reviewer: - - Comma-separated list of reviewers. - -Partial names can be used if they are unambiguous. - Kommaseparierte Liste der Reviewer. - -Kurznamen können verwendet werden, sofern sie eindeutig sind. - &Local branch: &Lokaler Branch: @@ -29791,6 +27998,18 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Target &branch: Ziel-&Branch: + + Comma-separated list of reviewers. + +Reviewers can be specified by nickname or email address. Spaces not allowed. + +Partial names can be used if they are unambiguous. + Kommaseparierte Liste der Reviewer. + +Reviewer können mit Benutzernamen oder E-Mail-Adresse angegeben werden. Leerzeichen sind nicht erlaubt. + +Teilnamen können verwendet werden, sofern sie eindeutig sind. + ProjectExplorer::DesktopDeviceConfigurationWidget @@ -29864,20 +28083,8 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Core::VariableManager - %1: Full path including file name. - %1: Vollständiger Pfad einschließlich Dateiname. - - - %1: Full path excluding file name. - %1: Vollständiger Pfad ohne Dateiname. - - - %1: File name without path. - %1: Dateiname ohne Pfad. - - - %1: File base name without path and suffix. - %1: Datei-Basisname ohne Pfad und Endung. + Access environment variables. + Auf Umgebungsvariablen zugreifen. @@ -30028,21 +28235,6 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Umgebung löschen - - PythonEditor::FileWizard - - New %1 - Neue %1 - - - Python source file - Python Quelldatei - - - Creates an empty Python script with UTF-8 charset - Erstellt ein leeres Python-Skript mit UTF-8-Zeichensatz - - QmlDesigner::Internal::DebugView @@ -30269,30 +28461,6 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. CppEditor::Internal::CppEditorPlugin - - C++ Class - C++-Klasse - - - Creates a C++ header and a source file for a new class that you can add to a C++ project. - Erstellt C++-Header- und Quelldateien für eine neue Klasse eines C++-Projekts. - - - Creates a C++ source file that you can add to a C++ project. - Erstellt eine C++-Quelldatei für ein C++-Projekt. - - - C++ Source File - C++-Quelldatei - - - Creates a C++ header file that you can add to a C++ project. - Erstellt eine C++-Header-Datei für ein C++-Projekt. - - - C++ Header File - C++ Header-Datei - Shift+F2 Shift+F2 @@ -30704,6 +28872,22 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Qbs Install Qbs-Installation + + Failed to start compiler '%1': %2 + Konnte den Compiler '%1' nicht starten: %2 + + + Failed to run compiler '%1': %2 + Konnte den Compiler '%1' nicht ausführen: %2 + + + Detected gcc platform '%1' is not supported. + Die erkannte gcc-Plattform '%1' wird nicht unterstützt. + + + Architecture of compiler for platform '%1' at '%2' not understood. + Die Architektur des Compilers für die Plattform '%1' in '%2' wurde nicht verstanden. + %1 not found. %1 nicht gefunden. @@ -30756,13 +28940,6 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. <html><head/><body><p>Der Debugger ist nicht zur Benutzung des öffentlichen Microsoft Symbol Servers eingerichtet.<br/>Dies wird zur Anzeige der Symbole der Betriebssystem-Bibliotheken empfohlen.</p><p><span style=" font-style:italic;">Hinweis:</span> Bei der Verwendung des Microsoft Symbol Servers wird zusätzlich die Benutzung eines lokalen Zwischenspeichers für Symbole empfohlen.<br/>Allerdings ist dabei eine schnelle Internetverbindung für flüssiges Arbeiten erforderlich<br/>und bei der ersten Verbindung zum Zwischenspeichern der Symbole können Verzögerungen auftreten.</p><p>Was möchten Sie einrichten?</p></body></html> - - CppQmlTypesLoader - - %1 seems not to be encoded in UTF8 or has a BOM. - %1 ist nicht in UTF8 kodiert oder hat einen BOM. - - Android::Internal::AndroidManifestEditor @@ -30831,10 +29008,6 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Select high DPI icon. Symbol für hohe DPI-Werte auswählen. - - Include default permissions and features for Qt modules. - Standard-Berechtigungen und Features für Qt-Module einschließen. - The structure of the Android manifest file is corrupted. Expected a top level 'manifest' node. Die Struktur der Android-Manifest-Datei ist ungültig. Es wird ein 'manifest'-Knoten in der obersten Ebene erwartet. @@ -30871,6 +29044,14 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Permissions Berechtigungen + + Include default permissions for Qt modules. + Standard-Berechtigungen für Qt-Module einschließen. + + + Include default features for Qt modules. + Standard-Features für Qt-Module einschließen. + Remove Entfernen @@ -31038,115 +29219,8 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Das Wurzelelement (<RCC>) fehlt. - - BINEditor::BinEditorWidget - - Memory at 0x%1 - Speicher bei 0x%1 - - - Decimal&nbsp;unsigned&nbsp;value: - Vorzeichenloser&nbsp;dezimaler&nbsp;Wert: - - - Decimal&nbsp;signed&nbsp;value: - Vorzeichenbehafteter&nbsp;dezimaler&nbsp;Wert: - - - Previous&nbsp;decimal&nbsp;unsigned&nbsp;value: - Vorangegangener&nbsp;vorzeichenloser&nbsp;dezimaler&nbsp;Wert: - - - Previous&nbsp;decimal&nbsp;signed&nbsp;value: - Vorangegangener&nbsp;vorzeichenbehafteter&nbsp;dezimaler&nbsp;Wert: - - - %1-bit&nbsp;Integer&nbsp;Type - %1-bit&nbsp;Ganzzahltyp - - - Little Endian - Little Endian - - - Big Endian - Big Endian - - - Binary&nbsp;value: - Binärer&nbsp;Wert: - - - Octal&nbsp;value: - Oktaler&nbsp;Wert: - - - Previous&nbsp;binary&nbsp;value: - Vorangeganger&nbsp;binärer&nbsp;Wert: - - - Previous&nbsp;octal&nbsp;value: - Vorangeganger&nbsp;oktaler&nbsp;Wert: - - - <i>double</i>&nbsp;value: - <i>double</i>&nbsp;Wert: - - - Previous <i>double</i>&nbsp;value: - Vorangegangener <i>double</i>&nbsp;Wert: - - - <i>float</i>&nbsp;value: - <i>float</i>&nbsp;Wert: - - - Previous <i>float</i>&nbsp;value: - Vorangegangener <i>float</i>&nbsp;Wert: - - - Copying Failed - Das Kopieren schlug fehl - - - You cannot copy more than 4 MB of binary data. - Sie können nicht mehr als 4 MB binäre Daten kopieren. - - - Copy Selection as ASCII Characters - Auswahl als ASCII-Zeichen kopieren - - - Copy Selection as Hex Values - Auswahl als hexadezimale Werte kopieren - - - Set Data Breakpoint on Selection - Daten-Haltepunkt bei Auswahl setzen - - - Jump to Address in This Window - Gehe zu Adresse in diesem Fenster - - - Jump to Address in New Window - Gehe zu Adresse in neuem Fenster - - - Jump to Address 0x%1 in This Window - Gehe zu Adresse 0x%1 in diesem Fenster - - - Jump to Address 0x%1 in New Window - Gehe zu Adresse 0x%1 in neuem Fenster - - DiffEditor::DiffEditor - - Could not parse patch file "%1". The contents is not of unified diff format. - Die Patch-Datei "%1" konnte nicht ausgewertet werden. Der Inhalt ist nicht im Unified-Diff-Format. - Ignore Whitespace Leerzeichen nicht berücksichtigen @@ -31233,8 +29307,8 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Initialisierung fehlgeschlagen: %1 - Warning: "slog2info" is not found on the device, debug output not available! - Warnung: "slog2info" konnte nicht auf dem Gerät gefunden werden, es ist daher keine Debugausgabe verfügbar! + Warning: "slog2info" is not found on the device, debug output not available. + Warnung: "slog2info" konnte nicht auf dem Gerät gefunden werden, es ist daher keine Debugausgabe verfügbar. @@ -31286,31 +29360,20 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Die Eigenschaftsdefinition enthält kein ':'-Zeichen. - - PythonEditor::ClassWizard - - Python class - Python-Klasse - - - Creates new Python class - Erstellt eine neue Python-Klasse - - - C++ module for Python - C++-Modul für Python - - - Creates C++/Boost file with bindings for Python - Erstellt eine C++-/Boost-Datei mit Bindings für Python - - TextEditor::QuickFixFactory Create Getter and Setter Member Functions Getter- und Setter-Funktionen erstellen + + Convert to Stack Variable + In Stack-Variable umwandeln + + + Convert to Pointer + In Zeiger umwandeln + Generate Missing Q_PROPERTY Members... Fehlende Q_PROPERTY-Elemente ergänzen... @@ -31350,6 +29413,14 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Qt Quick 2.3 Qt Quick 2.3 + + Creates a Qt Quick 2 UI project that contains a .ui.qml file. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. Requires Qt 5.4 or newer. + Erstellt ein Qt Quick 2-UI-Projekt, das eine .ui.qml-Datei enthält. Sie können Qt Quick 2-UI-Projekte mit QML-Scene ohne Erstellung betrachten. Erfordert Qt 5.4 oder neuer. + + + Qt Quick 2.4 + Qt Quick 2.4 + Creates a Qt Quick 2 UI project with a single QML file that contains the main view and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.2 or newer. Erstellt ein Qt Quick 2-UI-Projekt mit einer einzigen QML-Datei, die die Hauptansicht enthält und Qt Quick Controls verwendet. Sie können Qt Quick 2-UI-Projekte mit QML-Scene ohne Erstellung betrachten. Dieses Projekt erfordert, dass die Qt Quick Controls für die Qt-Version installiert sind. Erfordert Qt 5.2 oder neuer. @@ -31366,6 +29437,14 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Qt Quick Controls 1.2 Qt Quick Controls 1.2 + + Creates a Qt Quick 2 UI project that contains a .ui.qml file and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.4 or newer. + Erstellt ein Qt Quick 2-UI-Projekt, das eine .ui.qml-Datei enthält und Qt Quick Controls verwendet. Sie können Qt Quick 2-UI-Projekte mit QML-Scene ohne Erstellung betrachten. Dieses Projekt erfordert, dass die Qt Quick Controls für die Qt-Version installiert sind. Erfordert Qt 5.4 oder neuer. + + + Qt Quick Controls 1.3 + Qt Quick Controls 1.3 + Creates a Qt Quick 2 UI project with a single QML file that contains the main view and uses Qt Quick Controls. You can review Qt Quick 2 UI projects in the QML Scene and you need not build them. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.1 or newer. Erstellt ein Qt Quick 2-UI-Projekt mit einer einzigen QML-Datei, die die Hauptansicht enthält und Qt Quick Controls verwendet. Sie können Qt Quick 2-UI-Projekte mit QML-Scene ohne Erstellung betrachten. Dieses Projekt erfordert, dass die Qt Quick Controls für die Qt-Version installiert sind. Erfordert Qt 5.1 oder neuer. @@ -31668,6 +29747,10 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. Debugger::Internal::DebuggerItemConfigWidget + + Unknown + Unbekannt + Name: Name: @@ -31680,6 +29763,10 @@ Kurznamen können verwendet werden, sofern sie eindeutig sind. ABIs: ABIs: + + Version: + Version: + 64-bit version 64-bit-Version @@ -31771,28 +29858,6 @@ Please close all running instances of your application before starting a build.< Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. - - PythonEditor::Internal::ClassNamePage - - Enter Class Name - Name der Klasse - - - The source file name will be derived from the class name - Der Name der Quelldatei wird vom Klassennamen abgeleitet - - - Details - Details - - - - PythonEditor::Internal::ClassWizardDialog - - Python Class Wizard - Neue Python-Klasse - - QmlDesigner::ImportsWidget @@ -31888,6 +29953,18 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Render Thread Render-Thread + + Duration + Dauer + + + Framerate + Bildwiederholrate + + + Context + Kontext + QmlProfiler::Internal::QmlProfilerPlugin @@ -32127,26 +30204,6 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Form Form - - Sign package - Paket signieren - - - Keystore: - Keystore: - - - Signing a debug package - Signiere Debug-Paket - - - Certificate alias: - Alias des Zertifikats: - - - Advanced Actions - Erweiterte Aktionen - Clean Temporary Libraries Directory on Device Verzeichnis mit temporären Bibliotheken auf dem Gerät leeren @@ -32160,90 +30217,12 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Geräteauswahl zurücksetzen - Open package location after build - Paketverzeichnis nach Beendigung des Erstellens öffnen + Deploy options + Deployment-Einstellungen - Create AndroidManifest.xml - AndroidManifest.xml erstellen - - - Application - Anwendung - - - Qt Deployment - Deployment von Qt - - - Use Ministro service to install Qt - Verwende den Ministro-Dienst, um Qt zu installieren - - - Deploy local Qt libraries to temporary directory - Lokale Qt-Bibliotheken in temporäres Verzeichnis kopieren - - - Creates a standalone APK. - Eigenständiges APK erstellen. - - - Bundle Qt libraries in APK - Qt-Bibliotheken in APK einpacken - - - Remove - Entfernen - - - Verbose output - Ausführliche Ausgabe - - - Additional Libraries - Zusätzliche Bibliotheken - - - List of extra libraries to include in Android package and load on startup. - Liste aller zusätzlichen Bibliotheken, die in das Paket aufgenommen und beim Start geladen werden. - - - Select library to include in package. - Wählen Sie eine Bibliothek zur Aufnahme in das Paket aus. - - - Remove currently selected library from list. - Ausgewählte Bibliothek aus Liste entfernen. - - - Input file for androiddeployqt: - Eingabedatei für androiddeployqt: - - - Qt no longer uses the folder "android" in the project's source directory. - Qt verwendet den Ordner "android" im Quellverzeichnis des Projekts nicht mehr. - - - Create... - Erstellen... - - - Android build SDK: - Android-Build-SDK: - - - Add... - Hinzufügen... - - - Pushes local Qt libraries to device. You must have Qt libraries compiled for that platform. -The APK will not be usable on any other device. - Lokale Qt-Bibliotheken auf das Gerät kopieren. Sie müssen die für diese Plattform übersetzten Qt-Bibliotheken bereitstellen. -Dieses APK kann auf keinem anderen Gerät verwendet werden. - - - Uses the external Ministro application to download and maintain Qt libraries.<br/><br/>Ministro is a third-party tool which provides the open source Qt libraries on demand. These libraries are compatible with the default open source binary package and will not always be up-to-date. - Nutzt die externe Ministro-Anwendung um Qt-Bibliotheken herunterzuladen und zu verwalten.<br/><br/>Ministro ist ein Werkzeug eines Drittanbieters, das quelloffene Qt-Bibliotheken auf Anforderung bereitstellt. Diese Bibliotheken sind kompatibel mit dem quelloffenen Standardbinärpaket und werden immer aktuell sein. + Uninstall previous package + Vorheriges Paket entfernen @@ -32288,6 +30267,10 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. API Level of device is: %1. Der API-Level des Geräts ist %1. + + Android 5 devices are incompatible with deploying Qt to a temporary directory. + Android 5-Geräte können kein Qt-Deployment in ein temporäres Verzeichnis verwenden. + Incompatible devices Geräte nicht kompatibel @@ -32645,33 +30628,51 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Die .pro-Datei setzt keine Android-Architektur. - Warning: Signing a debug package. - Warnung: Es wird ein Debug-Paket signiert. + Cannot find the android build step. + Kann den Android-Erstellungsschritt nicht finden. - Internal Error: Could not find .pro file. - Interner Fehler: Die .pro-Datei konnte nicht gefunden werden. + Cannot find the androiddeployqt tool. + Kann das androiddeployqt-Werkzeug nicht finden. - Internal Error: Unknown Android deployment JSON file location. - Interner Fehler: Unbekannter Pfad zur Android-Deployment-JSON-Datei. + Cannot find the androiddeploy Json file. + Kann die androiddeploy Json-Datei nicht finden. + + + Cannot find the package name. + Kann den Paketnamen nicht finden. + + + Uninstall previous package %1. + Entferne vorheriges Paket %1. + + + Package deploy: Running command "%1 %2". + Paket-Deployment: Führe Kommando "%1 %2" aus. + + + Packaging error: Could not start command "%1 %2". Reason: %3 + Fehler bei Paketerstellung: Das Kommando "%1 %2" konnte nicht ausgeführt werden. Grund: %3 + + + Packaging Error: Command "%1 %2" failed. + Fehler bei Paketerstellung: Das Kommando "%1 %2" schlug fehl. + + + Install failed + Installation gescheitert + + + Another application with the same package id but signed with different ceritificate already exists. +Do you want to uninstall the existing package next time? + Eine andere Anwendung mit der gleichen Paket-ID aber signiert mit einem anderen Zertifikat existiert bereits. +Wollen Sie das bestehende Paket beim nächten Mal entfernen? Pulling files necessary for debugging. Die für das Debuggen erforderlichen Dateien werden installiert. - - Package deploy: Running command '%1 %2'. - Paket-Deployment: Führe Befehl '%1 %2' aus. - - - Packaging error: Could not start command '%1 %2'. Reason: %3 - Fehler bei Paketerstellung: Das Kommando '%1 %2' konnte nicht ausgeführt werden. Grund: %3 - - - Packaging Error: Command '%1 %2' failed. - Fehler bei Paketerstellung: Das Kommando '%1 %2' schlug fehl. - Reason: %1 Ursache: %1 @@ -32680,34 +30681,6 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Exit code: %1 Rückgabewert: %1 - - Error - Fehler - - - Failed to run keytool. - Das keytool konnte nicht ausgeführt werden. - - - Invalid password. - Ungültiges Passwort. - - - Keystore - Keystore - - - Keystore password: - Keystore-Passwort: - - - Certificate - Zertifikat - - - Certificate password (%1): - Passwort des Zertifikats (%1): - Android::Internal::AndroidDeployQtWidget @@ -32723,22 +30696,6 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Android package (*.apk) Android-Paket (*.apk) - - Select keystore file - Wählen Sie eine Keystore-Datei aus - - - Keystore files (*.keystore *.jks) - Keystore-Dateien (*.keystore *.jks) - - - Select additional libraries - Zusätzliche Bibliotheken - - - Libraries (*.so) - Bibliotheken (*.so) - Android::Internal::AndroidPotentialKitWidget @@ -32747,94 +30704,6 @@ Dieses APK kann auf keinem anderen Gerät verwendet werden. Qt Creator benötigt zusätzliche Einstellungen, um die Android-Unterstützung zu aktivieren. Sie können diese im Einstellungsdialog konfigurieren. - - Android::Internal::NoApplicationProFilePage - - No application .pro file found in this project. - Die .pro-Datei der Anwendung konnte in diesem Projekt nicht gefunden werden. - - - No Application .pro File - Keine .pro-Datei der Anwendung - - - - Android::Internal::ChooseProFilePage - - Select the .pro file for which you want to create an AndroidManifest.xml file. - Wählen Sie die .pro-Datei, für die Sie die Datei "AndroidManifest.xml" erstellen wollen. - - - .pro file: - .pro Datei: - - - Select a .pro File - .pro-Datei wählen - - - - Android::Internal::ChooseDirectoryPage - - The Android package source directory cannot be the same as the project directory. - Das Android-Paket-Quellverzeichnis muss sich vom Projektverzeichnis unterscheiden. - - - Android package source directory: - Quellverzeichnis des Android-Pakets: - - - Select the Android package source directory. - -The files in the Android package source directory are copied to the build directory's Android directory and the default files are overwritten. - Wählen Sie das Quellverzeichnis des Android-Pakets aus. - -Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichnis "Android" unter dem Build-Verzeichnis kopiert und die Vorgabedateien überschrieben. - - - The Android manifest file will be created in the ANDROID_PACKAGE_SOURCE_DIR set in the .pro file. - Die Android-Manifest-Datei wird in dem Verzeichnis erstellt, welches durch den in der .pro-Datei gesetzten Wert für ANDROID_PACKAGE_SOURCE_DIR angegeben wird. - - - - Android::Internal::CreateAndroidManifestWizard - - Create Android Manifest Wizard - Assistent zur Erstellung eines Android-Manifests - - - Overwrite AndroidManifest.xml - Datei AndroidManifest.xml überschreiben - - - Overwrite existing AndroidManifest.xml? - Soll die existierende Datei AndroidManifest.xml überschrieben werden? - - - File Removal Error - Fehler beim Löschen der Datei - - - Could not remove file %1. - Die Datei %1 konnte nicht gelöscht werden. - - - File Creation Error - Fehler beim Erstellen der Datei - - - Could not create file %1. - Die Datei %1 konnte nicht erstellt werden. - - - Project File not Updated - Projekt-Datei nicht aktualisiert - - - Could not update the .pro file %1. - Die Projekt-Datei %1 konnte nicht aktualisiert werden. - - BareMetal::Internal::BareMetalDevice @@ -33228,6 +31097,10 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Please add a kit in the <a href="buildandrun">options</a> or via the maintenance tool of the SDK. Bitte fügen Sie ein Kit in den <a href="buildandrun">Einstellungen</a> oder unter Verwendung des SDK-Verwaltungswerkzeugs hinzu. + + Select all kits + Alle Kits auswählen + Select Kits for Your Project Kits des Projekts einrichten @@ -33259,13 +31132,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni <b>Warnung:</b> - - ProjectExplorer::Internal::UnconfiguredProjectPanel - - Configure Project - Projekt konfigurieren - - ProjectExplorer::Internal::TargetSetupPageWrapper @@ -33691,17 +31557,6 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Laufzeitumgebung installieren - - Android::Internal::AndroidPackageInstallationStepWidget - - <b>Make install</b> - <b>Make install</b> - - - Make install - Make install - - Ios::Internal::IosRunner @@ -34006,6 +31861,10 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni Effective qmake call: Resultierender qmake-Aufruf: + + Use QML compiler + QML Compiler verwenden: + QmakeProjectManager::Internal::TestWizardPage @@ -34419,6 +32278,10 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D Might make your application vulnerable. Only use in a safe environment. Potentielle Sicherheitslücke, sollte nur in einer sicheren Umgebung benutzt werden. + + Enable Qt Quick Compiler: + Qt Quick Compiler verwenden: + <No Qt version> <Keine Qt-Version> @@ -34453,24 +32316,6 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Dieser Assistent erstellt eine Qt Konsolenanwendung. Sie leitet von der Klasse QCoreApplication ab und hat keine graphische Benutzeroberfläche. - - QmakeProjectManager::Internal::EmptyProjectWizard - - Empty Qt Project - Leeres Qt-Projekt - - - Creates a qmake-based project without any files. This allows you to create an application without any default classes. - Erstellt ein auf qmake basierendes Qt-Projekt ohne Dateien und vorgegebene Klassen. - - - - QmakeProjectManager::Internal::EmptyProjectWizardDialog - - This wizard generates an empty Qt project. Add files to it later on by using the other wizards. - Dieser Assistent erstellt ein leeres Qt-Projekt. Mithilfe anderer Assistenten können später Dateien hinzugefügt werden. - - QmakeProjectManager::Internal::FilesPage @@ -34744,8 +32589,8 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Qnx::Internal::QnxRunControl - Warning: "slog2info" is not found on the device, debug output not available! - Warnung: "slog2info" konnte nicht auf dem Gerät gefunden werden, es ist daher keine Debugausgabe verfügbar! + Warning: "slog2info" is not found on the device, debug output not available. + Warnung: "slog2info" konnte nicht auf dem Gerät gefunden werden, es ist daher keine Debugausgabe verfügbar. @@ -34928,12 +32773,8 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Andere Dateien - There are unsaved changes for project file %1. - Die Projektdatei %1 hat noch nicht gespeicherte Änderungen. - - - Failed! - Fehler! + Failed + Fehlgeschlagen Could not write project file %1. @@ -35119,6 +32960,18 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Size Größe + + Color + Farbe + + + Visible + Sichtbar + + + Opacity + Deckkraft + QmakeProjectManager::Internal::QtQuickComponentSetPage @@ -35224,6 +33077,14 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Qt Quick 2.3 Qt Quick 2.3 + + Creates a deployable Qt Quick 2 application that contains a .ui.qml file using the QtQuick 2.4 import. Requires Qt 5.4 or newer. + Erstellt eine zum Deployment geeignete Qt Quick 2-Anwendung, die eine .ui.qml-Datei enthält, unter Verwendung des Imports QtQuick 2.4. Erfordert Qt 5.4 oder neuer. + + + Qt Quick 2.4 + Qt Quick 2.4 + Creates a deployable Qt Quick 2 application using Qt Quick Controls. Requires Qt 5.2 or newer. Erstellt eine zum Deployment geeignete Qt Quick 2-Anwendung unter Verwendung der Qt Quick Controls. Erfordert Qt 5.2 oder neuer. @@ -35240,6 +33101,14 @@ Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern sie verfü Qt Quick Controls 1.2 Qt Quick Controls 1.2 + + Creates a deployable Qt Quick 2 application that contains a .ui.qml file and uses Qt Quick Controls. This project requires that you have installed Qt Quick Controls for your Qt version. Requires Qt 5.4 or newer. + Erstellt eine zum Deployment geeignete Qt Quick 2-Anwendung, die eine .ui.qml-Datei enthält, unter Verwendung der Qt Quick Controls. Dieses Projekt erfordert, dass die Qt Quick Controls für die Qt-Version installiert sind. Erfordert Qt 5.4 oder neuer. + + + Qt Quick Controls 1.3 + Qt Quick Controls 1.3 + Creates a deployable Qt Quick 2 application using Qt Quick Controls. Requires Qt 5.1 or newer. Erstellt eine zum Deployment geeignete Qt Quick 2-Anwendung unter Verwendung der Qt Quick Controls. Erfordert Qt 5.1 oder neuer. @@ -35843,17 +33712,6 @@ Bitte erstellen Sie die Anwendung qmldump auf der Einstellungsseite der Qt-Versi Java-Editor - - Android::Internal::JavaFileWizard - - Creates a Java file with boilerplate code. - Erstellt eine Java-Datei mit einem Code-Gerüst. - - - Java File - Java-Datei - - AbstractSettings @@ -35952,8 +33810,8 @@ Bitte erstellen Sie die Anwendung qmldump auf der Einstellungsseite der Qt-Versi ClangCodeModel::Internal::ClangIndexer - C++ Indexing - C++-Indizierung + Parsing C/C++/ObjC Files + Werte C/C++/ObjC-Dateien aus @@ -36576,17 +34434,6 @@ Sie bleiben bestehen. Auswertung beginnen - - QmlJSEditor::Internal::QmlJSTextEditorWidget - - Show Qt Quick ToolBar - Qt-Quick-Werkzeugleiste anzeigen - - - Refactoring - Refactoring - - QmlProfiler::QmlProfilerBaseModel @@ -36630,10 +34477,6 @@ Sie bleiben bestehen. Qnx::Internal::BlackBerryApiLevelConfiguration - - Qt %1 for %2 - Qt %1 für %2 - - No auto detection source found. - Keine Quelle für automatische Erkennung gefunden. @@ -36642,12 +34485,6 @@ Sie bleiben bestehen. - No sysroot found. - Kein sysroot gefunden. - - The following errors occurred while activating target: %1 - - Die folgenden Fehler traten beim Aktivieren des Ziels %1 auf: - - QCC for %1 QCC für %1 @@ -36660,6 +34497,16 @@ Sie bleiben bestehen. - No Qt version found. - Keine Qt-Version gefunden. + + Qt %{Qt:Version} for %2 + Qt %{Qt:Version} für %2 + + + The following errors occurred while activating target "%1": + + Die folgenden Fehler traten beim Aktivieren des Ziels "%1" auf: + + Cannot Set up BB10 Configuration BB10-Konfiguration kann nicht eingerichtet werden @@ -36982,17 +34829,6 @@ Dieser Assistent führt Sie durch die wesentlichen Schritte, die zum Deployment Entfernt: "%1:%2" - Prozess %3 - - PrefixLangDialog - - Prefix: - Präfix: - - - Language: - Sprache: - - ResourceEditor::ResourceTopLevelNode @@ -37109,10 +34945,18 @@ Dieser Assistent führt Sie durch die wesentlichen Schritte, die zum Deployment Run windeployqt windeployqt ausführen + + No executable to deploy found in %1. + Keine ausführbare Datei für Deployment gefunden in %1. + Cannot parse manifest file %1. Kann Manifest-Datei nicht auswerten: %1. + + File %1 is outside of the executable's directory. These files cannot be installed. + Die Datei %1 ist außerhalb des Verzeichnisses der ausführbaren Datei. Solche Dateien können nicht installiert werden. + Cannot open mapping file %1 for writing. Die Zuordnungs-Datei %1 kann nicht zum Schreiben geöffnet werden. @@ -37402,6 +35246,10 @@ Dieser Assistent führt Sie durch die wesentlichen Schritte, die zum Deployment Show zoom slider. Zoom-Schieberegler anzeigen. + + Filter Categories + Kategorien filtern + Select range. Bereich auswählen. @@ -37417,6 +35265,14 @@ Dieser Assistent führt Sie durch die wesentlichen Schritte, die zum Deployment <bytecode> <bytecode> + + Collapse category + Kategorie einklappen + + + Expand category. + Kategorie expandieren + Qnx::Internal::QnxDeployQtLibrariesDialog @@ -37830,17 +35686,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Unbekannt - - Bazaar::Internal::CloneWizardFactory - - Clones a Bazaar branch and tries to load the contained project. - Erstellt einen Clone eines Bazaar-Branches und versucht, das darin enthaltene Projekt zu laden. - - - Bazaar Clone (Or Branch) - Bazaar Clone (oder Branch) - - Core::BaseFileWizardFactory @@ -37874,13 +35719,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer. - - Core::StandardFileWizardFactory - - New %1 - Neue %1 - - Core::DocumentModelPrivate @@ -37921,18 +35759,10 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer. Core::Internal::VariableChooserPrivate - - Select a variable to insert. - Wählen Sie eine Variable aus, die eingefügt werden soll. - Insert variable Variablen einfügen - - Current Value: %1 - Aktueller Wert: %1 - Core::Internal::WindowSupport @@ -37963,17 +35793,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.%1: Konnte Inhalt der Datei nicht erhalten - - Cvs::Internal::CheckoutWizardFactory - - Checks out a CVS repository and tries to load the contained project. - Erstellt einen Checkout eines CVS-Repositories und versucht, das darin enthaltene Projekt zu laden. - - - CVS Checkout - Projekt aus CVS-Repository - - Debugger::Internal::LocalsAndExpressionsOptionsPage @@ -38032,8 +35851,20 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer. Debugger::Internal::DebuggerToolTipManager - Restored - Wiederhergestellt + %1 (Previous) + %1 (Vorherig) + + + %1 (Restored + %1 (Wiederhergestellt) + + + No valid expression + Kein gültiger Ausdruck + + + Expression too complex + Ausdruck zu komplex @@ -38170,28 +36001,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Eine halbe Bildschirmseite aufwärts - - Git::Internal::CloneWizardFactory - - Clones a Git repository and tries to load the contained project. - Erstellt einen Clone eines Git-Repositories und versucht, das darin enthaltene Projekt zu laden. - - - Git Repository Clone - Git-Repository Clone - - - - Gitorious::Internal::GitoriousCloneWizardFactory - - Clones a Gitorious repository and tries to load the contained project. - Erstellt einen Clone eines Gitorious-Repositories und versucht, das darin enthaltene Projekt zu laden. - - - Gitorious Repository Clone - Gitorious-Repository Clone - - Git::Internal::GitSubmitEditor @@ -38216,6 +36025,10 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Go to Help Mode Wechsle in Hilfsmodus + + Home + Startseite + Back Zurück @@ -38224,6 +36037,18 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Forward Nächstes + + Add Bookmark + Lesezeichen hinzufügen + + + Meta+M + Meta+M + + + Ctrl+M + Ctrl+M + Increase Font Size Schrift vergrößern @@ -38236,6 +36061,58 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Reset Font Size Schriftgröße zurücksetzen + + Meta+Shift+C + Meta+Shift+C + + + Ctrl+Shift+C + Ctrl+Shift+C + + + Meta+I + Meta+I + + + Ctrl+Shift+I + Ctrl+Shift+I + + + Activate Help Bookmarks View + Lesezeichen-Anzeige für Hilfe aktivieren + + + Meta+B + Meta+B + + + Ctrl+Shift+B + Ctrl+Shift+B + + + Activate Help Search View + Such-Anzeige für Hilfe aktivieren + + + Meta+/ + Meta+/ + + + Ctrl+Shift+/ + Ctrl+Shift+/ + + + Activate Open Help Pages View + Anzeige geöffneter Seiten in Hilfe aktivieren + + + Meta+O + Meta+O + + + Ctrl+Shift+O + Ctrl+Shift+O + Help Hilfe @@ -38244,6 +36121,10 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Help - %1 Hilfe - %1 + + Print Documentation + Dokumentation drucken + Help::Internal::QtWebKitHelpWidget @@ -38272,10 +36153,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Open Link Verweis öffnen - - Open Link as New Page - Verweis in neuer Seite öffnen - Copy Link Verweis kopieren @@ -38300,17 +36177,6 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.Ausführung beendet. - - Mercurial::Internal::CloneWizardFactory - - Clones a Mercurial repository and tries to load the contained project. - Erstellt einen Clone eines Mercurial-Repositories und versucht, das darin enthaltene Projekt zu laden. - - - Mercurial Clone - Mercurial Clone - - ProjectExplorer::DeploymentDataModel @@ -38380,6 +36246,10 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer. ProjectExplorer::XcodebuildParser + + Replacing signature + Ersetze Signatur + Xcodebuild failed. Xcodebuild schlug fehl. @@ -38583,17 +36453,6 @@ Möchten Sie, dass Qt Creator sie für Ihr Projekt (%1) anlegt? Benutzerdefinierte ausführbare Datei (auf entferntem generischem Linux-Host) - - Subversion::Internal::CheckoutWizardFactory - - Checks out a Subversion repository and tries to load the contained project. - Erstellt einen Checkout eines Subversion-Repositories und versucht, das darin enthaltene Projekt zu laden. - - - Subversion Checkout - Projekt aus Subversion-Repository - - TaskList::Internal::TaskListPlugin @@ -38608,10 +36467,6 @@ Möchten Sie, dass Qt Creator sie für Ihr Projekt (%1) anlegt? My Tasks Meine Tasks - - Task file reader - Task-Datei-Leser - TextEditor::Internal::MultiDefinitionDownloader @@ -38766,6 +36621,10 @@ Möchten Sie, dass Qt Creator sie für Ihr Projekt (%1) anlegt? Jump To File Under Cursor Gehe zu Datei unter Einfügemarke + + Jump to File Under Cursor in Next Split + Gehe zu Datei unter Einfügemarke im nächsten geteilten Fenster + Move the View a Page Up and Keep the Cursor Position Ansicht eine Bildschirmseite nach oben bewegen, ohne die Einfügemarke zu verändern @@ -39062,10 +36921,6 @@ Möchten Sie, dass Qt Creator sie für Ihr Projekt (%1) anlegt? Go to Next Word Camel Case with Selection Nächstes Wort markieren (Camel Case) - - <line>:<column> - <Zeilennummer>:<Spaltennummer> - VcsBase::BaseCheckoutWizardFactory @@ -39119,6 +36974,10 @@ Möchten Sie, dass Qt Creator sie für Ihr Projekt (%1) anlegt? Cannot find winrtrunner.exe in "%1". winrtrunner.exe konnte in "%1" nicht gefunden werden. + + Cannot determine the executable file path for "%1". + Kann den Pfad der ausführbaren Datei für "%1" nicht bestimmen. + Error while executing the WinRT Runner Tool: %1 @@ -39274,4 +37133,2341 @@ Möchten Sie, dass Qt Creator sie für Ihr Projekt (%1) anlegt? Ausrichtung des Split View. + + AndroidBuildApkWidget + + Form + Formular + + + Sign package + Paket signieren + + + Keystore: + Keystore: + + + Create... + Erstellen... + + + Signing a debug package + Signiere Debug-Paket + + + Certificate alias: + Alias des Zertifikats: + + + Signing an APK that uses "Deploy local Qt libraries" is not allowed. +Deploying local Qt libraries is incompatible with Android 5 + Es ist nicht erlaubt eine APK-Datei zu signieren, die "Lokale Qt-Bibliotheken kopieren" verwendet. +Lokale Qt-Bibliotheken zu kopieren ist inkompatibel zu Android 5. + + + Application + Anwendung + + + Android build SDK: + Android-Build-SDK: + + + Advanced Actions + Erweiterte Aktionen + + + Verbose output + Ausführliche Ausgabe + + + Open package location after build + Paketverzeichnis nach dem Erstellen öffnen + + + Use Gradle + Gradle verwenden + + + Qt Deployment + Deployment von Qt + + + Uses the external Ministro application to download and maintain Qt libraries. + Verwendet die externe Ministro-Anwendung, um die Qt-Bibliotheken herunterzuladen und zu verwalten. + + + Use Ministro service to install Qt + Verwende den Ministro-Dienst, um Qt zu installieren + + + Creates a standalone APK. + Eigenständiges APK erstellen. + + + Bundle Qt libraries in APK + Qt-Bibliotheken in APK einpacken + + + Pushes local Qt libraries to device. You must have Qt libraries compiled for that platform. +The APK will not be usable on any other device. + Lokale Qt-Bibliotheken auf das Gerät kopieren. Sie müssen die für diese Plattform übersetzten Qt-Bibliotheken bereitstellen. +Dieses APK kann auf keinem anderen Gerät verwendet werden. + + + Deploy local Qt libraries to temporary directory + Lokale Qt-Bibliotheken in temporäres Verzeichnis kopieren + + + + Core::Internal::ThemeEditor::ThemeEditorWidget + + Theme Editor + Theme-Editor + + + Filter: + Filter: + + + + Core::Internal::ThemeSettings + + Rename... + Umbenennen... + + + Copy... + Kopieren... + + + Delete + Löschen + + + Theme + Theme + + + + QmakeAndroidSupport::Internal::QmakeAndroidBuildApkWidget + + Form + Formular + + + Android + Android + + + Create Templates + Vorlagen erstellen + + + Input file for androiddeployqt: + Eingabedatei für androiddeployqt: + + + Additional Libraries + Zusätzliche Bibliotheken + + + List of extra libraries to include in Android package and load on startup. + Liste aller zusätzlichen Bibliotheken, die in das Paket aufgenommen und beim Start geladen werden. + + + Select library to include in package. + Wählen Sie eine Bibliothek zur Aufnahme in das Paket aus. + + + Add... + Hinzufügen... + + + Remove currently selected library from list. + Ausgewählte Bibliothek aus Liste entfernen. + + + Remove + Entfernen + + + Select additional libraries + Zusätzliche Bibliotheken auswählen + + + Libraries (*.so) + Bibliotheken (*.so) + + + <b>Build Android APK</b> + <b>Android-APK erstellen</b> + + + + QtSupport::Internal::CodeGenSettingsPageWidget + + Form + Formular + + + Embedding of the UI Class + Verwendung der UI-Klasse + + + Aggregation as a pointer member + Aggregation als Zeiger + + + Aggregation + Aggregation + + + Multiple inheritance + Mehrfachvererbung + + + Code Generation + Code-Erzeugung + + + Support for changing languages at runtime + Wechsel der Sprache zur Laufzeit unterstützen + + + Use Qt module name in #include-directive + Qt-Modulnamen in #include-Direktive verwenden + + + Add Qt version #ifdef for module names + Von Qt-Version abhängige #ifdef-Direktiven für Modulnamen einfügen + + + + Utils::MacroExpander + + Infinite recursion error + Fehler: Endlose Rekursion + + + %1: Full path including file name. + %1: Vollständiger Pfad einschließlich Dateiname. + + + %1: Full path excluding file name. + %1: Vollständiger Pfad ohne Dateiname. + + + %1: File name without path. + %1: Dateiname ohne Pfad. + + + %1: File base name without path and suffix. + %1: Datei-Basisname ohne Pfad und Endung. + + + Global variables + Globale Variablen + + + + Utils::GlobalMacroExpander + + Access environment variables. + Auf Umgebungsvariablen zugreifen. + + + + Android::AndroidBuildApkStep + + Build Android APK + AndroidBuildApkStep default display name + Android-APK erstellen + + + Warning: Signing a debug package. + Warnung: Es wird ein Debug-Paket signiert. + + + Error + Fehler + + + Failed to run keytool. + Das keytool konnte nicht ausgeführt werden. + + + Invalid password. + Ungültiges Passwort. + + + Keystore + Keystore + + + Keystore password: + Keystore-Passwort: + + + Certificate + Zertifikat + + + Certificate password (%1): + Passwort des Zertifikats (%1): + + + + Android::AndroidBuildApkWidget + + Keystore files (*.keystore *.jks) + Keystore-Dateien (*.keystore *.jks) + + + Select Keystore File + Keystore-Datei auswählen + + + <b>Build Android APK</b> + <b>Android-APK erstellen</b> + + + + Android::AndroidConfigurations + + Android Debugger for %1 + Android-Debugger für %1 + + + Android for %1 (GCC %2, Qt %3) + Android für %1 (GCC %2, Qt %3) + + + + Android::AndroidManager + + Unknown Android version. API Level: %1 + Unbekannte Android-Version. API-Level: %1 + + + Error creating Android templates. + Fehler beim Erstellen der Android-Vorlagendateien. + + + Cannot parse "%1". + "%1" kann nicht ausgewertet werden. + + + Starting Android virtual device failed. + Das Starten des virtuellen Android-Geräts schlug fehl. + + + + Bazaar::Internal::BazaarEditorWidget + + Annotate %1 + Annotation für %1 + + + Annotate parent revision %1 + Annotation der übergeordneten Revision %1 + + + + BinEditor::BinEditorWidget + + Memory at 0x%1 + Speicher bei 0x%1 + + + Decimal&nbsp;unsigned&nbsp;value: + Vorzeichenloser&nbsp;dezimaler&nbsp;Wert: + + + Decimal&nbsp;signed&nbsp;value: + Vorzeichenbehafteter&nbsp;dezimaler&nbsp;Wert: + + + Previous&nbsp;decimal&nbsp;unsigned&nbsp;value: + Vorangegangener&nbsp;vorzeichenloser&nbsp;dezimaler&nbsp;Wert: + + + Previous&nbsp;decimal&nbsp;signed&nbsp;value: + Vorangegangener&nbsp;vorzeichenbehafteter&nbsp;dezimaler&nbsp;Wert: + + + %1-bit&nbsp;Integer&nbsp;Type + %1-bit&nbsp;Ganzzahltyp + + + Little Endian + Little Endian + + + Big Endian + Big Endian + + + Binary&nbsp;value: + Binärer&nbsp;Wert: + + + Octal&nbsp;value: + Oktaler&nbsp;Wert: + + + Previous&nbsp;binary&nbsp;value: + Vorangeganger&nbsp;binärer&nbsp;Wert: + + + Previous&nbsp;octal&nbsp;value: + Vorangeganger&nbsp;oktaler&nbsp;Wert: + + + <i>double</i>&nbsp;value: + <i>double</i>&nbsp;Wert: + + + Previous <i>double</i>&nbsp;value: + Vorangegangener <i>double</i>&nbsp;Wert: + + + <i>float</i>&nbsp;value: + <i>float</i>&nbsp;Wert: + + + Previous <i>float</i>&nbsp;value: + Vorangegangener <i>float</i>&nbsp;Wert: + + + Copying Failed + Fehler beim Kopieren + + + You cannot copy more than 4 MB of binary data. + Sie können nicht mehr als 4 MB binäre Daten kopieren. + + + Copy Selection as ASCII Characters + Auswahl als ASCII-Zeichen kopieren + + + Copy Selection as Hex Values + Auswahl als hexadezimale Werte kopieren + + + Set Data Breakpoint on Selection + Daten-Haltepunkt bei Auswahl setzen + + + Jump to Address in This Window + Gehe zu Adresse in diesem Fenster + + + Jump to Address in New Window + Gehe zu Adresse in neuem Fenster + + + Jump to Address 0x%1 in This Window + Gehe zu Adresse 0x%1 in diesem Fenster + + + Jump to Address 0x%1 in New Window + Gehe zu Adresse 0x%1 in neuem Fenster + + + + BinEditor::Internal::BinEditorDocument + + The Binary Editor cannot open empty files. + Der Binäreditor kann keine leeren Dateien öffnen. + + + File Error + Dateifehler + + + Cannot open %1: %2 + Die Datei %1 kann nicht geöffnet werden: %2 + + + + BinEditor::Internal::BinEditorPlugin + + &Undo + &Rückgängig + + + &Redo + &Wiederholen + + + + ClearCase::Internal::ClearCaseEditorWidget + + Annotate version "%1" + Annotation für Version "%1" + + + + Core::Internal::CorePlugin + + The current date (ISO). + Das aktuelle Datum (ISO). + + + The current time (ISO). + Die aktuelle Zeit (ISO). + + + The current date (RFC2822). + Das aktuelle Datum (RFC2822). + + + The current time (RFC2822). + Die aktuelle Zeit (RFC2822). + + + The current date (Locale). + Das aktuelle Datum (Locale). + + + The current time (Locale). + Die aktuelle Zeit (Locale). + + + The current date (QDate formatstring) + Das aktuelle Datum (QDate Formatstring) + + + The current time (QTime formatstring) + Die aktuelle Zeit (QTime Formatstring) + + + + Core::PromptOverwriteDialog + + Overwrite Existing Files + Existierende Dateien überschreiben + + + The following files already exist in the folder +%1. +Would you like to overwrite them? + Die folgenden Dateien existieren bereits im Ordner +%1. +Sollen sie überschrieben werden? + + + + Core::ReadOnlyFilesDialog + + Mixed + Gemischt + + + Make Writable + Schreibbar machen + + + Open with VCS + Öffnen mittels Versionskontrollsystem + + + Save As + Speichern unter + + + Failed to %1 File + Fehler bei "%1" der Datei + + + %1 file %2 from version control system %3 failed. + Fehler bei "%1" der Datei %2 im Versionskontrollsystem %3. + + + No Version Control System Found + Es konnte kein Versionskontrollsystem gefunden werden + + + Cannot open file %1 from version control system. +No version control system found. + Die Datei %1 im Versionskontrollsystem kann nicht geöffnet werden. +Es konnte kein Versionskontrollsystem gefunden werden. + + + Cannot Set Permissions + Fehler beim Setzen von Dateizugriffsrechten + + + Cannot set permissions for %1 to writable. + Die Datei %1 konnte nicht schreibbar gemacht werden. + + + Cannot Save File + Die Datei konnte nicht gespeichert werden + + + Cannot save file %1 + Die Datei %1 kann nicht gespeichert werden + + + Canceled Changing Permissions + Ändern der Berechtigungen abgebrochen + + + Could Not Change Permissions on Some Files + Die Berechtigungen konnten bei einigen Dateien nicht geändert werden + + + See details for a complete list of files. + Die komplette Dateiliste finden Sie unter Details. + + + Change &Permission + &Berechtigung ändern + + + The following files are not checked out yet. +Do you want to check them out now? + Die folgenden Dateien sind noch nicht ausgecheckt. +Möchten Sie sie jetzt auschecken? + + + + Core::Internal::EditorManagerPrivate + + Revert File to Saved + Gespeicherten Stand wiederherstellen + + + Ctrl+W + Ctrl+W + + + Alternative Close + Schließen (alternativ) + + + Ctrl+F4 + Ctrl+F4 + + + Ctrl+Shift+W + Ctrl+Shift+W + + + Alt+Tab + Alt+Tab + + + Ctrl+Tab + Ctrl+Tab + + + Alt+Shift+Tab + Alt+Shift+Tab + + + Ctrl+Shift+Tab + Ctrl+Shift+Tab + + + Ctrl+Alt+Left + Ctrl+Alt+Left + + + Alt+Left + Alt+Left + + + Ctrl+Alt+Right + Ctrl+Alt+Right + + + Alt+Right + Alt+Right + + + Split + Teilen + + + Meta+E,2 + Meta+E,2 + + + Ctrl+E,2 + Ctrl+E,2 + + + Split Side by Side + Nebeneinander teilen + + + Meta+E,3 + Meta+E,3 + + + Ctrl+E,3 + Ctrl+E,3 + + + Open in New Window + In neuem Fenster öffnen + + + Meta+E,4 + Meta+E,4 + + + Ctrl+E,4 + Ctrl+E,4 + + + Remove Current Split + Aktuelle Teilung aufheben + + + Meta+E,0 + Meta+E,0 + + + Ctrl+E,0 + Ctrl+E,0 + + + Remove All Splits + Alle Teilungen aufheben + + + Meta+E,1 + Meta+E,1 + + + Ctrl+E,1 + Ctrl+E,1 + + + Go to Next Split or Window + Gehe zu nächster Editor-Ansicht oder zu nächstem Fenster + + + Meta+E,o + Meta+E,o + + + Ctrl+E,o + Ctrl+E,o + + + Ad&vanced + Er&weitert + + + Current document + Aktuelles Dokument + + + X-coordinate of the current editor's upper left corner, relative to screen. + X-Koordinate der linken, oberen Ecke des aktuellen Editors, relativ zum Bildschirm. + + + Y-coordinate of the current editor's upper left corner, relative to screen. + Y-Koordinate der linken, oberen Ecke des aktuellen Editors, relativ zum Bildschirm. + + + <b>Warning:</b> This file was not opened in %1 yet. + <b>Warnung:</b> Die Datei wurde noch nicht von %1 angefordert. + + + Open + Öffnen + + + <b>Warning:</b> You are changing a read-only file. + <b>Warnung:</b> Sie ändern eine schreibgeschützte Datei. + + + Make Writable + Schreibbar machen + + + &Save %1 + &Speichere %1 + + + Save %1 &As... + Speichere %1 &unter... + + + Revert %1 to Saved + Gespeicherten Stand von %1 wiederherstellen + + + Reload %1 + %1 neu laden + + + Close %1 + Schließe %1 + + + Close All Except %1 + Alle außer %1 schließen + + + Close Others + Andere schließen + + + Qt Creator + Qt Creator + + + Cannot Open File + Datei kann nicht geöffnet werden + + + Cannot open the file for editing with VCS. + Die Datei konnte nicht mit Hilfe der Versionsverwaltung schreibbar gemacht werden. + + + File Error + Dateifehler + + + Revert to Saved + Wiederherstellen + + + You will lose your current changes if you proceed reverting %1. + Bei der Wiederherstellung von %1 gehen Ihre derzeitigen Änderungen verloren. + + + Proceed + Weiter + + + Cancel + Abbrechen + + + + Core::JsExpander + + Error in "%1": %2 + Fehler in "%1": %2 + + + Cannot convert result of "%1" to string. + Das Ergebnis von "%1" kann nicht in eine Zeichenkette umgewandelt werden. + + + Evaluate simple Javascript statements. +The statements may not contain '{' nor '}' characters. + Einfache Javascript-Ausdrücke auswerten. +Die Ausdrücke dürfen weder '{' noch '}' enthalten. + + + + Core::Internal::ThemeEditor::ThemeSettingsItemDelegate + + <Unnamed> (Current) + <Unbenannt> (Aktuell) + + + (Current) + (Aktuell) + + + Remove Variable Name + Variablenname entfernen + + + Add Variable Name... + Variablenname hinzufügen... + + + Add Variable Name + Variablenname hinzufügen + + + Variable name: + Variablenname: + + + + Core::Internal::ThemeEditor::ThemeSettingsTableModel + + Widget Style + Widget-Stil + + + Colors + Farben + + + Flags + Flags + + + Image Files + Bilddateien + + + Role + Rolle + + + Value + Wert + + + + QCoreApplication + + unnamed + unbenannt + + + %1 (built-in) + %1 (integriert) + + + + Core::Internal::ThemeSettingsWidget + + Delete Theme + Theme löschen + + + Are you sure you want to delete the theme '%1' permanently? + Sind sie sicher, dass Sie das Theme '%1' löschen wollen? + + + Delete + Löschen + + + Copy Theme + Theme kopieren + + + Theme name: + Name des Themes: + + + Theme Changed + Theme geändert + + + The theme "%1" was modified, do you want to save the changes? + Das Theme "%1" wurde geändert. Wollen Sie die Änderungen speichern? + + + Discard + Verwerfen + + + Rename Theme + Theme unbenennen + + + + Core::Internal::VariableTreeView + + Insert unexpanded value + Nicht expandierten Wert einfügen + + + Insert "%1" + "%1" einfügen + + + Insert expanded value + Expandierten Wert einfügen + + + + CppEditor::Internal::CppEditorWidget + + &Refactor + &Refactoring + + + + Cvs::Internal::CvsEditorWidget + + Annotate revision "%1" + Annotation für Revision "%1" + + + + Debugger::Internal::DebuggerPlugin + + Debug + Debug + + + Option "%1" is missing the parameter. + Das Kommandozeilenargument "%1" erfordert einen Parameter. + + + Only one executable allowed. + Nur eine ausführbare Datei erlaubt. + + + The parameter "%1" of option "%2" does not match the pattern <handle>:<pid>. + Der Parameter "%1" der Option "%2" entspricht nicht dem Muster <Handle>:<PID>. + + + Invalid debugger option: %1 + Ungültiger Debugger-Kommandozeilenparameter: %1 + + + Process %1 + Prozess %1 + + + Symbol + Symbol + + + Address + Adresse + + + Code + Code + + + Section + Abschnitt + + + Name + Name + + + Symbols in "%1" + Symbole in "%1" + + + From + Von + + + To + Bis + + + Flags + Flags + + + Sections in "%1" + Abschnitte in "%1" + + + Some breakpoints cannot be handled by the debugger languages currently active, and will be ignored. +Affected are breakpoints %1 + Einige Haltepunkte werden von den Debuggern der gegenwärtig aktiven Sprachen nicht unterstützt und werden daher nicht berücksichtigt. +Dies betrifft die Haltepunkte %1 + + + Not enough free ports for QML debugging. + Nicht genügend freie Ports für das QML-Debuggen vorhanden. + + + Unable to create a debugger engine of the type "%1" + Es konnte keine Debugger-Engine des Typs "%1" erzeugt werden + + + + FormEditorW + + Widget box + Widget-Box + + + Object Inspector + Objektanzeige + + + Property Editor + Eigenschaften + + + Signals && Slots Editor + Signale und Slots + + + Action Editor + Aktionseditor + + + Widget Box + Widget-Box + + + Edit Widgets + Widgets bearbeiten + + + F3 + F3 + + + Edit Signals/Slots + Signale und Slots bearbeiten + + + F4 + F4 + + + Edit Buddies + Buddies bearbeiten + + + Edit Tab Order + Tabulatorreihenfolge bearbeiten + + + Meta+Shift+H + Meta+Shift+H + + + Ctrl+H + Ctrl+H + + + Meta+L + Meta+L + + + Ctrl+L + Ctrl+L + + + Meta+Shift+G + Meta+Shift+G + + + Ctrl+G + Ctrl+G + + + Meta+J + Meta+J + + + Ctrl+J + Ctrl+J + + + Alt+Shift+R + Alt+Shift+R + + + About Qt Designer Plugins... + Über Qt Designer-Plugins... + + + Preview in + Vorschau in + + + Designer + Designer + + + This file can only be edited in <b>Design</b> mode. + Datei kann nur im <b>Design</b>-Modus bearbeitet werden. + + + Switch Mode + Modus umschalten + + + The image could not be created: %1 + Das Bild konnte nicht erstellt werden: %1 + + + + ProjectExplorer::JsonWizard + + "data" for a "Form" page needs to be unset or an empty object. + "data" darf für eine "Form"-Seite nicht gesetzt sein oder muss ein leeres Objekt sein. + + + Check whether a variable exists. Returns "true" if it does and an empty string if not. + Überpüfe, ob eine Variable existiert. Gibt "true" zurück, wenn sie existiert, sonst eine leere Zeichenkette. + + + Could not determine target path. "TargetPath" was not set on any page. + Konnte den Zielpfad nicht bestimmen. "TargetPath" wurde auf keiner Seite gesetzt. + + + File Generation Failed + Dateierzeugung gescheitert + + + The wizard failed to generate files.<br>The error message was: "%1". + Der Wizard scheiterte beim Erzeugen von Dateien.<br>Die Fehlermeldung war: "%1". + + + Failed to Overwrite Files + Dateien konnten nicht überschrieben werden + + + Failed to Format Files + Dateien konnten nicht formatiert werden + + + Failed to Write Files + Dateien konnten nicht geschrieben werden + + + Failed to Post-Process Files + Dateien konnten nicht nachbearbeitet werden + + + Failed to Open Files + Dateien konnten nicht geöffnet werden + + + When processing "%1":<br>%2 + Bei der Verarbeitung von "%1":<br/>%2 + + + Failed to open "%1" as a project. + Konnte "%1" nicht als Projekt öffnen. + + + Failed to open an editor for "%1". + Es konnte kein Editor für "%1" geöffnet werden. + + + When parsing fields of page '%1': %2 + Bei der Auswertung der Felder der Seite '%1': %2 + + + "data" for a "File" page needs to be unset or an empty object. + "data" darf für eine "File"-Seite nicht gesetzt sein oder muss ein leeres Objekt sein. + + + "data" must be a JSON object for "Kits" pages. + "data" muss für "Kits"-Seiten ein JSON-Objekt sein. + + + "Kits" page requires a "projectFilePath" set. + Für eine "Kits"-Seite muss "projectFilePath" angegeben werden. + + + "data" for a "Project" page needs to be unset or an empty object. + "data" darf für eine "Project"-Seite nicht gesetzt sein oder muss ein leeres Objekt sein. + + + "data" for a "Summary" page needs to be unset or an empty object. + "data" darf für eine "Summary"-Seite nicht gesetzt sein oder muss ein leeres Objekt sein. + + + + DiffEditor::DiffEditorDocument + + Could not parse patch file "%1". The content is not of unified diff format. + Die Patch-Datei "%1" konnte nicht ausgewertet werden. Der Inhalt ist nicht im Unified-Diff-Format. + + + + FakeVim + + Unknown option: %1 + Unbekannte Option: %1 + + + Argument must be positive: %1=%2 + Das Argument muss positiv sein: %1=%2 + + + Use Vim-style Editing + Vim benutzen + + + Read .vimrc + .vimrc lesen + + + Path to .vimrc + Pfad zu .vimrc + + + Mark "%1" not set. + Die Marke "%1" ist nicht gesetzt. + + + Recursive mapping + Rekursive Zuordnung + + + %1%2% + %1%2% + + + %1All + %1Alle + + + Not implemented in FakeVim. + In FakeVim nicht implementiert. + + + Type Alt-V, Alt-V to quit FakeVim mode. + Alt-V, Alt-V beendet den FakeVim-Modus. + + + Unknown option: + Unbekannte Option: + + + Invalid argument: + Ungültiges Argument: + + + Trailing characters: + Nachfolgende Zeichen: + + + Move lines into themselves. + Zeilen überlappen. + + + %n lines moved. + + Eine Zeile verschoben. + %n Zeilen verschoben. + + + + File "%1" exists (add ! to override) + Die Datei "%1" existiert bereits (Fügen Sie ! an, um sie zu überschreiben) + + + Cannot open file "%1" for writing + Die Datei "%1" kann nicht zum Schreiben geöffnet werden + + + "%1" %2 %3L, %4C written. + "%1" %2 %3 Zeilen mit %4 Zeichen geschrieben. + + + [New] + [Neu] + + + Cannot open file "%1" for reading + Die Datei "%1" kann nicht zum Lesen geöffnet werden + + + "%1" %2L, %3C + "%1" %2 Zeilen mit %3 Zeichen + + + %n lines filtered. + + Eine Zeile gefiltert. + %n Zeilen gefiltert. + + + + Cannot open file %1 + Die Datei "%1" kann nicht geöffnet werden + + + Not an editor command: %1 + Kein Editor-Kommando: %1 + + + Invalid regular expression: %1 + Ungültiger regulärer Ausdruck: %1 + + + Pattern not found: %1 + Muster nicht gefunden: %1 + + + Search hit BOTTOM, continuing at TOP. + Die Suche hat das Ende erreicht, setze am Anfang fort. + + + Search hit TOP, continuing at BOTTOM. + Die Suche hat den Anfang erreicht, setze am Ende fort. + + + Search hit BOTTOM without match for: %1 + Die Suche hat das Ende erreicht, ohne %1 zu finden + + + Search hit TOP without match for: %1 + Die Suche hat den Anfang erreicht, ohne %1 zu finden + + + %n lines indented. + + Eine Zeile eingerückt. + %n Zeilen eingerückt. + + + + %n lines %1ed %2 time. + + %1 auf eine Zeile %2 mal angewandt. + %1 auf %n Zeilen %2 mal angewandt. + + + + %n lines yanked. + + Eine Zeile kopiert. + %n Zeilen kopiert. + + + + Already at oldest change. + Älteste Änderung erreicht. + + + Already at newest change. + Neueste Änderung erreicht. + + + General + Allgemein + + + FakeVim + FakeVim + + + Keep empty to use the default path, i.e. %USERPROFILE%\_vimrc on Windows, ~/.vimrc otherwise. + Leer lassen, um den Vorgabepfad zu verwenden, d.h. %USERPROFILE%\_vimrc auf Windows, ansonsten ~/.vimrc. + + + Default: %1 + Vorgabe: %1 + + + Ex Command Mapping + Zuordnung von Ex-Kommandos + + + Ex Trigger Expression + Ex-Trigger-Ausdruck + + + Regular expression: + Regulärer Ausdruck: + + + Ex Command + Ex-Kommando + + + Action + Aktion + + + Command + Kommando + + + User Command Mapping + Zuordnung benutzerdefinierter Aktionen + + + User command #%1 + Benutzerdefinierte Aktion #%1 + + + Meta+V,Meta+V + Meta+V,Meta+V + + + Alt+V,Alt+V + Alt+V,Alt+V + + + Execute User Action #%1 + Benutzerdefinierte Aktion #%1 ausführen + + + Meta+V,%1 + Meta+V,%1 + + + Alt+V,%1 + Alt+V,%1 + + + "%1" %2 %3L, %4C written + "%1" %2 %3 Zeilen mit %4 Zeichen geschrieben + + + File not saved + Datei nicht gespeichert + + + Saving succeeded + Gespeichert + + + %n files not saved + + Eine Datei nicht gespeichert + %n Dateien nicht gespeichert + + + + + Git::Internal::GitEditorWidget + + Blame %1 + Blame für %1 + + + Blame Parent Revision %1 + Blame der übergeordneten Revision %1 + + + Reset + Zurücksetzen + + + All changes in working directory will be discarded. Are you sure? + Alle Änderungen im Arbeitsverzeichnis werden verworfen. Sind Sie sicher? + + + Chunk successfully staged + Chunk wurde für Commit vorgesehen + + + Stage Chunk... + Chunk für Commit vorsehen... + + + Unstage Chunk... + Chunk aus Commit entfernen... + + + Cherry-Pick Change %1 + Cherry-Pick von Änderung %1 + + + Revert Change %1 + Änderung %1 rückgängig machen + + + Checkout Change %1 + Änderung %1 auschecken + + + Hard Reset to Change %1 + Zurücksetzen auf Änderung %1 (Modus hard) + + + + GlslEditor::Internal::GlslEditorPlugin + + GLSL + GLSL sub-menu in the Tools menu + GLSL + + + + HelpViewer + + Open Link as New Page + Verweis in neuer Seite öffnen + + + + Mercurial::Internal::MercurialEditorWidget + + Annotate %1 + Annotation für %1 + + + Annotate parent revision %1 + Annotation der übergeordneten Revision %1 + + + + Perforce::Internal::PerforceEditorWidget + + Annotate change list "%1" + Annotation der Change-Liste "%1" + + + + ProjectExplorer::LineEditValidator + + Line Edit Validator Expander + Line Edit Validator Expander + + + The text edit input to fix up. + Zu korrigierende Textfeldeingabe. + + + + ProjectExplorer::JsonFieldPage + + Field is not an object. + Feld ist kein Objekt. + + + Field has no name. + Feld hat keinen Namen. + + + Field '%1' has no type. + Feld '%1' hat keinen Typ. + + + Field '%1' has unsupported type '%2'. + Feld '%1' hat nicht unterstützten Typ '%2'. + + + When parsing Field '%1': %2 + Beim Auswerten des Feldes '%1': %2 + + + Label data is not an object. + Label data ist kein Objekt. + + + No text given for Label. + Kein Text für Beschriftung angegeben. + + + Spacer data is not an object. + Spacer data ist kein Objekt. + + + 'factor' is no integer value. + 'factor' ist kein Ganzzahlwert. + + + LineEdit data is not an object. + LineEdit data ist kein Objekt. + + + Invalid regular expression "%1" in "validator". + Ungültiger regulärer Ausdruck "%1" in "validator". + + + TextEdit data is not an object. + TextEdit data ist kein Objekt. + + + PathChooser data is not an object. + PathChooser data ist kein Objekt. + + + kind '%1' is not one of the supported 'existingDirectory', 'directory', 'file', 'saveFile', 'existingCommand', 'command', 'any'. + kind '%1' ist keine der unterstützten 'existingDirectory', 'directory', 'file', 'saveFile', 'existingCommand', 'command', 'any'. + + + CheckBox data is not an object. + CheckBox data ist kein Objekt. + + + CheckBox values for checked and unchecked state are identical. + CheckBox-Werte für checked- und unchecked-Status sind indentisch. + + + No lists allowed inside ComboBox items list. + In ComboBox items-Listen sind keine Listen erlaubt. + + + No 'key' found in ComboBox items. + Kein 'key' in ComboBox items gefunden. + + + ComboBox data is not an object. + ComboBox data ist kein Objekt. + + + ComboBox 'index' is not a integer value. + ComboBox 'index' ist kein Ganzzahlwert. + + + ComboBox 'disabledIndex' is not a integer value. + ComboBox 'disabledIndex' ist kein Ganzzahlwert. + + + ComboBox 'items' missing. + Combox 'items' fehlt. + + + ComboBox 'items' is not a list. + Combox 'items' ist keine Liste. + + + Files data list entry is not an object. + Files data list entry ist kein Objekt. + + + No source given for file in file list. + Keine Quelle für Datei in Dateiliste angegeben. + + + + ProjectExplorer::JsonProjectPage + + untitled + File path suggestion for a new project. If you choose to translate it, make sure it is a valid path name without blanks and using only ascii chars. + untitled + + + + ProjectExplorer::JsonSummaryPage + + Failed to Commit to Version Control + Konnte nicht in Versionskontrollsystem abgeben + + + Error message from Version Control System: '%1'. + Fehlermeldung vom Versionskontrollsystem: '%1'. + + + Failed to Add to Project + Konnte nicht zu Projekt hinzufügen + + + Failed to add subproject "%1" +to project "%2". + Das untergeordnete Projekt "%1" +konnte dem Projekt "%2" nicht hinzugefügt werden. + + + Failed to add one or more files to project +"%1" (%2). + Einige Dateien (%2) konnten nicht zum Projekt "%1" hinzugefügt werden. + + + + ProjectExplorer::JsonWizardFactory + + Generator is not a object. + Generator ist kein Objekt. + + + Generator has no typeId set. + Für Generator ist keine typeId angegeben. + + + TypeId "%1" of generator is unknown. Supported typeIds are: "%2". + TypeId "%1" des Generators ist unbekannt. Unterstützte typeIds sind: "%2". + + + Page is not a object. + Page ist kein Objekt. + + + Page has no typeId set. + Für Page ist keine typeId angegeben. + + + TypeId "%1" of page is unknown. Supported typeIds are: "%2". + TypeId "%1" der Page ist unbekannt. Unterstützte typeIds sind: "%2". + + + Page with typeId "%1" has invalid "index". + Page mit typeId "%1" hat ungültigen "index". + + + Path "%1" does not exist when checking Json wizard search paths. + + Pfad "%1" existiert nicht in Json-Wizard Suchpfaden. + + + + Checking "%1" for %2. + + Prüfe "%1" für %2. + + + + * Failed to parse "%1":%2:%3: %4 + + * Konnte "%1" nicht auswerten: %2:%3: %4 + + + + * Did not find a JSON object in "%1". + + * Kein JSON-Objekt in "%1" gefunden. + + + + * Configuration found and parsed. + + * Konfiguration gefunden und ausgewertet. + + + + * Version %1 not supported. + + * Version %1 nicht unterstützt. + + + + * Wizard is disabled. + + * Wizard ist deaktiviert. + + + + * Failed to create: %1 + + * Konnte nicht erzeugen: %1 + + + + JsonWizard: "%1" not found + + JsonWizard: "%1" nicht gefunden + + + + Expected an object or a list. + Ein Objekt oder eine Liste wurden erwartet. + + + "kind" value "%1" is not "class", "file" or "project". + "kind"-Wert "%1" ist nicht "class", "file" oder "project". + + + No id set. + Keine ID angegeben. + + + No category is set. + Keine category angegeben. + + + Icon "%1" not found. + Symbol "%1" nicht gefunden. + + + No displayName set. + Kein displayName angegeben. + + + No displayCategory set. + Keine displayCategory angegeben. + + + No description set. + Keine description angegeben. + + + When parsing "generators": %1 + Beim Auswerten von "generators": %1 + + + When parsing "pages": %1 + Beim Auswerten von "pages": %1 + + + List element of "options" is not an object. + Listenelement von "options" ist kein Objekt. + + + No "key" given for entry in "options". + Kein "key" für Eintrag in "options" angegeben. + + + When parsing "options": Key "%1" set more than once. + Beim Auswerten von "options": Schlüssel "%1" ist mehrfach angegeben. + + + Value for "options" is not a list + Wert für "options" ist keine Liste + + + + ProjectExplorer::JsonWizardGenerator + + %1 [folder] + %1 [Verzeichnis] + + + %1 [symbolic link] + %1 [symbolischer Link] + + + %1 [read only] + %1 [schreibgeschützt] + + + The directory %1 contains files which cannot be overwritten: +%2. + Das Verzeichnis %1 enthält Dateien, die nicht überschrieben werden können: +%2. + + + + ProjectExplorer::EnvironmentKitInformation + + The environment setting value is invalid. + Der Wert der Umgebungseinstellung ist ungültig. + + + + ProjectExplorer::Internal::KitEnvironmentConfigWidget + + Change ... + Ändern... + + + Environment: + Umgebung: + + + Additional environment settings when using this kit. + Zusätzliche Umgebungseinstellungen bei Benutzung dieses Kits. + + + No Changes to apply + Keine Änderungen + + + Edit Environment Changes + Umgebungsänderungen bearbeiten + + + + ProjectExplorer::Project + + Project + Projekt + + + Project Name + Projektname + + + + ProjectExplorer::ProjectExplorerPluginPrivate + + Build Without Dependencies + Erstellen unter Ausschluss der Abhängigkeiten + + + Rebuild Without Dependencies + Neu erstellen unter Ausschluss der Abhängigkeiten + + + Clean Without Dependencies + Bereinigen unter Ausschluss der Abhängigkeiten + + + Build + Erstellen + + + Rebuild + Neu erstellen + + + Clean + Bereinigen + + + The project %1 is not configured, skipping it. + Das Projekt %1 ist nicht konfiguriert, es wird übersprungen. + + + No project loaded. + Es ist kein Projekt geladen. + + + Currently building the active project. + Das aktive Projekt wird gerade erstellt. + + + The project %1 is not configured. + Das Projekt %1 ist nicht konfiguriert. + + + Project has no build settings. + Das Projekt hat keine Build-Einstellungen. + + + Building "%1" is disabled: %2<br> + Das Erstellen von "%1" ist deaktiviert: %2<br> + + + No project loaded + Kein Projekt geladen + + + A build is in progress + Zur Zeit läuft ein Build-Vorgang + + + Project has no build settings + Das Projekt hat keine Build-Einstellungen + + + Building "%1" is disabled: %2 + Das Erstellen von "%1" ist deaktiviert: %2 + + + Run %1 + %1 ausführen + + + + ProjectExplorer::Target + + Target Settings + Zieleinstellungen + + + Source directory + Quellverzeichnis + + + + QmakeAndroidSupport::Internal::AndroidPackageInstallationFactory + + Deploy to device + Deployment auf Gerät + + + + QmakeAndroidSupport::Internal::AndroidPackageInstallationStep + + Copy application data + Anwendungsdaten kopieren + + + Removing directory %1 + Lösche Verzeichnis %1 + + + + QmakeAndroidSupport::Internal::AndroidPackageInstallationStepWidget + + <b>Make install</b> + <b>Make install</b> + + + Make install + Make install + + + + QmakeAndroidSupport::Internal::NoApplicationProFilePage + + No application .pro file found in this project. + Die .pro-Datei der Anwendung konnte in diesem Projekt nicht gefunden werden. + + + No Application .pro File + Keine .pro-Datei der Anwendung + + + + QmakeAndroidSupport::Internal::ChooseProFilePage + + Select the .pro file for which you want to create the Android template files. + Wählen Sie die .pro-Datei, für die Sie die Android-Vorlagendateien erstellen wollen. + + + .pro file: + .pro Datei: + + + Select a .pro File + .pro-Datei wählen + + + + QmakeAndroidSupport::Internal::ChooseDirectoryPage + + The Android package source directory cannot be the same as the project directory. + Das Android-Paket-Quellverzeichnis muss sich vom Projektverzeichnis unterscheiden. + + + Android package source directory: + Quellverzeichnis des Android-Pakets: + + + Select the Android package source directory. + +The files in the Android package source directory are copied to the build directory's Android directory and the default files are overwritten. + Wählen Sie das Quellverzeichnis des Android-Pakets aus. + +Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichnis "Android" im Build-Verzeichnis kopiert und die Vorgabedateien überschrieben. + + + The Android template files will be created in the ANDROID_PACKAGE_SOURCE_DIR set in the .pro file. + Die Android-Vorlagendateien werden im in der .pro-Datei angegebenen ANDROID_PACKAGE_SOURCE_DIR angelegt. + + + Copy the Gradle files to Android directory + Gradle-Dateien ins Android-Verzeichnis kopieren + + + It is highly recommended if you are plannig to extend the Java part of your Qt application. + Dies wird ausdrücklich empfohlen, wenn sie den Java-Teil Ihrer Qt-Anwendung erweitern wollen. + + + + QmakeAndroidSupport::Internal::CreateAndroidManifestWizard + + Create Android Template Files Wizard + Assistent zum Erzeugen von Android-Vorlagendateien + + + Overwrite %1 file + Überschreibe Datei %1 + + + Overwrite existing "%1"? + Soll "%1" überschrieben werden? + + + File Creation Error + Fehler beim Erstellen der Datei + + + Could not copy file "%1" to "%2". + Die Datei "%1" konnte nicht nach "%2" kopiert werden. + + + Project File not Updated + Projekt-Datei nicht aktualisiert + + + Could not update the .pro file %1. + Die Projekt-Datei %1 konnte nicht aktualisiert werden. + + + + QmakeAndroidSupport::Internal::QmakeAndroidBuildApkStepFactory + + Build Android APK + Android APK erstellen + + + + QmakeAndroidSupport::Internal::QmakeAndroidBuildApkStep + + Found old folder "android" in source directory. Qt 5.2 does not use that folder by default. + Es wurde ein alter Ordner "android" im Quellverzeichnis gefunden. Qt 5.2 verwendet diesen Ordner nicht mehr. + + + Internal Error: Could not find .pro file. + Interner Fehler: Die .pro-Datei konnte nicht gefunden werden. + + + Internal Error: Unknown Android deployment JSON file location. + Interner Fehler: Unbekannter Pfad zur Android-Deployment-JSON-Datei. + + + Starting: "%1" %2 + Starte "%1" %2 + + + + QmakeAndroidSupport::Internal::QmakeAndroidRunConfiguration + + The .pro file "%1" is currently being parsed. + Die .pro-Datei "%1" wird gerade ausgewertet. + + + + QmlJSEditor::Internal::QmlJSEditorWidget + + Show Qt Quick ToolBar + Qt-Quick-Werkzeugleiste anzeigen + + + Refactoring + Refactoring + + + This file should only be edited in <b>Design</b> mode. + Datei sollte nur im <b>Design</b>-Modus bearbeitet werden. + + + Switch Mode + Modus umschalten + + + + QmlJSEditor::Internal::QmlJSHoverHandler + + Library at %1 + Bibliothek bei %1 + + + Dumped plugins successfully. + Plugin-Information erfolgreich bestimmt. + + + Read typeinfo files successfully. + typeinfo-Dateien gelesen. + + + + QmlProfiler::Internal::RangeTimelineModel + + Duration + Dauer + + + Details + Details + + + Location + Ort + + + + ResourceEditor::Internal::PrefixLangDialog + + Prefix: + Präfix: + + + Language: + Sprache: + + + + Subversion::Internal::SubversionEditorWidget + + Annotate revision "%1" + Annotation für Revision "%1" + + + + TextEditor::TextDocument + + Opening File + Öffne Datei + + + + TextEditor::Internal::TextEditorWidgetPrivate + + CTRL+D + CTRL+D + + + Line: %1, Col: %2 + Zeile: %1, Spalte: %2 + + + Line: 9999, Col: 999 + Zeile: 9999, Spalte: 999 + + + + TextEditor::TextEditorWidget + + Print Document + Dokument drucken + + + File Error + Dateifehler + + + The text is too large to be displayed (%1 MB). + Texte dieser Größe (%1 MB) können nicht angezeigt werden. + + + <b>Error:</b> Could not decode "%1" with "%2"-encoding. Editing not possible. + <b>Fehler:</b> Die Datei "%1" kann nicht mit der Zeichenkodierung "%2" dargestellt werden. Sie kann nicht bearbeitet werden. + + + Select Encoding + Zeichenkodierung auswählen + + + Delete UTF-8 BOM on Save + UTF-8 BOM beim Speichern entfernen + + + Add UTF-8 BOM on Save + UTF-8 BOM beim Speichern hinzufügen + + + + TextEditor::TextEditorActionHandler + + <line>:<column> + <Zeilennummer>:<Spaltennummer> + + + + VcsBase::VcsCommand + + Unable to start process, binary is empty + Der Prozess kann nicht gestartet werden, da keine ausführbare Datei angegeben wurde + + + Error: Executable timed out after %1s. + Fehler: Zeitüberschreitung nach %1s. + + + + VcsBase::VcsOutputWindow + + Open "%1" + "%1" öffnen + + + Clear + Löschen + + + Version Control + Versionskontrolle + + + Executing: %1 %2 + Kommando: %1 %2 + + + Executing in %1: %2 %3 + Kommando in %1: %2 %3 + + + + Help::Internal::IndexWindow + + &Look for: + &Suche nach: + + + Open Link + Verweis öffnen + + + Open Link as New Page + Verweis in neuer Seite öffnen + + From bfbcce94c54ec1f322e40b9b81bedf954a8fe09c Mon Sep 17 00:00:00 2001 From: Aki Koskinen Date: Tue, 6 Jan 2015 21:07:18 +0200 Subject: [PATCH 34/36] Fix a few memory leaks Some raw pointers never got released. These errors were found by running QtCreator via Valgrind. Change-Id: I9c5b2862b98597f3e468d573e7126d7d9ec46b05 Reviewed-by: Orgad Shaneh Reviewed-by: Eike Ziller --- src/plugins/coreplugin/designmode.cpp | 1 + .../qmldesigner/components/componentcore/crumblebar.cpp | 5 +++++ .../qmldesigner/components/componentcore/crumblebar.h | 1 + src/plugins/qnx/qnxconfigurationmanager.cpp | 1 + 4 files changed, 8 insertions(+) diff --git a/src/plugins/coreplugin/designmode.cpp b/src/plugins/coreplugin/designmode.cpp index 49f99650fae..9436c1c3b34 100644 --- a/src/plugins/coreplugin/designmode.cpp +++ b/src/plugins/coreplugin/designmode.cpp @@ -189,6 +189,7 @@ void DesignMode::unregisterDesignWidget(QWidget *widget) foreach (DesignEditorInfo *info, d->m_editors) { if (info->widget == widget) { d->m_editors.removeAll(info); + delete info; break; } } diff --git a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp index e12725a5ee5..776e2892bc3 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp @@ -84,6 +84,11 @@ CrumbleBar::CrumbleBar(QObject *parent) : updateVisibility(); } +CrumbleBar::~CrumbleBar() +{ + delete m_crumblePath; +} + void CrumbleBar::pushFile(const QString &fileName) { if (m_isInternalCalled == false) { diff --git a/src/plugins/qmldesigner/components/componentcore/crumblebar.h b/src/plugins/qmldesigner/components/componentcore/crumblebar.h index 7586087c37f..8d24be13563 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.h +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.h @@ -42,6 +42,7 @@ class CrumbleBar : public QObject Q_OBJECT public: explicit CrumbleBar(QObject *parent = 0); + ~CrumbleBar(); void pushFile(const QString &fileName); void pushInFileComponent(const ModelNode &modelNode); diff --git a/src/plugins/qnx/qnxconfigurationmanager.cpp b/src/plugins/qnx/qnxconfigurationmanager.cpp index 8c2ca184ad7..826d2ad5a69 100644 --- a/src/plugins/qnx/qnxconfigurationmanager.cpp +++ b/src/plugins/qnx/qnxconfigurationmanager.cpp @@ -71,6 +71,7 @@ QnxConfigurationManager::~QnxConfigurationManager() { m_instance = 0; qDeleteAll(m_configurations); + delete m_writer; } QList QnxConfigurationManager::configurations() const From 9cdede01749d7ee1d66c0b3dc4bb6908894703e8 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Tue, 30 Dec 2014 16:01:19 +0900 Subject: [PATCH 35/36] Fix a typo in share/qtcreator/static.pro Change-Id: Ic5ef242c0cd66a857ab3625ee4f870555d27d415 Reviewed-by: Orgad Shaneh Reviewed-by: Eike Ziller --- share/qtcreator/static.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro index 66af1198f0a..4e0c6b84005 100644 --- a/share/qtcreator/static.pro +++ b/share/qtcreator/static.pro @@ -77,7 +77,7 @@ for(data_dir, DATA_DIRS) { QMAKE_SUBSTITUES += puppetinfo puppet2info.input = qml/qmlpuppet/qml2puppet/Info.plist.in puppet2info.output = $$IDE_DATA_PATH/qml/qmlpuppet/qml2puppet/Info.plist - QMAKE_SUBSTITUES += puppetinfo + QMAKE_SUBSTITUES += puppet2info } SRCRESOURCEDIR = $$IDE_SOURCE_TREE/src/share/qtcreator/ From ecd9c4c813be37dec46514462f1fcba901165a93 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 7 Jan 2015 23:03:52 +0200 Subject: [PATCH 36/36] Dumper: Fix some more internal dumpers Change-Id: If17614d1fa451bb93cfe5a6ea06af39986d7ad4d Reviewed-by: hjk --- share/qtcreator/debugger/creatortypes.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index fdf301f3602..7b0ce9256b8 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -30,6 +30,9 @@ from dumper import * +def dumpLiteral(d, value): + d.putSimpleCharArray(value["_chars"], value["_size"]) + def qdump__Core__Id(d, value): try: name = d.parseAndEvaluate("Core::nameForId(%d)" % value["m_id"]) @@ -74,7 +77,7 @@ def qdump__CPlusPlus__Identifier(d, value): def qdump__CPlusPlus__Symbol(d, value): name = d.downcast(value["_name"]) - d.putItem(name) + dumpLiteral(d, name) d.putBetterType(value.type) d.putPlainChildren(value) @@ -84,17 +87,17 @@ def qdump__CPlusPlus__IntegerType(d, value): def qdump__CPlusPlus__NamedType(d, value): literal = d.downcast(value["_name"]) - d.putItem(literal) + dumpLiteral(d, literal) d.putBetterType(value.type) d.putPlainChildren(value) def qdump__CPlusPlus__TemplateNameId(d, value): - d.putItem(value["_identifier"].dereference()) + dumpLiteral(d, value["_identifier"].dereference()) d.putBetterType(value.type) d.putPlainChildren(value) def qdump__CPlusPlus__Literal(d, value): - d.putSimpleCharArray(value["_chars"], value["_size"]) + dumpLiteral(d, value) d.putPlainChildren(value) def qdump__CPlusPlus__StringLiteral(d, value):