forked from qt-creator/qt-creator
		
	* Update license in documentation files. Stay at FDL, but update URLs as well as license for examples, etc. Change-Id: I5e8cb5a20f0e9d52fba1d937b7c73197d69dd747 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
		
			
				
	
	
		
			259 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			259 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /****************************************************************************
 | |
| **
 | |
| ** Copyright (C) 2016 The Qt Company Ltd.
 | |
| ** Contact: https://www.qt.io/licensing/
 | |
| **
 | |
| ** This file is part of the Qt Creator documentation.
 | |
| **
 | |
| ** Commercial License Usage
 | |
| ** Licensees holding valid commercial Qt licenses may use this file in
 | |
| ** accordance with the commercial license agreement provided with the
 | |
| ** Software or, alternatively, in accordance with the terms contained in
 | |
| ** a written agreement between you and The Qt Company. For licensing terms
 | |
| ** and conditions see https://www.qt.io/terms-conditions. For further
 | |
| ** information use the contact form at https://www.qt.io/contact-us.
 | |
| **
 | |
| ** GNU Free Documentation License Usage
 | |
| ** 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. Please review the following information to ensure
 | |
| ** the GNU Free Documentation License version 1.3 requirements
 | |
| ** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
 | |
| **
 | |
| ****************************************************************************/
 | |
| 
 | |
