Module: _getsys      Library: Clipper 5.3


This module contains the following functions and procedures:



Note: Because this is raw decompiler output, the code is closer
to that seen in a .PPO file, rather than a .PRG file. In other
words, you must allow for the preprocessor conversions normally 
performed based on the contents of STD.CH and other .CH files
 
#include "common.ch"
#include "inkey.ch"

//-----------------------------------------------------------------
//  file-wide static variables
//
static Static1, Static2:= .F., Static3, Static4, Static5, Static6, ;
   Static7, Static8, Static9, Static10, Static11, Static12, ;
   Static13, Static14 := Nil, Static15:= 0

//---------------------------------------------------[top]-
//  GETACTIVE( Arg1 )
//
function GETACTIVE( Arg1 )

   local Local1 := Static8
   if ( PCount() > 0 )
      Static8 := Arg1
   endif
   return Local1

//---------------------------------------------------[top]-
//  ACCELERATO( Arg1, Arg2 )
//
static function ACCELERATO( Arg1, Arg2 )

   local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ;
      Local8
   do case
   case Arg2 >= 272 .AND. Arg2 <= 281
      Local4 := SubStr("qwertyuiop", Arg2 - 272 + 1, 1)
   case Arg2 >= 286 .AND. Arg2 <= 294
      Local4 := SubStr("asdfghjkl", Arg2 - 286 + 1, 1)
   case Arg2 >= 300 .AND. Arg2 <= 306
      Local4 := SubStr("zxcvbnm", Arg2 - 300 + 1, 1)
   case Arg2 >= 376 .AND. Arg2 <= 385
      Local4 := SubStr("1234567890", Arg2 - 376 + 1, 1)
   otherwise
      return 0
   endcase
   Local6 := Static13 + 1
   Local7 := Len(Arg1)
   for Local8 := 1 to 2
      for Local1 := Local6 to Local7
         Local2 := Arg1[ Local1 ]
         if ( ISOBJECT( Local2:control() ) .AND. ;
               Local2:control():classname() != "TBROWSE" )
            Local5 := Local2:control():caption()
         else
            Local5 := Local2:caption()
         endif
         if ( ( Local3 := At("&", Local5) ) == 0 )
         elseif ( Local3 == Len(Local5) )
         elseif ( Lower(SubStr(Local5, Local3 + 1, 1)) == Local4 )
            if ( !getprevali(Arg1[ Local1 ]) )
               return 0
            endif
            return Local1
         endif
      next
      Local6 := 1
      Local7 := Static13 - 1
   next
   return 0

//---------------------------------------------------[top]-
//  CLEARGETSY
//
static function CLEARGETSY

   local Local1[12]
   Local1[ 1 ] := Static3
   Local1[ 2 ] := Static4
   Local1[ 3 ] := Static5
   Local1[ 4 ] := Static6
   Local1[ 5 ] := Static7
   Local1[ 6 ] := getactive(Nil)
   Local1[ 7 ] := readvar("")
   Local1[ 8 ] := Static9
   Local1[ 9 ] := Static10
   Local1[ 10 ] := Static11
   Local1[ 11 ] := Static12
   Local1[ 12 ] := Static13
   Static3 := .F.
   Static4 := .F.
   Static5 := .F.
   Static6 := 0
   Static7 := 0
   Static9 := ""
   Static10 := 0
   Static2 := .F.
   Static11 := 0
   Static12 := 0
   Static13 := 0
   return Local1

//---------------------------------------------------[top]-
//  DATEMSG
//
static procedure DATEMSG

   local Local1, Local2
   if ( Set(_SET_SCOREBOARD) )
      Local1 := Row()
      Local2 := Col()
      SetPos(0, 60)
      dispout(nationmsg(9))
      SetPos(Local1, Local2)
      do while ( nextkey() == 0 )
      enddo
      SetPos(0, 60)
      dispout(Len(nationmsg(9)))
      SetPos(Local1, Local2)
   endif
   return

