summaryrefslogtreecommitdiffstats
path: root/doc/api/Architecture.dox
diff options
context:
space:
mode:
Diffstat (limited to 'doc/api/Architecture.dox')
-rw-r--r--doc/api/Architecture.dox315
1 files changed, 315 insertions, 0 deletions
diff --git a/doc/api/Architecture.dox b/doc/api/Architecture.dox
new file mode 100644
index 00000000..ae4ef73d
--- /dev/null
+++ b/doc/api/Architecture.dox
@@ -0,0 +1,315 @@
+/** \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)
+ .
+ .
+
+*/
+