2010-12-21 14:02:05 +01:00
/****************************************************************************
**
** This file is part of Qt Creator
**
2011-01-11 16:28:15 +01:00
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
2010-12-21 14:02:05 +01:00
**
2011-04-13 08:42:33 +02:00
** Contact: Nokia Corporation (info@qt.nokia.com)
2010-12-21 14:02:05 +01:00
**
**
** 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.
**
** If you have questions regarding the use of this file, please contact
2011-05-06 15:05:37 +02:00
** Nokia at info@qt.nokia.com.
2010-12-21 14:02:05 +01:00
**
****************************************************************************/
2009-01-05 18:04:24 +01:00
/*!
2011-04-27 17:35:17 +02:00
\contentspage{index.html}{Extending Qt Creator Manual}
\page qtcreator-api.html
2009-01-05 18:04:24 +01:00
2011-04-27 17:35:17 +02:00
\title Qt Creator API Reference
The core of Qt Creator is
2009-01-06 15:56:47 +01:00
basically only a \l{ExtensionSystem}{plugin loader}.
2011-04-27 17:35:17 +02:00
All functionality is implemented in plugins. The basis of Qt Creator is
2009-01-12 14:41:24 +01:00
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.
2009-01-06 15:56:47 +01:00
2011-02-04 15:08:31 +01:00
\section1 Libraries
\section2 Core Libraries
2009-01-06 15:56:47 +01:00
There are a few core libraries used by many parts of Qt Creator.
\table
\header
\o Library Name
\o Description
\row
2009-04-24 16:00:19 +02:00
\o \l{Aggregation}
2009-01-06 15:56:47 +01:00
\o Adds functionality for "glueing" QObjects of different
types together, so you can "cast" between them.
\row
2009-04-24 16:00:19 +02:00
\o \l{ExtensionSystem}
2009-01-06 15:56:47 +01:00
\o Implements the plugin loader framework. Provides a base class for plugins and
basic mechanisms for plugin interaction like an object pool.
2011-03-02 17:13:33 +01:00
\row
\o \l{Utils}
\o General utility library.
2009-01-06 15:56:47 +01:00
\endtable
2009-01-05 18:04:24 +01:00
2011-02-04 15:08:31 +01:00
\section2 Additional libraries
\table
\header
\o Library Name
\o Description
\row
\o \l{qtcreatorcdbext}
\o Windows CDB debugger extension
2011-05-26 18:09:17 +02:00
2011-02-04 15:08:31 +01:00
\endtable
2009-01-05 18:04:24 +01:00
\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
2009-04-24 16:00:19 +02:00
\o \l{Core}
2009-01-05 18:04:24 +01:00
\o The core plugin. Provides the main window and managers for editors,
actions, mode windows and files, just to mention the most important ones.
2011-04-14 12:58:14 +02:00
\row
\o \l{ProjectExplorer}
\o The project explorer plugin. Provides base classes for
project handling.
2009-04-24 16:00:19 +02:00
\row
\o \l{Find}
\o Support for searching text in arbitrary widgets, and arbitrary other things.
\row
2009-10-16 11:30:46 +02:00
\o \l{Locator}
2009-04-24 16:00:19 +02:00
\o Hooks for providing content for Locator.
2011-01-26 17:22:25 +01:00
\row
\o \l{Debugger}
\o Debugging functionality.
2011-03-28 14:19:17 +02:00
\row
\o \l{VCSBase}
\o Base classes for version control support.
2011-05-26 18:09:17 +02:00
\row
\o \l{TextEditor}
\o 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
2011-05-27 14:30:17 +02:00
like \l{Snippets}{snippets}, highlighting, \l{CodeAssist}{code assist}, indentation
and style, and others.
2011-05-26 18:09:17 +02:00
2009-01-05 18:04:24 +01:00
\endtable
*/
/*!
\page classes.html
2009-01-06 15:56:47 +01:00
\title Qt Creator Classes
2009-01-05 18:04:24 +01:00
\generatelist classes
2009-01-06 15:56:47 +01:00
*/
2009-01-05 18:04:24 +01:00
2009-01-06 15:56:47 +01:00
/*!
\page namespaces.html
\title Qt Creator Namespaces
2009-01-05 18:04:24 +01:00
2009-01-06 15:56:47 +01:00
\generatelist namespaces
2009-01-05 18:04:24 +01:00
*/
/*!
2009-01-06 15:56:47 +01:00
\page mainclasses.html
\title Qt Creator Main Classes
2009-01-05 18:04:24 +01:00
\generatelist mainclasses
*/
/*!
\page functions.html
2009-01-06 15:56:47 +01:00
\title Qt Creator Functions
2009-01-05 18:04:24 +01:00
2009-01-06 15:56:47 +01:00
\generatelist functionindex
2009-01-05 18:04:24 +01:00
*/
2009-04-24 16:00:19 +02:00
/*!
\page common_extension_tasks.html
\title Common Extension Tasks
2011-05-06 16:39:08 +02:00
This section summarizes the API functions that you can use to add UI
components to Qt Creator.
2009-04-24 16:00:19 +02:00
\table
\header
\o Task
\o Details
\o API
\row
2011-05-06 16:39:08 +02:00
\o Add a menu or menu item.
2009-04-24 16:00:19 +02:00
\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.
2011-05-06 16:39:08 +02:00
\o Registering shortcuts makes it possible for users to configure them in
the common shortcut settings dialog.
2009-04-24 16:00:19 +02:00
\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.
2011-01-26 17:22:25 +01:00
\o \l{Core::IMode}
2009-04-24 16:00:19 +02:00
\row
\o Add a new editor type.
2011-05-06 16:39:08 +02:00
\o Such as an editor for XML files.
2009-04-24 16:00:19 +02:00
\o \l{Core::IEditorFactory}, \l{Core::IEditor}, \l{Core::IFile}
\row
2011-05-06 16:39:08 +02:00
\o Add a new wizard.
\o You can extend the wizards in File > New File or Project with your own
file and project templates.
\o \l{Core::IWizard}, \l{Core::StandardFileWizard},
\l{Core::BaseFileWizard}, \l{Core::BaseFileWizardParameters}
2009-04-24 16:00:19 +02:00
\row
\o Add support for a new version control system.
2011-05-06 16:39:08 +02:00
\o Version control systems integrated in QtCreator are Bazaar, CVS, Git,
Mecurial, Perforce, and Subversion.
2009-04-24 16:00:19 +02:00
\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
2011-05-06 16:39:08 +02:00
\o Add an options page to the \gui Options dialog.
\o Add a new page to existing or new category in Tools > Options.
2009-04-24 16:00:19 +02:00
\o \l{Core::IOptionsPage}
\row
2011-05-06 16:39:08 +02:00
\o Add a find filter to the \gui Find dialog.
2009-04-24 16:00:19 +02:00
\o Implement any kind of search term based search.
2010-07-12 12:05:31 +02:00
\o \l{Find::IFindFilter}, \l{Find::SearchResultWindow}
2009-04-24 16:00:19 +02:00
\row
\o Add support for the find tool bar to a widget.
2011-05-06 16:39:08 +02:00
\o The widget that has focus is asked whether it supports text search. You can
add support for widgets under your control.
2009-04-24 16:00:19 +02:00
\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
2011-05-06 16:39:08 +02:00
\o Add a new filter to the locator.
2009-04-24 16:00:19 +02:00
\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.
2009-10-16 11:30:46 +02:00
\o \l{Locator::ILocatorFilter}, \l{Locator::FilterEntry}, \l{Locator::BaseFileFilter}
2009-04-24 16:00:19 +02:00
2009-12-02 15:05:49 +01:00
\row
\o Show a progress indicator for a concurrently running task.
\o 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).
\o \l{Core::ProgressManager}, \l{Core::FutureProgress}
2009-04-24 16:00:19 +02:00
\row
\o
\o
\o
\endtable
*/