//---------------------------------------------------[top]-
//  GETAPPLYKE( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 )
//
procedure GETAPPLYKE( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8 )

   local Local1, Local2, Local3, Local4, Local5, Local6
   if ( !( ISNIL( Local2 := SetKey(Arg2) ) ) )
      getdosetke(Local2, Arg1)
   else
      do case
      case !( ISNIL( Arg3 ) ) .AND. ( Local6 := accelerato(Arg3, ;
            Arg2) ) != 0
         Arg1:exitstate(9)
         Static11 := Local6
      case ISNIL( Arg4 )
      case ( Local6 := Arg4:getaccel(Arg2) ) != 0
         menumodal(Arg4, Local6, Arg5, Arg6, Arg7, Arg8)
         Arg2 := 0
      case isshortcut(Arg4, Arg2)
         Arg2 := 0
      endcase
      do case
      case Arg2 == 5
         Arg1:exitstate(1)
      case Arg2 == 271
         Arg1:exitstate(1)
      case Arg2 == 24
         Arg1:exitstate(2)
      case Arg2 == 9
         Arg1:exitstate(2)
      case Arg2 == 13
         Arg1:exitstate(5)
      case Arg2 == 27
         if ( Set(_SET_ESCAPE) )
            Arg1:undo()
            Arg1:exitstate(7)
         endif
      case Arg2 == 18
         Arg1:exitstate(6)
      case Arg2 == 3
         Arg1:exitstate(6)
      case Arg2 == 29
         Arg1:exitstate(3)
      case Arg2 == 23
         Arg1:exitstate(6)
      case Arg2 == 1002 .OR. Arg2 == 1006
         Local3 := mrow()
         Local4 := mcol()
         if ( !( ISOBJECT( Arg4 ) ) )
            Local5 := 0
         elseif ( !( Arg4:classname() == "TOPBARMENU" ) )
            Local5 := 0
         elseif ( ( Local5 := Arg4:hittest(Local3, Local4) ) != 0 )
            menumodal(Arg4, Local5, Arg5, Arg6, Arg7, Arg8)
            Local5 := 1
         endif
         do case
         case Local5 != 0
         case ( Local5 := Arg1:hittest(Local3, Local4) ) == -2049
            do while ( Arg1:col() + Arg1:pos() - 1 > Local4 )
               Arg1:left()
            enddo
            do while ( Arg1:col() + Arg1:pos() - 1 < Local4 )
               Arg1:right()
            enddo
         case !( Local5 == 0 )
         case !( ISNIL( Arg3 ) ) .AND. hittest(Arg3, Local3, Local4)
            Arg1:exitstate(10)
         otherwise
            Arg1:exitstate(0)
         endcase
      case Arg2 == 21
         Arg1:undo()
      case Arg2 == 1
         Arg1:home()
      case Arg2 == 6
         Arg1:end()
      case Arg2 == 4
         Arg1:right()
      case Arg2 == 19
         Arg1:left()
      case Arg2 == 2
         Arg1:wordright()
      case Arg2 == 26
         Arg1:wordleft()
      case Arg2 == 8
         Arg1:backspace()
      case Arg2 == 7
         Arg1:delete()
      case Arg2 == 20
         Arg1:delwordrig()
      case Arg2 == 25
         Arg1:delend()
      case Arg2 == 127
         Arg1:delwordlef()
      case Arg2 == 22
         Set(_SET_INSERT, !Set(_SET_INSERT))
         showscoreb()
      case Arg2 >= 32 .AND. Arg2 <= 255
         Local1 := Chr(Arg2)
         if ( Arg1:type() == "N" .AND. ( Local1 == "." .OR. Local1 ;
               == "," ) )
            Arg1:todecpos()
         else
            if ( Set(_SET_INSERT) )
               Arg1:insert(Local1)
            else
               Arg1:overstrike(Local1)
            endif
            if ( Arg1:typeout() )
               if ( Set(_SET_BELL) )
                  ?? ""
               endif
               if ( !Set(_SET_CONFIRM) )
                  Arg1:exitstate(5)
               endif
            endif
         endif
      endcase
      return
   endif

