Kexi/Plugins: Difference between revisions
Created page with '*Reports (working implementation by Adam Pigg)' |
No edit summary |
||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
*[[ | 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:
- Scripts (released, to be reimplemented)
- Quickforms (unreleased, experiment)
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