| /*!
 | |
|     \page extending-index.html
 | |
|     \title Extending Qt Creator Manual
 | |
| 
 | |
|     \QC is a cross-platform integrated development environment (IDE) tailored to
 | |
|     the needs of Qt developers.
 | |
| 
 | |
|     \QC is extensible in various ways. For example, \QC architecture is based on
 | |
|     a plugin loader, which means that all functionality beyond plugin loading
 | |
|     is implemented in plugins. However, you can extend and tweak many parts of
 | |
|     \QC without the need to resort to coding in C++ and implementing such a
 | |
|     plugin.
 | |
| 
 | |
|     This document gives you an overview of the various ways in which you can
 | |
|     extend \QC, depending on what you want to achieve, and points you to the
 | |
|     relevant documentation.
 | |
| 
 | |
|     \section1 Generating Domain Specific Code and Templates
 | |
| 
 | |
|     If you regularly need to write the same code, be it little code snippets,
 | |
|     whole files or classes spread over multiple files, or complete projects, you
 | |
|     can create code snippets, templates, and wizards for that purpose.
 | |
| 
 | |
|     \section2 Snippets
 | |
| 
 | |
|     Typically, snippets consist of a few lines of code (although they can also
 | |
|     be plain text) that you regularly want to insert into a bigger body of code,
 | |
|     but do not want to type each time. For example, \c while and \c for loops,
 | |
|     \c if-else and \c try-catch constructs, and class skeletons. Snippets are
 | |
|     triggered in the same way as normal code completion (see
 | |
|     \l{Code Assist}{Providing Code Assist}).
 | |
|     \QC contains a set of preconfigured snippets groups to which you can add
 | |
|     your own snippets.
 | |
| 
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-completing-code.html#editing-code-snippets}
 | |
|             {Snippets User Interface}
 | |
|         \li \l{Snippets}{Adding Snippets Groups}
 | |
|     \endlist
 | |
| 
 | |
|     \section2 File and Project Templates
 | |
| 
 | |
|     You can extend the wizards in \uicontrol File >
 | |
|     \uicontrol {New File or Project} with your own file and project templates by
 | |
|     writing JSON definition files for them.
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-project-wizards.html}
 | |
|             {Adding New Custom Wizards}
 | |
|         \li \l{User Interface Text Guidelines}
 | |
|     \endlist
 | |
| 
 | |
|     \section2 Custom Wizards
 | |
| 
 | |
|     If the above methods for code snippets and templates are not sufficient for
 | |
|     your use case, you can create a custom \QC plugin. While this gives you
 | |
|     complete control over the wizard, it also requires you to write most of the
 | |
|     UI and the logic yourself.
 | |
| 
 | |
|     \list
 | |
|         \li \l{Creating Plugins}
 | |
|         \li \l{Qt Creator Coding Rules}
 | |
|         \li \l{Creating Wizards in Code}
 | |
|         \li \l{User Interface Text Guidelines}
 | |
|     \endlist
 | |
| 
 | |
|     \section1 Supporting Additional File Types
 | |
| 
 | |
|     If you have files with extensions or MIME types that \QC does not handle by
 | |
|     default, you can edit the MIME type definitions, add highlight definition
 | |
|     files, and create your own text editors.
 | |
| 
 | |
|     \section2 MIME Types
 | |
| 
 | |
|     You might find that \QC could handle a particular file of yours if it knew
 | |
|     about the type of its contents. For example, C++ header or source files
 | |
|     with file extensions that are not known to \QC. You can adapt the MIME type
 | |
|     definitions in \QC to your specific setup, by adding or removing file
 | |
|     extensions and specifying magic headers.
 | |
| 
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-mime-types.html}
 | |
|             {Editing MIME Types}
 | |
|         \li \l{http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html}
 | |
|             {MIME Type Specification Files}
 | |
|     \endlist
 | |
| 
 | |
|     \section2 Text Highlighting and Indentation
 | |
| 
 | |
|     For text files, \QC provides an easy way to add highlighting and indentation
 | |
|     for file types that are not known to it by default. Generic highlighting is
 | |
|     based on highlight definition files that are provided by the Kate Editor.
 | |
|     You can download highlight definition files for use with \QC and create
 | |
|     your own definition files.
 | |
| 
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-editor-options.html#generic-highlighting}
 | |
|             {Generic Highlighting}
 | |
|         \li \l{http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/}
 | |
|             {Writing a Syntax Highlighting File}
 | |
|     \endlist
 | |
| 
 | |
|     \section2 Custom Text Editors
 | |
| 
 | |
|     If you need more advanced features than the MIME type and highlighting
 | |
|     features described above, such as custom text completion or features that
 | |
|     rely on semantic analysis, you can extend \QC with a text editor of your
 | |
|     own. \QC provides a special API for text editors that gives you a basis to
 | |
|     build on, taking away some of the pain of implementing a text editor from
 | |
|     the ground up.
 | |
| 
 | |
|     \list
 | |
|         \li \l{Creating Plugins}
 | |
|         \li \l{Qt Creator Coding Rules}
 | |
|         \li \l{Text Editors}
 | |
|         \li \l{CodeAssist} {Providing Code Assist}
 | |
|     \endlist
 | |
| 
 | |
|     \section2 Other Custom Editors
 | |
| 
 | |
|     You can also add a completely custom editor to gain complete control over
 | |
|     its appearance and behavior.
 | |
| 
 | |
|     \list
 | |
|         \li \l{Creating Plugins}
 | |
|         \li \l{Qt Creator Coding Rules}
 | |
|         \li \l{Editors}
 | |
|     \endlist
 | |
| 
 | |
|     \section1 Running External Tools
 | |
| 
 | |
|     Most software projects and development processes require various external
 | |
|     tools. Several external tools, such as popular version control systems and
 | |
|     build tool chains are integrated into \QC. However, it is impossible for a
 | |
|     single tool to cover all the use cases, and therefore you can integrate
 | |
|     additional tools to \QC.
 | |
| 
 | |
|     \section2 Simple External Tools
 | |
| 
 | |
|     In \QC, you can specify tools that you can then run from a menu or by using
 | |
|     a keyboard shortcut that you assign. This allows you to accomplish several
 | |
|     things, with some limitations. You specify a command to run, arguments and
 | |
|     input for running it, and how to handle the output. To specify the values,
 | |
|     you can use a set of internal \QC variables, such as the file name of the
 | |
|     current document or project, or the currently selected text in a text
 | |
|     editor. If you find variables missing, please do not hesitate to fill a
 | |
|     feature suggestion. The tool descriptions are saved as XML files that you
 | |
|     can share.
 | |
| 
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-editor-external.html}
 | |
|             {Using External Tools}
 | |
|         \li \l{External Tool Specification Files}
 | |
|     \endlist
 | |
| 
 | |
|     \section2 Complex External Tools
 | |
| 
 | |
|     When you plan to integrate more complex tools, carefully consider whether
 | |
|     there really are advantages to be gained by tightly integrating the tool
 | |
|     into \QC over loosely integrating it by mainly providing a means of starting
 | |
|     the tool with fitting parameters.
 | |
| 
 | |
|     \section3 Loosely Integrating Tools
 | |
| 
 | |
|     If no interaction is needed between \QC and the external tool, just starting
 | |
|     an external application with its own user interface is preferable. That way
 | |
|     cluttering the \QC UI is avoided, and the tool will be available with a
 | |
|     nice interface even without using \QC at all.
 | |
| 
 | |
|     Usually, you can use the external tool specification files to start the
 | |
|     tool. If starting the tool and handling its output require more complex
 | |
|     logic, you can add a menu item to \QC with a plugin. If you need a way to
 | |
|     configure the tool in \QC, you can add an \uicontrol Options page for it.
 | |
| 
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-editor-external.html}{Using External Tools}
 | |
|         \li \l{External Tool Specification Files}
 | |
|         \li \l{Creating Plugins}
 | |
|         \li \l{Qt Creator Coding Rules}
 | |
|         \li \l{Menus and Menu Items}
 | |
|         \li \l{Options Pages}
 | |
|     \endlist
 | |
| 
 | |
|     \section3 Interacting with Tool Output
 | |
| 
 | |
|     In some cases, running an external tool would not require tight integration
 | |
|     with \QC, but investigating the output of the tool would benefit from it.
 | |
|     For example, some tools generate lists of issues in files that are part of
 | |
|     the project and some tools create output that is related to the code. For
 | |
|     these tools, it is useful to interactively switch between the output and
 | |
|     the corresponding code.
 | |
| 
 | |
|     One way to handle that would be to let the tool create an output file, which
 | |
|     is then opened within \QC. 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 \uicontrol Issues output pane.
 | |
| 
 | |
|     \list
 | |
|         \li \l{http://doc.qt.io/qtcreator/creator-task-lists.html}
 | |
|             {Showing Task List Files in the Issues Pane}
 | |
|         \li \l{Creating Plugins}
 | |
|         \li \l{Qt Creator Coding Rules}
 | |
|         \li \l{Menus and Menu Items}
 | |
|         \li \l{Options Pages}
 | |
|         \li \l{Editors}
 | |
|     \endlist
 | |
| 
 | |
|     \section1 All Topics
 | |
| 
 | |
|     \list
 | |
|         \li \l{Developing Qt Creator Plugins}
 | |
|             \list
 | |
|                 \li \l{Creating Plugins}
 | |
|                 \li \l{Menus and Menu Items}
 | |
|                 \li \l{Creating Wizards in Code}
 | |
|                 \li \l{Editors}
 | |
|                 \li \l{Text Editors}
 | |
|                 \li \l{Options Pages}
 | |
|             \endlist
 | |
|         \li Reference
 | |
|             \list
 | |
|                 \li \l{http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html}
 | |
|                     {MIME Type Specification Files}
 | |
|                 \li \l{External Tool Specification Files}
 | |
|                 \li \l{http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/}
 | |
|                     {Highlight Definition Files}
 | |
|                 \li \l{Qt Creator Variables}
 | |
|                 \li \l{User Interface Text Guidelines}
 | |
|                 \li \l{Writing Documentation}
 | |
|                 \li \l{Qt Creator Coding Rules}
 | |
|                 \li \l{Qt Creator API Reference}
 | |
|             \endlist
 | |
|     \endlist
 | |
| */
 |