Skip to content

NOT ALWAYS IN SYNC · Tk bindings - https://codeberg.org/cage/nodgui

Notifications You must be signed in to change notification settings

lisp-mirror/nodgui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NODGUI

NODGUI

“No Drama GUI”

Common Lisp bindings for the Tk GUI toolkit.

important 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.

Features

  • 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

Themes

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.

Dependency

Programs

Lisp 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.

C Libraries

TCL/TK libraries (optional)

Installing

  1. install the tk interpreter (example on a Debian system follows)
    # apt-get install tk
        
  2. optionally install tklib
    # apt-get install tklib
        
  3. optionally install tcllib
    # apt-get install tcllib
        
  4. optionally install tkimg
    # apt-get install libtk-img
        
  5. install libsd2
    # apt-get install libsdl2-dev
        
  6. install opengl
    # apt-get install libg-dev
        
  7. install libturbojpeg
    # apt-get install libturbojpeg0-dev
        
  8. open a REPL and type
    (ql:quickload "nodgui")
        
  9. try it!
    (nodgui.demo:demo)
        

    also try the minigame, it is fun!

    (asdf:make nodgui/game)
    (main::main)
        

Documentation

please follow this link for documentation and news.

License

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.

Themes

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.

Acknowledgment

My (cage) deep thanks to Tim Holliefield <tholliefield [at] online.de>, for all the suggestions and help about implementing the widgets styles management.