%D \module
%D   [       file=spec-win,
%D        version=1996.01.25,
%D          title=\CONTEXT\ Special Macros,
%D       subtitle=\YandY's \DVIWINDO,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\unprotect

%D Remark: chained references are not yet implemented.

%D \macros
%D   {dosetupinteraction,
%D    dostartthisislocation,
%D    dostartthisisrealpage,
%D    dostartgotolocation,
%D    dostartgotorealpage,
%D    dostartrunprogram,
%D    usepagedestinations}
%D   {}
%D
%D As told before, these were the first interactive specials.
%D In those days, these kind of specials were still elegant
%D and straightforward.

\startspecials[dviwindo]

\definespecial\dosetupinteraction%
  {\showmessage\m!interactions{21}{dviwindo}}

\definespecial\dostartgotolocation#1#2#3#4#5#6%
  {\bgroup
   \doifelsenothing{#3}
     {\doifelsenothing{#4}
        {\!!doneafalse}
        {\doifparentfileelse{#4}
           {\!!doneafalse}
           {\!!doneatrue}}%
      \setreferencefilename#4\to\DVIfile
      \scratchdimen#1\edef\width {\the\scratchdimen\space}%
      \scratchdimen#2\edef\height{\the\scratchdimen\space}%
      \special
        {button:
           \width \height
           \if!!donea
             file: \DVIfile,
           \fi
           "#5"}}
     {}% nog uri afhandelen
   \egroup}

\definespecial\dostartgotorealpage#1#2#3#4#5%
  {\bgroup
   \doifelsenothing{#3}
     {\doifelsenothing{#4}
        {\!!doneafalse}
        {\doifparentfileelse{#4}
           {\!!doneafalse}
           {\!!doneatrue}}%
      \setreferencefilename#4\to\DVIfile
      \scratchdimen#1\edef\width {\the\scratchdimen\space}%
      \scratchdimen#2\edef\height{\the\scratchdimen\space}%
      \special
        {button:
           \width \height
           \if!!donea
             file: \DVIfile,
           \fi
           \ifnum0#5=0 \else
             page: #5
           \fi}}
     {}% nog uri afhandelen
   \egroup}

\definespecial\dostartthisislocation#1%
  {\special{mark: "#1"}}

\definespecial\dostartthisisrealpage#1%
  {}

\definespecial\dostartrunprogram#1#2#3#4%
  {\bgroup
   \scratchdimen#1\edef\width {\the\scratchdimen\space}%
   \scratchdimen#2\edef\height{\the\scratchdimen\space}%
   \special{button: \width \height launch: #3 #4}%
   \egroup}

\let\doyandyinsertmov = \docommoninsertmov
\let\dotrinsertmov    = \docommoninsertmov

\stopspecials

\protect \endinput
