Roadmap

From Lazarus wiki
Jump to navigationJump to search

English (en) русский (ru)

This document gives an idea of the current status of the various parts of Lazarus and also helps new contributors to find a suitable place where they can help. It also shows the people implementing the various parts and the targets.

Light bulb  Note: This page refers to the LCL Interface portion (that talks to the backend toolkits) of the Lazarus Component Library. It does NOT reflect on the actual features of the individual GUI toolkits (eg: GTK2, GTK3, Qt, Qt5, Qt6, fpGUI etc)

Legend:

Working - Stable, most or all parts implemented.

Partially Implemented - Works, but has some features missing

In progress - Someone is working on this

Not Implemented - Nothing done, needs your help

Deprecated - Outdated, obsolete, usage not recommended for new projects

Unknown - Please review whether this component is working, and set its status here

General status of LCL interfaces

Unit Item State Target Backend Responsible Comments
GTK1 Deprecated interface working 1.0 Gtk - -
GTK2 Main Linux (and similar UNIXes) interface working 1.0 Gtk2 Zeljan -
GTK3 Linux (and similar UNIXes) interface progress 1.4 Gtk3 Zeljan Alpha state
Win32 Desktop Windows for both 32 and 64 bits working 1.0 WinAPI Paul Ishenin and Vincent -
Qt The Qt4 interface working 1.0 Qt and LCL Zeljan Depends on qt4 bindings
Qt5 The Qt5 interface working 1.8 Qt5 and LCL Zeljan Depends on qt5 bindings
Qt6 The Qt6 interface working 2.4 Qt6 and LCL Zeljan Depends on qt6 bindings
WinCE The Windows CE interface working 1.0 Windows API and LCL - Depends on volunteers
fpGUI The fpGUI interface in progress no target fpGUI and LCL - Depends on volunteers
Carbon The Carbon interface stalled (deprecated) 1.0 Carbon and LCL - -
Cocoa The Cocoa interface working 2.6 - 2.8? Cocoa and LCL Dmitry Depends on volunteers
CustomDrawn The CustomDrawn interface in progress no target LCL, X11, Android NDK and SDK - Depends on volunteers

Current status of the various parts of Lazarus

Unit Item State Target Skills Responsible Comments
IDE TCollection Editor working 0.9.x FCL, RTTI, IDE - A generic TCollection editor for the various TCollections in the LCL/FCL.
IDE TActionList working 0.9.x - - -
IDE Doc Editor working - fpdoc - The doc editor will be an integrated fpDoc editor similar to fpde. It will be a process of its own, so that it can show help for dialogs as well. It should also be able to write help for packages.
IDE Export LFM as xml working - - - Load and save LFM files to XML.
IDE Icon Editor Roadmap in progress post 1.0 - - A simple icon editor with the ability to create lrs files. It will be a good example and can help newbies to create icons for their components.
LCL Borderspacing working 0.9.x - - for aligned controls
LCL Drag&Drop working - -
LCL Port to Darwin Power PC, macOS working 0.9.x - - depends on FPC 1.9.5
LCL Port to macOS (x86) working - - - depends on FPC 2.1.1
LCL TSplitter working 0.9.x easy - -
LCL TFindDialog working - - - Implemented in 0.9.16
LCL TReplaceDialog working - - - Implemented in 0.9.16
LCL TControl.Font in progress 0.9.x - - -
LCL TTabControl in progress 0.9.x - - -
LCL Docking (= the combination of forms) partially working, in progress post 1.0 deep LCL and interfaces Mattias -
LCL TFrame (= forms as children) working 0.9.28 deep knowledge of LCL Mattias, Paul -
IDE Visual Form Inheritence working post 1.0 IDE Mattias Properties are not yet propagated to open descendants
LCL MDI - Multiple Documents Interfaces Putting fo ... in progress 1.2 deep LCL and interfaces Zeljan An MDI LCL emulator for widgetsets which does not support MDI, also native implementation of MDI for qt and win32/64. Currently only qt has full MDI support, others are in progress.
LCL Palette support not implemented - - - Required to correctly show colors on a 256 colors display
LCL TCoolBar partially working, in progress post 1.0 LCL and anchoring Juha -
LCL TControlBar skeleton implementation to prevent errors in Delphi conversion, in progress post 1.0 LCL and anchoring Juha -
LCL TMaskEdit working - - Bart -
LCL TDirectoryTreeView not implemented - - - -
LCL Constrain maximization to specific area not implemented - winapi, gtk - When maximizing a window, the left, top, width and height can all be constrained to a specific rectangular area on the screen/desktop. After this is done, constrain the source editor and maybe other windows
Components TIcon working 0.9.26 - Marc -
Components CUPS Package working 0.9.x easy -

