(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT XCCS)
(FILECREATED " 8-Jul-2021 23:33:42" 
{DSK}<Users>kaplan>Local>medley3.5>git-medley>lispusers>MODERNIZE.;16 23978  

      changes to%:  (FNS MODERNWINDOW)

      previous date%: " 3-Jul-2021 10:32:03" 
{DSK}<Users>kaplan>Local>medley3.5>git-medley>lispusers>MODERNIZE.;15)


(PRETTYCOMPRINT MODERNIZECOMS)

(RPAQQ MODERNIZECOMS
       [
        (* ;; "Externals")

        (COMS (FNS MODERNWINDOW MODERNWINDOW.SETUP UNMODERNWINDOW MODERNWINDOW.UNSETUP)
              (INITVARS (MODERN-WINDOW-MARGIN 25)))
        
        (* ;; "Internals")

        [COMS (FNS MODERNWINDOW.BUTTONEVENTFN NEARTOP NEARESTCORNER INCORNER.REGION)
              
              (* ;; "Behavior for some known window creators")

              (FNS MODERN-ADD-EXEC MODERN-SNAPW TOTOPW.MODERNIZE MODERN-MENUBUTTONFN)
              
              (* ;; "Add some Meta commands")

              (FNS TEDIT.MODERNIZE TEDIT.SELECTALL)
              (DECLARE%: DONTEVAL@LOAD DOCOPY (P 
                                                 (* ;; "Tedit")

                                                 (MODERNWINDOW.SETUP '\TEDIT.BUTTONEVENTFN)
                                                 (TEDIT.MODERNIZE)
                                                 
                                                 (* ;; "Inspector")

                                                 (MODERNWINDOW.SETUP '\ITEM.WINDOW.BUTTON.HANDLER)
                                                 

                                 (* ;; "Commonlisp array inspector.  If you move the main window, the little attached window doesn't move.  But if you move the attached window, it all works.  Needs a special definition.  Shaping doesn't work either")

                                                 (* (MODERNWINDOW.SETUP 'ONEDINSPECT.BUTTONEVENTFN))
                                                 (MODERNWINDOW.SETUP 'ICMLARRAY.TITLECOMMANDFN)
                                                 
                                                 (* ;; "Freemenu")

                                                 (MODERNWINDOW.SETUP '\FM.BUTTONEVENTFN)
                                                 
                                                 (* ;; "SEDIT")

                                                 (MODERNWINDOW.SETUP 'SEDIT::BUTTONEVENTFN)
                                                 
                                                 (* ;; "Debugger")

                                                 (MODERNWINDOW.SETUP 'DBG::DEBUGGER-BUTTON-EVENT)
                                                 
                                                 (* ;; "Snap")

                                                 (MODERNWINDOW.SETUP 'SNAPW 'MODERN-SNAPW)
                                                 
                                                 (* ;; "New execs")

                                                 (MODERNWINDOW.SETUP 'ADD-EXEC 'MODERN-ADD-EXEC)
                                                 
                                                 (* ;; "Existing exec of the load")

                                                 (MODERNWINDOW (PROCESSPROP (TTY.PROCESS)
                                                                      'WINDOW))
                                                 
                                                 (* ;; "Table browser (for filebrowser)")

                                                 (MODERNWINDOW.SETUP 'TB.BUTTONEVENTFN)
                                                 
                                                 (* ;; "Grapher")

                                                 (MODERNWINDOW.SETUP 'APPLYTOSELECTEDNODE)
                                                 
                                                 (* ;; "Sketch")

                                                 (MODERNWINDOW.SETUP 'WB.BUTTON.HANDLER)
                                                 
                                                 (* ;; "Promptwindow")

                                                 (MODERNWINDOW PROMPTWINDOW T)
                                                 
                                                 (* ;; 
                                               "Menus:  Move only and only with title clicks")

                                                 (MODERNWINDOW.SETUP 'MENUBUTTONFN 
                                                        'MODERN-MENUBUTTONFN]
        (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
                                                                             (NLAML)
                                                                             (LAMA MODERN-ADD-EXEC])



(* ;; "Externals")

(DEFINEQ

(MODERNWINDOW
  [LAMBDA (WINDOW ANYWHERE TITLEPROPORTION)             (* ; "Edited  8-Jul-2021 23:33 by rmk:")
                                                            (* ; "Edited  3-Jul-2021 10:31 by rmk:")
                                                            (* ; "Edited 24-Jun-2021 14:52 by rmk:")

    (* ;; "This can be applied to windows that have been created with an unknown or unmodifiable buttoneventfn.  If the window was previously modernized, we restore its original state first, in case it is called here with different parameters")

    (CL:WHEN (AND TITLEPROPORTION (GREATERP TITLEPROPORTION 0.5))
           (ERROR "TITLEPROPORTION cannot be greater than .5"))
    (CL:WHEN (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN)
        (WINDOWPROP WINDOW 'BUTTONEVENTFN (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN))
        (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN NIL))
    (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN (WINDOWPROP WINDOW 'BUTTONEVENTFN))
    (WINDOWPROP WINDOW 'BUTTONEVENTFN (IF (OR ANYWHERE TITLEPROPORTION)
                                          THEN [FUNCTION (LAMBDA (WINDOW)
                                                               (MODERNWINDOW.BUTTONEVENTFN
                                                                WINDOW NIL T ,TITLEPROPORTION]
                                        ELSE (FUNCTION MODERNWINDOW.BUTTONEVENTFN)))
    WINDOW])

(MODERNWINDOW.SETUP
  [LAMBDA (ORIGFN MODERNWINDOWFN ANYWHERE TITLEPROPORTION)
                                                            (* ; "Edited 24-Jun-2021 14:53 by rmk:")

    (* ;; "ORIGFN is either a function that creates windows of a given type (e.g. SNAPW or ADD-EXEC) or the known BUTTONEVENTFN of a class of windows.")

    (* ;; "Moves ORIGNFN to a new name, prefixed with MODERNORIG-.")

    (* ;; "If MODERNWINDOWFN is given, then that replaces the original definition of ORIGFN, and presumably knows how to call the renamed ORIGFN under the right circumstances.  This is typically the case where ORIGFN is a window creator.")

    (* ;; "Otherwise, ORIGFN is taken to be the BUTTONEVENTFN for a class of windows, and its new definition is defaulted to one that maps left-clicks in appropriate areas into modern window operations.  If not in appropriate areas, then the renamed ORIGNFN is called to give the original button behavior.")

    (* ;; "If ANYWHERE, moving will happen for any click not in one of the shaping corners.")

    (* ;; "The renamed function has arguments in addition to WINDOW:  the new name for the original function, if MODERNWINDOFN is provided, and the value specified here for ANYWHERE.")

    (CL:WHEN (GETD ORIGFN)

        (* ;; "If ORIGFN is defined, then presumably the file containing ORIGFN (e.g. sketch) was loaded before MODERNIZE (if we are being called on our load), and we can rearrange things.  But of ORIGFN is not defined, then there is really nothing to do.  The package loader itself should call MODERNWINDOW.SETUP if we are defined when it is loaded. ")

        (* ;; "")

        (CL:WHEN (AND TITLEPROPORTION (GREATERP TITLEPROPORTION 0.5))
               (ERROR "TITLEPROPORTION cannot be greater than .5"))
        (MODERNWINDOW.UNSETUP ORIGFN)
        [LET [RENAMEDORIG (PKGNAME (CL:PACKAGE-NAME (CL:SYMBOL-PACKAGE ORIGFN]

             (* ;; "The renamed version of XCL symbols go into Interlisp, so there is less confusion about accessing it")

             (CL:WHEN (STREQUAL PKGNAME "XEROX-COMMON-LISP")
                    (SETQ PKGNAME "INTERLISP"))
             (SETQ RENAMEDORIG (CL:INTERN (CONCAT 'MODERN-ORIG- ORIGFN)
                                      PKGNAME))
             (MOVD? ORIGFN RENAMEDORIG)
             (IF MODERNWINDOWFN
                 THEN (MOVD MODERNWINDOWFN ORIGFN)
               ELSE (PUTD ORIGFN `(LAMBDA ,(ARGLIST ORIGFN)
                                        (MODERNWINDOW.BUTTONEVENTFN
                                         ,(CL:IF (LISTP (ARGLIST ORIGFN))
                                              (CAR (ARGLIST ORIGFN))
                                              (ARGLIST ORIGFN))
                                         (FUNCTION ,RENAMEDORIG)
                                         ,ANYWHERE
                                         ,TITLEPROPORTION])])

(UNMODERNWINDOW
  [LAMBDA (WINDOW)                                      (* ; "Edited 22-Feb-2021 16:44 by rmk:")

    (* ;; "Restores original window behavior")

    (CL:WHEN (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN)
        (WINDOWPROP WINDOW 'BUTTONEVENTFN (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN))
        (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN NIL))
    WINDOW])

(MODERNWINDOW.UNSETUP
  [LAMBDA (ORIGFN)                                      (* ; "Edited 22-Feb-2021 16:45 by rmk:")
                                                            (* ; "Edited 24-Jun-2020 15:09 by rmk:")

    (* ;; "Moves the renamed original function back to its original name")

    (LET [RENAMEDORIG (PKGNAME (CL:PACKAGE-NAME (CL:SYMBOL-PACKAGE ORIGFN]

         (* ;; "The renamed version of XCL symbols go into Interlisp, so there is less confusion about accessing it")

         (CL:WHEN (STREQUAL PKGNAME "XEROX-COMMON-LISP")
                (SETQ PKGNAME "INTERLISP"))
         (SETQ RENAMEDORIG (CL:INTERN (CONCAT 'MODERN-ORIG- ORIGFN)
                                  PKGNAME))
         (CL:WHEN (GETD RENAMEDORIG)
                (MOVD RENAMEDORIG ORIGFN])
)

(RPAQ? MODERN-WINDOW-MARGIN 25)



(* ;; "Internals")

(DEFINEQ

(MODERNWINDOW.BUTTONEVENTFN
  [LAMBDA (WINDOW ORIGFUNCTION ANYWHERE TITLEPROPORTION)(* ; "Edited 24-Jun-2021 14:49 by rmk:")
    (IF (AND (MOUSESTATE (ONLY LEFT))
                 (EQ LASTKEYBOARD 0))
        THEN (TOTOPW WINDOW)
              (LET [CORNER TOPMARGIN (MAINREGION (WINDOWPROP WINDOW 'REGION))
                          (ATTACHEDREGION (ATTACHEDWINDOWREGION (CENTRALWINDOW WINDOW]

                   (* ;; "If the window has a TOPMARGIN property, that tells us that it does not have a canonical title but may still have a title-like attached window just above the main window.  The TOPMARGIN should be 0 in that case.")

                   (* ;; "This is particularly the case of FILEBROWSER windows, where the the modified ATTACHEDWINDOWTOTOPFN drives the click here. ")

                   (SETQ TOPMARGIN (IF (WINDOWPROP WINDOW 'TOPMARGIN)
                                     ELSEIF (WINDOWPROP WINDOW 'TITLE)
                                       THEN (FONTPROP WindowTitleDisplayStream 'HEIGHT)
                                     ELSE MODERN-WINDOW-MARGIN))
                   (SETQ CORNER (INCORNER.REGION MAINREGION TOPMARGIN))
                   (IF CORNER
                       THEN 

                             (* ;; 
       "The upper corners may be in the title bar, near the side, so test corners before titlebar.")

                             (* ;; "We are in the corner of the main window, so we are reshaping.  But the ghost region should include all of the attached windows, and the starting cursor should be positioned at the corner closest to the selected corner of the main window.")

                             (* ;; "WINDOWREGION includes the attached windows")

                             (LET ((LEFT (FETCH LEFT OF ATTACHEDREGION))
                                   (RIGHT (FETCH RIGHT OF ATTACHEDREGION))
                                   (TOP (FETCH TOP OF ATTACHEDREGION))
                                   (BOTTOM (FETCH BOTTOM OF ATTACHEDREGION))
                                   STARTINGREGION)

                                 (* ;; "\CURSORPOSITION moves the mouse to the tracking corner of the ghost region, in screen coordinates, so that the mouse starts out at the tracking corner of the ghost region, even if there are attached windows (as in the filebrowser) that overhang the corner and the initiating click was at the corner of the mainwindow.")

                                  (CL:UNLESS (EQ 'DON'T (WINDOWPROP WINDOW 'RESHAPEFN))
                                      [SETQ STARTINGREGION
                                       (GETREGION NIL NIL NIL NIL NIL
                                              (SELECTQ CORNER
                                                  (RIGHTBOTTOM (\CURSORPOSITION RIGHT BOTTOM)
                                                               (GETMOUSESTATE)
                                                               (LIST LEFT TOP RIGHT BOTTOM))
                                                  (LEFTBOTTOM (\CURSORPOSITION LEFT BOTTOM)
                                                              (GETMOUSESTATE)
                                                              (LIST RIGHT TOP LEFT BOTTOM))
                                                  (RIGHTTOP (\CURSORPOSITION RIGHT TOP)
                                                            (GETMOUSESTATE)
                                                            (LIST LEFT BOTTOM RIGHT TOP))
                                                  (LEFTTOP (\CURSORPOSITION LEFT TOP)
                                                           (GETMOUSESTATE)
                                                           (LIST RIGHT BOTTOM LEFT TOP))
                                                  (SHOULDNT])
                                  (SHAPEW (CL:IF (MEMB 'SHAPEW (WINDOWPROP WINDOW 'PASSTOMAINCOMS))
                                              (WINDOWPROP WINDOW 'MAINWINDOW)
                                              WINDOW)
                                         STARTINGREGION))
                             T
                     ELSEIF (OR ANYWHERE (NEARTOP MAINREGION TOPMARGIN TITLEPROPORTION))
                       THEN (NEARESTCORNER ATTACHEDREGION)
                             (MOVEW (CL:IF (MEMB 'MOVEW (WINDOWPROP WINDOW 'PASSTOMAINCOMS))
                                        (WINDOWPROP WINDOW 'MAINWINDOW)
                                        WINDOW))
                             T
                     ELSEIF [OR ORIGFUNCTION (SETQ ORIGFUNCTION (WINDOWPROP WINDOW 
                                                                           'PREMODERN-BUTTONEVENTFN]
                       THEN (APPLY* ORIGFUNCTION WINDOW)))
      ELSEIF [OR ORIGFUNCTION (SETQ ORIGFUNCTION (WINDOWPROP WINDOW 'PREMODERN-BUTTONEVENTFN]
        THEN (APPLY* ORIGFUNCTION WINDOW])

(NEARTOP
  [LAMBDA (MAINREGION TOPMARGIN TITLEPROPORTION)        (* ; "Edited 24-Jun-2021 14:51 by rmk:")

    (* ;; "True if the MOUSEY is near the top of MAINREGION.  That means in the title bar for titled windows, otherwise a short distance below the top of the window.  (Could be in the border?)")

    (* ;; "If TITLEPROPORTION is N, then the click must be within that proportion of the window-width from either edge. ")

    (AND (IGREATERP LASTMOUSEY (IDIFFERENCE (FETCH TOP OF MAINREGION)
                                      TOPMARGIN))
         (OR (NOT TITLEPROPORTION)
             (LET ((WIDTH (FETCH WIDTH of MAINREGION))
                   (LEFT (FETCH LEFT OF MAINREGION)))
                  (OR (ILESSP LASTMOUSEX (IPLUS LEFT (TIMES WIDTH TITLEPROPORTION)))
                      (IGREATERP LASTMOUSEX (IPLUS LEFT (TIMES WIDTH (DIFFERENCE 1 TITLEPROPORTION])

(NEARESTCORNER
  [LAMBDA (REGION)                                      (* ; "Edited 14-Feb-2021 21:46 by rmk:")

    (* ;; 
"Moves the cursor to the corner of REGION that is closest to the current LASTMOUSEX AND LASTMOUSEY")

    (\CURSORPOSITION (CL:IF (ILESSP (IDIFFERENCE LASTMOUSEX (FETCH LEFT OF REGION))
                                   (IDIFFERENCE (FETCH RIGHT OF REGION)
                                          LASTMOUSEX))
                         (FETCH LEFT OF REGION)
                         (FETCH RIGHT OF REGION))
           (CL:IF (ILESSP (IDIFFERENCE LASTMOUSEY (FETCH BOTTOM OF REGION))
                         (IDIFFERENCE (FETCH TOP OF REGION)
                                LASTMOUSEY))
               (FETCH BOTTOM OF REGION)
               (FETCH TOP OF REGION))])

(INCORNER.REGION
  [LAMBDA (MAINREGION TOPMARGIN)                        (* ; "Edited 22-Feb-2021 16:27 by rmk:")

    (* ;; "MAINREGION, LASTMOUSEX, LASTMOUSEY in screen coordinates.")

    (* ;; "TOPMARGIN is the height of the titlebar for titled windows, otherwise the margin at the top of the window's content that we regard as the top. ")

    (IF (ILEQ (IABS (IDIFFERENCE LASTMOUSEX (FETCH LEFT OF MAINREGION)))
                  MODERN-WINDOW-MARGIN)
        THEN (IF (NEARTOP MAINREGION TOPMARGIN)
                     THEN 'LEFTTOP
                   ELSEIF (ILEQ LASTMOUSEY (IPLUS MODERN-WINDOW-MARGIN (FETCH BOTTOM
                                                                              OF MAINREGION)))
                     THEN 'LEFTBOTTOM)
      ELSEIF (ILEQ (IABS (IDIFFERENCE LASTMOUSEX (FETCH RIGHT OF MAINREGION)))
                       MODERN-WINDOW-MARGIN)
        THEN (IF (NEARTOP MAINREGION TOPMARGIN)
                     THEN 'RIGHTTOP
                   ELSEIF (ILEQ LASTMOUSEY (IPLUS MODERN-WINDOW-MARGIN (FETCH BOTTOM
                                                                              OF MAINREGION)))
                     THEN 'RIGHTBOTTOM])
)



(* ;; "Behavior for some known window creators")

(DEFINEQ

(MODERN-ADD-EXEC
  [LAMBDA U                                             (* ; "Edited 22-Feb-2021 16:41 by rmk:")
    (LET [(PROC (APPLY (FUNCTION MODERN-ORIG-ADD-EXEC)
                       (FOR N FROM 1 TO U COLLECT (ARG U N]

         (* ;; "For some reason, the window may not be there immediately")

         (DISMISS 100)
         (MODERNWINDOW (PROCESSPROP PROC 'WINDOW))
         PROC])

(MODERN-SNAPW
  [LAMBDA NIL                                           (* ; "Edited 22-Feb-2021 16:41 by rmk:")

    (* ;; "No point in shaping a snap window, just move it.;;")

    (* ;; 
"This changes the creation function (SNAPW), since snap windows otherwise don't have a BUTTONEVENTN")

    (LET ((W (MODERN-ORIG-SNAPW)))
         [WINDOWPROP W 'BUTTONEVENTFN (FUNCTION (LAMBDA (W)
                                                  (TOTOPW W)
                                                  (MOVEW W]
         W])

(TOTOPW.MODERNIZE
  [LAMBDA (WINDOW)                                      (* ; "Edited 22-Feb-2021 16:31 by rmk:")

    (* ;; "This replaces the TOTOPW BUTTONEVENTFN on an attached window where the click is then directed to the MAINWINDOW.")

    (TOTOPW WINDOW)
    (LET ((MAIN (MAINWINDOW WINDOW T)))
         (CL:WHEN MAIN
             (MODERNWINDOW.BUTTONEVENTFN MAIN (WINDOWPROP MAIN 'BUTTONEVENTFN)))])

(MODERN-MENUBUTTONFN
  [LAMBDA (WINDOW)                                      (* ; "Edited 23-May-2021 20:37 by rmk:")

    (* ;; "Replaces the button fn for a Menu window, allowing title clicks to do the move.  Sometimes the title isn't in the window, it's in the menu.")

    (LET (MENU)
         (IF [AND (MOUSESTATE (ONLY LEFT))
                      (EQ LASTKEYBOARD 0)
                      (OR (WINDOWPROP WINDOW 'TITLE)
                          (AND [NULL (CDR (SETQ MENU (MKLIST (WINDOWPROP WINDOW 'MENU]
                               (TYPE? MENU (SETQ MENU (CAR MENU)))
                               (FETCH (MENU TITLE) OF MENU)))
                      (NEARTOP (WINDOWPROP WINDOW 'REGION)
                             (FONTPROP WindowTitleDisplayStream 'HEIGHT]
             THEN (MOVEW WINDOW)
           ELSE (MODERN-ORIG-MENUBUTTONFN WINDOW])
)



(* ;; "Add some Meta commands")

(DEFINEQ

(TEDIT.MODERNIZE
  [LAMBDA NIL                                           (* ; "Edited 24-Jun-2021 20:54 by rmk:")
    (CL:WHEN (GETD '\TEDIT.BUTTONEVENTFN)

        (* ;; "All")

        (TEDIT.SETFUNCTION (CHARCODE "Meta,a")
               (FUNCTION TEDIT.SELECTALL)
               TEDIT.READTABLE)
        (TEDIT.SETFUNCTION (CHARCODE "Meta,A")
               (FUNCTION TEDIT.SELECTALL)
               TEDIT.READTABLE)

        (* ;; "Quit")

        (TEDIT.SETFUNCTION (CHARCODE "Meta,q")
               (FUNCTION TEDIT.QUIT)
               TEDIT.READTABLE)
        (TEDIT.SETFUNCTION (CHARCODE "Meta,Q")
               (FUNCTION TEDIT.QUIT)
               TEDIT.READTABLE))])

(TEDIT.SELECTALL
  [LAMBDA (STREAM TEXTOBJ SEL)                          (* ; "Edited  3-May-2020 17:29 by rmk:")
    (LET [(TEXTSTREAM (TEXTSTREAM (TTY.PROCESS]
         (CL:WHEN TEXTSTREAM
             (TEDIT.SETSEL TEXTSTREAM 0 (ADD1 (fetch TEXTLEN of (TEXTOBJ TEXTSTREAM)))
                    'LEFT))])
)
(DECLARE%: DONTEVAL@LOAD DOCOPY 


(* ;; "Tedit")


(MODERNWINDOW.SETUP '\TEDIT.BUTTONEVENTFN)

(TEDIT.MODERNIZE)


(* ;; "Inspector")


(MODERNWINDOW.SETUP '\ITEM.WINDOW.BUTTON.HANDLER)


(* ;; "Commonlisp array inspector.  If you move the main window, the little attached window doesn't move.  But if you move the attached window, it all works.  Needs a special definition.  Shaping doesn't work either")


                                                             (* (MODERNWINDOW.SETUP
                                                           (QUOTE ONEDINSPECT.BUTTONEVENTFN)))

(MODERNWINDOW.SETUP 'ICMLARRAY.TITLECOMMANDFN)


(* ;; "Freemenu")


(MODERNWINDOW.SETUP '\FM.BUTTONEVENTFN)


(* ;; "SEDIT")


(MODERNWINDOW.SETUP 'SEDIT::BUTTONEVENTFN)


(* ;; "Debugger")


(MODERNWINDOW.SETUP 'DBG::DEBUGGER-BUTTON-EVENT)


(* ;; "Snap")


(MODERNWINDOW.SETUP 'SNAPW 'MODERN-SNAPW)


(* ;; "New execs")


(MODERNWINDOW.SETUP 'ADD-EXEC 'MODERN-ADD-EXEC)


(* ;; "Existing exec of the load")


(MODERNWINDOW (PROCESSPROP (TTY.PROCESS)
                         'WINDOW))


(* ;; "Table browser (for filebrowser)")


(MODERNWINDOW.SETUP 'TB.BUTTONEVENTFN)


(* ;; "Grapher")


(MODERNWINDOW.SETUP 'APPLYTOSELECTEDNODE)


(* ;; "Sketch")


(MODERNWINDOW.SETUP 'WB.BUTTON.HANDLER)


(* ;; "Promptwindow")


(MODERNWINDOW PROMPTWINDOW T)


(* ;; "Menus:  Move only and only with title clicks")


(MODERNWINDOW.SETUP 'MENUBUTTONFN 'MODERN-MENUBUTTONFN)
)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 

(ADDTOVAR NLAMA )

(ADDTOVAR NLAML )

(ADDTOVAR LAMA MODERN-ADD-EXEC)
)
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (4933 10561 (MODERNWINDOW 4943 . 6398) (MODERNWINDOW.SETUP 6400 . 9349) (UNMODERNWINDOW 
9351 . 9745) (MODERNWINDOW.UNSETUP 9747 . 10559)) (10626 18766 (MODERNWINDOW.BUTTONEVENTFN 10636 . 
15663) (NEARTOP 15665 . 16585) (NEARESTCORNER 16587 . 17466) (INCORNER.REGION 17468 . 18764)) (18824 
21146 (MODERN-ADD-EXEC 18834 . 19265) (MODERN-SNAPW 19267 . 19810) (TOTOPW.MODERNIZE 19812 . 20240) (
MODERN-MENUBUTTONFN 20242 . 21144)) (21187 22227 (TEDIT.MODERNIZE 21197 . 21896) (TEDIT.SELECTALL 
21898 . 22225)))))
STOP
