Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XGSETUP

XGSETUP.m

Go to the documentation of this file.
  1. XGSETUP ;SFISC/VYD - setup KWAPI environment ;03/16/95 13:29 [ 04/02/2003 8:29 AM ]
  1. ;;8.0;KERNEL;**1002,1003,1004,1005,1007**;APR 1, 2003
  1. ;;8.0;KERNEL;;Jul 10, 1995
  1. PREP ;prepare graphics environment. Can be called multiple times.
  1. N %,X
  1. S U="^",C=","
  1. D CLEAN2
  1. S XG255=$C(255)
  1. S XGPAD=$J("",IOM)
  1. D:'$D(XGATRSET)!('$D(XGEMPATR))!('$D(XGCURATR))!('$D(IORESET)) ATR
  1. D:'$D(^XUTL("XGATR")) ATRTABLE
  1. F %=0:1:IOSL-1 D
  1. . S XGSCRN(%,0)=XGPAD
  1. . S XGSCRN(%,1)=$TR(XGPAD," ",XGEMPATR)
  1. D ADJUST^XGSW(0,0,IOSL-1,IOM-1,"XGSCRN") ;store "COORDS" node
  1. S XGSCRN("ORDER",0)=$C(1)
  1. W IORESET,IOCUOFF,IOKPAM,@IOF
  1. S XGCURATR=XGEMPATR
  1. X ^%ZOSF("EOFF")
  1. S X=0 X ^%ZOSF("RM")
  1. D INIT^XGKB("*") ;turn on escape processing
  1. S $X=0,$Y=0 ;S ($X,$Y)=0 ;DTM 4.3 choked here
  1. Q
  1. ;
  1. ;
  1. KWAPI ;K-WAPI specific setup
  1. N %
  1. S (XGOLDFCS,XGNEWFCS)=""
  1. S XGFLAG("ABORT")=0 ;flag if 1 will stop processing of a gadget
  1. S XGFLAG("PAINT")=21 ;initialize paint flag
  1. S XGESEQ="1000000^0" ;event_stack_level^event_sequence_counter unique
  1. S XGMENU="" ;flag if not empty indicates that user went or is in menu
  1. S XGUFCTR("PIXEL","X")=0.125
  1. S XGUFCTR("PIXEL","Y")=0.05
  1. S XGUFCTR("CHAR","X")=1
  1. S XGUFCTR("CHAR","Y")=1
  1. ;
  1. ;------------set up DISPLAY with defaults
  1. S ^TMP("XGD",$J,$PD,"PLATFORM")="ZEMULATION,KERNEL "_$$VERSION^XPDUTL("XU")
  1. S:'$D(^TMP("XGD",$J,$PD,"FOCUS")) ^("FOCUS")=""
  1. S:'$D(^TMP("XGD",$J,$PD,"UNITS")) ^("UNITS")="PIXEL"
  1. ;
  1. ;------------load key-actions
  1. D ACTION^XGKB("KP0","D KP0^XGJUMP") ;menubar
  1. D ACTION^XGKB("F10","D KP0^XGJUMP") ;menubar
  1. D ACTION^XGKB("CR","D CR^XGJUMP")
  1. D ACTION^XGKB("^C","D CTRLC^XGJUMP") ;break the program
  1. D ACTION^XGKB("^R","D CTRLR^XGJUMP") ;window resize
  1. D ACTION^XGKB("^V","D CTRLV^XGJUMP") ;window move
  1. D ACTION^XGKB("^W","D CTRLW^XGJUMP") ;window select window
  1. D ACTION^XGKB("^Z","D CTRLZ^XGJUMP") ;window close
  1. D ACTION^XGKB("^\","D CTRLBSL^XGJUMP") ;window control menu
  1. D ACTION^XGKB("TAB","D TAB^XGJUMP") ;next gadget
  1. D ACTION^XGKB("PF4","D PF4^XGJUMP") ;previous gadget
  1. ;
  1. ;------------ set up a window control menu
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",1)="&Restore"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",2)="&Move"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",2,"EVENT","SELECT")="MOVE^XGWCTRL"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",2,"ACCELERATOR")="^V"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",3)="&Size"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",3,"EVENT","SELECT")="RESIZE^XGWCTRL"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",4)="Mi&nimize"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",5)="Ma&ximize"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",5,"SEPARATOR")=1
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",6)="&Close"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",6,"EVENT","SELECT")="CLOSE^XGWCTRL"
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",6,"SEPARATOR")=1
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",7)="S&witch To..."
  1. S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",7,"EVENT","SELECT")="CTRLW^XGJUMP"
  1. ;
  1. ;------------ put up wall paper and save it as 1st window
  1. ;D GRID^XGFDEMO
  1. ;D ^XGWALL
  1. ;M ^TMP("XGS",$J,$C(1))=XGSCRN
  1. D WINSAVE^XGWIN($C(1),0,0,IOSL,IOM)
  1. Q
  1. ;
  1. ATR ;setup screen/graphic params. load attribute array
  1. ; this should usually run once at login
  1. N X
  1. I ^%ZOSF("OS")["DTM" U $I:VT=1 ;if DTM change to VT220 emulation
  1. D HOME^%ZIS,GSET^%ZISS
  1. S X="IOBOFF;IOBON;IODWL;IOINHI;IOINORM;IOKPAM;IOKPNM;IORESET;IORVOFF;IORVON;IOSWL;IOUON;IOUOFF" D ENDR^%ZISS
  1. S IORESET=$C(27)_"[0m"_IOG0 ;turn off all attr. diff from stnd IORESET
  1. S IOCUOFF=$C(27)_"[?25l",IOCUON=$C(27)_"[?25h" ;cursor on, cursor off
  1. S XGATRSET(8)=U_IORESET,XGATRSET(2)=IOBOFF_U_IOBON
  1. S XGATRSET(3)=IOINORM_U_IOINHI,XGATRSET(4)=IORVOFF_U_IORVON
  1. S XGATRSET(5)=IOSWL_U_IODWL,XGATRSET(6)=IOG0_U_IOG1
  1. S XGATRSET(7)=IOUOFF_U_IOUON
  1. S (XGCURATR,XGEMPATR)=$C(1)
  1. Q
  1. ;
  1. ATRTABLE ;setup ^XUTL("XGATR" attr letter to ESC code conversion table
  1. N %
  1. F %=1:1:255 S ^XUTL("XGATR",$C(%))=$$ESC^XGSA($C(%))
  1. Q
  1. ;
  1. CLEAN ;clean up KWAPI variables, screen/graphic parameters
  1. ;this tag does universal clean up. It should be called at the end of all K-WAPI sessions.
  1. X ^%ZOSF("EON") ; turn echo on
  1. S X=IOM X ^%ZOSF("RM") ;restore right margin for proper wrapping
  1. W IOCUON_IOKPNM_IORESET ; cursor on, number mode, reset terminal
  1. D EXIT^XGKB ; turn off escape processing
  1. D KILL^%ZISS,GKILL^%ZISS
  1. K XGATRSET,XGCURATR,XGEMPATR,XGKEYMAP,XGSPCIAL,XGPAD,XG255
  1. K IOCUON,IOCUOFF
  1. K XGWIN,XGEVNT,XGDI
  1. CLEAN2 ;other than fall through, this is called from PREP
  1. K ^TMP("XGE",$J),^TMP("XGD",$J),^TMP("XGS",$J),^TMP("XGW",$J)
  1. K ^TMP("XGUTIL",$J),^TMP("XGKEY",$J) ;kill utility and key-action table
  1. K XGMENU,XGSCRN,XGWT,XGWL,XGWB,XGWR,XGTRACE,XGOLDFCS,XGNEWFCS
  1. K XGW,XGG,XGID,XGMENU,XGFLAG,XGUFCTR,XGDEFBTN,XGNEXTG,XGWAIT
  1. Q