//---------------------------------------------------[top]-
//  GETDOSETKE( Arg1, Arg2 )
//
procedure GETDOSETKE( Arg1, Arg2 )

   local Local1
   if ( Arg2:changed() )
      Arg2:assign()
      Static2 := .T.
   endif
   Local1 := Static2
   eval(Arg1, Static9, Static10, readvar())
   showscoreb()
   Arg2:updatebuff()
   Static2 := Local1
   if ( Static3 )
      Arg2:exitstate(7)
   endif
   return

//---------------------------------------------------[top]-
//  GETPOSTVAL( Arg1 )
//
function GETPOSTVAL( Arg1 )

   local Local1, Local2 := .T.
   if ( Arg1:exitstate() == 7 )
      return .T.
   endif
   if ( Arg1:baddate() )
      Arg1:home()
      datemsg()
      showscoreb()
      return .F.
   endif
   if ( Arg1:changed() )
      Arg1:assign()
      Static2 := .T.
   endif
   Arg1:reset()
   if ( !( ISNIL( Arg1:postblock() ) ) )
      Local1 := Static2
      SetPos(Arg1:row(), Arg1:col() + Len(Arg1:buffer()))
      Local2 := eval(Arg1:postblock(), Arg1)
      SetPos(Arg1:row(), Arg1:col())
      showscoreb()
      Arg1:updatebuff()
      Static2 := Local1
      if ( Static3 )
         Arg1:exitstate(7)
         Local2 := .T.
      endif
   endif
   return Local2

//---------------------------------------------------[top]-
//  GETPREVALI( Arg1 )
//
function GETPREVALI( Arg1 )

   local Local1, Local2 := .T.
   if ( !( ISNIL( Arg1:preblock() ) ) )
      Local1 := Static2
      Local2 := eval(Arg1:preblock(), Arg1)
      Arg1:display()
      showscoreb()
      Static2 := Local1
   endif
   if ( Static3 )
      Local2 := .F.
      Arg1:exitstate(7)
   elseif ( !Local2 )
      Arg1:exitstate(8)
   else
      Arg1:exitstate(0)
   endif
   return Local2

//---------------------------------------------------[top]-
//  GETREADER( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )
//
procedure GETREADER( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )

   if ( getprevali(Arg1) )
      Static12 := 0
      Arg1:setfocus()
      do while ( Arg1:exitstate() == 0 .AND. !Static3 )
         if ( Arg1:typeout() )
            Arg1:exitstate(5)
         endif
         do while ( Arg1:exitstate() == 0 .AND. !Static3 )
            getapplyke(Arg1, InKey(0), Arg2, Arg3, Arg4, Arg5, Arg6, ;
               Arg7)
         enddo
         if ( !getpostval(Arg1) )
            Arg1:exitstate(0)
         endif
      enddo
      Arg1:killfocus()
   endif
   return

//---------------------------------------------------[top]-
//  GETREADVAR( Arg1 )
//
static function GETREADVAR( Arg1 )

   local Local1 := Upper(Arg1:name()), Local2
   if ( !( ISNIL( Arg1:subscript() ) ) )
      for Local2 := 1 to Len(Arg1:subscript())
         Local1 := Local1 + ( "[" + ;
            LTrim(Str(Arg1:subscript()[ Local2 ])) + "]" )
      next
   endif
   return Local1

