I'm just learning Pascal lately, I haven't made a complete app or project
with Pascal yet, but making an app with a GUI is a bit more exciting than
my command line attempts.

I'm wondering if the community has any project ideas or basic fpGUI project
tutorials to give me a bit of a kickstart. I have a hard time getting
started with projects.

Thank you for any direction you can give!

On Tue, Feb 10, 2026 at 3:15 AM mailinglists--- via fpc-pascal <
[email protected]> wrote:

> Hi everyone,
>
> I'm super happy to announce the v2.0.0 release of fpGUI Toolkit.
>
>    https://github.com/graemeg/fpGUI
>
> It only took 10 years since the last "official release". Oops. :-D
>
> As you can imagine, a full changelog would be massive, so here
> are some highlights of the larger work.
>
> == AggPas (Anty-Grain Geomery) canvas ==
>
> A 100% implemented in Object Pascal, 2D graphics canvas with
> advanced anti-aliasing and transparency now included. You can
> use the native platform graphic rendering, or opt for AggCanvas,
> which gives consistent and high quality rendering on all platforms
>
>
> == Alien Windows branch was merged in ==
>
> Before, every widget had it's own platform window handle. Now, the
>   top-level window is the only window that has a native OS window
> handle, and all widgets on that form has "virtual handles". This
> means much less resources needed by the OS, more consistent
> drawing, clipping and event handling. It also allows all widgets to
> fully
> support transparency.
>
>
> == Layout Manager System ==
>
> fpGUI now has a pluggable layout manager architecture inspired by
> Java Swing's LayoutManager interface. Instead of manually
> calculating widget positions, you can assign a layout manager to
> any container and let it handle positioning, sizing, and resize
> behaviour automatically.
>
> The layout manager system coexists with the existing
> Align/Anchors mechanism. It is entirely optional -- existing code
> continues to work without changes.
>
> Three layout managers are included:
>
>    * FlowLayout - arranges widgets in a horizontal row with
>                   automatic wrapping
>    * BorderLayout - five-region docking (North/South/East/West
>                     and Center)
>    * MigLayout - a full port of Java's MigLayout v11.4.2 (see
>                  below)
>
> A quick start guide is available at:
>    docs/layout_managers_quick_start.adoc
>
>
> == MigLayout v11.4.2 Port ==
>
> The headline feature is a comprehensive port of MigLayout v11.4.2
> from Java to Object Pascal. MigLayout is one of the most powerful
> and flexible layout managers available in the Java ecosystem, and
> fpGUI now has a native implementation.
>
> Supported features:
>
>    * Grid-based layout with automatic wrapping
>    * Column and row spanning (SpanX/SpanY)
>    * Growth priorities (GrowX/GrowY) for distributing extra space
>    * Cell alignment (left/center/right/top/bottom/fill)
>    * Docking (North/South/East/West) outside the normal grid
>    * Component gaps with physical unit support (px, mm, cm, inch,
>      pt)
>    * Platform-aware default gaps and sizing
>    * Fluent constraint API with automatic reference counting
>    * Constraint string parser for concise constraint definitions
>    * Debug visualisation overlay for layout inspection
>    * Multi-DPI / HiDPI support via logic units
>    * Platform-specific button ordering (OK/Cancel vs Cancel/OK)
>
> The port includes 396 unit tests, all passing cleanly.
>
> A comprehensive demo application is available at
> examples/gui/lm-mig/ with eight feature panels demonstrating
> basic grids, alignment, spanning, growth, complex layouts,
> constraint parsing, button ordering, and docking.
>
>
> == FPReport (FPC's reporting system) integrated into fpGUI ==
>
> What to generate reports, display them in your application, export
> them to PDF of PNG. Now it's possible.
>
>
> == Widget Sizing API ==
>
> A new sizing model separates a widget's intended size from its
> actual rendered size.
>
> Widgets now have:
>
>    * Width/Height - the developer's preferred (intended) size
>    * ActualWidth/ActualHeight - the actual rendered size after
>      layout
>    * PreferredSize - explicit preferred size that layout managers
>      read
>    * MinWidth/MinHeight - minimum size constraints
>
> Some widgets (TfpgLabel, TfpgButton) now calculate their
> preferred size automatically based on content and font, so
> explicit sizing is often unnecessary.
>
> SetPosition() has been deprecated in favour of setting individual
> properties (Left, Top, Width, Height). The uidesigner has been
> updated to generate the new property-based code.
>
>
> == PasBuild Build System ==
>
> The project has adopted PasBuild as its build tool. The
> repository structure has been reorganised:
>
>    * Framework source: framework/src/main/pascal/corelib/
>    * Test source: framework/src/test/pascal/
>    * Build output: framework/target/
>
> UIDesigner is now managed by the new build tool as well, and will
> by default compile after the framework is compiled. You can
> compile them independently if you want.
>
> See PasBuild documentation for more details:
>    https://github.com/graemeg/PasBuild
>
> Build commands:
>
>    pasbuild compile -p unix,agg    (build framework)
>    pasbuild test -p unix,agg       (run unit tests)
>
> All example extrafpc.cfg files have been updated for the new
> directory structure.
>
>
> == macOS Cocoa Backend ==
>
> An initial macOS Cocoa backend has been implemented
> (experimental). This adds native macOS support alongside the
> existing X11 and GDI backends.
>
>
> == HiDPI and Rendering Improvements ==
>
>    * Fixed DPI scaling for widgets designed at 96dpi but displayed
>      at higher densities
>    * Focus rectangle line width now scales for HiDPI displays
>    * Font height calculation improved (ascent + descent) to
>      prevent text clipping
>    * AggCanvas text baseline positioning fixed for descender
>      characters
>    * Canvas dimension guards added across X11/GDI/Cocoa backends
>      to prevent range errors during extreme resize operations
>    * AggPas 32-bit and 64-bit compatibility fixes
>
>
> == DocView Application ==
>
> Lots of DocView (help viewer) improvements, and several UI
> windows/dialogs have been migrated to MigLayout:
>
>    * Contents tab
>    * Index tab
>    * Search tab
>    * Notes & History tabs
>
> The File Open/Save and Directory Select dialogs have also been
> converted to use MigLayout management.
>
> I'll be migrating more applications, tools and example to MigLayout
> for better HiDPI support.
>
>
> == Other Notable Changes ==
>
>    * Deprecated function calls replaced with method equivalents
>      across the codebase
>    * Command line parameter handling migrated to ICmdLineParams
>      interface
>    * TStringHashList replaced with FPC's TFPDataHashTable for PO
>      file handling
>    * TagPointer deprecated (FPC's TComponent.Tag now supports
>      64-bit)
>    * Font property moved to base widget class
>    * Visible property moved to WidgetBase class
>    * StyleManager assert logic fixes
>    * Bug #83 (broken localise) fixed
>    * Tab sheet resize flicker eliminated
>    * TreeView scrollbar flicker fixed
>    * Multiple memory leak fixes in MigLayout constraint handling
>    * All compiler warnings from fpGUI code has been resolved
>    * All range-check errors have been fixed
>
>
> == Breaking Changes ==
>
>    * SetPosition() is deprecated - use Left/Top/Width/Height
>      properties instead
>    * Directory structure changed - extrafpc.cfg paths updated
>    * TagPointer is deprecated - use Tag (now 64-bit capable)
>      instead
>    * Deprecated function calls removed (use method equivalents)
>
>
> == Documentation ==
>
>    * docs/layout_managers_quick_start.adoc
>       - 10-minute introduction to layout managers
>    * docs/miglayout_v11_port_plan.adoc
>       - detailed MigLayout port plan
>    * docs/layout_manager_implementation_plan.adoc
>       - architecture design document
>    * docs/toolkit_sizing_comparison.adoc
>       - widget sizing API design guide
>    * docs/api_design_intent_pathway.adoc
>       - API design intent documentation
>
> Example demos for all three layout managers are in:
>    * examples/gui/lm-flow/
>    * examples/gui/lm-border/
>    * examples/gui/lm-mig/
>
>
> And there are lots more, but too much to mention here. :)
>
> Feedback, bug reports, and questions are welcome as always.
> I mostly monitor the GitHub bugtracker and the fpGUI support
> newsgroup - see website for details.
>
>
> Lastly, thank you to the Free Pascal Compiler developers for making
> such an awesome compiler. Without that, fpGUI Toolkit would not have
> been possible. 🫶
>
>
> Regards,
>    - Graeme -
>
> --
> fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
> http://fpgui.sourceforge.net/
>
> _______________________________________________
> fpc-pascal maillist  -  [email protected]
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
_______________________________________________
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to