Examples
This page list various examples of CL-GTK2 programs and their screenshots.
Source code | Screenshot |
---|---|
(defun run () (let ((output *standard-output*)) (gtk:within-main-loop (let ((window (make-instance 'gtk:gtk-window :type :toplevel :window-position :center :title "Hello world!" :default-width 300 :default-height 100)) (button (make-instance 'gtk:button :label "Hello, world!")) (counter 0)) (gobject:g-signal-connect button "clicked" (lambda (b) (declare (ignore b)) (format output "Hello, world!~%") (setf (gtk:button-label button) (format nil "Hello, world! (clicked ~D times)" (incf counter))))) (gtk:container-add window button) (gtk:widget-show window :all t))))) (run) |
|
(defun demo-class-browser () (let ((output *standard-output*)) (gtk:within-main-loop (let* ((window (make-instance 'gtk:gtk-window :window-position :center :title "Class Browser" :default-width 400 :default-height 600)) (search-entry (make-instance 'gtk:entry)) (search-button (make-instance 'gtk:button :label "Search")) (scroll (make-instance 'gtk:scrolled-window :hscrollbar-policy :automatic :vscrollbar-policy :automatic)) (slots-model (make-instance 'gtk:array-list-store)) (slots-list (make-instance 'gtk:tree-view :model slots-model))) (let ((v-box (make-instance 'gtk:v-box)) (search-box (make-instance 'gtk:h-box))) (gtk:container-add window v-box) (gtk:box-pack-start v-box search-box :expand nil) (gtk:box-pack-start search-box search-entry) (gtk:box-pack-start search-box search-button :expand nil) (gtk:box-pack-start v-box scroll) (gtk:container-add scroll slots-list)) (gtk:store-add-column slots-model "gchararray" (lambda (slot) (format nil "~S" (closer-mop:slot-definition-name slot)))) (let ((col (make-instance 'gtk:tree-view-column :title "Slot name")) (cr (make-instance 'gtk:cell-renderer-text))) (gtk:tree-view-column-pack-start col cr) (gtk:tree-view-column-add-attribute col cr "text" 0) (gtk:tree-view-append-column slots-list col)) (labels ((display-class-slots (class) (format output "Displaying ~A~%" class) (loop repeat (gtk:store-items-count slots-model) do (gtk:store-remove-item slots-model (gtk:store-item slots-model 0))) (closer-mop:finalize-inheritance class) (loop for slot in (closer-mop:class-slots class) do (gtk:store-add-item slots-model slot))) (on-search-clicked (button) (declare (ignore button)) (gtk:with-gtk-message-error-handler (let* ((class-name (read-from-string (gtk:entry-text search-entry))) (class (find-class class-name))) (display-class-slots class))))) (gobject:g-signal-connect search-button "clicked" #'on-search-clicked)) (gtk:widget-show window))))) (demo-class-browser) |