Feature Ideas
This Page is intended to collect ideas for features that could be included in Lazarus. Putting an idea here does not mean it WILL be put into Lazarus. It's just a place to gather ideas. Think of this as more of a wishlist.
Also another place to log feature requests is here: Lazarus Bugtracker
IDE
Features that could be included in the IDE
Refactoring
Global Variable/Method renaming
Proper renaming (as in if I rename a field in an object it can change everything that uses it but NOT other stuff that happens to have the same name) -Plugwash
- What is wrong with the current implementation? Vincent 23:07, 13 Feb 2006 (CET)
Parameter Renaming in Methods
adding a parameter to a method (and updating everything that uses it) -Plugwash
Encapsulating Fields
though thats not really needed in object pascal because object pascal has properties but its vital in cleaning up thrown together java. -Plugwash
Create/Free objects
Declare an object myObj:TMyClass into a TForm class an type some Ctrl-Shift-Key, then the IDE adds a line myObj:=TMyClass.Create in FormCreate and myObj.Free in FormDestroy. -Rednaxel
LCL
Components
Components that are possible to make that will work across all platforms supported by Lazarus
Visual
- Help system for apps created by Laz! Either a cross-platform help system or some way of using the OS's native help system.
- The current LCL TStringGrid is a nice improvement over Delphi's feeble control with the same name. Would be great if it could be improved even more!
- Support for data validation event handler, similar to Orpheus grid's OnUserValidation event.
- Support for retrieving, displaying, editing and storing data that are stored in an existing memory structure or in a file rather than in grid itself, similar to the Orpheus grid's OnGetCellData and OnGetCellAttributes events.
- Support for Delphi. For those of us who develop with Delphi on Windows and use Lazarus for Linux/OS X, the LCL TStringGrid control can't be used since it can't be compiled for Delphi and has several (useful) extensions that aren't available with Delphi's TStringGrid.
NonVisual
PDA Support
Something that currently does not exist is a complete multiplatform solution for PDAs. If we can implement this, Lazarus will become the first multiplatform RAD for PDAs ever created. Some devices work with Java, some work with c++ and Qtopia, some work with their particular APIs, there is no single solution currently that can embrace a large portion of PDAs. Application have to be redone for every PDA or simply just run on one of them (what most people do).
The LCL implements many things. It is not necessary to implement them all to have a reasonably working Lazarus PDA widgetset. The most important things to be implementeded for PDAs are:
- TApplication
- TForm
- TScreen
- TCanvas and painting
- Most Events (onClick and OnPaint at least)
- Basic widgets like: TButton, TLabel, TEdit, TMemo.
- Only minimum nessary LCLIntf functions to make TCanvas work. (GetDC, ReleaseDC, BeginPaint, EndPaint and some painting functions)
Others can be easely implemented by people who need them after those are ready.
Here is a list of some PDAs and the status of their support on Free Pascal / Lazarus:
- Palm OS - Hard because Free Pascal 1.0 supports 68k, this wasn't updated and the new compiler 2.0 doesn't support it yet (work in progress by fpc:User:Chain-Q). This is required as Palm devices are compiled for 68k and latter run on ARM processors using a kind of emulation.
- Symbian OS - Possible for their ARM devices. Requires first adding a new Runtime Library for this OS to the Compiler. This OS has it's own API.
- Qtopia - For Zaurus. This is much easier now that basic Qt4 widgetset has being implemented, because Qtopia is very similar to Qt4 (not equal, however).
- Java - Some handheld devices, specially phones, only support java bytecode. May seam a little odd, but there is a Pascal Compiler capable of compiling the source into a jar and then into bytecode. I think this is the one: http://www.ppcompiler.org Pascal & Palm Compiler. It is possible to integrate their technology into a new supported target for Free Pascal.
- Windows CE - The compiler already works really well cross compiling for Windows CE. The Windows CE Interface is under implementation.
More Interfaces
- Cocoa - Requires that first OpenSTEP bindings are created for Free Pascal.
- BeAPI - interface for Haiku, ZetaOS and BeOS. There is no powerful RAD on this OS.
- SDL - something what have Pixel Image Editor.