//---------------------------------------------------[top]-
//  GUIAPPLYKE( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, ;
//
procedure GUIAPPLYKE( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, ;
   Arg8, Arg9 )

   local Local1, Local2, Local3, Local4, Local5, Local6, Local7, ;
      Local8
   if ( !( ISNIL( Local2 := SetKey(Arg4) ) ) )
      getdosetke(Local2, Arg1)
   else
      do case
      case ( Local7 := accelerato(Arg3, Arg4) ) != 0
         Arg1:exitstate(9)
         Static11 := Local7
      case ISNIL( Arg5 )
      case ( Local7 := Arg5:getaccel(Arg4) ) != 0
         menumodal(Arg5, Local7, Arg6, Arg7, Arg8, Arg9)
         Arg4 := 0
      case isshortcut(Arg5, Arg4)
         Arg4 := 0
      endcase
      do case
      case Arg4 == 0
      case ( Local6 := Arg2:classname() ) == "RADIOGROUP"
         if ( Arg4 == 5 )
            Arg2:previtem()
            Arg4 := 0
         elseif ( Arg4 == 24 )
            Arg2:nextitem()
            Arg4 := 0
         elseif ( ( Local7 := Arg2:getaccel(Arg4) ) != 0 )
            Arg2:select(Local7)
         endif
      case Local6 == "CHECKBOX"
         if ( Arg4 == 32 )
            Arg2:select()
         endif
      case Local6 == "PUSHBUTTON"
         if ( Arg4 == 32 )
            Arg2:select(32)
         elseif ( Arg4 == 13 )
            Arg2:select()
            Arg4 := 0
         endif
      case Local6 == "LISTBOX"
         do case
         case Arg4 == 5
            Arg2:previtem()
            Arg4 := 0
         case Arg4 == 24
            Arg2:nextitem()
            Arg4 := 0
         case Arg4 == 32
            if ( !Arg2:dropdown() )
            elseif ( !Arg2:isopen() )
               Arg2:open()
               Arg4 := 0
            endif
         case ( Local5 := Arg2:findtext(Chr(Arg4), Arg2:value() + 1, ;
               .F., .F.) ) != 0
            Arg2:select(Local5)
         endcase
      endcase
      do case
      case Arg4 == 5
         Arg1:exitstate(1)
      case Arg4 == 271
         Arg1:exitstate(1)
      case Arg4 == 24
         Arg1:exitstate(2)
      case Arg4 == 9
         Arg1:exitstate(2)
      case Arg4 == 13
         Arg1:exitstate(5)
      case Arg4 == 27
         if ( Set(_SET_ESCAPE) )
            Arg1:exitstate(7)
         endif
      case Arg4 == 18
         Arg1:exitstate(6)
      case Arg4 == 3
         Arg1:exitstate(6)
      case Arg4 == 29
         Arg1:exitstate(3)
      case Arg4 == 23
         Arg1:exitstate(6)
      case Arg4 == 1002 .OR. Arg4 == 1006
         Local3 := mrow()
         Local4 := mcol()
         if ( !( ISOBJECT( Arg5 ) ) )
            Local5 := 0
         elseif ( !( Arg5:classname() == "TOPBARMENU" ) )
            Local5 := 0
         elseif ( ( Local5 := Arg5:hittest(Local3, Local4) ) != 0 )
            menumodal(Arg5, Local5, Arg6, Arg7, Arg8, Arg9)
            Local5 := 1
         endif
         Local8 := .T.
         do case
         case Local5 != 0
         case ( Local5 := Arg2:hittest(Local3, Local4) ) == 0
            if ( hittest(Arg3, Local3, Local4) )
               Arg1:exitstate(10)
            else
               Arg1:exitstate(0)
            endif
         case Local5 >= -2049
            Arg2:select(Local5)
         case Local5 == -4097
            if ( !Arg2:isopen() )
               Arg2:open()
               Local8 := .F.
            endif
         case Local5 >= -3077 .AND. Local5 <= -3073
            Arg2:scroll(Local5)
            Local8 := .F.
         endcase
         do case
         case !Local8
         case !( Local6 == "LISTBOX" )
         case !Arg2:dropdown()
         case Arg2:isopen()
            Arg2:close()
            Arg2:display()
         endcase
      endcase
      return
   endif

//---------------------------------------------------[top]-
//  GUIPOSTVAL( Arg1, Arg2 )
//
function GUIPOSTVAL( Arg1, Arg2 )

   local Local1, Local2 := .T., Local3, Local4
   if ( Arg1:exitstate() == 7 )
      return .T.
   endif
   if ( !( Arg2:classname() == "TBROWSE" ) )
      Local3 := Arg1:varget()
      Local4 := Arg2:buffer()
   endif
   if ( !( Local3 == Local4 ) )
      Arg1:varput(Local4)
      Static2 := .T.
   endif
   if ( !( ISNIL( Arg1:postblock() ) ) )
      Local1 := Static2
      Local2 := eval(Arg1:postblock(), Arg1)
      SetPos(Arg1:row(), Arg1:col())
      showscoreb()
      if ( !( Arg2:classname() == "TBROWSE" ) )
         Arg2:select(Arg1:varget())
      endif
      Static2 := Local1
      if ( Static3 )
         Arg1:exitstate(7)
         Local2 := .T.
      endif
   endif
   return Local2

