Making a GTK application in Haskell, part 1
4 hours ago
- This tutorial series aims to build a todo-list application using Haskell, GTK 4, and the Adwaita library.
- Adwaita provides GTK components that implement GNOME's design language (HIG), including responsive design and theme switching.
- Haskell bindings for GTK are generated via the haskell-gi toolkit, allowing a Haskell interface that relates to the C API.
- The application follows the Elm Architecture (Model-View-Update) with Model, View, Update, Messages, and Effects.
- The Model defines data structures: TodoId, Todo (with id, title, done), and Model (todos map and nextId).
- Messages represent user interactions (e.g., Add Text, SetDoneStatus TodoId Bool).
- The update function processes messages, updates the model, and returns effects (e.g., saving to disk).
- The View function builds GTK widgets (Box, ListBox, EntryRow, ActionRow, Clamp, ScrolledWindow, ToolbarView) and connects signals to dispatch messages.
- The Runtime module connects Model, View, and Update: it defines dispatch (sends messages via GTK idle loop) and step (updates model and view).
- The main module creates an Adw.Application, connects the activate signal, and runs the application loop.