[Lazarus] Special Request: Theme entire IDE support

Michael Van Canneyt michael at freepascal.org
Tue Mar 13 13:42:13 CET 2018

On Tue, 13 Mar 2018, Anthony Walter wrote:

> Michael,
> I agree with you somewhat that my proposal isn't a total solution, but
> perhaps there is another point of view to consider that has been
> overlooked.
> And that is this:
> There ought to be a way to edit component properties sweepingly either in
> an application or in the IDE.

Sounds rather hackish to me :)

> I say this because I have often edited the Lazarus source to make remove
> toolbar button captions, change edge borders, fix the position of edit
> boxes, increase the height of a panel, turn on tool tips. or remove an
> unneeded panel. All for the effort of adjusting layouts to make the IDE
> space more efficient, fix what I see as a design problem, or create a
> layout better suited to a personal taste.
> Allowing anyone to easily make sweeping changes like these to the IDE, and
> making those changes easily shareable and modifiable without the need to
> search for the correct lfm, or pas file to edit and recompile the IDE would
> be a good thing. That is, imagine being able to group alter properties of
> controls/components within the IDE (or any application written with
> fpc/laszarus), and see those changes instantly, and easily reverted,
> without the need to search for files and rebuild.
> As such I think that there is merit to such a tool. It might not need to be
> branded as a "themer" or "skinner". Perhaps as a "property pattern editor"
> or something thereof.

That would indeed be more aptly named :)

> Regarding a long term solution, I agree that would be best. What I would
> see as the optimal way to handle this would be to use entirely owner drawn
> controls based which depend on external resource files, to determine styles
> such as color, sizes, padding, font, alignment, glyphs, and visibility
> among a few potential possibilities. Actual control drawing would be
> handled through an abstraction layer to a platforms best possible graphics
> API to efficiently handle antialiasing, smoothing, subpixel, and hdpi
> rendering in a manner that makes it complete transparent to controls. This
> would allow one code base for all controls for all platforms, solving not
> only layout problems among different widget sets, but also behavioral
> problems that creep into usage due to difference or restrictions of the
> underlying native widgets.

I believe this is the aim of fpGUI and the customdrawn widgetset.
That is why I proposed extending them to the point of usability needed for
the IDE.

> Of course, such a design should be completely optional to allow people to
> continue using native controls whenever they want, but if they're
> interested in a totally themeable and consistent usage applications across
> all platforms, then using this alternate widget set would be a pleasant
> second option.


My main concern is more "strategical":

Our time is limited (and by "our" I mean you too).

This "property pattern editor" - while it definitely has reasons for existing - 
will provide something halfway decent (because it can never do everything
required for proper theming), and will most likely divert attention/time 
from the root problem...

But it is obviously a free world, I can only point out a concern I see...


More information about the Lazarus mailing list