You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
8.5 KiB
316 lines
8.5 KiB
/** \file Architecture.dox
|
|
* \brief KDevelop architecture
|
|
*/
|
|
|
|
/** \page architecture KDevelop 3 Architecture
|
|
|
|
KDevelop uses a plugin based architecture. This will be explained in more
|
|
detail in the next sections. To add a new plugin check the \ref howToAddPlugins page.
|
|
|
|
\section devteammodel Development Team cooperation model
|
|
|
|
KDevelop is the result of the work of many people. To help syncronize the effords and to automate
|
|
some tasks, the team uses many tools:
|
|
|
|
- CVS servers
|
|
- KDE Bugzilla
|
|
- Web servers
|
|
- Mailing Lists
|
|
- IRC
|
|
- Doxygen
|
|
- docbook
|
|
- LXR
|
|
- E-mail :)
|
|
- Cron Jobs
|
|
- and of course KDevelop :)
|
|
.
|
|
|
|
They get interconnected like this:
|
|
|
|
\image html Development.png
|
|
|
|
|
|
\section overview Source Overview
|
|
|
|
\subsection source-division Main Source Divisions
|
|
|
|
The KDevelop 3 source is divided into several parts which correspond to
|
|
subdirectories in the KDevelop project directory. There are several main
|
|
parts to distinguish, mainly:
|
|
|
|
- src = The core part of KDevelop
|
|
- lib/interfaces = Plugin handler interface classes
|
|
- parts = The various parts using the KParts framework ( KDevPlugin children )
|
|
- languages = \ref language-parts
|
|
- buildtools = \ref buildtool-parts
|
|
- vcs = \ref vcs-parts
|
|
- editors = \ref editor-parts
|
|
.
|
|
|
|
\image html Architecture.png
|
|
|
|
This image is not complete there are parts that are not displayed. See below for a more detailed description.
|
|
|
|
\subsection core-part The Core Part of KDevelop
|
|
|
|
\subsubsection mainwindows Main Window Objects
|
|
|
|
There are two types of possible main window objects:
|
|
|
|
- MainWindow implements standard MDI user interfaces:
|
|
- Top level mode (see MainWindow::switchToToplevelMode() )
|
|
- Childframe mode (see MainWindow::switchToChildframeMode() )
|
|
- Tab page mode (see MainWindow::switchToTabPageMode() )
|
|
- IDEAl mode (see MainWindow::switchToIDEAlMode() )
|
|
.
|
|
- MainWindowIDEAl implements an enhanced MDI main window providing a set of
|
|
pre-arranged access tabs around user areas.
|
|
.
|
|
|
|
Both main window classes inherit from the KDevMainWindow class which provides
|
|
access to common window features.
|
|
|
|
\subsubsection toplevel The TopLevel Object
|
|
|
|
There is only one toplevel object of class KDevMainWindow in KDevelop. It can
|
|
be accessed through the static function TopLevel::getInstance() (see the
|
|
TopLevel class).
|
|
|
|
\subsection parts-overview KDevelop Parts Overview
|
|
|
|
All parts reside in dedicated subdirectories acording to their function. They can
|
|
be viewed according to their functionalities as follows.
|
|
|
|
\subsubsection language-parts Programming Language Support Parts
|
|
|
|
These parts implement a KDevLanguageSupport Class interface.
|
|
To add support for a new programming language check the \ref howToAddProgrammingLanguages page (doc/api/HowToAddProgrammingLanguages.dox file).
|
|
Take a look at \ref LangSupportStatus (doc/api/LangSupportStatus.dox file) to see the current status/features of the programming languages currently supported by KDevelop.
|
|
|
|
- languages/ada = Support for Ada
|
|
- (see AdaSupportPart)
|
|
.
|
|
- languages/bash = Support for bash
|
|
- (see BashSupportPart)
|
|
.
|
|
- languages/cpp = Support for C/C++
|
|
- (see CppSupportPart)
|
|
- languages/cpp/debugger = GNU Debugger frontend
|
|
- (see GDBDebugger::DebuggerPart)
|
|
.
|
|
.
|
|
.
|
|
- languages/fortran = Support for Fortran
|
|
- (see FortranSupportPart)
|
|
.
|
|
- languages/haskell = Support for Haskell
|
|
- (see HaskellSupportPart)
|
|
.
|
|
- languages/java = Support for Java
|
|
- (see JavaSupportPart)
|
|
- languages/java/degugger = Java debugger frontend
|
|
- (JAVADebugger::JavaDebuggerPart)
|
|
.
|
|
.
|
|
.
|
|
- languages/pascal = Support for Pascal
|
|
- (see PascalSupportPart)
|
|
.
|
|
- languages/perl = Support for Perl
|
|
- (see PerlSupportPart)
|
|
.
|
|
- languages/php = Support for PHP
|
|
- (see PHPSupportPart)
|
|
.
|
|
- languages/python = Support for Python
|
|
- (see PythonSupportPart)
|
|
.
|
|
- languages/ruby = Support for Ruby
|
|
- (see RubySupportPart)
|
|
.
|
|
- languages/sql = Support for SQL
|
|
- (see SQLSupportPart)
|
|
.
|
|
.
|
|
|
|
\subsubsection buildtool-parts Build tools Parts
|
|
|
|
These parts implement a KDevProject Class interface.
|
|
|
|
- buildtools/ada = Ada build tool
|
|
- (see AdaProjectPart)
|
|
.
|
|
- buildtools/ant = ANT build tool
|
|
- (see AntProjectPart)
|
|
.
|
|
- buildtools/autotools = Autotools build tool
|
|
- (see AutoProjectPart)
|
|
.
|
|
- buildtools/custommakefiles = Custom makefiles build tool
|
|
- (see CustomProjectPart)
|
|
.
|
|
- buildtools/generic = Generic build tool
|
|
- (see GenericProjectPart)
|
|
.
|
|
- buildtools/pascal = Pascal build tool
|
|
- (see PascalProjectPart)
|
|
.
|
|
- buildtools/script = Script build tool
|
|
- (see ScriptProjectPart)
|
|
.
|
|
- buildtools/qmake = QMake based build tool
|
|
- (see TrollProjectPart)
|
|
.
|
|
.
|
|
|
|
|
|
\subsubsection vcs-parts VCS (Version Control System) Parts
|
|
|
|
These parts implement a KDevVersionControl Class interface.
|
|
|
|
- vcs/cervisia = Cervisia Support
|
|
- (see CervisiaPlugin)
|
|
.
|
|
- vcs/clearcase = IBM Rational ClearCase Support
|
|
- (see ClearcasePart)
|
|
.
|
|
- vcs/cvs = CVS Support
|
|
- (see CvsPart)
|
|
.
|
|
- vcs/cvsservice = cvsservice Support (Cervisia interface)
|
|
- (see CvsServicePart)
|
|
.
|
|
- vcs/perforce = Version managment system perforce integration
|
|
- (see PerforcePart)
|
|
.
|
|
- vcs/subversion = Subversion integration
|
|
- (see subversionPart)
|
|
.
|
|
.
|
|
|
|
|
|
\subsubsection editor-parts editor support Specific Parts
|
|
|
|
These parts implement a KTextEditor Class interface.
|
|
Take a look at \ref EditorsSupportStatus (doc/api/EditorsSupportStatus.dox file) to see the current status/features of the editors currently supported by KDevelop.
|
|
|
|
- editors/editor-chooser = Chooses an internal text editor
|
|
- (see EditorChooserPart)
|
|
.
|
|
- editors/nedit = KTextEditor interface for nedit
|
|
- (see KNEditFactory, Document, View)
|
|
.
|
|
- editors/qeditor = QEditor integration
|
|
- (see QEditorPart)
|
|
.
|
|
.
|
|
|
|
|
|
\subsubsection global-parts Global Parts
|
|
|
|
Some of the parts are considered global - that is, they effect the entire
|
|
operation of KDevelop.
|
|
|
|
These parts implement a KDevPlugin Class interface.
|
|
|
|
- parts/appwizard = New Project Wizard
|
|
- see AppWizardPart
|
|
- see \ref howToAddApplicationTemplates (doc/api/HowToAddApplicationTemplates.dox file)
|
|
.
|
|
- parts/history = Project history
|
|
- (see HistoryPart)
|
|
.
|
|
- parts/konsole = Embedded Konsole
|
|
- (see KonsoleViewPart)
|
|
.
|
|
- parts/doctreeview = Documentation Viewer
|
|
- (see DocTreeViewPart)
|
|
.
|
|
- parts/openwith = "Open with" menu addon
|
|
- (see OpenWithPart)
|
|
.
|
|
- parts/fileselector = A file selection widget
|
|
- (see FileSelectorPart)
|
|
.
|
|
- parts/uimode = Customize the UI mode
|
|
- (see UIChooserPart)
|
|
.
|
|
- parts/texttools = Additional text tools
|
|
- (see TextToolsPart)
|
|
.
|
|
- parts/tipofday = A tip of the day
|
|
- (see TipOfDayPart)
|
|
.
|
|
- parts/grepview = A graphical grep utility
|
|
- (see GrepViewPart)
|
|
.
|
|
- parts/tools = Toolbar management
|
|
- (see ToolsPart)
|
|
.
|
|
- parts/regexptest = A regular expression tester
|
|
- (see RegexpTestPart)
|
|
.
|
|
- parts/abbrev = Abbreviation Expansion
|
|
- (see AbbrevPart)
|
|
.
|
|
- parts/filter = Shell Filtering and Insertion
|
|
- (see FilterPart)
|
|
.
|
|
- parts/valgrind = A graphical valgrind frontend
|
|
- (see ValgrindPart)
|
|
.
|
|
.
|
|
|
|
|
|
\subsubsection project-specific-parts Project Specific Parts
|
|
|
|
These parts implement a KDevPlugin Class interface.
|
|
|
|
- parts/astyle = Source code formatter
|
|
- (see AStylePart)
|
|
.
|
|
- parts/buglist = Bug tracking application
|
|
- (see BugList)
|
|
.
|
|
- parts/classview = Classview Manager
|
|
- (see ClassViewPart)
|
|
.
|
|
- parts/ctags = CTags frontend
|
|
- (see CTagsPart)
|
|
.
|
|
- parts/diff = Difference viewer
|
|
- (see DiffPart)
|
|
.
|
|
- parts/distpart = Aids in building and publishing the final project
|
|
- (see DistpartPart)
|
|
.
|
|
- parts/doxygen = Doxygen integration
|
|
- (see DoxygenPart)
|
|
.
|
|
- parts/filecreate = New file creation
|
|
- see FileCreatePart
|
|
- see \ref howToAddFileTemplates (doc/api/HowToAddFileTemplates.dox file)
|
|
.
|
|
- parts/fileview = File groups
|
|
- (see FileViewPart, FileGroupsPart)
|
|
.
|
|
- parts/manager = Document manager
|
|
- (see DocManager, ViewManager)
|
|
.
|
|
- parts/outputviews = Application output views
|
|
- (see AppOutputViewPart, MakeViewPart)
|
|
.
|
|
- parts/scripting = Python scripting interface
|
|
- (see ScriptingPart)
|
|
.
|
|
- parts/sourcenav = Source code navigation
|
|
- (see SourceNavPart)
|
|
.
|
|
- parts/visualboyadvance = VisualBoy Advance integration
|
|
- (see VisualBoyAdvance::VisualBoyAdvancePart)
|
|
.
|
|
.
|
|
|
|
*/
|
|
|