;;; -*- Mode: Common-Lisp; Package: User; Base: 8.; Patch-File: T -*-

;;; Reason: Moves the Telnet & VT100 & Kermit commands into a pop-up menu.
;;; Code readers: CRW and LER
;;;			      RESTRICTED RIGHTS LEGEND

;;;Use, duplication, or disclosure by the Government is subject to
;;;restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
;;;Technical Data and Computer Software clause at 52.227-7013.
;;;
;;;			TEXAS INSTRUMENTS INCORPORATED.
;;;				 P.O. BOX 2909
;;;			      AUSTIN, TEXAS 78769
;;;				    MS 2151
;;;
;;; Copyright (C) 1988 Texas Instruments Incorporated. All rights reserved.

;;; Written 03/21/88 13:16:58 by WALTON,
;;; while running on CHARLIE from band LODA
;;; With Experimental SYSTEM 4.36, Experimental VIRTUAL-MEMORY 4.0, Experimental EH 4.0,
;;;  Experimental MAKE-SYSTEM 4.1, Experimental MICRONET 4.3, Experimental LOCAL-FILE 4.0,
;;;  Experimental BASIC-PATHNAME 4.3, Experimental DISK-IO 4.1, Experimental DISK-LABEL 4.0,
;;;  Experimental BASIC-FILE 4.2, Experimental MAC-PATHNAME 4.0, Experimental NETWORK-PATHNAME 4.0,
;;;  Experimental COMPILER 4.1, Experimental NETWORK-NAMESPACE 4.3, Experimental TV 4.45,
;;;  Experimental DATALINK 4.11, Experimental CHAOSNET 4.4, Experimental GC 4.2, Experimental MEMORY-AUX 4.0,
;;;  Experimental NVRAM 4.3, Experimental SYSLOG 4.0, Experimental STREAMER-TAPE 4.1,
;;;  Experimental UCL 4.1, Experimental INPUT-EDITOR 4.0, Experimental METER 4.3,
;;;  Experimental ZWEI 4.12, Experimental DEBUG-TOOLS 4.1, Experimental NETWORK-SUPPORT 4.1,
;;;  Experimental NETWORK-SERVICE 4.0, Experimental DATALINK-DISPLAYS 4.0, Experimental FONT-EDITOR 4.0,
;;;  Experimental SERIAL 4.0, Experimental PRINTER 4.3, Experimental PRINTER-TYPES 4.0,
;;;  Experimental IMAGEN 4.0, Experimental SUGGESTIONS 4.0, Experimental MAIL-DAEMON 4.0,
;;;  Experimental MAIL-READER 4.4, Experimental TELNET 4.0, Experimental VT100 4.3,
;;;  Experimental NAMESPACE-EDITOR 4.2, Experimental PROFILE 4.0, Experimental VISIDOC 4.0,
;;;  Experimental NAMESPACE 4.8, Experimental BUG 11.0, Experimental IP 3.0, DECNET 1.32,
;;;  Experimental CLX 28.0, Experimental CLUE 10.1, Experimental KERMIT 3.6,  microcode 289,
;;;  Band Name: REL4+DECnet+CLUE

