(DEFINE-FILE-INFO PACKAGE "ROOMS" READTABLE "XCL" BASE 10)

(IL:FILECREATED " 4-Feb-2022 14:16:25" IL:|{MM}<rooms>ROOMS-MEDLEY-WINDOW-TYPES.;2| 20455  

      :CHANGES-TO (IL:WINDOW-TYPES :TEDIT)

      :PREVIOUS-DATE " 5-Dec-2020 16:36:07" IL:|{MM}<rooms>ROOMS-MEDLEY-WINDOW-TYPES.;1|)


; Copyright (c) 1988, 1990, 2020 by Venue & Xerox Corporation.

(IL:PRETTYCOMPRINT IL:ROOMS-MEDLEY-WINDOW-TYPESCOMS)

(IL:RPAQQ IL:ROOMS-MEDLEY-WINDOW-TYPESCOMS
          (
           (IL:* IL:|;;| "window types for various modules")

           (FILE-ENVIRONMENTS IL:ROOMS-MEDLEY-WINDOW-TYPES)
           (IL:P (REQUIRE "ROOMS"))
           (IL:WINDOW-TYPES :EXEC :INSPECTOR :SPY-BUTTON :CHAT :TEXTSTREAM :TEDIT :BUTTON)
           (IL:COMS 

                  (IL:* IL:|;;| "the prompt window")

                  (IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY (IL:P (OR (IL:RECLOOK 'IL:WINDOW)
                                                                      (IL:EVAL (IL:SYSRECLOOK1
                                                                                'IL:WINDOW)))))
                  (IL:WINDOW-TYPES :PROMPT-WINDOW)
                  (IL:GLOBALVARS IL:PROMPTWINDOW))
           (IL:COMS 

                  (IL:* IL:|;;| "SEdit")

                  (IL:ADVISE (IL:OPENWP :IN SEDIT::GET-CONTEXT))
                  (IL:WINDOW-TYPES :SEDIT))
           (IL:COMS 

                  (IL:* IL:|;;| "File Browser")

                  (IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY (IL:P (OR (IL:RECLOOK 'IL:FILEBROWSER)
                                                                      (IL:EVAL (IL:SYSRECLOOK1
                                                                                'IL:FILEBROWSER)))
                                                                  (OR (IL:RECLOOK 'IL:TABLEBROWSER)
                                                                      (IL:EVAL (IL:SYSRECLOOK1
                                                                                'IL:TABLEBROWSER)))))
                  (IL:WINDOW-TYPES :FILE-BROWSER :TABLE-BROWSER))
           (IL:COMS 

                  (IL:* IL:|;;| "Sketch")

                  (IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY (IL:P (OR (IL:RECLOOK 'IL:SKETCH)
                                                                      (IL:LOADDEF 'IL:SKETCH
                                                                             'IL:RECORDS
                                                                             'IL:SKETCH))))
                  (IL:WINDOW-TYPES :SKETCH))
           (IL:COMS 

                  (IL:* IL:|;;| "Logo Window")

                  (IL:WINDOW-TYPES :LOGO-WINDOW)
                  (IL:ADVISE IL:LOGOW))
           (IL:COMS 

                  (IL:* IL:|;;| "PSW")

                  (IL:WINDOW-TYPES :PSW))))



(IL:* IL:|;;| "window types for various modules")


(DEFINE-FILE-ENVIRONMENT IL:ROOMS-MEDLEY-WINDOW-TYPES :COMPILER :COMPILE-FILE
   :READTABLE "XCL"
   :PACKAGE "ROOMS")

(REQUIRE "ROOMS")

(DEF-WINDOW-TYPE :EXEC :RECOGNIZER (LAMBDA (WINDOW)
                                          (IL:EQMEMB 'XCL::EXEC-CLOSEFN (IL:WINDOWPROP WINDOW
                                                                               'IL:CLOSEFN)))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (LET* ((PROCESS (IL:WINDOWPROP WINDOW 'IL:PROCESS)))
                            (WHEN PROCESS
                                (LET ((PROFILE (IL:PROCESSPROP PROCESS 'IL:PROFILE)))
                                     `(:REGION ,(EXTERNALIZE-REGION (WINDOW-REGION WINDOW))
                                             :PACKAGE
                                             ,(IF PROFILE
                                                  (PACKAGE-NAME (GETF PROFILE '*PACKAGE*))
                                                  "IL")
                                             :READTABLE
                                             ,(IF PROFILE
                                                  (IL:READTABLEPROP (GETF PROFILE '*READTABLE*)
                                                         'IL:NAME)
                                                  "OLD-INTERLISP-T"))))))
   :RECONSTITUTER (LAMBDA
                   (ARGS)
                   (LET ((PROCESS (ADD-EXEC :REGION (INTERNALIZE-REGION (GETF ARGS :REGION
                                                                              (LIST 0 0 400 100)))
                                         :PROFILE
                                         (OR (GETF ARGS :PROFILE)
                                             `(*PACKAGE* ,(OR (FIND-PACKAGE (GETF ARGS :PACKAGE))
                                                              (FIND-PACKAGE "XCL-USER"))
                                                     *READTABLE*
                                                     ,(OR (IL:FIND-READTABLE (GETF ARGS :READTABLE))
                                                          (IL:FIND-READTABLE "XCL")))))))

                        (IL:* IL:|;;| 
                        "this is really grody.  why doesn't ADD-EXEC just take a window?")

                        (IL:BLOCK)
                        (IL:WFROMDS (IL:PROCESS.EVALV PROCESS '*STANDARD-OUTPUT*))))
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (PRINT-PEP-TITLE-STRING (IL:WINDOWPROP (PLACEMENT-WINDOW PLACEMENT)
                                                'IL:TITLE)
                        REGION DSP)))

(DEF-WINDOW-TYPE :INSPECTOR :RECOGNIZER (IL:LAMBDA (WINDOW)
                                          (IL:WINDOWPROP WINDOW 'IL:DATUM))
   :TITLE "Inspector")

(DEF-WINDOW-TYPE :SPY-BUTTON :RECOGNIZER (LAMBDA (WINDOW)
                                                (EQ (IL:WINDOWPROP WINDOW 'IL:BUTTONEVENTFN)
                                                    'IL:SPY.BUTTONA0001))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (DECLARE (IGNORE WINDOW))
                      NIL)
   :RECONSTITUTER (LAMBDA (DATA)
                         (DECLARE (IGNORE DATA)
                                (GLOBAL IL:SPY.BUTTON))
                         (UNLESS (BOUNDP 'IL:SPY.BUTTON)
                                (IL:FILESLOAD "spy"))
                         (IF IL:SPY.BUTTON
                             IL:SPY.BUTTON
                             (PROGN (IL:SPY.BUTTON (MAKE-POSITION 0 0))
                                    IL:SPY.BUTTON)))
   :NO-SHAPE T
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (PRINT-PEP-TITLE-STRING "Spy" REGION DSP :NO-TITLE-BAR? T)))

(DEF-WINDOW-TYPE :CHAT :RECOGNIZER (LAMBDA (WINDOW)
                                          (EQ (IL:WINDOWPROP WINDOW 'IL:BUTTONEVENTFN)
                                              'IL:CHAT.BUTTONFN))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (LIST :HOST (IL:CANONICAL.HOSTNAME (FIRST (IL:WINDOWPROP WINDOW 'IL:CHATHOST)))
                            :REGION
                            (IL:WINDOWREGION WINDOW)))
   :RECONSTITUTER (LAMBDA (DATA)
                         (LET ((WINDOW (IL:CREATEW (GETF DATA :REGION)
                                              "Chat")))

                              (IL:* IL:|;;| "start the chat process")

                              (IL:CHAT (GETF DATA :HOST)
                                     NIL NIL WINDOW)

                              (IL:* IL:|;;| "return the window")

                              WINDOW))
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (PRINT-PEP-TITLE-STRING (FORMAT NIL "Chat ~A" (FIRST (IL:WINDOWPROP (
                                                                                     PLACEMENT-WINDOW
                                                                                      PLACEMENT)
                                                                             'IL:CHATHOST)))
                        REGION DSP)))

(DEF-WINDOW-TYPE :TEXTSTREAM :RECOGNIZER (LAMBDA (WINDOW)
                                                (IL:TYPE? IL:TEXTOBJ (IL:WINDOWPROP WINDOW
                                                                            'IL:TEXTOBJ)))
   :TITLE "Text")

(DEF-WINDOW-TYPE :TEDIT :DEPENDENCIES (:TEXTSTREAM)
   :RECOGNIZER (LAMBDA (WINDOW)
                      (OR (IL:WINDOWPROP WINDOW 'IL:TEDITCREATED)
                          (LET ((TEXTOBJ (IL:WINDOWPROP WINDOW 'IL:TEXTOBJ)))
                               (AND (IL:TYPE? IL:TEXTOBJ TEXTOBJ)
                                    (GETF (IL:FFETCH (IL:TEXTOBJ IL:EDITPROPS) IL:OF TEXTOBJ)
                                          'IL:TEDITCREATEDWINDOW)))))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (LET* ((STREAM (IL:FETCH (IL:TEXTOBJ IL:TXTFILE) IL:OF (IL:TEXTOBJ WINDOW))))
                            (WHEN STREAM
                                `(:REGION ,(EXTERNALIZE-REGION (WINDOW-REGION WINDOW))
                                        :PATHNAME
                                        ,(MAKE-PATHNAME :VERSION :NEWEST :DEFAULTS (PATHNAME STREAM))
                                        ))))
   :RECONSTITUTER (LAMBDA (PROPS)
                         (IL:FILESLOAD (IL:SYSLOAD)
                                IL:TEDIT)
                         (LET* ((PATHNAME (GETF PROPS :PATHNAME))
                                (FOUND (WHEN PATHNAME (PROBE-FILE PATHNAME)))
                                (NAMESTRING (WHEN FOUND (NAMESTRING FOUND)))
                                (WINDOW (IL:\\TEDIT.CREATEW.FROM.REGION (INTERNALIZE-REGION
                                                                         (GETF PROPS :REGION
                                                                               (LIST 0 0 200 200)))
                                               (IF FOUND NAMESTRING))))
                               (IL:TEDIT (IL:OPENSTRINGSTREAM (IF FOUND
                                                                  (INTERN NAMESTRING "INTERLISP")
                                                                  (IF PATHNAME
                                                                      (FORMAT NIL 
                                                                             "Couldn't edit file ~A"
                                                                             (NAMESTRING PATHNAME))))
                                                )
                                      WINDOW NIL (LIST 'IL:TEDITCREATEDWINDOW T 'IL:LEAVETTY T))
                               WINDOW))
   :TITLE "TEdit")

(DEF-WINDOW-TYPE :BUTTON :RECOGNIZER (LAMBDA (WINDOW)
                                            (TYPEP (IL:WINDOWPROP WINDOW 'BUTTON)
                                                   'BUTTON))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (EXTERNALIZE-BUTTON (IL:WINDOWPROP WINDOW 'BUTTON)))
   :RECONSTITUTER (LAMBDA (ARGS)
                         (MAKE-BUTTON-WINDOW (APPLY #'MAKE-BUTTON ARGS)
                                (INTERNALIZE-POSITION (GETF ARGS :POSITION (MAKE-POSITION 0 0)))))
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (LET ((BUTTON (IL:WINDOWPROP (PLACEMENT-WINDOW PLACEMENT)
                                      'BUTTON)))
                      (WHEN BUTTON
                          (PRINT-PEP-TITLE-STRING (TEXT-STRING (BUTTON-TEXT BUTTON))
                                 REGION DSP :NO-TITLE-BAR? T)))))



(IL:* IL:|;;| "the prompt window")

(IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY 

(OR (IL:RECLOOK 'IL:WINDOW)
    (IL:EVAL (IL:SYSRECLOOK1 'IL:WINDOW)))
)

(DEF-WINDOW-TYPE :PROMPT-WINDOW :RECOGNIZER (LAMBDA (WINDOW)
                                                   (EQ WINDOW IL:PROMPTWINDOW))
   :ABSTRACTER (LAMBDA (WINDOW)
                      NIL)
   :RECONSTITUTER (LAMBDA (DATA)
                         IL:PROMPTWINDOW)
   :UPDATER (LAMBDA (PLACEMENT)
                   (LET ((FONT (IL:DSPFONT NIL IL:PROMPTWINDOW)))
                        (PLACEMENT-PROP PLACEMENT :FONT (EXTERNALIZE-FONT FONT)))
                   (PLACEMENT-PROP PLACEMENT :BORDER (IL:WINDOWPROP IL:PROMPTWINDOW 'IL:BORDER))
                   (PLACEMENT-PROP PLACEMENT :SHADE (IL:DSPTEXTURE NIL IL:PROMPTWINDOW))
                   (PLACEMENT-PROP PLACEMENT :TITLE (IL:WINDOWPROP IL:PROMPTWINDOW 'IL:TITLE))
                   (PLACEMENT-PROP PLACEMENT :OPERATION (IL:DSPOPERATION NIL IL:PROMPTWINDOW)))
   :PLACER (LAMBDA (PLACEMENT)
                  (DO* ((CHANGED? NIL)
                        (PROP-LIST (PLACEMENT-PROPS PLACEMENT)
                               (CDDR PROP-LIST))
                        (PROP (CAR PROP-LIST)
                              (CAR PROP-LIST))
                        (VALUE (CADR PROP-LIST)
                               (CADR PROP-LIST)))
                       ((NULL PROP-LIST)
                        (WHEN CHANGED?

                            (IL:* IL:|;;| 
                            "this is how we change the border & title without changing the region")

                            (IL:CLOSEW IL:PROMPTWINDOW)
                            (IL:ADVISEWDS IL:PROMPTWINDOW)
                            (IL:SHOWWFRAME IL:PROMPTWINDOW)
                            (IL:CLEARW IL:PROMPTWINDOW)))
                     (CASE PROP
                         (:BORDER (UNLESS (EQL VALUE (IL:FETCH (IL:WINDOW IL:WBORDER) IL:OF 
                                                                                      IL:PROMPTWINDOW
                                                            ))
                                      (IL:REPLACE (IL:WINDOW IL:WBORDER) IL:OF IL:PROMPTWINDOW
                                         IL:WITH VALUE)
                                      (SETQ CHANGED? T)))
                         (:FONT (LET ((NEW-FONT (IL:FONTCREATE VALUE NIL NIL NIL 'IL:DISPLAY)))
                                     (UNLESS (EQ (IL:DSPFONT NEW-FONT IL:PROMPTWINDOW)
                                                 NEW-FONT)
                                            (SETQ CHANGED? T))))
                         (:OPERATION (UNLESS (EQ VALUE (IL:DSPOPERATION VALUE IL:PROMPTWINDOW))
                                            (SETQ CHANGED? T)))
                         (:SHADE (UNLESS (EQ VALUE (IL:DSPTEXTURE VALUE IL:PROMPTWINDOW))
                                        (SETQ CHANGED? T)))
                         (:TITLE (UNLESS (EQL VALUE (IL:FETCH (IL:WINDOW IL:WTITLE) IL:OF 
                                                                                      IL:PROMPTWINDOW
                                                           ))
                                     (IL:REPLACE (IL:WINDOW IL:WTITLE) IL:OF IL:PROMPTWINDOW
                                        IL:WITH VALUE)
                                     (SETQ CHANGED? T))))))
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (IL:DSPFILL REGION IL:BLACKSHADE 'IL:PAINT DSP)))
(IL:DECLARE\: IL:DOEVAL@COMPILE IL:DONTCOPY

(IL:GLOBALVARS IL:PROMPTWINDOW)
)



(IL:* IL:|;;| "SEdit")


(REINSTALL-ADVICE '(IL:OPENWP :IN SEDIT::GET-CONTEXT)
       :BEFORE
       '((:FIRST (LOCALLY (DECLARE (SPECIAL IL:WINDOW))
                        (UN-HIDE-WINDOW IL:WINDOW)))))

(IL:READVISE (IL:OPENWP :IN SEDIT::GET-CONTEXT))

(DEF-WINDOW-TYPE :SEDIT :RECOGNIZER (LAMBDA (WINDOW)
                                           (IL:EQMEMB 'SEDIT::CLOSEFN (IL:WINDOWPROP WINDOW
                                                                             'IL:CLOSEFN)))
   :TITLE "SEdit")



(IL:* IL:|;;| "File Browser")

(IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY 

(OR (IL:RECLOOK 'IL:FILEBROWSER)
    (IL:EVAL (IL:SYSRECLOOK1 'IL:FILEBROWSER)))

(OR (IL:RECLOOK 'IL:TABLEBROWSER)
    (IL:EVAL (IL:SYSRECLOOK1 'IL:TABLEBROWSER)))
)

(DEF-WINDOW-TYPE :FILE-BROWSER :DEPENDENCIES (:TABLE-BROWSER)
   :RECOGNIZER (LAMBDA (WINDOW)
                      (IL:TYPE? IL:FILEBROWSER (IL:WINDOWPROP WINDOW 'IL:FILEBROWSER)))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (LET ((FB (IL:WINDOWPROP WINDOW 'IL:FILEBROWSER)))
                           (LIST :REGION (EXTERNALIZE-REGION (WINDOW-REGION WINDOW))
                                 :PATTERN
                                 (IL:FETCH (IL:FILEBROWSER IL:PATTERN) IL:OF FB)
                                 :INFO
                                 (IL:FETCH (IL:FILEBROWSER IL:INFOMENUCHOICES) IL:OF FB))))
   :RECONSTITUTER (LAMBDA (PROPS)
                         (LET ((WINDOW (IL:FILEBROWSER (GETF PROPS :PATTERN "*")
                                              (GETF PROPS :INFO)
                                              (LIST 'IL:REGION (INTERNALIZE-REGION (GETF PROPS 
                                                                                         :REGION)))))
                               )

                              (IL:* IL:|;;| "wait for FB to recompute")

                              (IL:BLOCK)
                              (IL:WITH.MONITOR (IL:FETCH (IL:FILEBROWSER IL:FBLOCK)
                                                  IL:OF (IL:WINDOWPROP WINDOW 'IL:FILEBROWSER))
                                     WINDOW)))
   :TITLE "FB"
   :FILES (IL:FILEBROWSER))

(DEF-WINDOW-TYPE :TABLE-BROWSER :RECOGNIZER (LAMBDA (WINDOW)
                                                   (IL:TYPE? IL:TABLEBROWSER (IL:WINDOWPROP
                                                                              WINDOW
                                                                              'IL:TABLEBROWSER))))



(IL:* IL:|;;| "Sketch")

(IL:DECLARE\: IL:EVAL@COMPILE IL:DONTCOPY 

(OR (IL:RECLOOK 'IL:SKETCH)
    (IL:LOADDEF 'IL:SKETCH 'IL:RECORDS 'IL:SKETCH))
)

(DEF-WINDOW-TYPE :SKETCH :RECOGNIZER (LAMBDA (W)
                                            (IL:WINDOWPROP W 'IL:SKETCH))
   :ABSTRACTER (LAMBDA (W)
                      (LIST :FILE (IL:FETCH (IL:SKETCH IL:SKETCHNAME) IL:OF (IL:WINDOWPROP
                                                                             W
                                                                             'IL:SKETCH))
                            :REGION
                            (EXTERNALIZE-REGION (WINDOW-REGION W))))
   :RECONSTITUTER (LAMBDA (DATA)
                         (WHEN (FBOUNDP 'IL:SKETCH)
                             (IL:SKETCH (GETF DATA :FILE)
                                    (IL:CREATEW (INTERNALIZE-REGION (GETF DATA :REGION
                                                                          (LIST 0 0 500 500)))
                                           "Sketch"))))
   :TITLE "Sketch")



(IL:* IL:|;;| "Logo Window")


(DEF-WINDOW-TYPE :LOGO-WINDOW :RECOGNIZER (LAMBDA (WINDOW)
                                                 (EQ (IL:WINDOWPROP WINDOW 'TYPE)
                                                     'IL:LOGOW))
   :ABSTRACTER (LAMBDA (WINDOW)
                      (IL:WINDOWPROP WINDOW 'ABSTRACTION))
   :RECONSTITUTER (LAMBDA (ABSTRACTION)
                         (IL:LOGOW (GETF ABSTRACTION :STRING)
                                NIL
                                (GETF ABSTRACTION :TITLE)
                                (GETF ABSTRACTION :TITLE-LOCATION)))
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (PRINT-PEP-TITLE-STRING "Envos" REGION DSP :NO-TITLE-BAR? T)))

(REINSTALL-ADVICE 'IL:LOGOW :AFTER
       '((:LAST (IL:WINDOWPROP IL:!VALUE 'ABSTRACTION
                       `(,@(WHEN STRING
                               `(:STRING ,STRING))
                         ,@(WHEN IL:TITLE
                               `(:TITLE ,IL:TITLE))
                         ,@(WHEN IL:TITLE-LOCATION
                               `(:TITLE-LOCATION ,IL:TITLE-LOCATION)))))))

(IL:READVISE IL:LOGOW)



(IL:* IL:|;;| "PSW")


(DEF-WINDOW-TYPE :PSW :RECOGNIZER (LAMBDA (WINDOW)
                                         (DECLARE (GLOBAL IL:PROCESS.STATUS.WINDOW))
                                         (EQ WINDOW IL:PROCESS.STATUS.WINDOW))
   :TITLE (LAMBDA (PLACEMENT REGION DSP)
                 (PRINT-PEP-TITLE-STRING "PSW" REGION DSP :NO-TITLE-BAR? T)))
(IL:PUTPROPS IL:ROOMS-MEDLEY-WINDOW-TYPES IL:COPYRIGHT ("Venue & Xerox Corporation" 1988 1990 2020))
(IL:DECLARE\: IL:DONTCOPY
  (IL:FILEMAP (NIL)))
IL:STOP
