|
|
@@ -14,15 +14,15 @@ Verified with `gm2` 16.0.1 (experimental), GTK 4.18.6 and libadwaita 1.7.6.
|
|
|
|
|
|
## Features
|
|
|
|
|
|
-- **144 hand-written binding modules** across GLib, GObject, Gio, GTK4
|
|
|
+- **156 hand-written binding modules** across GLib, GObject, Gio, GTK4
|
|
|
and libadwaita — windows, widgets, inputs, containers, model-backed
|
|
|
views, actions/menus/accelerators, dialogs, CSS, drawing (Cairo/Pango),
|
|
|
- rich text, gestures, drag-and-drop, media, OpenGL, printing, settings,
|
|
|
- and more.
|
|
|
+ rich text, gestures, drag-and-drop, media, OpenGL, printing,
|
|
|
+ expressions/constraints/shortcuts, settings, and more.
|
|
|
- **Pure-Modula-2 helpers**: `GtkUtils` (string/number conversion,
|
|
|
`Connect`, `SetAccel`, ownership and `GError` helpers) and
|
|
|
`GtkClosures` (per-connection signal contexts with cleanup).
|
|
|
-- **34 tests** and **24 runnable examples**.
|
|
|
+- **39 tests** and **26 runnable examples**.
|
|
|
- **Generator + verifier**: `tools/gir2def.py` turns a `.gir` file into
|
|
|
`.def` files; `tools/gir_verify.py` checks every generated identifier
|
|
|
against the installed library. Verified clean across 8602 identifiers.
|
|
|
@@ -125,6 +125,8 @@ gm2 -fiso -Isrc -Ilib myprog.mod \
|
|
|
| `customwidget` | custom `GtkWidget` and `GdkPaintable` via the C shim |
|
|
|
| `customlayout` | custom `GtkLayoutManager` via the C shim |
|
|
|
| `gl` | OpenGL clearing inside a `GtkGLArea` |
|
|
|
+| `richtext` | Pango markup, marks and entry completion in a text view |
|
|
|
+| `snapshot` | custom `GdkPaintable` drawn with `GtkSnapshot` + Graphene |
|
|
|
| `media` | `GdkTexture` in a `GtkPicture`, plus `GtkVideo` |
|
|
|
| `clipboard` | copy/paste text through `GdkClipboard` |
|
|
|
| `adw` | libadwaita preferences app (toolbar view, rows, toast, about) |
|
|
|
@@ -153,6 +155,10 @@ gm2 -fiso -Isrc -Ilib myprog.mod \
|
|
|
| `GtkStringList`, `GtkStringObject` | string model / item |
|
|
|
| `GMenu`, `GMenuModel`, `GSimpleAction`, `GAction`, `GActionMap` | menus and actions |
|
|
|
| `GtkFilterListModel`, `GtkCustomFilter`, `GtkSortListModel`, `GtkCustomSorter` | M2-callback filter/sort models |
|
|
|
+| `GtkExpression`, `GtkStringSorter`, `GtkNumericSorter`, `GtkStringFilter`, `GtkBoolFilter` | expression-based sorters/filters |
|
|
|
+| `GtkConstraintLayout`, `GtkConstraint`, `GtkConstraintGuide` | constraint layout |
|
|
|
+| `GtkShortcut`, `GtkShortcutController` | keyboard shortcuts |
|
|
|
+| `Graphene`, `GtkSnapshot` | geometry records and snapshot rendering |
|
|
|
| `GtkMultiSelection`, `GtkBitset` | multiple selection and bitsets |
|
|
|
| `GtkTreeListModel`, `GtkTreeListRow`, `GtkTreeExpander` | tree models and expanders |
|
|
|
| `GtkDirectoryList`, `GtkBookmarkList` | directory / bookmark models |
|
|
|
@@ -171,6 +177,8 @@ gm2 -fiso -Isrc -Ilib myprog.mod \
|
|
|
| `GtkBox`, `GtkGrid`, `GtkFrame`, `GtkExpander`, `GtkPaned`, `GtkOverlay`, `GtkNotebook`, `GtkStack`, `GtkStackSwitcher`, `GtkScrolledWindow` | layout containers |
|
|
|
| `GtkLabel`, `GtkButton`, `GtkCheckButton`, `GtkSwitch`, `GtkScale`, `GtkRange`, `GtkSpinButton`, `GtkEntry`, `GtkEditable`, `GtkSearchEntry`, `GtkDropDown` | controls |
|
|
|
| `GtkTextView`, `GtkTextBuffer`, `GtkTextIter` | multi-line text |
|
|
|
+| `GtkTextTag`, `GtkTextTagTable`, `GtkTextMark`, `GtkEntryBuffer` | rich-text tags, marks and entry buffer |
|
|
|
+| `GtkEntryCompletion` | entry completion (deprecated; GtkTreeModel-based) |
|
|
|
| `GtkAdjustment`, `GtkProgressBar`, `GtkSpinner`, `GtkSeparator`, `GtkImage` | value model and feedback/decoration widgets |
|
|
|
| `GtkHeaderBar`, `GtkMenuButton`, `GtkPopoverMenuBar` | window chrome and menus |
|
|
|
| `GtkPopover`, `GtkPopoverMenu` | popovers and menu popovers |
|
|
|
@@ -201,7 +209,7 @@ gm2 -fiso -Isrc -Ilib myprog.mod \
|
|
|
|---|---|
|
|
|
| `GtkUtils` | `CStrToM2`, `StrAppend`, `IntToStr`, `Connect`, `SetAccel`, `Unref`, `Free`, `ErrorMessage`, `ClearError` |
|
|
|
| `GtkClosures` | `Connect2`/`Connect3` (and owned variants) for per-connection signal state |
|
|
|
-| `M2GtkShim` (`lib/m2gtkshim.c`) | C shim for GObject subclassing: a custom `GtkWidget`, a `GdkPaintable`, a generic `GListModel`, and a custom `GtkLayoutManager`, all driven by Modula-2 callbacks |
|
|
|
+| `M2GtkShim` (`lib/m2gtkshim.c`) | C shim for GObject subclassing: a custom `GtkWidget`, `GdkPaintable`s (Cairo- and snapshot-based), a generic `GListModel`, and a custom `GtkLayoutManager`, all driven by Modula-2 callbacks |
|
|
|
|
|
|
## Signals, ownership and errors
|
|
|
|