      PROGRAM TWIMP15
C
C        tests the new special icons (wpadni)
C        Needs the Wimp and Utilities libraries
C
C        set up the desk-top
      CALL SETUP
C        go into the wimp loop (without null calls)
      CALL WPLOOP(1)
C        that's all we can do here
      END
C
      SUBROUTINE SETUP
C        here we make the windows and icons
C        keep their handles in common
      COMMON/HANDLE/ IWH
      CHARACTER*20 TEXT(0:13),TITLE
      DIMENSION IYSUB(0:13)
      LOGICAL SET
      DATA TEXT/'text only','slab out','slab in','ridge','channel',
     +    'action','default action','editable','option','radio1',
     +    'radio2',' ',' ',' '/
C            icon types 3,4,6,7 are 64 high, the rest are 48.
      DATA IYSUB/64,64,64,80,80,64,80,80,64,64,64,64,64,64/
      SAVE TEXT,TITLE
C        initialise the wimp
      CALL WPINIT('TWIMP15')
C        make the window, 
C        and without a 'back' icon
      CALL WPCHWF(24,.FALSE.)
      CALL WPCHWF(4,.TRUE.)
      TITLE = 'Special icons'//CHAR(0)
      CALL WPMKNW(400,1000,200,0,400,800,0,0,TITLE,IWH)
C        make the icons
      IY = 0
      II = 0
      DO 10 I=0,13
        IY = IY - IYSUB(I)
        LTXT = LNBLNK(TEXT(I))+1
        TEXT(I)(LTXT:LTXT)=CHAR(0)
        IF(I.NE.9.AND.I.NE.10) THEN
          CALL WPADNI(IWH,16,IY,II,TEXT(I),ICH)
          II = II + 1
        ELSE
          CALL WPADNI(IWH,16,IY,109,TEXT(I),ICH)
          IF(I.EQ.10) II = II + 1
        ENDIF
        IF(ICH.NE.I) CALL WPERR(1,'unexpected icon handle',IDUM)
   10 CONTINUE
C        open the window
      CALL WPOPNW(IWH)
      RETURN
      END
C
      SUBROUTINE WQCLIK(IWHAN,ICONH,IX,IY,IBUTT)
      LOGICAL SET
      IF(ICONH.GE.0) CALL BEEP
C             flip the state of the sprites for demonstration
      IF(ICONH.GE.11) THEN
        CALL WPGTIF(IWHAN,ICONH,21,SET)
        CALL WPSTIF(IWHAN,ICONH,21,.NOT.SET)
      ENDIF
      RETURN
      END
C
      SUBROUTINE WQCLSW(IWHAN)
      COMMON/HANDLE/ IWH
      IF(IWH.EQ.IWHAN) CALL WPQUIT
      RETURN
      END