Status of features on each LCL Interface

Component win32 gtk gtk2 carbon qt/qt5/qt6 wince fpgui cocoa customdrawn
Accelerator Keys Working Working Partially Implemented Partially Implemented Working Not Applicable Not Implemented Working Not Implemented
Caret Working Working Working Working Working Unknown Not Implemented Working Not Implemented
Clipboard Working Working Working Working Working Working Not Implemented Working Implemented in Android
Cursors Working Working Working Working Working Working Partially Implemented Working Not Implemented
Drag & Drop Working Working Working Partially Implemented Working Not Applicable Not Implemented Working Not Implemented
Drop files event Working Working Working Partially Implemented Working Not Applicable Not Implemented Working Not Implemented
MDI Support Not Implemented Not Implemented Not Implemented Not Implemented Working Not Implemented Not Implemented Not Implemented Not Implemented
Printing Working Working Working Partially Implemented Working Unknown Not Implemented Not Implemented Not Implemented
Regions Working Working Working Working Working Working Partially Implemented Partially Implemented Working
TCustomControl descendents Working Working Working Partially Implemented Working Working Working Working Working
Unicode Support Working Impossible to Implement Working Working Working Working Working Working Working
BidiMode Working Not Implemented Partially Implemented Not Implemented Working Not Implemented Not Implemented Not Implemented Not Implemented
Application Working Working Working Working Working Partially Implemented Partially Implemented Working Working
TTimer Working Working Working Working Working Partially Implemented Working Working Working
TApplication.QueueAsyncCall Working Unknown Working Unknown Working Unknown Working Working Not Implemented
TThread.Synchronize Working Unknown Working Unknown Working Unknown Working Working Not Implemented
PostMessage Working Unknown Working Working Working Unknown Working Working Not Implemented
PostThreadMessage Working Unknown Unknown Unknown Working Unknown Not Implemented Unknown Not Implemented

Status of Graphics on each LCL Interface

Component win32 gtk gtk2 carbon qt/qt5/qt6 wince fpgui cocoa customdrawn
TBitmap/TPixmap/TIcon/etc Working Working Working Working Working Working Partially Implemented Working Working
TBrush Working Working Working Partially Implemented Working Working Partially Implemented Working Working
TFont Working Working Partially Implemented Working Working Working Partially Implemented Working Working
TPen Working Working Working Working Working Working Partially Implemented Working Working
ExtTextOut Working Working Working Working Working Working Working Working Working

Status of native controls on each LCL Interface

Native controls are TWinControl descendants which do not descend from TCustomControl.

