# Roadmap

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.

## Contents

- 1 General status of widgetsets
- 2 Current status of the various parts of Lazarus
- 3 Status of features on each widgetset
- 4 Status of Graphics on each widgetset
- 5 Status of native controls on each widgetset
- 6 Status of dialogs on each widgetset
- 7 Status of TCustomControl based controls on each widgetset
- 8 Status of TGraphicControl based controls on each widgetset
- 9 Status of LazDeviceAPIs on each widgetset
- 10 See Also

**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

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

## General status of widgetsets

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 QT interface | working | 1.0 | Qt and LCL | Zeljan | Depends on qt bindings |

WinCE | The Windows CE interface | working | 1.0 | Windows API and LCL | Felipe | |

fpGUI | The fpGUI interface | in progress | no target | fpGUI and LCL | - | Depends on volunteers |

Carbon | The Carbon interface | working | 1.0 | Carbon and LCL | - | - |

Cocoa | The Cocoa interface | in progress | 1.2 | Cocoa and LCL | Paul Ishenin | |

CustomDrawn | The CustomDrawn interface | in progress | 1.2 | LCL, X11, Android NDK and SDK | Felipe |

## 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, Mac OS X | working | 0.9.x | - | - | depends on FPC 1.9.5 |

LCL | Port to Mac OS X 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 | Frames (= 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.0 | 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 | - | See sourceforge project cups for lazarus. |

GTK | Focus | working | 0.9.x | Gtk, X | - | switching focus between windows. Might be impossible due to windowmanagers and limitations of gtk1 |

GTK | Special Keys | working | 0.9.x | Gtk, X | - | for example Ctrl-Shift-1 |

GTK | BringToFront, SendToBack | in progress | - | Gtk, X | - | - |

GTK | Doublebuffering | in progress | - | Gtk, X | - | - |

GTK | Minimizing windows | Working | - | Gtk, X | - | - |

## Status of features on each widgetset

Component | win32 | gtk | gtk2 | carbon | qt | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|

Accelerator Keys | Working | Working | Partially Implemented | Partially Implemented | Working | Not Applicable | Not Implemented | Not Implemented | Not Implemented |

Caret | Working | Working | Working | Working | Working | Unknown | Not Implemented | Not Implemented | Not Implemented |

Clipboard | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Implemented in Android |

Cursors | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

Drag & Drop | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Not Implemented | Not Implemented |

Drop files event | Working | Working | Working | Partially Implemented | Working | Not Applicable | Not Implemented | Not Implemented | 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 | Not Implemented | Not Implemented | Working |

TCustomControl descendents | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Not Implemented | 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 | Partially Implemented | Working |

TTimer | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Not Implemented | Working |

TApplication.QueueAsyncCall | Working | Unknown | Working | Unknown | Working | Unknown | Not Working | Unknown | Not Implemented |

TThread.Synchronize | Working | Unknown | Working | Unknown | Working | Unknown | Working | Unknown | Not Implemented |

PostMessage | Working | Unknown | Working | Unknown | Working | Unknown | Not Working | Unknown | Not Implemented |

PostThreadMessage | Working | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Not Implemented |

## Status of Graphics on each widgetset

Component | win32 | gtk | gtk2 | carbon | qt | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|

TBitmap/TPixmap/TIcon/etc | Working | Working | Working | Working | Partially Implemented | Working | Not Implemented | Not Implemented | Working |

TBrush | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Not Implemented | Working |

TFont | Working | Working | Partially Implemented | Working | Working | Working | Not Implemented | Not Implemented | Working |

TPen | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Working |

ExtTextOut | Working | Working | Working | Working | Working | Working | Not Implemented | Unknown | Working |

## Status of native controls on each widgetset

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

Component | win32 | gtk | gtk2 | carbon | qt | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|

TBitBtn | Working | Working | Working | Working | Working | Working | Not Implemented | Partially Implemented | Partially Implemented |

TButton | Working | Working | Working | Working | Working | Working | Working | Working | Working |

TCalendar | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TCheckBox | Working | Working | Working | Working | Working | Working | Working | Working | Working |

TCheckGroup | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TCheckListBox | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TComboBox | Working | Working | Working | Partially Implemented | Working | Working | Working | Working | Implemented in Android |

TEdit | Working | Working | Working | Working | Working | Working | Working | Working | Working |

TForm | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Working |

TGroupBox | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working |

TIdleTimer | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TImageList | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TListBox | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented |

TListView | Working | Working | Partially Implemented | Partially Implemented | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TMainMenu | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Implemented in Android |

TMemo | Working | Working | Working | Working | Working | Working | Working | Working | Working |

TMenuItem | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Implemented in Android |

TPageControl and TTabSheet | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TPairSplitter | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |

TPanel | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working |

TPopupMenu | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TProgressBar | Working | Working | Working | Working | Working | Working | Working | Not Implemented | Working |

TRadioButton | Working | Working | Working | Working | Working | Working | Working | Partially Implemented | Partially Implemented |

TRadioGroup | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TScrollBar | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Partially Implemented |

TScrollBox | Working | Working | Working | Partially Implemented | Working | Unknown | Not Implemented | Not Implemented | Not Implemented |

TSpinEdit | Working | Working | Working | Working | Working | Unknown | Not Implemented | Not Implemented | Partially Implemented |

TSplitter | Working | Working | Working | Working | Working | Unknown | Not Implemented | Not Implemented | Not Implemented |

TStaticText | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Working |

TStatusBar | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TToggleBox | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Not Implemented | Not Implemented |

TTrackbar | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Working |

TTrayIcon | Working | Working | Working | Partially Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |

## Status of dialogs on each widgetset

Component | win32 | gtk | gtk2 | carbon | qt | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|

LCLIntf.MessageBox | Working | Working | Working | Working | Partially Implemented | Working | Working | Unknown | Implemented for Android |

Application.MessageBox, MessageDlg, LCLIntf.PromptUser | Working | Working | Working | Working | Working | Working | Working | Unknown | Implemented for Android |

LCLIntf.AskUser | Working | Working | Working | Working | Working | Working | Not Implemented | Unknown | Not Implemented |

TColorDialog | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |

TFontDialog | Working | Working | Working | Partially Implemented | Working | Not Implemented | Not Implemented | Not Implemented | Not Implemented |

TOpenDialog | Working | Working | Working | Working | Working | Working | Working | Not Implemented | 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 | Not Implemented | Not Implemented |

## Status of TCustomControl based controls on each widgetset

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 | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|

TArrow | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Working |

TNoteBook | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Working |

TUpDown | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Not Implemented | Partially Implemented |

TStringGrid | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Not Implemented | Not Implemented | Partially Implemented |

TDrawGrid | Working | Working | Working | Partially Implemented | Working | Unknown | Not Implemented | Not Implemented | Partially Implemented |

TToolBar | Working | Working | Working | Working | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TTreeView | Working | Working | Working | Partially Implemented | Working | Working | Not Implemented | Not Implemented | Not Implemented |

TValueListEditor | Partially Implemented | Partially Implemented | Partially Implemented | Partially Implemented | Partially Implemented | Partially Implemented | Not Implemented | Not Implemented | Not Implemented |

## Status of TGraphicControl based controls on each widgetset

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

Component | win32 | gtk | gtk2 | carbon | qt | wince | fpgui | cocoa | customdrawn |
---|---|---|---|---|---|---|---|---|---|

TBevel | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Not Implemented | Not Implemented |

TLabel | Working | Working | Working | Working | Working | Working | Not Implemented | Working | Implemented for Android |

TShape | Working | Working | Working | Partially Implemented | Working | Partially Implemented | Not Implemented | Not Implemented | Working |

TSpeedButton | Working | Working | Working | Working | Working | Unknown | Not Implemented | Not Implemented | Working |

TPaintBox | Working | Working | Working | Working | Working | Unknown | Not Implemented | Not Implemented | Working |

TImage | Working | Working | Working | Working | Working | Partially Implemented | Not Implemented | Not Implemented | Working |

## Status of LazDeviceAPIs on each widgetset

Component | customdrawn-android |
---|---|

Accelerometer | Working |

Messaging (SMS, MMS and E-Mail) | SMS Implemented |

PositionInfo | Working |