(in-package :kde.examples) (declaim (optimize (debug 3))) (defun make-aboutdata () (let ((app-name (make-instance 'qt:byte-array :args '("kmandelbrot"))) (catalog-name (make-instance 'qt:byte-array)) (program-name (kde:ki18n "KMandelbrot")) (version (make-instance 'qt:byte-array :args '("0.0.1"))) (description (kde:ki18n "KDE Mandelbrot program.")) (copyright (kde:ki18n "Copyright (c) 2009 Tobias Rautenkranz")) (text (kde:ki18n "TODO")) (homepage (make-instance 'qt:byte-array :args '("http://tobias.rautenkranz.ch"))) (email (make-instance 'qt:byte-array :args '("bugs@tobias.rautenkranz.ch")))) (let ((aboutdata (make-instance 'kde:about-data :args (list app-name catalog-name program-name version description kde:about-data.+license-lgpl-v2+ copyright text homepage email)))) (cxx:add-author aboutdata (kde:ki18n "Tobias Rautenkranz") (make-instance 'kde:localized-string) (make-instance 'qt:byte-array :args '("tobias@rautenkranz.ch"))) aboutdata))) (defun mandelbrot () (kde:with-app (make-aboutdata) (let* ((window (make-instance 'kde:xml-gui-window)) (mandelbrot (make-instance 'mandelbrotwidget)) (resource-dir (directory-namestring (mb.sysdef:component-pathname (mb.sysdef:find-component :kde.examples "src"))))) (cxx:add-resource-dir (kde:global.dirs) "icon" resource-dir) (cxx:add-resource-dir (kde:global.dirs) "apps" resource-dir) (cxx:quit (find-class 'kde:standard-action) window (qt:qslot "close()") (cxx:action-collection window)) (kde:make-standard-action kde:standard-action.+redisplay+ (cxx:action-collection window) #'(lambda () (zoom mandelbrot 1d0))) (kde:make-standard-action kde:standard-action.+zoom-in+ (cxx:action-collection window) #'(lambda () (zoom mandelbrot 0.5d0))) (kde:make-standard-action kde:standard-action.+zoom-out+ (cxx:action-collection window) #'(lambda () (zoom mandelbrot 2d0))) (cxx:set-central-widget window mandelbrot) (cxx:set-focus mandelbrot) (setup-slot mandelbrot) (cxx:add-resource-dir (kde:global.dirs) "data" resource-dir) (cxx:setup-gui window) (cxx:show window) (qt:exec))))