-
Notifications
You must be signed in to change notification settings - Fork 33
Home
Ralph Schleicher has written a Atmosphere Calculator application which is a graphical user interface to calculate ambient conditions and air speeds. The graphical user interface is build with Glade and the CL-CFFI-GTK package provides the GKT+ bindings.
I have added a chapter about Cairo and GTK+ to the GTK+ Tutorial for Lisp. This tutorial is taken from the offical Cairo website at http://cairographics.org/tutorial/ which has been derived from Michael Urman's Cairo tutorial for python programmers.
The last section Writing a Widget Using Cairo and GTK+ shows a custom widget named egg-clock-face
which draws a clock using Cairo. This Cairo Clock example is inspired by the C code from Davyd Madeley. egg-clock-face
is defined as a subclass of the gtk-drawing-area class. Only the property time
is added to hold the actual time of the clock. The initialize-instance
method installs a timeout source with the function g-timeout-add, which updates every second the time
property of egg-clock-face
and requests the redrawing of the widget. The "draw" signal handler draws the clock into the gtk-drawing-area of the egg-clock-face
widget.
The gtk-numerable-icon class is a subclass of g-emblemed-icon that can show a number or short string as an emblem. The number can be overlayed on top of anotheremblem, if desired. It supports theming by taking font and color information from a provided gtk-style-context; see the function gtk-numerable-icon-set-style-context.
The implementation of the gtk-numerable-icon class and a small demo within the gtk-demo application are available. This is the output of the demo:
This is the part of the code which creates the grid of numerable icons:
(dotimes (i 5)
(dotimes (j 5)
(gtk-grid-attach grid
(gtk-image-new-from-gicon
(make-instance 'gtk-numerable-icon
:gicon (g-themed-icon-new "gtk-ok")
:count (+ (* j 5)(1+ i)))
:dialog)
i j 1 1)))
I have started to rework the chapter Menus and Toolbars about menus of the GTK+ Tutorial for Lisp. The chapter introduces the classes gtk-menu-bar, gtk-menu and gtk-menu-item. This is the example for making menus by hand:
PassStorage is a small Lisp application which uses the cl-cffi-gtk library as a GUI. The code is a fork from the repository at andy128k / PassStorage which has been developped by Andrey Kutejko for GTK+ 2 with the cl-gtk2 library.
The application is implemented very similar to the Application window example below.
The cl-cffi-gtk library comes with a demo similar to the GTK+ demo for the C library. At this time the GTK+ Demo for Lisp includes 51 code examples. You find the GTK+ Demo for Lisp in the directory /demo/gtk-demo. Load the demo with the command (load "gtk-demo.lisp")
from the Lisp prompt, execute the command (in-package :gtk-demo)
and start the demo with the call (main)
.
The last example added can be used as a template for a small Lisp application. The example demonstrates a typical application window with menubar, toolbar, statusbar. The example uses GtkUIManager and GtkActionGroup which are implemented in the Lisp binding as the classes gtk-ui-manager and gtk-action-group.