(in-package :climacs-gui) ;;; This: (climi::define-application-starter climacs :function-name climacs :default-width 900 :default-height 400) ;;; gives: (MULTIPLE-VALUE-PROG1 (DEFUN CLIMACS (&KEY CLIM-INTERNALS::NEW-PROCESS (CLIM-SYS:PROCESS-NAME "Climacs") (CLIM-INTERNALS::WIDTH 900) (CLIM-INTERNALS::HEIGHT 400) CLIM-INTERNALS::FRAME-MANAGER-NAME CLIM-INTERNALS::FORCE-RESTART (CLIM-INTERNALS::DEBUGGER (FUNCTION CLIM-DEBUGGER:DEBUGGER))) (WHEN (CLIM-INTERNALS::FIND-PROCESS-WITH-NAME CLIM-SYS:PROCESS-NAME) (IF CLIM-INTERNALS::FORCE-RESTART (CLIM-INTERNALS::DESTROY-PROCESS-WITH-NAME CLIM-SYS:PROCESS-NAME) (WHEN NIL (RESTART-CASE (ERROR "There seems to be a running instance of the climacs process.") (CLIM-INTERNALS::|destroy-process| NIL :REPORT "Destroy old climacs process and make a new one." (CLIM-INTERNALS::DESTROY-PROCESS-WITH-NAME CLIM-SYS:PROCESS-NAME)) (CLIM-INTERNALS::|don't-care| NIL :REPORT "Just run the gui again and don't care about the running process." NIL) (CLIM-INTERNALS::|do-nothing| NIL :REPORT "Just return without doing anything more." (RETURN-FROM CLIMACS)))))) (LET ((CLIM-INTERNALS::FRAME (IF CLIM-INTERNALS::FRAME-MANAGER-NAME (MAKE-APPLICATION-FRAME 'CLIMACS :WIDTH CLIM-INTERNALS::WIDTH :HEIGHT CLIM-INTERNALS::HEIGHT :FRAME-MANAGER (MAKE-INSTANCE CLIM-INTERNALS::FRAME-MANAGER-NAME :PORT (FIND-PORT))) (MAKE-APPLICATION-FRAME 'CLIMACS :WIDTH CLIM-INTERNALS::WIDTH :HEIGHT CLIM-INTERNALS::HEIGHT))) (*DEBUGGER-HOOK* CLIM-INTERNALS::DEBUGGER)) (FLET ((CLIM-INTERNALS::RUN () (RUN-FRAME-TOP-LEVEL CLIM-INTERNALS::FRAME))) (IF CLIM-INTERNALS::NEW-PROCESS (CLIM-SYS:MAKE-PROCESS (LAMBDA () (CLIM-INTERNALS::RUN) (CLIM-INTERNALS::DESTROY-PROCESS-WITH-NAME CLIM-SYS:PROCESS-NAME)) :NAME CLIM-SYS:PROCESS-NAME) (CLIM-INTERNALS::RUN))) CLIM-INTERNALS::FRAME)) (WHEN (AND T (FIND-PACKAGE :CLIM-LAUNCHER) (FBOUNDP (INTERN "ADD-APPLICATION" :CLIM-LAUNCHER))) (FUNCALL (INTERN "ADD-APPLICATION" :CLIM-LAUNCHER) "Climacs" (LAMBDA () (FUNCALL #'CLIMACS :NEW-PROCESS T)))))