From 773d2a73ddfd56842675472852526883c79a571b Mon Sep 17 00:00:00 2001 From: Dmitry Kalyanov Date: Tue, 2 Jun 2009 00:09:23 +0400 Subject: [PATCH] Updated tutorial --- doc/hello_world.png | Bin 12826 -> 11043 bytes doc/tutorial.xml | 43 ++++++++++++------------------------------- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/doc/hello_world.png b/doc/hello_world.png index 6d8c8495007db35e3970a0f3b4bc0e3214335f24..71f563106a2ff1bf19e23387dd54ecfdf1111661 100644 GIT binary patch literal 11043 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 diff --git a/doc/tutorial.xml b/doc/tutorial.xml index 160e20d..d28a0a5 100644 --- a/doc/tutorial.xml +++ b/doc/tutorial.xml @@ -47,40 +47,21 @@ "Hello world" example Let's start from a simple example. - Load the GTK system: (asdf:oos 'asdf:load-op :gtk) - Having loaded the GTK system, compile the following code: + Start Slime, type the following code in the REPL: -(defpackage :gtk-hello - (:use :cl :gtk :gobject :glib) - (:export :run)) +(asdf:oos 'asdf:load-op :gtk) -(in-package :gtk-hello) - -(defun run () - (let ((output *standard-output*)) - (with-main-loop - (let ((window (make-instance 'gtk-window - :type :toplevel - :window-position :center - :title "Hello world!" - :default-width 300 - :default-height 100)) - (button (make-instance 'button :label "Hello, world!")) - (counter 0)) - (g-signal-connect button "clicked" - (lambda (b) - (declare (ignore b)) - (format output "Hello, world!~%") - (setf (button-label button) - (format nil - "Hello, world! (clicked ~D times)" - (incf counter))))) - (container-add window button) - (widget-show window :all t))))) +(gtk:within-main-loop + (let ((window (make-instance 'gtk:gtk-window :title "Hello, world!"))) + (gtk:widget-show window))) - And now, run it:(gtk-hello:run) - This code should create a form with a button. When the button is clicked, this program prints a message to standard output and changes the text of the button. - If you have a window, then congratulations! Otherwise, contact the author for support. + The empty window with title "Hello, world!" should appear. + Let's analyze this example line-by-line. + (asdf:oos 'asdf:load-op :gtk) loads the GTK system into Lisp. + CL-GTK2 runs Gtk+ main loop in background thread (because Lisp development is interactive in its nature; if main loop would block the REPL thread, you would have to restart the Lisp image too often). Because all access to Gtk+ should come from Gtk+ thread, we should run the code in that thread. Macro gtk:within-main-loop does exactly that: it schedules the code to be tun in the Gtk+ thread. You should use this macro whenever you want evaluate the code from the REPL or when you start you application. + Next, we create the window with make-instance and set its title property to "Hello, world!". + When the window is created, it is not yet shown on the screen. To show it, we call (gtk:widget-show window). + After this code executes, you should get back to the REPL (rememer, Gtk+ runs in background thread) and the window should appear on the screen.
Example walk-through -- 1.7.10.4