summaryrefslogtreecommitdiff
path: root/doc/api/qtcreator-api.qdoc
blob: bfa1918cfcef94d8f11df5e8c1c4cc42c8c691e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
/****************************************************************************
**
** 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 qtcreator-api.html

    \title Qt Creator API Reference

    The core of \QC is basically only a \l{ExtensionSystem}{plugin loader}. All
    functionality is implemented in plugins. The basis of \QC is implemented in
    the \l{Core}{Core} Plugin. The plugin manager provides simple means for
    plugin cooperation that allow plugins to provide hooks for other plugin's
    extensions.

    \section1 Libraries

    \section2 Core Libraries

    There are a few core libraries used by many parts of Qt Creator.

    \table
        \header
            \li Library Name
            \li Description

        \row
            \li \l{Aggregation}
            \li Adds functionality for "glueing" QObjects of different types
                together, so you can "cast" between them.

        \row
            \li \l{ExtensionSystem}
            \li Implements the plugin loader framework. Provides a base class
                for plugins and basic mechanisms for plugin interaction like an
                object pool.

        \row
            \li \l{Utils}
            \li General utility library.

        \row
            \li \l{QmlJS}
            \li QML and JavaScript language support library.

    \endtable

    \section2 Additional libraries

    \table
        \header
            \li Library Name
            \li Description

        \row
            \li \l{qtcreatorcdbext}
            \li Windows CDB debugger extension
    \endtable

    \section1 Plugins

    As already mentioned, \QC is basically only a plugin loader framework
    which gets its IDE functionality through plugins. The most important plugin
    is the \c Core plugin which provides all the basic functionality needed
    later to integrate e.g. editors or mode windows.

    \table
        \header
            \li Plugin Name
            \li Description

        \row
            \li \l{Core}
            \li The core plugin. Provides the main window and managers for
                editors, actions, mode windows and files, just to mention the
                most important ones.

                This plugin also contains classes necessary to hook into the
                \l{Locator} as well as support for searching text in arbitrary
                widgets.

        \row
            \li \l{ProjectExplorer}
            \li The project explorer plugin. Provides base classes for project
                handling.

        \row
            \li \l{Debugger}
            \li Debugging functionality.

        \row
            \li \l{VcsBase}
            \li Base classes for version control support.

        \row
            \li \l{TextEditor}
            \li This is where everything starts if you want to create a text
                editor. Besides the base editor itself, this plugin contains
                APIs for supporting functionality like \l{Snippets}{snippets},
                highlighting, \l{CodeAssist}{code assist}, indentation and
                style, and others.
    \endtable
*/

/*!
    \page classes.html
    \title Qt Creator Classes

    \generatelist classes
*/

/*!
    \page namespaces.html
    \title Qt Creator Namespaces

    \generatelist namespaces
*/

/*!
    \page mainclasses.html
    \title Qt Creator Main Classes

    \generatelist mainclasses

*/

/*!
    \page functions.html
    \title Qt Creator Functions

    \generatelist functionindex
*/

/*!
    \page common_extension_tasks.html
    \title Common Extension Tasks

    This section summarizes the API functions that you can use to add UI
    components to \QC.

    \table
        \header
            \li Task
            \li Details
            \li API

        \row
            \li Add a menu or menu item.
            \li You can extend existing menus or create new ones.
            \li \l{Core::ActionManager}, \l{Core::Command}

        \row
            \li Add a configurable keyboard shortcut.
            \li Registering shortcuts makes it possible for users to configure
                them in the common shortcut settings dialog.
            \li \l{Core::ActionManager}, \l{Core::Command}

        \row
            \li Add a mode.
            \li Modes correspond to complete screens of controls, specialized
                for a task.
            \li \l{Core::IMode}

        \row
            \li Add a new editor type.
            \li Such as an editor for XML files.
            \li \l{Core::IEditorFactory}, \l{Core::IEditor}, \l{Core::IDocument}

        \row
            \li Add a new wizard.
            \li You can extend the wizards in File > New File or Project with
                your own file and project templates.
            \li \l{Core::IWizard}, \l{Core::StandardFileWizard},
                \l{Core::BaseFileWizard}, \l{Core::BaseFileWizardParameters}

        \row
            \li Add support for a new version control system.
            \li Version control systems integrated in \QC are Bazaar, CVS, Git,
                Mecurial, Perforce, and Subversion.
            \li \l{Core::IVersionControl}

        \row
            \li Add a view to the navigation sidebar.
            \li The one which shows the project tree, filesystem, open documents
                or bookmarks.
            \li \l{Core::INavigationWidgetFactory}

        \row
            \li Add an options page to the \uicontrol Options dialog.
            \li Add a new page to existing or new category in
                \uicontrol Tools > \uicontrol Options.
            \li \l{Core::IOptionsPage}

        \row
            \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}

        \row
            \li Add support for the find tool bar to a widget.
            \li The widget that has focus is asked whether it supports text
                search. You can add support for widgets under your control.
            \li \l{Core::IFindSupport}, \l{Find::BaseTextFind}

        \row
            \li Add a completely new project type.
            \li
            \li

        \row
            \li Add a new type of build step.
            \li
            \li

        \row
            \li Add a new filter to the locator.
            \li For a text typed in by the user you provide a list of things to
                show in the popup. When the user selects an entry you are
                requested to do whatever you want.
            \li \l{Core::ILocatorFilter}, \l{Core::LocatorFilterEntry},
                \l{Locator::BaseFileFilter}

        \row
            \li Show a progress indicator for a concurrently running task.
            \li You can show a progress indicator for your tasks in the left
                hand tool bar, and also in the application icon (on platforms
                that support it).
            \li \l{Core::ProgressManager}, \l{Core::FutureProgress}

        \row
            \li
            \li
            \li

    \endtable
*/