1
0
Fork
You've already forked lw-wizard
0
LispWorks CAPI-based wizard dialog
  • Common Lisp 100%
Find a file
2025年07月17日 00:54:30 +02:00
.gitignore Add aider to ignore list 2024年12月31日 01:24:46 +01:00
LICENSE Initial import 2024年08月22日 21:45:05 +02:00
license-wizard.lisp Moved example wizards to separate system 2025年07月17日 00:39:06 +02:00
lw-wizard-demo.asd Moved example wizards to separate system 2025年07月17日 00:39:06 +02:00
lw-wizard.asd Moved example wizards to separate system 2025年07月17日 00:39:06 +02:00
package-demo.lisp Moved example wizards to separate system 2025年07月17日 00:39:06 +02:00
package.lisp Add exports in package 2025年07月16日 11:22:02 +02:00
README.md Added screenshots to readme 2025年07月17日 00:54:30 +02:00
simple-wizard.lisp Moved example wizards to separate system 2025年07月17日 00:39:06 +02:00
wizard-buttons.lisp Add possibility to enable/disable cancel (not only show) 2025年04月18日 01:40:37 +02:00
wizard-field.lisp Add radio-button-panel to the list of supported field types. 2025年07月16日 16:44:24 +02:00
wizard-page-protocol.lisp Add exports in package 2025年07月16日 11:22:02 +02:00
wizard-page.lisp on-leave callback now does not return value now and does not affect validation. 2025年07月16日 11:24:11 +02:00
wizard-protocol.lisp Add support for mandatory fields validation and enabling next/finish 2025年04月17日 00:21:26 +02:00
wizard.lisp On success return :done instead of symbol 'done 2025年07月16日 16:44:03 +02:00

Simple Wizard dialog framework for LispWorks

Introduction

In the lack of build-in support for Wizard dialogs in CAPI I've implemented a simple wizard library inspired by Qt's QWizard classes. The aim was to create a simple wizard "framework" to be able to quickly configure delivered apps.

example1 example2

Usage

Put it to some QL/ASDF aware location in your source tree (I bet you know how to do it already).

(ql:quickload "lw-wizard")

To run examples, load the demo system:

(ql:quickload "lw-wizard-demo")

Then run:

(lw.wizard.demo:simple-wizard-main)

And

(lw.wizard.demo:license-wizard-main)

These examples replicates relevant examples in Qt's documentation; see it for details. The file simple-wizard.lisp implements simple wizard example; license-wizard.lisp implements license wizard example. Differences from Qt examples:

  • No pixmap/logo/etc support
  • No tags/rich text in labels (unless package rich-text is loaded)
  • No "Print" button or custom buttons in License wizard.

But it works! See the example sources for usage and details. In contrast to Qt, the design is based on callbacks rather than subclassing.

wizard-start function wasn't tested on OSX, should be wrapped with some OSX-related CAPI dialog macros.

Some limitations and notes.

Field types

Registered field types currently supported are:

  • capi:text-input-pane (including mandatory)
  • capi:check-button (including mandatory)
  • capi:radio-button-panel

Validation

The callbacks on-enter and on-leave could not be used for validation, yet. For custom validation, subclass the class wizard-page and overload the method lw.wizard:page-complete-p

More examples

See setup-wizard for inspiration.