Component win32 gtk gtk2 carbon qt/qt5/qt6 wince fpgui cocoa customdrawn
TBitBtn Working Working Working Working Working Working Working Working Partially Implemented
TButton Working Working Working Working Working Working Working Working Working
TCalendar Working Working Working Partially Implemented Working Working Not Implemented Working Not Implemented
TCheckBox Working Working Working Working Working Working Working Working Working
TCheckGroup Working Working Working Working Working Working Working Working Not Implemented
TCheckListBox Working Working Working Working Working Working Working Working Not Implemented
TComboBox Working Working Working Partially Implemented Working Working Partially Implemented Working Implemented in Android
TEdit Working Working Working Working Working Working Working Working Working
TForm Working Working Working Working Working Working Working Working Working
TGroupBox Working Working Working Working Working Working Working Working Working
TIdleTimer Working Working Working Working Working Working Working Working Not Implemented
TImageList Working Working Working Partially Implemented Working Working Not Implemented Working Not Implemented
TListBox Working Working Working Working Working Working Working Working Not Implemented
TListView Working Working Partially Implemented Partially Implemented Working Working Not Implemented Working Not Implemented
TMainMenu Working Working Working Working Working Working Working Working Implemented in Android
TMemo Working Working Working Working Working Working Working Working Working
TMenuItem Working Working Working Working Working Working Working Working Implemented in Android
TPageControl and TTabSheet Working Working Working Working Working Working Not Implemented Working Not Implemented
TPairSplitter Working Working Working Working Working Not Implemented Working Working Not Implemented
TPanel Working Working Working Working Working Working Working Working Working
TPopupMenu Working Working Working Working Working Working Working Working Not Implemented
TProgressBar Working Working Working Working Working Working Working Working Working
TRadioButton Working Working Working Working Working Working Working Working Partially Implemented
TRadioGroup Working Working Working Working Working Working Working Working Not Implemented
TScrollBar Working Working Working Working Working Working Partially Implemented Working Partially Implemented
TScrollBox Working Working Working Partially Implemented Working Unknown Partially Implemented Working Not Implemented
TSpinEdit Working Working Working Working Working Unknown Not Implemented Working Partially Implemented
TSplitter Working Working Working Working Working Unknown Partially Implemented Working Not Implemented
TStaticText Working Working Working Working Working Working Working Working Working
TStatusBar Working Working Working Working Working Working Not Implemented Working Not Implemented
TToggleBox Working Working Working Working Working Partially Implemented Not Implemented Working Not Implemented
TTrackBar Working Working Working Working Working Working Not Implemented Working Working
TTrayIcon Working Working Working Partially Implemented Working Not Implemented Not Implemented Working Not Implemented

Status of dialogs on each LCL Interface

Component win32 gtk gtk2 carbon qt/qt5 wince fpgui cocoa customdrawn
LCLIntf.MessageBox Working Working Working Not Implemented Working Working Working Working Implemented for Android
Application.MessageBox, MessageDlg, LCLIntf.PromptUser Working Working Working Working Working Working Working Working Implemented for Android
LCLIntf.AskUser Working Working Working Working Working Working Not Implemented Working Not Implemented
TColorDialog Working Working Working Working Working Not Implemented Working Working Not Implemented
TFontDialog Working Working Working Working Working Not Implemented Working Working Not Implemented
TOpenDialog Working Working Working Working Working Working Working Working Not Implemented
TPrinterSetupDialog Working Working Working Not Implemented Working Not Implemented Not Implemented Not Implemented Not Implemented
TSaveDialog Working Working Working Working Working Working Working Working Not Implemented
TTaskDialog Working Unknown Working Working Working Unknown Working Working Not Implemented

Status of TCustomControl based controls on each LCL Interface

Note that being a TCustomControl descendant does not guarantee that a control has no widgetset implementation. TArrow has it, although it has a good default implementation. TNotebook is fully implemented in the LCL.

Component win32 gtk gtk2 carbon qt/qt5/qt6 wince fpgui cocoa customdrawn
TArrow Working Working Working Working Working Working Working Working Working
TNotebook Working Working Working Working Working Working Not Implemented Working Working
TUpDown Working Working Working Working Working Partially Implemented Working Working Partially Implemented
TStringGrid Working Working Working Partially Implemented Working Partially Implemented Partially Implemented Working Partially Implemented
TDrawGrid Working Working Working Partially Implemented Working Unknown Partially Implemented Working Partially Implemented
TToolBar Working Working Working Working Working Working Not Implemented Working Not Implemented
TTreeView Working Working Working Partially Implemented Working Working Not Implemented Working Not Implemented
TValueListEditor Working Working Working Partially Implemented Working Working Partially Implemented Working Not Implemented

Status of TGraphicControl based controls on each LCL Interface

Note: These are for LCL wrapped components only, not for the specific GUI toolkit features itself.

Component win32 gtk gtk2 carbon qt/qt5/qt6 wince fpgui cocoa customdrawn
TBevel Working Working Working Working Working Partially Implemented Working Working Not Implemented
TLabel Working Working Working Working Working Working Working Working Implemented for Android
TShape Working Working Working Partially Implemented Working Partially Implemented Working Working Working
TSpeedButton Working Working Working Working Working Unknown Working Working Working
TPaintBox Working Working Working Working Working Unknown Working Working Working
TImage Working Working Working Working Working Partially Implemented Working Working Working

Status of LazDeviceAPIs on each widgetset

Component customdrawn-android
Accelerometer Working
Messaging (SMS, MMS and E-Mail) SMS Implemented
PositionInfo Working


See Also