“No Drama GUI”
Common Lisp bindings for the Tk GUI toolkit.
Version 0.4.0
broke the user API, see
here for more information about how your code is affected and how to fix it.
- 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
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.
- TCL/TK interpreter (version >= 8.6) https://www.tcl.tk
- 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.
- libsdl2 https://www.libsdl.org/
- turboJpeg (high level api for libjpeg-turbo) https://www.libjpeg-turbo.org/
- opengl headers
- TKlib https://core.tcl-lang.org/tklib/home
- tkimg https://sourceforge.net/projects/tkimg/
- tcllib https://www.tcl.tk/software/tcllib/
- 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)
please follow this link for documentation and news.
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.
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.
My (cage) deep thanks to Tim Holliefield <tholliefield [at] online.de>, for all the suggestions and help about implementing the widgets styles management.