[613] | 1 | XGSETUP ;SFISC/VYD - setup KWAPI environment ;03/16/95 13:29
|
---|
| 2 | ;;8.0;KERNEL;;Jul 10, 1995
|
---|
| 3 | PREP ;prepare graphics environment. Can be called multiple times.
|
---|
| 4 | N %,X
|
---|
| 5 | S U="^",C=","
|
---|
| 6 | D CLEAN2
|
---|
| 7 | S XG255=$C(255)
|
---|
| 8 | S XGPAD=$J("",IOM)
|
---|
| 9 | D:'$D(XGATRSET)!('$D(XGEMPATR))!('$D(XGCURATR))!('$D(IORESET)) ATR
|
---|
| 10 | D:'$D(^XUTL("XGATR")) ATRTABLE
|
---|
| 11 | F %=0:1:IOSL-1 D
|
---|
| 12 | . S XGSCRN(%,0)=XGPAD
|
---|
| 13 | . S XGSCRN(%,1)=$TR(XGPAD," ",XGEMPATR)
|
---|
| 14 | D ADJUST^XGSW(0,0,IOSL-1,IOM-1,"XGSCRN") ;store "COORDS" node
|
---|
| 15 | S XGSCRN("ORDER",0)=$C(1)
|
---|
| 16 | W IORESET,IOCUOFF,IOKPAM,@IOF
|
---|
| 17 | S XGCURATR=XGEMPATR
|
---|
| 18 | X ^%ZOSF("EOFF")
|
---|
| 19 | S X=0 X ^%ZOSF("RM")
|
---|
| 20 | D INIT^XGKB("*") ;turn on escape processing
|
---|
| 21 | S $X=0,$Y=0 ;S ($X,$Y)=0 ;DTM 4.3 choked here
|
---|
| 22 | Q
|
---|
| 23 | ;
|
---|
| 24 | ;
|
---|
| 25 | KWAPI ;K-WAPI specific setup
|
---|
| 26 | N %
|
---|
| 27 | S (XGOLDFCS,XGNEWFCS)=""
|
---|
| 28 | S XGFLAG("ABORT")=0 ;flag if 1 will stop processing of a gadget
|
---|
| 29 | S XGFLAG("PAINT")=21 ;initialize paint flag
|
---|
| 30 | S XGESEQ="1000000^0" ;event_stack_level^event_sequence_counter unique
|
---|
| 31 | S XGMENU="" ;flag if not empty indicates that user went or is in menu
|
---|
| 32 | S XGUFCTR("PIXEL","X")=0.125
|
---|
| 33 | S XGUFCTR("PIXEL","Y")=0.05
|
---|
| 34 | S XGUFCTR("CHAR","X")=1
|
---|
| 35 | S XGUFCTR("CHAR","Y")=1
|
---|
| 36 | ;
|
---|
| 37 | ;------------set up DISPLAY with defaults
|
---|
| 38 | S ^TMP("XGD",$J,$PD,"PLATFORM")="ZEMULATION,KERNEL "_$$VERSION^XPDUTL("XU")
|
---|
| 39 | S:'$D(^TMP("XGD",$J,$PD,"FOCUS")) ^("FOCUS")=""
|
---|
| 40 | S:'$D(^TMP("XGD",$J,$PD,"UNITS")) ^("UNITS")="PIXEL"
|
---|
| 41 | ;
|
---|
| 42 | ;------------load key-actions
|
---|
| 43 | D ACTION^XGKB("KP0","D KP0^XGJUMP") ;menubar
|
---|
| 44 | D ACTION^XGKB("F10","D KP0^XGJUMP") ;menubar
|
---|
| 45 | D ACTION^XGKB("CR","D CR^XGJUMP")
|
---|
| 46 | D ACTION^XGKB("^C","D CTRLC^XGJUMP") ;break the program
|
---|
| 47 | D ACTION^XGKB("^R","D CTRLR^XGJUMP") ;window resize
|
---|
| 48 | D ACTION^XGKB("^V","D CTRLV^XGJUMP") ;window move
|
---|
| 49 | D ACTION^XGKB("^W","D CTRLW^XGJUMP") ;window select window
|
---|
| 50 | D ACTION^XGKB("^Z","D CTRLZ^XGJUMP") ;window close
|
---|
| 51 | D ACTION^XGKB("^\","D CTRLBSL^XGJUMP") ;window control menu
|
---|
| 52 | D ACTION^XGKB("TAB","D TAB^XGJUMP") ;next gadget
|
---|
| 53 | D ACTION^XGKB("PF4","D PF4^XGJUMP") ;previous gadget
|
---|
| 54 | ;
|
---|
| 55 | ;------------ set up a window control menu
|
---|
| 56 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",1)="&Restore"
|
---|
| 57 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",2)="&Move"
|
---|
| 58 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",2,"EVENT","SELECT")="MOVE^XGWCTRL"
|
---|
| 59 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",2,"ACCELERATOR")="^V"
|
---|
| 60 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",3)="&Size"
|
---|
| 61 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",3,"EVENT","SELECT")="RESIZE^XGWCTRL"
|
---|
| 62 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",4)="Mi&nimize"
|
---|
| 63 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",5)="Ma&ximize"
|
---|
| 64 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",5,"SEPARATOR")=1
|
---|
| 65 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",6)="&Close"
|
---|
| 66 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",6,"EVENT","SELECT")="CLOSE^XGWCTRL"
|
---|
| 67 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",6,"SEPARATOR")=1
|
---|
| 68 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",7)="S&witch To..."
|
---|
| 69 | S ^TMP("XGUTIL",$J,"~XGWM","CHOICE",7,"EVENT","SELECT")="CTRLW^XGJUMP"
|
---|
| 70 | ;
|
---|
| 71 | ;------------ put up wall paper and save it as 1st window
|
---|
| 72 | ;D GRID^XGFDEMO
|
---|
| 73 | ;D ^XGWALL
|
---|
| 74 | ;M ^TMP("XGS",$J,$C(1))=XGSCRN
|
---|
| 75 | D WINSAVE^XGWIN($C(1),0,0,IOSL,IOM)
|
---|
| 76 | Q
|
---|
| 77 | ;
|
---|
| 78 | ATR ;setup screen/graphic params. load attribute array
|
---|
| 79 | ; this should usually run once at login
|
---|
| 80 | N X
|
---|
| 81 | I ^%ZOSF("OS")["DTM" U $I:VT=1 ;if DTM change to VT220 emulation
|
---|
| 82 | D HOME^%ZIS,GSET^%ZISS
|
---|
| 83 | S X="IOBOFF;IOBON;IODWL;IOINHI;IOINORM;IOKPAM;IOKPNM;IORESET;IORVOFF;IORVON;IOSWL;IOUON;IOUOFF" D ENDR^%ZISS
|
---|
| 84 | S IORESET=$C(27)_"[0m"_IOG0 ;turn off all attr. diff from stnd IORESET
|
---|
| 85 | S IOCUOFF=$C(27)_"[?25l",IOCUON=$C(27)_"[?25h" ;cursor on, cursor off
|
---|
| 86 | S XGATRSET(8)=U_IORESET,XGATRSET(2)=IOBOFF_U_IOBON
|
---|
| 87 | S XGATRSET(3)=IOINORM_U_IOINHI,XGATRSET(4)=IORVOFF_U_IORVON
|
---|
| 88 | S XGATRSET(5)=IOSWL_U_IODWL,XGATRSET(6)=IOG0_U_IOG1
|
---|
| 89 | S XGATRSET(7)=IOUOFF_U_IOUON
|
---|
| 90 | S (XGCURATR,XGEMPATR)=$C(1)
|
---|
| 91 | Q
|
---|
| 92 | ;
|
---|
| 93 | ATRTABLE ;setup ^XUTL("XGATR" attr letter to ESC code conversion table
|
---|
| 94 | N %
|
---|
| 95 | F %=1:1:255 S ^XUTL("XGATR",$C(%))=$$ESC^XGSA($C(%))
|
---|
| 96 | Q
|
---|
| 97 | ;
|
---|
| 98 | CLEAN ;clean up KWAPI variables, screen/graphic parameters
|
---|
| 99 | ;this tag does universal clean up. It should be called at the end of all K-WAPI sessions.
|
---|
| 100 | X ^%ZOSF("EON") ; turn echo on
|
---|
| 101 | S X=IOM X ^%ZOSF("RM") ;restore right margin for proper wrapping
|
---|
| 102 | W IOCUON_IOKPNM_IORESET ; cursor on, number mode, reset terminal
|
---|
| 103 | D EXIT^XGKB ; turn off escape processing
|
---|
| 104 | D KILL^%ZISS,GKILL^%ZISS
|
---|
| 105 | K XGATRSET,XGCURATR,XGEMPATR,XGKEYMAP,XGSPCIAL,XGPAD,XG255
|
---|
| 106 | K IOCUON,IOCUOFF
|
---|
| 107 | K XGWIN,XGEVNT,XGDI
|
---|
| 108 | CLEAN2 ;other than fall through, this is called from PREP
|
---|
| 109 | K ^TMP("XGE",$J),^TMP("XGD",$J),^TMP("XGS",$J),^TMP("XGW",$J)
|
---|
| 110 | K ^TMP("XGUTIL",$J),^TMP("XGKEY",$J) ;kill utility and key-action table
|
---|
| 111 | K XGMENU,XGSCRN,XGWT,XGWL,XGWB,XGWR,XGTRACE,XGOLDFCS,XGNEWFCS
|
---|
| 112 | K XGW,XGG,XGID,XGMENU,XGFLAG,XGUFCTR,XGDEFBTN,XGNEXTG,XGWAIT
|
---|
| 113 | Q
|
---|