//---------------------------------------------------[top]-
//  GUIPREVALI( Arg1, Arg2 )
//
function GUIPREVALI( Arg1, Arg2 )

   local Local1, Local2 := .T.
   if ( !( ISNIL( Arg1:preblock() ) ) )
      Local1 := Static2
      Local2 := eval(Arg1:preblock(), Arg1)
      if ( !( Arg2:classname() == "TBROWSE" ) )
         Arg2:display()
      endif
      showscoreb()
      Static2 := Local1
   endif
   if ( Static3 )
      Local2 := .F.
      Arg1:exitstate(7)
   elseif ( !Local2 )
      Arg1:exitstate(8)
   else
      Arg1:exitstate(0)
   endif
   return Local2

//---------------------------------------------------[top]-
//  GUIREADER( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )
//
procedure GUIREADER( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )

   local Local1
   if ( !guiprevali(Arg1, Arg1:control()) )
   elseif ( ISOBJECT( Arg1:control() ) )
      Local1 := Arg1:control()
      Local1:select(Arg1:varget())
      Local1:setfocus()
      do case
      case Static12 > 0
         Local1:select(Static12)
      case Static12 == -1025
         Local1:select()
      case Static12 == -2049
         Local1:select(1002)
      case Static12 == -4097
         Local1:open()
      case Static12 >= -3077 .AND. Static12 <= -3073
         Local1:scroll(Static12)
      endcase
      Static12 := 0
      do while ( Arg1:exitstate() == 0 .AND. !Static3 )
         if ( Local1:typeout() )
            Arg1:exitstate(5)
         endif
         do while ( Arg1:exitstate() == 0 .AND. !Static3 )
            guiapplyke(Arg1, Local1, Arg2, InKey(0), Arg3, Arg4, ;
               Arg5, Arg6, Arg7)
         enddo
         if ( !guipostval(Arg1, Local1) )
            Arg1:exitstate(0)
         endif
      enddo
      Arg1:varput(Local1:buffer())
      Local1:killfocus()
      if ( !( Local1:classname() == "LISTBOX" ) )
      elseif ( !Local1:dropdown() )
      elseif ( Local1:isopen() )
         Local1:close()
      endif
   endif
   return

//---------------------------------------------------[top]-
//  HITTEST( Arg1, Arg2, Arg3 )
//
static function HITTEST( Arg1, Arg2, Arg3 )

   local Local1, Local2
   Static11 := 0
   Local2 := Len(Arg1)
   for Local1 := 1 to Local2
      if ( ( Static12 := Arg1[ Local1 ]:hittest(Arg2, Arg3) ) != 0 )
         Static11 := Local1
         exit
      endif
   next
   if ( Static11 == 0 )
   elseif ( ValType(Arg1[ Static11 ]:control()) != "O" )
   elseif ( !guiprevali(Arg1[ Static11 ], ;
         Arg1[ Static11 ]:control()) )
      Static11 := 0
   endif
   if ( Static11 == 0 )
   elseif ( !getprevali(Arg1[ Static11 ]) )
      Static11 := 0
   endif
   return Static11 != 0

//---------------------------------------------------[top]-
//  POSTACTIVE( Arg1 )
//
static procedure POSTACTIVE( Arg1 )

   getactive(Arg1)
   readvar(getreadvar(Arg1))
   showscoreb()
   return

//---------------------------------------------------[top]-
//  RANGECHECK( Arg1, Arg2, Arg3, Arg4 )
//
function RANGECHECK( Arg1, Arg2, Arg3, Arg4 )

   local Local1, Local2, Local3, Local4
   if ( !Arg1:changed() )
      return .T.
   endif
   Local4 := Arg1:varget()
   if ( Local4 >= Arg3 .AND. Local4 <= Arg4 )
      return .T.
   endif
   if ( Set(_SET_SCOREBOARD) )
      Local1 := nationmsg(10) + LTrim(Transform(Arg3, "")) + ;
         nationmsg(11) + LTrim(Transform(Arg4, ""))
      if ( Len(Local1) > MaxCol() )
         Local1 := SubStr(Local1, 1, MaxCol())
      endif
      Local2 := Row()
      Local3 := Col()
      SetPos(0, Min(60, MaxCol() - Len(Local1)))
      dispout(Local1)
      SetPos(Local2, Local3)
      do while ( nextkey() == 0 )
      enddo
      SetPos(0, Min(60, MaxCol() - Len(Local1)))
      dispout(Space(Len(Local1)))
      SetPos(Local2, Local3)
   endif
   return .F.

