summaryrefslogtreecommitdiff
path: root/doc/api/qtcreator-api.qdoc
blob: 12d4179cb8ae78c0615ed031bc6d12e6ae33077c (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
/*!
    \page index.html
    \title Qt Creator

    Qt Creator is Qt Software's crossplatform IDE. The core of Qt Creator is
    basically only a \l{ExtensionSystem}{plugin loader}.
    All functionality is implemented in plugins, the basis of Qt Creator 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.

    To get an overview of what parts of QtCreator are extensible, have a look at the \l{Common Extension Tasks} page.

    \section1 Core Libraries

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

    \table
    \header
    \o Library Name
    \o Description

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

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

    \endtable

    \section1 Plugins

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

    \table
    \header
    \o Plugin Name
    \o Description

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

    \row
    \o \l{Find}
    \o Support for searching text in arbitrary widgets, and arbitrary other things.

    \row
    \o \l{QuickOpen}
    \o Hooks for providing content for Locator.

    \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

    \table
    \header
    \o Task
    \o Details
    \o API

    \row
    \o Add a menu / menu entry.
    \o You can extend existing menus or create new ones.
    \o \l{Core::ActionManager}, \l{Core::Command}, \l{Core::ICore::actionManager()}

    \row
    \o Add a configurable keyboard shortcut.
    \o Registerng shortcuts makes it possible for users to configure them in the common shortcut settings dialog.
    \o \l{Core::ActionManager}, \l{Core::Command}, \l{Core::ICore::actionManager()}

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

    \row
    \o Add a new editor type.
    \o Like an editor for xml files.
    \o \l{Core::IEditorFactory}, \l{Core::IEditor}, \l{Core::IFile}

    \row
    \o Add a "New" wizard.
    \o That is added to the list when users do File->New..., allows you to basically do whatever you want.
    \o \l{Core::IWizard}, \l{Core::StandardFileWizard}, \l{Core::BaseFileWizard}, \l{Core::BaseFileWizardParameters}

    \row
    \o Add support for a new version control system.
    \o Version control systems provided by QtCreator itself are Perforce, Git and Subversion.
    \o \l{Core::IVersionControl}

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

    \row
    \o Add a preferences page to the preferences dialog.
    \o Add a new page to existing or new category in Tools->Options.
    \o \l{Core::IOptionsPage}

    \row
    \o Add a find filter for the find dialog.
    \o Implement any kind of search term based search.
    \o \l{Find::IFindFilter}, \l{Find::SearchResultWindow}, \l{Find::ResultWindowItem}

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

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

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

    \row
    \o Add a new filter to Locator.
    \o 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.
    \o \l{QuickOpen::IQuickOpenFilter}, \l{QuickOpen::FilterEntry}, \l{QuickOpen::BaseFileFilter}

    \row
    \o
    \o
    \o

    \endtable
*/