;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for Kermit version 36.3 ;;; Reason: ;;; centralize / rationalize label setups. Clean up display. Fix fonts. ;;; Written 19-Jul-88 21:03:53 by keith (Keith Corbett) at site Gigamos Cambridge ;;; while running on Breaking Glass from band 1 ;;; with System 125.7, ZWEI 125.2, ZMail 73.0, Local-File 75.0, File-Server 24.0, Unix-Interface 13.0, Tape 24.0, Lambda-Diag 17.0, Experimental Window-Maker 2.0, Experimental Kermit 36.2, microcode 1761, SDU Boot Tape 3.14, SDU ROM 103, 7/19. ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:01 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defflavor kermit-frame ((kermit-ready-for-commands? nil) (kermit-connected-flag nil) (kermit-serial-stream nil) (serial-stream-open-form *default-serial-stream-open-form*) kstate kterm-state ) (tv:process-mixin tv:select-mixin ; just to get :set-process handler! tv:inferiors-not-in-select-menu-mixin tv:alias-for-inferiors-mixin tv:margin-choice-mixin tv:essential-mouse ;for asynchronous mouse cmds tv:bordered-constraint-frame-with-shared-io-buffer) :SPECIAL-INSTANCE-VARIABLES :inittable-instance-variables :outside-accessible-instance-variables (:accessor-prefix "") (:documentation :special-purpose "kermit command and terminal frame for file transfer and remote terminal emulation") (:default-init-plist :margin-choices '((" Abort " nil async-abort 0 0) (" Exit " nil async-exit 0 0) (" Break " nil async-break 0 0) (" Resume " nil async-resume 0 0)) :borders 3 ; 3 on frame + 3 on each pane :expose-p t ; expose w/o blink on instantiation :activate-p t ; activate on instantiation :save-bits :delayed ; make save bits array on deexposure :process '(run-kermit-process) :panes `((status-pane kermit-status-pane) (command-pane kermit-command-pane) (interaction-pane kermit-interaction-pane) (extra-pane kermit-status-pane) . ((terminal-pane kermit-terminal-pane))) ;;;Window configurations: :constraints '((default . ((top-strip terminal-pane interaction-pane) ((top-strip :horizontal (:ask-window command-pane :pane-size) . ((status-pane command-pane) ((command-pane :ask :pane-size)) ((status-pane :even))))) ((terminal-pane 25. :lines)) ((interaction-pane :even)))) (long-terminal . ((top-strip terminal-pane interaction-pane) ((top-strip :horizontal (:ask-window command-pane :pane-size) . ((status-pane command-pane) ((command-pane :ask :pane-size)) ((status-pane :even))))) ((interaction-pane 4. :lines)) ((terminal-pane :even)) ))) )) ;;;; this is a very important thing to do unless ;;;; you like to live in the cold load stream: )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:03 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defmacro safe-font-spec (&rest fonts) `(loop for font-spec in '(,@fonts "CPTFONT") as font = (intern-soft font-spec "FONTS") when font (return font))) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:04 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defmacro kermit-label(string &optional (mode :centered)) `(list :string ,string :font ,label-font ,@(ncons mode))) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:05 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defvar label-font (safe-font-spec "HL12BI")) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:06 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defconst terminal-pane-label (kermit-label "Terminal Emulator Window")) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:07 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defconst interaction-pane-label (kermit-label "Interaction Pane")) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:08 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defconst command-pane-label (kermit-label "Commands")) ;;;This label gets overwritten by WITH-STATUS )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:09 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defconst status-pane-label (kermit-label "Kermit Status")) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:11 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defparameter status-pane-label-font (safe-font-spec)) ;;;; scrolling mixin ;;; this should be part of the general system, but alot of people flame ;;; at the idea, so... )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:04:15 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defflavor kermit-interaction-pane () (tv:notification-mixin tv:list-mouse-buttons-mixin scrolling-mixin tv:window) (:documentation :special-purpose "kermit interaction pane") (:default-init-plist :blinker-p t :borders 3 ; 3 on frame + 3 on each pane :vsp 3 ; 3 pixels between lines :reverse-video-p t :save-bits :delayed :more-p nil :label interaction-pane-label :deexposed-typeout-action :permit :font-map '(cptfont) :right-margin-character-flag 1)) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:05:12 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defflavor kermit-status-pane () (tv:list-mouse-buttons-mixin tv:top-label-mixin tv:window) (:documentation :special-purpose "kermit status pane") (:default-init-plist :borders 3 ; 3 on frame + 3 on each pane :font-map (ncons status-pane-label-font) :vsp 3 ; 5 pixels between lines :more-p nil :deexposed-typeout-action :permit :save-bits :delayed :reverse-video-p t :label status-pane-label :blinker-p nil ; no blinker )) )) ; From modified file DJ: L.NETWORK.KERMIT; WINDOW.LISP#81 at 19-Jul-88 21:05:14 #8R KERMIT#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "KERMIT"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERMIT; WINDOW  " (defmacro with-status ((status-pane-format-string . format-args?) &body body) `(let ((*--old-label--* (send status-pane :label))) (unwind-protect (progn (send status-pane :set-label ;which may be multi lines. (list :string (format nil ,status-pane-format-string . ,format-args?) :font status-pane-label-font)) . ,body) (send status-pane ':clear-screen) (send status-pane :set-label *--old-label--*)))) ))