//---------------------------------------------------[top]-
//  READEXIT( Arg1 )
//
function READEXIT( Arg1 )

   return Set(_SET_EXIT, Arg1)

//---------------------------------------------------[top]-
//  READFORMAT( Arg1 )
//
function READFORMAT( Arg1 )

   local Local1 := Static1
   if ( PCount() > 0 )
      Static1 := Arg1
   endif
   return Local1

//---------------------------------------------------[top]-
//  READINSERT( Arg1 )
//
function READINSERT( Arg1 )

   return Set(_SET_INSERT, Arg1)

//---------------------------------------------------[top]-
//  READKILL( Arg1 )
//
function READKILL( Arg1 )

   local Local1 := Static3
   if ( PCount() > 0 )
      Static3 := Arg1
   endif
   return Local1

//---------------------------------------------------[top]-
//  READMODAL( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )
//
function READMODAL( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )

   local Local1, Local2, Local3, Local4, Local5, Local6, Local7 := ;
      Nil, Local8, Local9, Local10, Local11, Local12
   if ( ISBLOCK( Static1 ) )
      eval(Static1)
   endif
   if ( Empty(Arg1) )
      SetPos(MaxRow() - 1, 0)
      return .F.
   endif
   Local2 := cleargetsy()
   Static9 := procname(1)
   Static10 := procline(1)
   if ( ISNUMBER( Arg2 ) )
      Static13 := settle(Arg1, Arg2, .T.)
   else
      Static13 := settle(Arg1, 0, .T.)
   endif
   if ( !( ISNUMBER( Arg4 ) ) )
      Local4 := .F.
   elseif ( !( ISNUMBER( Arg5 ) ) )
      Local4 := .F.
   elseif ( !( ISNUMBER( Arg6 ) ) )
      Local4 := .F.
   else
      Local4 := .T.
      Local3 := SaveScreen(Arg4, Arg5, Arg4, Arg6)
      Local6 := ISCHARACTER( Arg7 )
   endif
   Static11 := 0
   Static12 := 0
   do while ( !( Static13 == 0 ) )
      Local1 := Arg1[ Static13 ]
      postactive(Local1)
      if ( Local4 )
         if ( !_isgraphic() )
            if ( Local6 )
               Local5 := SetColor(Arg7)
            endif
            if ( ISOBJECT( Local1:control() ) )
               @ Arg4, Arg5 say padc(Local1:control():message(), ;
                  Arg6 - Arg5 + 1)
            else
               @ Arg4, Arg5 say padc(Local1:message(), Arg6 - Arg5 + ;
                  1)
            endif
            if ( Local6 )
               set color to (Local5)
            endif
         else
            if ( !Local6 )
               Arg7 := SetColor()
            endif
            Local8 := _getnumcol(Arg7)
            Local10 := At("/", Arg7)
            Local9 := _getnumcol(SubStr(Arg7, Local10 + 1, Len(Arg7) ;
               - Local10))
            if ( ISOBJECT( Local1:control() ) )
               Local7 := Local1:control():message()
            else
               Local7 := Local1:message()
            endif
            Local11 := Int(( Arg6 - Arg5 ) / 2) - Int(Len(Local7) / ;
               2) + 1
            Local12 := gmode()[ 5 ]
            if ( Static14 != Nil .AND. ( Static14 != Local7 .OR. ;
                  Len(Local7) == 0 ) )
               gwriteat(Static15 * 8, Arg4 * Local12, Static14, ;
                  Local9, -1)
               gframe(Arg5 * 8, Arg4 * Local12 - 1, Arg6 * 8, ( Arg4 ;
                  + 1 ) * Local12 + 1, Local9, 8, 15, 2, 2, 2, 2, ;
                  -4, .T.)
            endif
            if ( Static14 != Local7 .OR. Len(Local7) == 0 )
               gframe(Arg5 * 8, Arg4 * Local12 - 1, Arg6 * 8, ( Arg4 ;
                  + 1 ) * Local12 + 1, Local9, 8, 15, 2, 2, 2, 2, ;
                  -4, .T.)
               gwriteat(Local11 * 8, Arg4 * Local12, Local7, Local8, ;
                  -1)
            endif
            Static14 := Local7
            Static15 := Local11
         endif
      endif
      if ( ISBLOCK( Local1:reader() ) )
         eval(Local1:reader(), Local1, Arg1, Arg3, Arg4, Arg5, Arg6, ;
            Arg7)
      else
         getreader(Local1, Arg1, Arg3, Arg4, Arg5, Arg6, Arg7)
      endif
      Static13 := settle(Arg1, Static13, .F.)
   enddo
   if ( Local4 )
      RestScreen(Arg4, Arg5, Arg4, Arg6, Local3)
   endif
   restoreget(Local2)
   SetPos(MaxRow() - 1, 0)
   return Static2

