nodgui
2024-10-12
Lisp bindings for the Tk toolkit
1NODGUI
/"No Drama GUI"/
Common Lisp bindings for the Tk GUI toolkit.
1.1important note:
Version 0.4.0
broke the user API, see
here for more information about how your code is affected and how to fix it.
1.2Features
- custom themes
- more widgets:
- history-entry
- autocomplete
- expanded "text" widget
- date picker
- treelist
- tooltip
- searchable listbox
- password entry
- openGL frame
- …
tklib
-derived widgets:- calendar
- notify-window (a bit buggy, unfortunately)
- plots and charts: dot-plot, bar-chart…
- asynchronous main event loop
- and more
1.3Themes
nodgui supports loading custom ttk themes and ships the "yaru" theme from the ttkthemes collection.
To use a built-in theme other than the "default" one, do:
(with-nodgui (:theme "yaru")
(code here))
or use (setf *default-theme* "yaru")
.
You can see how they look with the demos:
CL-USER> (nodgui.demo:demo :theme "yaru")
You can load any .tcl file describing a theme:
(nodgui:eval-tcl-file "path/to/another/theme.tcl") (nodgui:use-theme "theme")
See also *themes-directory*
.
This currently doesn't work with a few themes using SVG images, but it might be fixed with the release of an upcoming Tcl/Tk version.
2Dependency
2.1Programs
- TCL/TK interpreter (version >= 8.6)https://www.tcl.tk
2.2Lisp libraries
- alexandria;
- bordeaux-threads;
- cl-colors2;
- cl-opengl;
- cl-ppcre-unicode;
- cl-unicode;
- sdl2;
- sdl2-ttf;
- clunit2;
- esrap;
- flexi-streams;
- jpeg-turbo;
- named-readtables;
- parse-number;
- pngload;
- zpng.
All of the above libraries are available on quicklisp.
2.3C Libraries
- libsdl2https://www.libsdl.org/
- turboJpeg (high level api for libjpeg-turbo)https://www.libjpeg-turbo.org/
- opengl headers
2.4TCL/TK libraries (optional)
- TKlibhttps://core.tcl-lang.org/tklib/home
- tkimghttps://sourceforge.net/projects/tkimg/
- tcllibhttps://www.tcl.tk/software/tcllib/
3Installing
- install the tk interpreter (example on a Debian system follows)
# apt-get install tk
- optionally install tklib
# apt-get install tklib
- optionally install tcllib
# apt-get install tcllib
- optionally install tkimg
# apt-get install libtk-img
- install libsd2
# apt-get install libsdl2-dev
- install opengl
# apt-get install libg-dev
- install libturbojpeg
# apt-get install libturbojpeg0-dev
- open a REPL and type
(ql:quickload "nodgui")
- try it!
(nodgui.demo:demo)
also try the minigame, it is fun!
(asdf:make nodgui/game) (main::main)
4Documentation
please followthis link for documentation and news.5License
This software is Copyright © cage.
Derived from:
- © Peter Herth;
- © Thomas F. Burdick;
- © Cadence Design Systems;
- © Daniel Herring.
The authors grant you the rights to distribute and use this software as governed by the terms of the Lisp Lesser GNU Public License (http://opensource.franz.com/preamble.html), known as the LLGPL.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
This library uses code from other authors see the file ./LICENSES.org for details.
5.1Themes
The themes definitions found in the themes/
subdirectory are distributed with many different license, please carefully check the file LICENSE.org
in each theme's subdirectory (e.g ./themes/yaru/LICENSE.org) for more information.
6Acknowledgment
My (cage) deep thanks to Tim Holliefield <tholliefield [at] online.de>, for all the suggestions and help about implementing the widgets styles management.