Using NEW instead of WC

From Version 11 onwards, it is possible to use ⎕NEW to create Instances of the built-in GUI Classes. The following function illustrates this approach using the Temperature Converter example described previously.

      TempConv;TITLE;TEMP
[1]    TITLE'Temperature Converter'
[2]    TEMP⎕NEW'Form'(('Caption'TITLE)('Posn'(10 10))
                       ('Size'(30 40)))
[3]
[4]    TEMP.(MB⎕NEW'MenuBar')
[5]    TEMP.MB.(M⎕NEW'Menu'(,⊂'Caption' '&Scale'))
[6]    TEMP.MB.M.(C⎕NEW'MenuItem'
                 (('Caption' '&Centigrade')('Checked' 1)))
[7]    TEMP.MB.M.(F⎕NEW'MenuItem'
                 (,⊂('Caption' '&Fahrenheit')))
[8]
[9]    TEMP.(LF⎕NEW'Label'(('Caption' 'Fahrenheit')
                            ('Posn'(10 10))))
[10]   TEMP.(F⎕NEW'Edit'(('Posn'(10 40))('Size'( 20))
                          ('FieldType' 'Numeric')))
[11]
[12]   TEMP.(LC⎕NEW'Label'(('Caption' 'Centigrade')
                            ('Posn'(40 10))))
[13]   TEMP.(C⎕NEW'Edit'(('Posn'(40 40))('Size'( 20))
                          ('FieldType' 'Numeric')))
[14]
[15]   TEMP.(F2C⎕NEW'Button'(('Caption' 'F->C')
                             ('Posn'(10 70))('Default' 1)))
[16]   TEMP.(C2F⎕NEW'Button'(('Caption' 'C->F')
                              ('Posn'(40 70))))
[17]   TEMP.(Q⎕NEW'Button'(('Caption' '&Quit')
                            ('Posn'(70 30))('Size'( 40))
                            ('Cancel' 1)))
[18]
[19]   TEMP.(S⎕NEW'Scroll'(('Range' 101)))
[20]
[21]   TEMP.MB.M.C.onSelect'SET_C'
[22]   TEMP.MB.M.F.onSelect'SET_F'
[23]   TEMP.F2C.onSelect'f2c'
[24]   TEMP.F.onGotFocus'SET_DEF'
[25]   TEMP.C2F.onSelect'c2f'
[26]   TEMP.C.onGotFocus'SET_DEF'
[27]   TEMP.onClose'QUIT'
[28]   TEMP.Q.onSelect'QUIT'
[29]   TEMP.S.onScroll'c2f_scroll'
[30]
[31]   ⎕DQ'TEMP'
     

For brevity, only a couple of the callback functions are shown here.

      f2c
[1]    TEMP.C.Value(TEMP.F.Value-32)×5÷9
     

      c2f_scroll MSG
[1]   ⍝ Callback for Centigrade input via scrollbar
[2]    TEMP.C.Value101-4MSG
[3]    c2f