//---------------------------------------------------[top]-
//  READUPDATE( Arg1 )
//
function READUPDATE( Arg1 )

   local Local1 := Static2
   if ( PCount() > 0 )
      Static2 := Arg1
   endif
   return Local1

//---------------------------------------------------[top]-
//  RESTOREGET( Arg1 )
//
static procedure RESTOREGET( Arg1 )

   Static3 := Arg1[ 1 ]
   Static4 := Arg1[ 2 ]
   Static5 := Arg1[ 3 ]
   Static6 := Arg1[ 4 ]
   Static7 := Arg1[ 5 ]
   Static11 := Arg1[ 10 ]
   Static12 := Arg1[ 11 ]
   Static13 := Arg1[ 12 ]
   getactive(Arg1[ 6 ])
   readvar(Arg1[ 7 ])
   Static9 := Arg1[ 8 ]
   Static10 := Arg1[ 9 ]
   return

//---------------------------------------------------[top]-
//  SETTLE( Arg1, Arg2, Arg3 )
//
static function SETTLE( Arg1, Arg2, Arg3 )

   local Local1
   if ( Arg2 == 0 )
      Local1 := 2
   elseif ( Arg2 > 0 .AND. Arg3 )
      Local1 := 0
   else
      Local1 := Arg1[ Arg2 ]:exitstate()
   endif
   if ( Local1 == 7 .OR. Local1 == 6 )
      return 0
   endif
   if ( !( Local1 == 8 ) )
      Static7 := Arg2
      Static4 := .F.
      Static5 := .F.
   else
      Local1 := Static6
   endif
   do case
   case Local1 == 1
      Arg2--
   case Local1 == 2
      Arg2++
   case Local1 == 3
      Arg2 := 1
      Static4 := .T.
      Local1 := 2
   case Local1 == 4
      Arg2 := Len(Arg1)
      Static5 := .T.
      Local1 := 1
   case Local1 == 5
      Arg2++
   case Local1 == 9
      return Static11
   case Local1 == 10
      return Static11
   endcase
   if ( Arg2 == 0 )
      if ( !readexit() .AND. !Static5 )
         Static4 := .T.
         Arg2 := Static7
         Local1 := 2
      endif
   elseif ( Arg2 == Len(Arg1) + 1 )
      if ( !readexit() .AND. !( Local1 == 5 ) .AND. !Static4 )
         Static5 := .T.
         Arg2 := Static7
         Local1 := 1
      else
         Arg2 := 0
      endif
   endif
   Static6 := Local1
   if ( !( Arg2 == 0 ) )
      Arg1[ Arg2 ]:exitstate(Local1)
   endif
   return Arg2

//---------------------------------------------------[top]-
//  SHOWSCOREB
//
static procedure SHOWSCOREB

   local Local1, Local2
   if ( Set(_SET_SCOREBOARD) )
      Local1 := Row()
      Local2 := Col()
      SetPos(0, 60)
      dispout(iif( Set(_SET_INSERT), nationmsg(7), nationmsg(8) ))
      SetPos(Local1, Local2)
   endif
   return

