Kexi/Plugins: Difference between revisions

From KDE Community Wiki
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
*[[Calligra/Kexi/Plugins/Reports|Reports]] (working implementation by Adam Pigg)
KEXI is not only heavily reliant on libraries but is also highly modular, utilizing a robust '''plugin system'''.
 
=== Advantages of the Plugin-Based Approach ===
Making KEXI highly modular and plugin-based provides several advantages:
 
* The application is less monolithic, allowing multiple developers to work concurrently on different aspects without conflicts.
* It is no longer necessary to update the entire application to modify specific functionality, such as adding support for a new database type.
 
=== Plugin System Implementation ===
KEXI utilizes Qt's dynamic modules API such as <code>QPluginLoader</code> to query and load the required code dynamically. Each plugin type is defined as a service.
 
=== Plugin Types ===
Plugin Type is a group of plugins that share the same API and are designed for similar tasks. For example, database drivers share a common API and purpose—handling database connections and managing database content.
 
A number of plugin types are provided internally within KEXI; others are provided by external frameworks.
 
====KEXI Parts====
'''KEXI Parts''' implement the <code>KexiPart</code> interface and one or more views via the <code>KexiViewBase</code> interface. Parts are used for displaying specialized editors, such as the Query Designer, Form Designer or Table Designer. KEXI provides to Parts common behaviors such as view mode switching, renaming, and removing objects.
 
Maintained:
*[[/Tables/]]
*[[/Queries/]]
*[[/Forms/]]
*[[/Reports/]]
 
Experimental:
*[[/Scripts/]] (released, to be reimplemented)
*[[/Quickforms/]] (unreleased, experiment)
 
TODO:
*[[/Macros/]]
*[[/Relationships/]]
*[[/AutoForms/]]
*[[/AutoReports/]]
*[[/Web Forms/]]
 
====KEXI Table View Cell Editors====
'''KEXI Table View Cell Editors''' allow non-standard content to be displayed in table cells, such as graphics.
TODO: document
 
====KEXI Form Widgets====
'''KEXI Form Widgets''': Widgets in the form editor are all implemented by plugin-based factories. This technique, similar to that used in Qt Designer, offers better integration with the KDE framework and is more user-friendly (e.g., class names are translatable and less developer-oriented).
 
TODO: document
 
====KEXI Import/Export Plugins====
'''KEXI Import/Export Plugins''' plugins handle data and/or schema import and sometimes export to various formats, such as text, CSV or .mdb.
 
TODO: document
 
====KDb Plugins====
'''KDb Plugins''' (also called drivers), provide lower and higher-level database handlers, typically for reading and writing data through a well-defined SQL database interface. Implementation is delivered by a general purpose KDb framework, and contains interfaces such as <code>KDbDriver</code>, <code>KDbConnection</code>, and <code>KDbCursor</code>.
 
See [[KDb/Drivers]].
 
====Property Editor Items====
'''Property Editor Items''' are used to display non-standard items within the property editor. Implemented by a general purpose KProperty framework.
 
TODO: document

Latest revision as of 21:59, 11 October 2024

KEXI is not only heavily reliant on libraries but is also highly modular, utilizing a robust plugin system.

Advantages of the Plugin-Based Approach

Making KEXI highly modular and plugin-based provides several advantages:

  • The application is less monolithic, allowing multiple developers to work concurrently on different aspects without conflicts.
  • It is no longer necessary to update the entire application to modify specific functionality, such as adding support for a new database type.

Plugin System Implementation

KEXI utilizes Qt's dynamic modules API such as QPluginLoader to query and load the required code dynamically. Each plugin type is defined as a service.

Plugin Types

Plugin Type is a group of plugins that share the same API and are designed for similar tasks. For example, database drivers share a common API and purpose—handling database connections and managing database content.

A number of plugin types are provided internally within KEXI; others are provided by external frameworks.

KEXI Parts

KEXI Parts implement the KexiPart interface and one or more views via the KexiViewBase interface. Parts are used for displaying specialized editors, such as the Query Designer, Form Designer or Table Designer. KEXI provides to Parts common behaviors such as view mode switching, renaming, and removing objects.

Maintained:

Experimental:

TODO:

KEXI Table View Cell Editors

KEXI Table View Cell Editors allow non-standard content to be displayed in table cells, such as graphics. TODO: document

KEXI Form Widgets

KEXI Form Widgets: Widgets in the form editor are all implemented by plugin-based factories. This technique, similar to that used in Qt Designer, offers better integration with the KDE framework and is more user-friendly (e.g., class names are translatable and less developer-oriented).

TODO: document

KEXI Import/Export Plugins

KEXI Import/Export Plugins plugins handle data and/or schema import and sometimes export to various formats, such as text, CSV or .mdb.

TODO: document

KDb Plugins

KDb Plugins (also called drivers), provide lower and higher-level database handlers, typically for reading and writing data through a well-defined SQL database interface. Implementation is delivered by a general purpose KDb framework, and contains interfaces such as KDbDriver, KDbConnection, and KDbCursor.

See KDb/Drivers.

Property Editor Items

Property Editor Items are used to display non-standard items within the property editor. Implemented by a general purpose KProperty framework.

TODO: document