#!C
; From file VT100-CHANGES.LISP#> PUBLIC.KERMIT; SYS:
#8R TELNET#:
(COMPILER-LET ((*PACKAGE* (FIND-PACKAGE "TELNET"))
                          (SI:*LISP-MODE* :COMMON-LISP)
                          (*READTABLE* SYS:COMMON-LISP-READTABLE)
                          (SI:*READER-SYMBOL-SUBSTITUTIONS* SYS::*COMMON-LISP-SYMBOL-SUBSTITUTIONS*))
  (COMPILER#:PATCH-SOURCE-FILE "SYS: PUBLIC.KERMIT; VT100-CHANGES.#"

; moves the commands into a pop-up menu 
(DEFCOMMAND VT100-TELNET-COMMANDS
	    nil
	    '(:keys #\mouse-M-1
		    :documentation "Bring up the menu of Telnet & VT100 Commands"
		    :names ("VT100 & Telnet Command Menu"))
  (pop-up-vt100-telnet-command-menu 'TELNET:UCL-VT100-TELNET-MENU))


(BUILD-COMMAND-TABLE 'VT100-TELNET-CMD-TABLE 'VT100-FRAME
  '((:method telnet-frame :exit-command)
    vt100-telnet-commands                       ;CRW 3-21-88
    (:method telnet-frame :disconnect-command)
    (:method telnet-frame :interrupt-process-command)
    :send-answerback-command
    :reverse-video-command
    :reset-command
    :escape-processing-command
    (:method telnet-frame :quit-and-disconnect-command)
    (:method telnet-frame :status-command)
    (:method telnet-frame :abort-output-command)
    :column-command
    :truncate-command
    :set-vt100-lines
    :network-help-command
    (:method telnet-frame :clear-input-command)
    :define-serial-host
    :autodial
    :kermit
    :local-echo-command
    :short-break
    :long-break
    )
  :INIT-OPTIONS
  '(:NAME "Vt100 & Telnet Commands"
	  :DOCUMENTATION "The Vt100 & Telnet commands."))

(BUILD-MENU 'UCL-VT100-TELNET-MENU 'VT100-FRAME
  :DEFAULT-ITEM-OPTIONS '(:label " VT100 & Telnet Commands "
				 :item-alignment :center					  
				 :FONT FONTS:MEDFNT)	    
  
  :ITEM-LIST-ORDER  
    '((:method telnet-frame :exit-command)		
      (:method telnet-frame :disconnect-command)
      (:method telnet-frame :interrupt-process-command)
      :send-answerback-command
      :reverse-video-command
      :reset-command
      :escape-processing-command
      (:method telnet-frame :quit-and-disconnect-command)
      (:method telnet-frame :status-command)
      (:method telnet-frame :abort-output-command)
      :column-command
      :truncate-command
      :set-vt100-lines
      :network-help-command
      :define-serial-host
      :autodial
      :kermit
      :local-echo-command
      :short-break
      :long-break
      ))


(DEFCOMMAND (VT100-FRAME :KERMIT) ()
  '(:DESCRIPTION "Display a pop-up menu of KERMIT file-transfer commands."
		 :Names ("Kermit"))
  (DECLARE (SPECIAL KERMIT:*KERMIT-FRAME*))
  (COND (STREAM
	 (LET
	   ((VT100-SUBSTITUTE (SEND SELF :SELECTION-SUBSTITUTE))
	    (KERMIT-SUPERIOR (SEND KERMIT:*KERMIT-FRAME* :SUPERIOR))
	    ;(MENU-PANE (SEND SELF :GET-PANE 'MENU-TELNET))
	    )
	   (UNWIND-PROTECT
	       (LET
		 ((FORM NIL))
		 (SEND TYPEOUT-PROCESS :ARREST-REASON 'KERMIT)	; Stop the vt100 process from using serial stream
		 (SETQ FORM (KERMIT:INTERACTIVE-KERMIT STREAM NIL)) ; Get the Kermit arguments
		 (WHEN FORM
		   ;(SETF (SEND MENU-PANE :INVISIBLE-TO-MOUSE-P) T)	; Make the vt100 menu items non-mousable
		   (SEND KERMIT:*KERMIT-FRAME* :SET-SUPERIOR SELF)
		   (SEND SELF :SET-SELECTION-SUBSTITUTE KERMIT:*KERMIT-FRAME*)	; Attach the kermit frame to vt100
		   (EVAL FORM)))		; Call Kermit
	     (SEND TYPEOUT-PROCESS :REVOKE-ARREST-REASON 'KERMIT)	; Reallow vt100 to use serial
	     ;(SETF (SEND MENU-PANE :INVISIBLE-TO-MOUSE-P) NIL)	; Make menu items mousable
	     (SEND SELF :SET-SELECTION-SUBSTITUTE VT100-SUBSTITUTE)
	     (SEND KERMIT:*KERMIT-FRAME* :SET-SUPERIOR KERMIT-SUPERIOR))))
	(T
	 (FORMAT T "~&Not connected.  Can't run KERMIT.")
	 (WHEN (NOT UCL:PREEMPTING?)
	   (SEND SELF ':HANDLE-PROMPT)))))

))