//---------------------------------------------------[top]-
//  TBAPPLYKEY( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, ;
//
procedure TBAPPLYKEY( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, ;
   Arg8, Arg9 )

   local Local1, Local2, Local3, Local4, Local5, Local6
   if ( !( ISNIL( Local2 := SetKey(Arg4) ) ) )
      getdosetke(Local2, Arg1)
   else
      do case
      case ( Local6 := accelerato(Arg3, Arg4) ) != 0
         Arg1:exitstate(9)
         Static11 := Local6
      case ISNIL( Arg5 )
      case ( Local6 := Arg5:getaccel(Arg4) ) != 0
         menumodal(Arg5, Local6, Arg6, Arg7, Arg8, Arg9)
         Arg4 := 0
      case isshortcut(Arg5, Arg4)
         Arg4 := 0
      endcase
      do case
      case Arg4 == 9
         Arg1:exitstate(2)
      case Arg4 == 271
         Arg1:exitstate(1)
      case Arg4 == 13
         Arg1:exitstate(5)
      case Arg4 == 27
         if ( Set(_SET_ESCAPE) )
            Arg1:exitstate(7)
         endif
      case Arg4 == 23
         Arg1:exitstate(6)
      case Arg4 == 1002 .OR. Arg4 == 1006
         Local3 := mrow()
         Local4 := mcol()
         if ( !( ISOBJECT( Arg5 ) ) )
            Local5 := 0
         elseif ( !( Arg5:classname() == "TOPBARMENU" ) )
            Local5 := 0
         elseif ( ( Local5 := Arg5:hittest(Local3, Local4) ) != 0 )
            menumodal(Arg5, Local5, Arg6, Arg7, Arg8, Arg9)
            Local5 := 1
         endif
         if ( Local5 != 0 )
         elseif ( ( Local5 := Arg2:hittest(Local3, Local4) ) == 0 )
            if ( hittest(Arg3, Local3, Local4) )
               Arg1:exitstate(10)
            else
               Arg1:exitstate(0)
            endif
         endif
      endcase
      return
   endif

//---------------------------------------------------[top]-
//  TBREADER( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )
//
procedure TBREADER( Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7 )

   local Local1, Local2, Local3, Local4, Local5, Local6
   if ( !guiprevali(Arg1, Arg1:control()) )
   elseif ( ISOBJECT( Arg1:control() ) )
      Local5 := setcursor(0)
      Local1 := Arg1:control()
      Local3 := Local1:autolite()
      Local1:autolite(.T.)
      Local1:hilite()
      if ( Static12 == -5121 )
         tbmouse(Local1, mrow(), mcol())
      endif
      Static12 := 0
      do while ( Arg1:exitstate() == 0 )
         do while ( Arg1:exitstate() == 0 )
            Local2 := 0
            do while ( !Local1:stabilize() .AND. Local2 == 0 )
               Local2 := InKey()
            enddo
            if ( Local2 == 0 )
               Local2 := InKey(0)
            endif
            Local6 := Local1:applykey(Local2)
            if ( Local6 == -1 )
               Arg1:exitstate(7)
               exit
            elseif ( Local6 == 1 )
               tbapplykey(Arg1, Local1, Arg2, Local2, Arg3, Arg4, ;
                  Arg5, Arg6, Arg7)
            endif
         enddo
         if ( !guipostval(Arg1, Local1) )
            Arg1:exitstate(0)
         endif
      enddo
      Local1:autolite(Local3)
      Local1:dehilite()
      setcursor(Local5)
   endif
   return

//---------------------------------------------------[top]-
//  UPDATED
//
function UPDATED

   return Static2

//---------------------------------------------------[top]-
//  __KILLREAD
//
procedure __KILLREAD

   Static3 := .T.
   return

//---------------------------------------------------[top]-
//  __SETFORMA( Arg1 )
//
procedure __SETFORMA( Arg1 )

   Static1 := iif( ISBLOCK( Arg1 ), Arg1, Nil )
   return

//---EOF


Use your Browser's BACK button to return to Function Listings