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

XQSUITE.m

Go to the documentation of this file.
  1. XQSUITE ;Luke/Sea - Window Suite driver ;2/14/95 10:32
  1. ;;8.0;KERNEL;;Jul 10, 1995
  1. ;
  1. ;Jump-start XQSUITE by asking which suite to run
  1. S DIC=19,DIC(0)="AEQM" D ^DIC Q:Y<0 S (XQDIC,XQY)=+Y K DIC,XQUR,Y,^VA(200,DUZ,202.1)
  1. I $P(^DIC(19,XQY,0),U,4)'="Z" W !!,"Sorry, '",$P(^(0),U,2),"' is not a suite of windows." K XQY,XQDIC Q
  1. ;
  1. ;Enter with XQY=the IEN of the suite
  1. ;
  1. EN ;Entry point for ^XQ1
  1. S KWAPI=1
  1. S U="^"
  1. S XQWIN=$$NEXTNM^XGCLOAD("XQS")
  1. D ^XQDATE
  1. S ^XUTL("XQSUITE",$J,XQWIN,0)=%_U_%Y
  1. D PREP^XG
  1. S XQKWAPI=0 I XGWIN'["^$W" S XQKWAPI=1
  1. D GET^XGCLOAD("XQSUITE",$NA(^TMP($J,XQWIN)))
  1. I $L($P(^DIC(19,+XQY,0),U,2)) S ^TMP($J,XQWIN,"TITLE")=$P(^DIC(19,XQY,0),U,2)
  1. ;S XQPOP=$$NEXTNM^XGCLOAD("XQP")
  1. D GET^XGCLOAD("XQPOP",$NA(^TMP($J,"XQPOP")))
  1. ;
  1. S XQN=1000,XQJ=0 F XQI=1:1:$P(^DIC(19,XQY,10,0),U,4) D
  1. .S XQJ=$O(^DIC(19,XQY,10,XQJ))
  1. .Q:XQJ'=+XQJ
  1. .S XQJY=^DIC(19,XQY,10,XQJ,0)
  1. .I $L(XQJY,U)<3 F S XQJY=XQJY_U Q:$L(XQJY,U)=3
  1. .S XQK=$P(XQJY,U,3) I XQK'>0 S XQK=XQN,XQN=XQN+1 ;Display order
  1. .S ^XUTL(XQWIN,$J,XQY,+XQJY)=^DIC(19,+XQJY,0)
  1. .S ^XUTL(XQWIN,$J,XQY,+XQJY,"W")=^DIC(19,+XQJY,"W")
  1. .S XQM(XQK)=XQJY_U_^XUTL(XQWIN,$J,XQY,+XQJY,"W")
  1. .Q
  1. K XQI,XQJ,XQJYM,XQK
  1. ;
  1. ICONS ;Build the generic (icon) windows for each option
  1. S XQK=0,XQGB1="XQB1",XQGB2="XQB2",XQGL1="XQL1",XQGL2="XQL2",XQII="XQSI"
  1. S XQP1=30,XQP2=",334",XQIP1=30,XQIP2=20
  1. S XQPTH=$G(^XTV(8989.3,101)),XQNB=0,XQNI=0,XQLONG=0
  1. ;
  1. S ^TMP($J,XQWIN,"FFACE")="Courier New"
  1. S ^TMP($J,XQWIN,"NEXTG")="XQSI"_$O(XQM(0))
  1. F XQI=1:1 Q:XQK="" D
  1. .S XQK=$O(XQM(XQK)) Q:XQK=""
  1. .S XQKY=+XQM(XQK)
  1. .S XQSIN=XQII_XQK
  1. .S XQB1=XQGB1_XQK,XQB2=XQGB2_XQK
  1. .S XQL1=XQGL1_XQK,XQL2=XQGL2_XQK
  1. .;
  1. MAKE .D
  1. ..S XQNI=XQNI+1
  1. ..S XQIP1=((XQNI*120)-120)+32
  1. ..S ^TMP($J,XQWIN,"G",XQSIN,"POS")=XQIP1_","_XQIP2
  1. ..S ^TMP($J,XQWIN,"G",XQSIN,"SIZE")="32,32"
  1. ..S ^TMP($J,XQWIN,"G",XQSIN,"TYPE")=$S(XQKWAPI:"BUTTON",1:"GENERIC")
  1. ..I $O(XQM(XQK))'="" S ^TMP($J,XQWIN,"G",XQSIN,"NEXTG")="XQSI"_$O(XQM(XQK))
  1. ..E S ^TMP($J,XQWIN,"G",XQSIN,"NEXTG")="XQSI"_$O(XQM(0))
  1. ..I 'XQKWAPI D
  1. ...S XQICP=$P(XQM(XQK),U,4)
  1. ...S XQICP=$S(XQICP["\":XQICP,XQICP["[":XQICP,XQICP="":"",1:XQPTH_XQICP)
  1. ...I $L(XQICP) S ^TMP($J,XQWIN,"G",XQSIN,"DRAW",1)="BITMAP,0,0,F,"_XQICP
  1. ...E S ^TMP($J,XQWIN,"G",XQSIN,"BCOLOR")="400,800,51110"
  1. ...Q
  1. ..S ^TMP($J,XQWIN,"G",XQSIN,"EVENT",$S(XQKWAPI:"SELECT",1:"DBLCLICK"))="SEL^XQSUITE"
  1. ..S ^TMP($J,XQWIN,"G",XQSIN,"EVENT","FOCUS")="FOCUS^XQSUITE"
  1. ..;
  1. ..S XQTXT=$P(XQM(XQK),U,5) I '$L(XQTXT) S XQTXT="No Title"
  1. ..S XQTL=$L(XQTXT)
  1. ..I XQTL>12 S XQLONG=1,X=XQTXT D SPLIT^XQSUITE1 S XQTXT=Y1,XQTL=$L(XQTXT)
  1. ..;S ^TMP($J,XQWIN,"G",XQB1,"TYPE")="GENERIC"
  1. L1 ..S ^TMP($J,XQWIN,"G",XQL1,"TYPE")="LABEL"
  1. ..S ^TMP($J,XQWIN,"G",XQL1,"BCOLOR")="65535,65535,65535"
  1. ..S ^TMP($J,XQWIN,"G",XQL1,"SIZE")=XQTL*8_",16"
  1. ..S P1=XQIP1-(((XQTL*8)-36)\2),P2=XQIP2+32
  1. ..S ^TMP($J,XQWIN,"G",XQL1,"POS")=P1_","_P2
  1. ..S ^TMP($J,XQWIN,"G",XQL1,"TFFACE")="Courier New"
  1. ..S ^TMP($J,XQWIN,"G",XQL1,"TFSIZE")=10
  1. ..;S ^TMP($J,XQWIN,"G",XQL1,"DRAW",1)="DRAWTEXT,0,0,"_XQTXT
  1. ..S ^TMP($J,XQWIN,"G",XQL1,"TITLE")=XQTXT
  1. L2 ..I XQLONG S XQTXT=Y2,XQTL=$L(XQTXT),XQLONG=0 D
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"TYPE")="LABEL"
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"BCOLOR")="65535,65535,65535"
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"SIZE")=XQTL*8_",16"
  1. ...S P1=XQIP1-(((XQTL*8)-36)\2),P2=XQIP2+32+16
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"POS")=P1_","_P2
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"TFFACE")="Courier New"
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"TFSIZE")=10
  1. ...;S ^TMP($J,XQWIN,"G",XQL2,"DRAW",1)="DRAWTEXT,0,0,"_XQTXT
  1. ...S ^TMP($J,XQWIN,"G",XQL2,"TITLE")=XQTXT
  1. ...Q
  1. ..Q
  1. .Q
  1. KILL K X,XQB1,XQB2,XQGB1,XQGB2,XQGL1,XQGL2,XQI,XQICP,XQII,XQIP1,XQIP2,XQJ,XQJY,XQK,XQKY,XQL1,XQL2,XQLONG,XQNB,XQNI,XQP,XQP1,XQP2,XQPTH,XQTL,XQTXT,XQSUIB,XQSUIIN
  1. ;
  1. D M^XG(XQWIN,$NA(^TMP($J,XQWIN)))
  1. ;
  1. ;Start up the XQSUI window
  1. ;
  1. D ESTA^XG()
  1. ;
  1. ;Return here after suite exits
  1. ;
  1. D K^XG(XQWIN)
  1. ;
  1. OUT ;Finish it all up here
  1. K ^XUTL(XQWIN,$J,XQY)
  1. K ^TMP($J,XQWIN),^TMP($J,"XQP")
  1. ;D CLEAN^XG
  1. K %,%Y,XQWIN
  1. Q
  1. ;
  1. SEL ;One of the icons was double-clicked
  1. ;N XQY,XQWIN
  1. S XQI=@XGEVENT@("WINDOW")
  1. S XQJ=@XGEVENT@("ELEMENT")
  1. S XQK=$P(XQJ,",",2)
  1. S XQY=+XQM($E(XQK,5,99))
  1. ;W !,XQI," ",XQJ," ",XQY
  1. ;
  1. S XQOK=1
  1. I $D(^DIC(19,XQY,25)),$L(^(25)) D G OUT ;Routine type
  1. .S XQSUI=^DIC(19,XQY,25)
  1. .S:XQSUI'[U XQSUI=U_XQSUI
  1. .I XQSUI["[" D DO^%XUCI Q
  1. .;W !,"ROUTINE=",XQSUI
  1. .D @XQSUI
  1. .Q
  1. ;
  1. I $D(^DIC(19,XQY,24)),$L(^(24)) D G:XQOK OUT ;Pointer type
  1. .;W !,"We have a pointer!"
  1. .S XQSUI=^DIC(19,XQY,24)
  1. .S XQSUI=$P($G(^XTV(8995,XQSUI,0)),U) I XQSUI="" S XQOK=0 Q
  1. .;W !,XQSUI
  1. .S XQWIN=$$NEXTNM^XGCLOAD("XQSUI")
  1. .D GET^XGCLOAD(XQSUI,$NA(^TMP($J,XQWIN)))
  1. .D M^XG(XQWIN,$NA(^TMP($J,XQWIN)))
  1. .D SD^XG($PD,"FOCUS",XQWIN)
  1. .;D ESTA^XG() ;Send it off to window land
  1. .;
  1. .;D K^XG(XQWIN) ;Return here after the ESTOP
  1. .Q
  1. Q
  1. ;
  1. CLOSE ;Close the XQSUITE window and do an ESTOP
  1. S XQWIN=@XGEVENT@("WINDOW")
  1. K XQM
  1. D ESTO^XG
  1. Q
  1. ;
  1. HLP ;Help Callback for XQHLPMEN menu
  1. S XQMESS="Sorry, I'm still writing the help messages.",XQTITLE="Help!"
  1. D POP^XQGP(XQMESS,XQTITLE)
  1. K XQMESS,XQTITLE
  1. Q
  1. ;
  1. MAIL ;Hook into Mail
  1. S XQMESS="Windowed MAIL is not available yet.",XQTITLE="Sorry!"
  1. D POP^XQGP(XQMESS,XQTITLE)
  1. K XQMESS,XQTITLE
  1. Q
  1. ;
  1. ALERT ;Hook into ALERT system
  1. S XQMESS="Alerts are not yet available in windows."
  1. S XQTITLE="Very Sorry!"
  1. D POP^XQGP(XQMESS,XQTITLE)
  1. K XQMESS,XQTITLE
  1. Q
  1. ;
  1. FOCUS ;Show Menu Text of button with FOCUS in XQSUIHTXT gadget
  1. ;N XQY,XQWIN
  1. S XQWIN=@XGEVENT@("WINDOW")
  1. S XQJ=@XGEVENT@("ELEMENT")
  1. S XQK=$P(XQJ,",",2)
  1. S XQN=$E(XQK,5,99)
  1. S XQY=+XQM(XQN)
  1. ;W !,XQWIN," ",XQY," ",XQJ," ",XQK
  1. ;
  1. S @XGWIN@(XQWIN,"G","XQSHTXT","TITLE")=$P(^DIC(19,XQY,0),U,2)
  1. K XQJ,XQK,XQN
  1. Q