; VOORBEELDEN: ; ============ ; Do W^vhDBG("Deze Tekst") ; Write (Message) ; Do WL^vhDBG("Deze Tekst") ; WriteLine (Message) ; Do WFMT^vhDBG("Deze Tekst","B-Blue") ; Write (Message,FormatID) ; Do WLFMT^vhDBG("Deze Tekst","B-Blue") ; WriteLine (Message,FormatID) ; Do WCUST^vhDBG("Deze Tekst",1,"B-Blue") ; Write Custom (Message,NewLine,FormatID) ; Do SETFMT^vhDBG("B-Blue") ; Set textFormat (FormatID) ; Do CLS^vhDBG ; Clear entire OutputWindow ; Voluit: $$$WCUST(,,) = Do ##class(EH.Makova.EventQueue).AddMsg($$$DBGeqID,$$$DBGeqType,$$$DBGstMSG,$LB("Deze Tekst",1,"B-Blue"),$$$stPublic,1) ; =========================================================================================== #include UIDebugCNTs #include Const #include %occInclude //==========// WLIP(IP4,Msg) ; Set ClientIP and do WriteLine (Message) Set:($G(IP4)?1.3N) %ClientIP="192.168.1."_IP4 $$$WLFMT(Msg,"Blue") Quit //==========// W(Msg) ; Write (Message) $$$WFMT(Msg,"Blue") Quit WL(Msg) ; WriteLine (Message) $$$WLFMT(Msg,"Blue") Quit WLS(Msg,ShowLvl) ; WriteLine (Message) $$$WLFMT($$DebugStackSpaces($STACK,.ShowLvl)_Msg,"Blue") Quit IWL(Msg) ; WriteLine (Message) Set:('$D(dbgForm487845)) dbgForm487845=##class(UI.Debug.OutputWin.MainForm).%New(%this.Form.Address,0) Do dbgForm487845.Show() $$$WLFMT(Msg,"Blue") Quit WFMT(Msg,FmtID) ; Write (Message,FormatID) $$$WFMT(Msg,FmtID) Quit WLFMT(Msg,FmtID) ; WriteLine (Message,FormatID) $$$WLFMT(Msg,FmtID) Quit WLSFMT(Msg,FmtID,ShowLvl) ; WriteLine (Message,FormatID) $$$WLFMT($$DebugStackSpaces($STACK,.ShowLvl)_Msg,FmtID) Quit WCUST(Msg,NewLine,FmtID) ; Write Custom (Message,NewLine,FormatID) $$$WCUST(Msg,NewLine,FmtID) Quit SETFMT(FmtID) ; Set Text Format (FormatID) $$$SETFMT(FmtID) Quit CLS ; Clear entire OutputWindow $$$CLS Quit WX(XMLObject) ; Schrijf XML object naar OutputWindow New tmpString Do XMLObject.XMLExportToString(.tmpString) Do WL^vhDBG(tmpString) Quit WXIP(IP4,XMLObject) ; Schrijf XML object naar OutputWindow met IP New tmpString Do XMLObject.XMLExportToString(.tmpString) Do WLIP^vhDBG(IP4,tmpString) Quit DebugStackLevel(Stack) ; Geeft niveau van "indentation" in de STACK aan. ; Gebruik $J("",$$GetStackIndent)_... om het aantal spaties vooraan toe te voegen. Set Stack=$G(Stack,$STACK) new Lvl Set Lvl=Stack For Set Lvl=$O(DbgIndent(Lvl)) Quit:(Lvl="") Kill DbgIndent(Lvl) Set Lvl=$O(DbgIndent(Stack),-1) Set DbgIndent(Stack)=$S(Lvl:DbgIndent(Lvl)+1, 1:1) Quit DbgIndent(Stack) DebugStackSpaces(Stack,ShowLvl) Set Stack=$G(Stack,$STACK) Set ShowLvl=$G(ShowLvl,1) Quit $S(ShowLvl:$J(Stack,2)_":", 1:"")_$J("",$$DebugStackLevel(Stack)) InitFMT(Rec) ; Rec als .Local doorgeven Set Rec("DFL")="" ; BESCHRIJVING : Set Rec(FmtID)=$LB($LB(styles),Color,Size,FontName) Set Rec("B")=$LB($LB("fsBold"),) Set Rec("ITALIC")=$LB($LB("fsItalic")) Set Rec("U")=$LB($LB("fsUnderline")) Set Rec("BI")=$LB($LB("fsBold","fsItalic")) Set Rec("BU")=$LB($LB("fsBold","fsUnderline")) Set Rec("IU")=$LB($LB("fsItalic","fsUnderline")) Set Rec("BIU")=$LB($LB("fsBold","fsItalic","fsUnderline")) ; Same in BLUE Set Rec("BLUE")=$LB(,$$$clBlue) Set Rec("B-BLUE")=$LB($LB("fsBold"),$$$clBlue) Set Rec("I-BLUE")=$LB($LB("fsItalic"),$$$clBlue) Set Rec("U-BLUE")=$LB($LB("fsUnderline"),$$$clBlue) Set Rec("BI-BLUE")=$LB($LB("fsBold","fsItalic"),$$$clBlue) Set Rec("BU-BLUE")=$LB($LB("fsBold","fsUnderline"),$$$clBlue) Set Rec("IU-BLUE")=$LB($LB("fsItalic","fsUnderline"),$$$clBlue) Set Rec("BIU-BLUE")=$LB($LB("fsBold","fsItalic","fsUnderline"),$$$clBlue) ; Same in NAVY (DARK BLUE) Set Rec("NAVY")=$LB(,$$$clNavy) Set Rec("B-NAVY")=$LB($LB("fsBold"),$$$clNavy) Set Rec("I-NAVY")=$LB($LB("fsItalic"),$$$clNavy) Set Rec("U-NAVY")=$LB($LB("fsUnderline"),$$$clNavy) Set Rec("BI-NAVY")=$LB($LB("fsBold","fsItalic"),$$$clNavy) Set Rec("BU-NAVY")=$LB($LB("fsBold","fsUnderline"),$$$clNavy) Set Rec("IU-NAVY")=$LB($LB("fsItalic","fsUnderline"),$$$clNavy) Set Rec("BIU-NAVY")=$LB($LB("fsBold","fsItalic","fsUnderline"),$$$clNavy) ; Same in RED Set Rec("RED")=$LB(,$$$clRed) Set Rec("B-RED")=$LB($LB("fsBold"),$$$clRed) Set Rec("I-RED")=$LB($LB("fsItalic"),$$$clRed) Set Rec("U-RED")=$LB($LB("fsUnderline"),$$$clRed) Set Rec("BI-RED")=$LB($LB("fsBold","fsItalic"),$$$clRed) Set Rec("BU-RED")=$LB($LB("fsBold","fsUnderline"),$$$clRed) Set Rec("IU-RED")=$LB($LB("fsItalic","fsUnderline"),$$$clRed) Set Rec("BIU-RED")=$LB($LB("fsBold","fsItalic","fsUnderline"),$$$clRed) Set Rec("I")=Rec("B") ; Info Set Rec("W")=Rec("B-BLUE") ; Warning Set Rec("A")=Rec("B-RED") ; Alarm Quit BuildLocals(arCmd,arFmt,Rec) ; arCmd,arFmt,Rec als .Local doorgeven ; Commands Set arCmd(1,"ID")="W (msg)" Set arCmd(2,"ID")="WL (msg)" Set arCmd(3,"ID")="WLS (msg,[ShowLvl=1])" Set arCmd(4,"ID")="WFMT (msg,fmtID)" Set arCmd(5,"ID")="WLFMT (msg,fmtID)" Set arCmd(6,"ID")="WLSFMT (msg,fmtID,[ShowLvl=1])" Set arCmd(7,"ID")="WCUST (msg,NewLine,fmtID)" Set arCmd(8,"ID")="SETFMT (fmtID)" Set arCmd(99,"ID")="CLS ()" Set arCmd(1,"ClipB")="Do W^vhDBG(""msg"")" Set arCmd(2,"ClipB")="Do WL^vhDBG(""msg"")" Set arCmd(3,"ClipB")="Do WLS^vhDBG(""msg"",[ShowLvl=1])" Set arCmd(4,"ClipB")="Do WFMT^vhDBG(""msg"",""fmtID"")" Set arCmd(5,"ClipB")="Do WLFMT^vhDBG(""msg"",""fmtID"")" Set arCmd(6,"ClipB")="Do WLSFMT^vhDBG(""msg"",""fmtID"",[ShowLvl=1])" Set arCmd(7,"ClipB")="Do WCUST^vhDBG(""msg"",""NewLine"",""fmtID"")" Set arCmd(8,"ClipB")="Do SETFMT^vhDBG(""fmtID"")" Set arCmd(99,"ClipB")="Do CLS^vhDBG" ; Format IDs New i,Nr Do:('$D(Rec)) InitFMT(.Rec) ; Rec ophalen als Rec niet mee doorgegeven is Set arFmt(1,"ID")="DFL" Set arFmt(1,"ClipB")="DFL" Set Nr=1 Do BuildMnuFmt("I",$INCREMENT(Nr),"(Info)") Do BuildMnuFmt("W",$INCREMENT(Nr),"(Warning)") Do BuildMnuFmt("A",$INCREMENT(Nr),"(Alarm)") Set i="" For Set i=$O(Rec(i)) Quit:(i="") Do . Quit:(i?1(1"I",1"W",1"A",1"DFL")) . Do BuildMnuFmt(i,$INCREMENT(Nr)) Quit BuildMnuFmt(ID,Nr,AddText) Quit:('$D(Rec(ID))) Set arFmt(Nr,"ID")=ID_" "_$G(AddText)_" = "_$C(9)_$$LCVT^vhLib(Rec(ID)) Set arFmt(Nr,"ClipB")=ID Quit // ========================================================================================================================================== // Name : GetSuperClasses // Author : Tom Rombaut // Function: Geef een classname op en krijg een $LB terug met daarin alle classname waarvan deze erft // ========================================================================================================================================== GetSuperClasses(MainClassName,IncludeMainClass) New MainClassPrefix Set MainClassPrefix=$P(MainClassName,".",1,$L(MainClassName,".")-1) Set IncludeMainClass=$G(IncludeMainClass,0) New lbClasses Set lbClasses=$S(IncludeMainClass:$LB(MainClassName),1:"") Do recGSC(MainClassName,MainClassPrefix,.lbClasses) Quit lbClasses ;Recursieve method voor GetSuperClasses recGSC(ClassName,MainClassPrefix,lbClasses) New CDef Set CDef=##class(%ClassDefinition).%OpenId(ClassName) Quit:(CDef=$$$NULLOREF) New SuperList,SuperClassName,Loop Set SuperList=CDef.Super Quit:(SuperList="") For Loop=1:1:$L(SuperList,",") Do . Set SuperClassName=$P(SuperList,",",Loop) . If $E(SuperClassName)="%" Do .. Set:($ZCVT($E(SuperClassName,1,9),"U")'="%LIBRARY.") $E(SuperClassName,1,1)="%Library." . Else If $L(SuperClassName,".")=1 Do .. Set SuperClassName=MainClassPrefix_"."_SuperClassName . Set lbClasses=lbClasses_$LB(SuperClassName) . Do recGSC(SuperClassName,MainClassPrefix,.lbClasses) Quit // ========================================================================================================================================== // Name : GetReferences // Author : Tom Rombaut // Function: Geef een obj op en krijg een overzicht terug van alle objecten die hiernaar verwijzen (inclusief zichzelf) // ========================================================================================================================================== GetReferences(RefToObj) New tmpObj,lbReferences,lbClasses,ClassLoop,ClassName,CDef,PropLoop,PropDef,PropVal,Collection,Key Set tmpObj="" Set lbReferences="" For Set tmpObj=$zobjnext(tmpObj) Quit:(tmpObj="") Do . If tmpObj=RefToObj Do Quit .. Set lbReferences=lbReferences_$LB(RefToObj_" (self)") . Set lbClasses=$$GetSuperClasses(tmpObj.%ClassName(1),1) . For ClassLoop=1:1:$LL(lbClasses) Do .. Set ClassName=$LI(lbClasses,ClassLoop) .. Set CDef=##class(%ClassDefinition).%OpenId(ClassName) .. Quit:(CDef=$$$NULLOREF) .. For PropLoop=1:1:CDef.Properties.Count() Do ... ;Checken of property een object is en eventueel gelijk aan RefToObj ... Set PropDef=CDef.Properties.GetAt(PropLoop) ... Quit:(PropDef.Private || PropDef.MultiDimensional) ... Quit:($$iXecute^vhLib("Set PropVal=tmpObj."_PropDef.Name)'="") ... Set Collection=PropDef.Collection ... If Collection="" Do .... Set:(PropVal=RefToObj) lbReferences=lbReferences_$LB(tmpObj_": "_PropDef.Name) ... Else If (Collection="array") || (Collection="list") Do .... Set Key="" .... For Set arObj=PropVal.GetNext(.Key) Quit:(Key="") Do ..... Set:(arObj=RefToObj) lbReferences=lbReferences_$LB(tmpObj_": "_PropDef.Name_"["_Key_"]") Quit lbReferences