| 1 | Include "HjGlobal.jsh" ; default HJ global variables
 | 
|---|
| 2 | Include "hjconst.jsh" ; default HJ constants
 | 
|---|
| 3 | 
 | 
|---|
| 4 | globals
 | 
|---|
| 5 |         int CoverVitalsID,
 | 
|---|
| 6 |         int ODProcReasonForRequestID,
 | 
|---|
| 7 |         int ODProcInpatientID,
 | 
|---|
| 8 |         int ODProcOutpatientID,
 | 
|---|
| 9 |         int ODCsltReasonForCsltID,
 | 
|---|
| 10 |         int ODCsltInpatientID,
 | 
|---|
| 11 |         int ODCsltOutpatientID,
 | 
|---|
| 12 |         int PtCWADAllergiesID,
 | 
|---|
| 13 |         int PtSelNotificationsID,
 | 
|---|
| 14 |         int TemplateEditorBlankLinesID,
 | 
|---|
| 15 |         int MedsInpatientID,
 | 
|---|
| 16 |         int MedsOutPatientID,
 | 
|---|
| 17 |         int ODMedsCommentsID,
 | 
|---|
| 18 |         int ODMedsPriorityID,
 | 
|---|
| 19 |         int NotesViewMenuID,
 | 
|---|
| 20 |         int ConsultsByStatusStatusID,
 | 
|---|
| 21 |         int ConsultActionCommentsID,
 | 
|---|
| 22 |         int ConsultActionAlertID,
 | 
|---|
| 23 |         int CurrentMenuContext
 | 
|---|
| 24 | 
 | 
|---|
| 25 | Const
 | 
|---|
| 26 |         NoMenuContext = 0,
 | 
|---|
| 27 |         NotesActionMenuContext = 1,
 | 
|---|
| 28 |         NotesViewMenuContext = 2,
 | 
|---|
| 29 |         ConsultsActionMenuContext = 3,
 | 
|---|
| 30 |         ConsultsTrackingMenuContext = 4,
 | 
|---|
| 31 |         ConsultsViewMenuContext = 5
 | 
|---|
| 32 | 
 | 
|---|
| 33 | 
 | 
|---|
| 34 | ;The component ID's vary from compile to compile, so constants aren't much help for identifying the components.
 | 
|---|
| 35 | ;Instead, we use the component's hierarchical position as an address to locate it as a descendant of the form.
 | 
|---|
| 36 | ;Finding addresses can be tricky.   Uncomment the SayString line below to test an address by tracing through the address resolution.
 | 
|---|
| 37 | ;If there are a lot of panels to wade through, it's easier to run CPRS with the Inspector that comes with MSAA developers kit.
 | 
|---|
| 38 | ;Get the focus on the control you want, and work with the parent/child/siblings buttons to see where they fit in the order.
 | 
|---|
| 39 | ;Note that MSAA Inspector treats "window" objects as parents of the corresponding "client" objects, 
 | 
|---|
| 40 | ;while the "GetFirstChild" JAWS script routine considers them to be part of the ame object.  So, the addresses used here will be half as long 
 | 
|---|
| 41 | ;as what you will find in MSAA land.
 | 
|---|
| 42 | handle function GetHandleFromAddress(handle Parent, string Address)
 | 
|---|
| 43 |         var
 | 
|---|
| 44 |                 int AddressIndex,
 | 
|---|
| 45 |                 string AddressPart,
 | 
|---|
| 46 |                 int TabsLeft,
 | 
|---|
| 47 |                 handle ControlAtAddress
 | 
|---|
| 48 |         let AddressIndex = 1
 | 
|---|
| 49 |         let AddressPart = StringSegment(Address, " ", AddressIndex)
 | 
|---|
| 50 |         let ControlAtAddress = Parent
 | 
|---|
| 51 |         while AddressPart != "" && ControlAtAddress != 0
 | 
|---|
| 52 |                 let TabsLeft = StringToInt(AddressPart) - 1
 | 
|---|
| 53 |                 let ControlAtAddress = GetFirstChild(ControlAtAddress)
 | 
|---|
| 54 |                 ;SayString( "Control is " + GetWindowClass(ControlAtAddress) + GetWindowName(ControlAtAddress) + IntToString(TabsLeft) + " tabs left to go.")
 | 
|---|
| 55 |                 while TabsLeft > 0 
 | 
|---|
| 56 |                         let TabsLeft = TabsLeft - 1
 | 
|---|
| 57 |                         let ControlAtAddress = GetNextWindow(ControlAtAddress)
 | 
|---|
| 58 |                         ;SayString( "Control is " + GetWindowClass(ControlAtAddress) + GetWindowName(ControlAtAddress) + IntToString(TabsLeft) + " tabs left to go.")
 | 
|---|
| 59 |                 endwhile
 | 
|---|
| 60 |                 let AddressIndex = AddressIndex+1
 | 
|---|
| 61 |                 let AddressPart = StringSegment(Address, " ", AddressIndex)
 | 
|---|
| 62 |         endwhile
 | 
|---|
| 63 |         return ControlAtAddress
 | 
|---|
| 64 | endFunction     
 | 
|---|
| 65 | 
 | 
|---|
| 66 | handle function GetCurrentPageHandle()
 | 
|---|
| 67 |         var
 | 
|---|
| 68 |                 handle ContainingWindow
 | 
|---|
| 69 |         let ContainingWindow = GetRealWindow(GetFocus())
 | 
|---|
| 70 |         if  GetWindowClass(ContainingWindow) == "TfrmFrame" then
 | 
|---|
| 71 |                 return GetHandleFromAddress(ContainingWindow, "1 1 1"); pnlPatientSelected, pnlPage, frmPage
 | 
|---|
| 72 |         else
 | 
|---|
| 73 |                 return 0
 | 
|---|
| 74 |         endif
 | 
|---|
| 75 | endFunction
 | 
|---|
| 76 | 
 | 
|---|
| 77 | string function YankString(string S, string Except, int ByRef Yanked)
 | 
|---|
| 78 |         let Yanked = SubString(S, 1, StringLength(Except)) == Except
 | 
|---|
| 79 |         if Yanked then
 | 
|---|
| 80 |                 return SubString(S, StringLength(Except)+1, StringLength(S)-StringLength(Except))
 | 
|---|
| 81 |         else
 | 
|---|
| 82 |                 return S
 | 
|---|
| 83 |         endif
 | 
|---|
| 84 | endFunction
 | 
|---|
| 85 | 
 | 
|---|
| 86 | string function StripControls( string KeyName, int ByRef Shifted, int ByRef Controlled, int ByRef Alted)
 | 
|---|
| 87 |         var
 | 
|---|
| 88 |                 string S
 | 
|---|
| 89 |         let S = KeyName
 | 
|---|
| 90 |         let S = YankString(S, "LeftAlt+", Alted)
 | 
|---|
| 91 |         if not Alted then
 | 
|---|
| 92 |                 let S = YankString(S, "RightAlt+", Alted)
 | 
|---|
| 93 |         endif
 | 
|---|
| 94 |         let S = YankString(S, "LeftControl+", Controlled)
 | 
|---|
| 95 |         if not Controlled then
 | 
|---|
| 96 |                 let S = YankString(S, "RightControl+", Controlled)
 | 
|---|
| 97 |         endif
 | 
|---|
| 98 |         let S = YankString(S, "LeftShift+", Shifted)
 | 
|---|
| 99 |         if not Shifted then
 | 
|---|
| 100 |                 let S = YankString(S, "RightShift+", Shifted)
 | 
|---|
| 101 |         endif
 | 
|---|
| 102 |         return S
 | 
|---|
| 103 | endFunction
 | 
|---|
| 104 | 
 | 
|---|
| 105 | Void Function NewTextEvent (handle hwnd, string buffer, int nAttributes,
 | 
|---|
| 106 | int nTextColor, int nBackgroundColor, int nEcho, string sFrameName)
 | 
|---|
| 107 |         var
 | 
|---|
| 108 |                 string sClass
 | 
|---|
| 109 |         Let sClass = GetWindowClass (hWnd)
 | 
|---|
| 110 |         if sClass != "TORComboEdit" then
 | 
|---|
| 111 |                 NewTextEvent(hwnd,buffer,nAttributes,nTextColor,nBackgroundColor,nEcho,sFrameName)
 | 
|---|
| 112 |         endif
 | 
|---|
| 113 | EndFunction
 | 
|---|
| 114 | 
 | 
|---|
| 115 | 
 | 
|---|
| 116 | Void Function FocusChangedEvent (handle FocusWindow, handle PrevWindow)
 | 
|---|
| 117 |         var
 | 
|---|
| 118 |                 string Class,
 | 
|---|
| 119 |                 int ID,
 | 
|---|
| 120 |                 handle ContainingWindow,
 | 
|---|
| 121 |                 handle CurrentPage,
 | 
|---|
| 122 |                 handle FormHandle
 | 
|---|
| 123 |         ;Populate component ID's
 | 
|---|
| 124 |         Let ContainingWindow = GetRealWindow(FocusWindow)
 | 
|---|
| 125 |         Let CurrentPage = GetCurrentPageHandle();
 | 
|---|
| 126 |         if GetWindowClass(CurrentPage) == "TfrmCover" then
 | 
|---|
| 127 |                 if CoverVitalsID == 0 then
 | 
|---|
| 128 |                         let FormHandle = GetHandleFromAddress(CurrentPage, "1 1 2 1 2");pnlBase, pnlBottom, pnl_Not8, pnl_7, lst_7
 | 
|---|
| 129 |                         let CoverVitalsID = GetControlID(FormHandle)
 | 
|---|
| 130 |                 endif
 | 
|---|
| 131 |         elif  GetWindowClass(CurrentPage) == "TfrmMeds" then
 | 
|---|
| 132 |                 if MedsInPatientID == 0 then
 | 
|---|
| 133 |                         let MedsInPatientID = GetControlID(GetHandleFromAddress(CurrentPage, "2 3")); pnlMedIn, lstMedsIn
 | 
|---|
| 134 |                 endif
 | 
|---|
| 135 |                 if MedsOutPatientID == 0 then
 | 
|---|
| 136 |                         let MedsOutPatientID = GetControlID(GetHandleFromAddress(CurrentPage, "1 2")); pnlMedOut, lstMedsOut
 | 
|---|
| 137 |                 endif
 | 
|---|
| 138 |         elif  GetWindowClass(ContainingWindow) == "TfrmODProc" then
 | 
|---|
| 139 |                 if ODProcReasonForRequestID == 0 then
 | 
|---|
| 140 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "16 1"); pnlReason, memReason
 | 
|---|
| 141 |                         let ODProcReasonForRequestID = GetControlID(FormHandle)
 | 
|---|
| 142 |                 endif
 | 
|---|
| 143 |                 if ODProcInpatientID == 0 then
 | 
|---|
| 144 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "12"); radInpatient
 | 
|---|
| 145 |                         let ODProcInpatientID = GetControlID(FormHandle)
 | 
|---|
| 146 |                 endif
 | 
|---|
| 147 |                 if ODProcOutpatientID == 0 then
 | 
|---|
| 148 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "11"); radOtpatient
 | 
|---|
| 149 |                         let ODProcOutpatientID = GetControlID(FormHandle)
 | 
|---|
| 150 |                 endif
 | 
|---|
| 151 |         elif  GetWindowClass(ContainingWindow) == "TfrmODCslt" then
 | 
|---|
| 152 |                 if ODCsltReasonForCsltID == 0 then
 | 
|---|
| 153 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "21 1"); pnlReason, memReason
 | 
|---|
| 154 |                         let ODCsltReasonForCsltID= GetControlID(FormHandle)
 | 
|---|
| 155 |                 endif
 | 
|---|
| 156 |                 if ODCsltOutpatientID == 0 then
 | 
|---|
| 157 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1 2"); gbInptOpt, radOutpatient
 | 
|---|
| 158 |                         let ODCsltOutpatientID = GetControlID(FormHandle)
 | 
|---|
| 159 |                 endif
 | 
|---|
| 160 |                 if ODCsltInpatientID == 0 then
 | 
|---|
| 161 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1 1"); gbInptOpt, radInpatient
 | 
|---|
| 162 |                         let ODCsltInpatientID = GetControlID(FormHandle)
 | 
|---|
| 163 |                 endif
 | 
|---|
| 164 |         elif  GetWindowClass(ContainingWindow) == "TfrmPtCWAD" then
 | 
|---|
| 165 |                 if PtCWADAllergiesID == 0 then
 | 
|---|
| 166 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "5"); allergies
 | 
|---|
| 167 |                         let PtCWADAllergiesID = GetControlID(FormHandle)
 | 
|---|
| 168 |                 endif
 | 
|---|
| 169 |         elif  GetWindowClass(ContainingWindow) == "TfrmPtSel" then
 | 
|---|
| 170 |                 if PtSelNotificationsID == 0 then
 | 
|---|
| 171 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1"); notification
 | 
|---|
| 172 |                         let PtSelNotificationsID = GetControlID(FormHandle)
 | 
|---|
| 173 |                 endif
 | 
|---|
| 174 |         elif  GetWindowClass(ContainingWindow) == "TfrmTemplateEditor" then
 | 
|---|
| 175 |                 if TemplateEditorBlankLinesID == 0 then
 | 
|---|
| 176 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "4 3 1 1 11"); pnlTop, pnlRightTop, pnlProperties, gbProperties,edtGap
 | 
|---|
| 177 |                         let TemplateEditorBlankLinesID = GetControlID(FormHandle)
 | 
|---|
| 178 |                 endif
 | 
|---|
| 179 |         elif  GetWindowClass(ContainingWindow) == "TfrmODMeds" then
 | 
|---|
| 180 |                 if ODMedsCommentsID == 0 then
 | 
|---|
| 181 |                         if GetHandleFromAddress(ContainingWindow, "1 1 9") == 0 then; make sure we are in Inpatient
 | 
|---|
| 182 |                                 let FormHandle = GetHandleFromAddress(ContainingWindow, "1 1 7"); pnlFields, pnlBottom, memComment
 | 
|---|
| 183 |                                 let ODMedsCommentsID = GetControlID(FormHandle)
 | 
|---|
| 184 |                         endif
 | 
|---|
| 185 |                 endif
 | 
|---|
| 186 |                 if ODMedsPriorityID == 0 then
 | 
|---|
| 187 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1 1 2 2"); pnlFields, pnlBottom, cboPriority, [Combo Edit]
 | 
|---|
| 188 |                         let ODMedsPriorityID = GetControlID(FormHandle)
 | 
|---|
| 189 |                 endif
 | 
|---|
| 190 |         elif  GetWindowClass(ContainingWindow) == "TfrmConsultsByStatus" then
 | 
|---|
| 191 |                 if ConsultsByStatusStatusID  == 0 then
 | 
|---|
| 192 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1 4"); pnlBase,lstStatus
 | 
|---|
| 193 |                         let ConsultsByStatusStatusID = GetControlID(FormHandle)
 | 
|---|
| 194 |                 endif
 | 
|---|
| 195 |         elif  GetWindowClass(ContainingWindow) == "TfrmConsultAction" then
 | 
|---|
| 196 |                 if ConsultActionCommentsID  == 0 then
 | 
|---|
| 197 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1 1 2 3"); pnlBase,pnlOther,pnlComments,memComments
 | 
|---|
| 198 |                         let ConsultActionCommentsID = GetControlID(FormHandle)
 | 
|---|
| 199 |                 endif
 | 
|---|
| 200 |                 if ConsultActionAlertID  == 0 then
 | 
|---|
| 201 |                         let FormHandle = GetHandleFromAddress(ContainingWindow, "1 1 2 1 1"); pnlBase,pnlOther,pnlComments,pnlAlert,ckAlert
 | 
|---|
| 202 |                         let ConsultActionAlertID = GetControlID(FormHandle)
 | 
|---|
| 203 |                 endif
 | 
|---|
| 204 |         endif
 | 
|---|
| 205 |         Let Class = GetWindowClass (FocusWindow)
 | 
|---|
| 206 |         if Class == "TORListBox" then
 | 
|---|
| 207 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 208 |                 if ID == CoverVitalsID then  ;Vitals list box on cover sheet
 | 
|---|
| 209 |                         SayString("Vitals")
 | 
|---|
| 210 |                 elif ID == PtCWADAllergiesID then; Allergies list box on patient postings
 | 
|---|
| 211 |                         SayString("Allergies")
 | 
|---|
| 212 |                 elif ID == ConsultsByStatusStatusID then; Status list box on consults by status dialog
 | 
|---|
| 213 |                         SayString("Status")
 | 
|---|
| 214 |                         SayString(GetWindowType(FocusWindow)); JAWS occasionally finds the label, so don't speak it again!
 | 
|---|
| 215 |                         SayString(GetWindowText(FocusWindow, 0))
 | 
|---|
| 216 |                         return
 | 
|---|
| 217 |                 endif
 | 
|---|
| 218 |         elif Class == "TCaptionRichEdit" then
 | 
|---|
| 219 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 220 |                 if ID == ODProcReasonForRequestID then ;Reason for request on OD Procs
 | 
|---|
| 221 |                         SayString("Reason for Request")
 | 
|---|
| 222 |                 endif
 | 
|---|
| 223 |         elif Class == "TRichEdit" then
 | 
|---|
| 224 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 225 |                 if ID == ODCsltReasonForCsltID then ;Reason for request on OD Consult
 | 
|---|
| 226 |                         SayString("Reason for Request")
 | 
|---|
| 227 |                 endif
 | 
|---|
| 228 |         elif Class == "TRadioButton" then
 | 
|---|
| 229 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 230 |                 if ID == ID == ODCsltOutpatientID || ODProcInpatientID || ID == ODProcOutpatientID || ID == ODCsltInpatientID then ;Radio buttons on OD Procs
 | 
|---|
| 231 |                         SayString("Patient will be seen as an ")
 | 
|---|
| 232 |                 endif
 | 
|---|
| 233 |         elif Class == "TCaptionListView" then
 | 
|---|
| 234 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 235 |                 if ID == PtSelNotificationsID then ;Notification list on Patient select
 | 
|---|
| 236 |                         SayString("Notifications")
 | 
|---|
| 237 |                 endif
 | 
|---|
| 238 |         elif Class == "TCaptionEdit" then
 | 
|---|
| 239 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 240 |                 if ID == TemplateEditorBlankLinesID then ;Number of blank lines on Template Editor
 | 
|---|
| 241 |                         SayString("Number of blank lines to insert between items")
 | 
|---|
| 242 |                         SayString(GetWindowType(FocusWindow))
 | 
|---|
| 243 |                         SayString(GetWindowText(FocusWindow, 0))
 | 
|---|
| 244 |                         return
 | 
|---|
| 245 |                 endif
 | 
|---|
| 246 |         elif Class == "TCaptionListBox" then
 | 
|---|
| 247 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 248 |                 if ID == MedsInPatientID then ;Inpatient Medications on Meds tab
 | 
|---|
| 249 |                         SayString("Inpatient Medications")
 | 
|---|
| 250 |                 elif ID == MedsOutPatientID then ;Outpatient Medications on Meds tab
 | 
|---|
| 251 |                         SayString("Outpatient Medications")
 | 
|---|
| 252 |                 endif
 | 
|---|
| 253 |         elif Class == "TCaptionMemo" then
 | 
|---|
| 254 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 255 |                 if ID == ODMedsCommentsID then ;Comment box on Meds order
 | 
|---|
| 256 |                         SayString("Comments")
 | 
|---|
| 257 |                 elif ID == ConsultActionCommentsID then ;Comment Box on consult action
 | 
|---|
| 258 |                         SayString("Comments")
 | 
|---|
| 259 |                 endif
 | 
|---|
| 260 |         elif Class == "TORComboEdit" then
 | 
|---|
| 261 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 262 |                 if ID == ODMedsPriorityID then ;Priority combo box on Meds order
 | 
|---|
| 263 |                         SayString("Priority")
 | 
|---|
| 264 |                         SayString(GetWindowType(FocusWindow))
 | 
|---|
| 265 |                         SayString(GetWindowText(FocusWindow, 0))
 | 
|---|
| 266 |                         return
 | 
|---|
| 267 |                 endif
 | 
|---|
| 268 |         elif Class == "TCheckBox" then
 | 
|---|
| 269 |                 Let ID = GetControlID(FocusWindow)
 | 
|---|
| 270 |                 if ID == ConsultActionAlertID then ;Alert check box on consult action tab
 | 
|---|
| 271 |                         SayString(GetWindowName(GetNextWindow(FocusWindow))) ;Auto-alert message
 | 
|---|
| 272 |                 endif
 | 
|---|
| 273 |         endif
 | 
|---|
| 274 |         FocusChangedEvent(FocusWindow, PrevWindow)
 | 
|---|
| 275 | EndFunction
 | 
|---|
| 276 | 
 | 
|---|
| 277 | 
 | 
|---|
| 278 | Void Function AutoStartEvent ()
 | 
|---|
| 279 |         let CoverVitalsID = 0
 | 
|---|
| 280 |         let ODProcReasonForRequestID = 0
 | 
|---|
| 281 |         let ODProcInpatientID = 0
 | 
|---|
| 282 |         let ODProcOutpatientID = 0 
 | 
|---|
| 283 |         let ODCsltReasonForCsltID = 0
 | 
|---|
| 284 |         let ODCsltInpatientID = 0
 | 
|---|
| 285 |         let ODCsltOutpatientID = 0
 | 
|---|
| 286 |         let PtCWADAllergiesID = 0 
 | 
|---|
| 287 |         let PtSelNotificationsID = 0
 | 
|---|
| 288 |         let TemplateEditorBlankLinesID = 0
 | 
|---|
| 289 |         let MedsInPatientID = 0
 | 
|---|
| 290 |         let MedsOutPatientID = 0
 | 
|---|
| 291 |         let ODMedsCommentsID = 0
 | 
|---|
| 292 |         let ODMedsPriorityID = 0
 | 
|---|
| 293 |         let NotesViewMenuID = 0
 | 
|---|
| 294 |         let ConsultsByStatusStatusID = 0
 | 
|---|
| 295 |         let ConsultActionCommentsID = 0
 | 
|---|
| 296 |         let ConsultActionAlertID = 0
 | 
|---|
| 297 |         let CurrentMenuContext = NoMenuContext
 | 
|---|
| 298 |         AutoStartEvent ()
 | 
|---|
| 299 | EndFunction
 | 
|---|
| 300 | 
 | 
|---|
| 301 | Void Function MenuBarToMenuContext(string PlainKeyName)
 | 
|---|
| 302 |         var
 | 
|---|
| 303 |                 string PageName
 | 
|---|
| 304 |         let PageName = GetWindowClass(GetCurrentPageHandle())
 | 
|---|
| 305 |         if PageName == "TfrmNotes" then
 | 
|---|
| 306 |                 if PlainKeyName == "A" then
 | 
|---|
| 307 |                         let CurrentMenuContext = NotesActionMenuContext
 | 
|---|
| 308 |                 elif PlainKeyName == "V" then
 | 
|---|
| 309 |                         let CurrentMenuContext = NotesViewMenuContext
 | 
|---|
| 310 |                 endif
 | 
|---|
| 311 |         elif PageName == "TfrmConsults" then
 | 
|---|
| 312 |                 if PlainKeyName == "A" then
 | 
|---|
| 313 |                         let CurrentMenuContext = ConsultsActionMenuContext
 | 
|---|
| 314 |                 elif PlainKeyName == "V" then
 | 
|---|
| 315 |                         let CurrentMenuContext = ConsultsViewMenuContext
 | 
|---|
| 316 |                 endif
 | 
|---|
| 317 |         endif
 | 
|---|
| 318 | EndFunction
 | 
|---|
| 319 | 
 | 
|---|
| 320 | Void Function KeyPressedEvent (int nKey, string strKeyName, int nIsBrailleKey, int nIsScriptKey)
 | 
|---|
| 321 |         var
 | 
|---|
| 322 |                 string PlainKeyName,
 | 
|---|
| 323 |                 int Shifted,
 | 
|---|
| 324 |                 int Controlled,
 | 
|---|
| 325 |                 int Alted,
 | 
|---|
| 326 |                 string PageName,
 | 
|---|
| 327 |                 int DoMenuBar
 | 
|---|
| 328 |         let PlainKeyName = StripControls(strKeyName, Shifted, Controlled, Alted)
 | 
|---|
| 329 |         let PageName = GetWindowClass(GetCurrentPageHandle())
 | 
|---|
| 330 | 
 | 
|---|
| 331 |         ;Handle shortcut keys first 
 | 
|---|
| 332 |         if PageName == "TfrmNotes" &&  PlainKeyName == "A" && Shifted && Controlled && not Alted then
 | 
|---|
| 333 |                 SayString("Saving note without signature")
 | 
|---|
| 334 |         else
 | 
|---|
| 335 |                 let DoMenuBar = GlobalMenuMode == MENUBAR_ACTIVE || (GlobalMenuMode == MENU_INACTIVE && Alted)
 | 
|---|
| 336 |                 if DoMenuBar then
 | 
|---|
| 337 |                         MenuBarToMenuContext(PlainKeyName)
 | 
|---|
| 338 |                 elif CurrentMenuContext == NotesActionMenuContext then
 | 
|---|
| 339 |                         if PlainKeyName == "A" then
 | 
|---|
| 340 |                                 SayString("Saving note without signature")
 | 
|---|
| 341 |                                 let CurrentMenuContext = NoMenuContext
 | 
|---|
| 342 |                         else
 | 
|---|
| 343 |                                 MenuBarToMenuContext(PlainKeyName)
 | 
|---|
| 344 |                         endif
 | 
|---|
| 345 |                 elif CurrentMenuContext == NotesViewMenuContext  then
 | 
|---|
| 346 |                         if PlainKeyName == "D" then
 | 
|---|
| 347 |                                 SayString("Toggling note details")
 | 
|---|
| 348 |                                 let CurrentMenuContext = NoMenuContext
 | 
|---|
| 349 |                         else
 | 
|---|
| 350 |                                 MenuBarToMenuContext(PlainKeyName)
 | 
|---|
| 351 |                         endif
 | 
|---|
| 352 |                 elif CurrentMenuContext == ConsultsActionMenuContext  then
 | 
|---|
| 353 |                         if PlainKeyName == "C" then
 | 
|---|
| 354 |                                 let CurrentMenuContext = ConsultsTrackingMenuContext
 | 
|---|
| 355 |                         else
 | 
|---|
| 356 |                                 MenuBarToMenuContext(PlainKeyName)
 | 
|---|
| 357 |                         endif
 | 
|---|
| 358 |                 elif CurrentMenuContext == ConsultsTrackingMenuContext  then
 | 
|---|
| 359 |                         if PlainKeyName == "T" then
 | 
|---|
| 360 |                                 SayString("Displaying consult details")
 | 
|---|
| 361 |                                 let CurrentMenuContext = NoMenuContext
 | 
|---|
| 362 |                         elif PlainKeyName == "U" then
 | 
|---|
| 363 |                                 SayString("Displaying consult results")
 | 
|---|
| 364 |                                 let CurrentMenuContext = NoMenuContext
 | 
|---|
| 365 |                         else
 | 
|---|
| 366 |                                 MenuBarToMenuContext(PlainKeyName)
 | 
|---|
| 367 |                         endif
 | 
|---|
| 368 |                 elif CurrentMenuContext == ConsultsViewMenuContext  then
 | 
|---|
| 369 |                         if PlainKeyName == "F" then
 | 
|---|
| 370 |                                 SayString("Returning to default view")
 | 
|---|
| 371 |                                 let CurrentMenuContext = NoMenuContext
 | 
|---|
| 372 |                         else
 | 
|---|
| 373 |                                 MenuBarToMenuContext(PlainKeyName)
 | 
|---|
| 374 |                         endif
 | 
|---|
| 375 |                 endif
 | 
|---|
| 376 |         endif
 | 
|---|
| 377 |         KeyPressedEvent (nKey, strKeyName, nIsBrailleKey, nIsScriptKey)
 | 
|---|
| 378 | EndFunction
 | 
|---|
| 379 | 
 | 
|---|
| 380 | Void Function MenuModeEvent (handle WinHandle, int mode)
 | 
|---|
| 381 |         if mode == MENU_INACTIVE then
 | 
|---|
| 382 |                 let CurrentMenuContext = NoMenuContext
 | 
|---|
| 383 |         endif
 | 
|---|
| 384 |         MenuModeEvent(WinHandle,mode)
 | 
|---|
| 385 | EndFunction
 | 
|---|
| 386 |         
 | 
|---|
| 387 | /*  Event chasing code below.  Uncomment bits of this to trace the firing of events
 | 
|---|
| 388 | Void Function FocusChangedEvent (handle FocusWindow, handle PrevWindow)
 | 
|---|
| 389 |         SayString( "Focus Changed Event")
 | 
|---|
| 390 |         FocusChangedEvent(FocusWindow, PrevWindow)
 | 
|---|
| 391 | EndFunction
 | 
|---|
| 392 | 
 | 
|---|
| 393 | Void Function ActiveItemChangedEvent (handle curHwnd, int curObjectId, int curChildId,
 | 
|---|
| 394 |         handle prevHwnd, int prevObjectId, int prevChildId)
 | 
|---|
| 395 |         SayString( "Active Item Changed Event")
 | 
|---|
| 396 |         ActiveItemChangedEvent (curHwnd, curObjectId, curChildId, prevHwnd, prevObjectId, prevChildId)
 | 
|---|
| 397 | EndFunction
 | 
|---|
| 398 | 
 | 
|---|
| 399 | Void Function AutoFinishEvent ()
 | 
|---|
| 400 |         SayString( "Auto Finish Event")
 | 
|---|
| 401 |         AutoFinishEvent ()
 | 
|---|
| 402 | EndFunction
 | 
|---|
| 403 | 
 | 
|---|
| 404 | Void Function KeyPressedEvent (int nKey, string strKeyName, int nIsBrailleKey, int nIsScriptKey)
 | 
|---|
| 405 |         SayString( "Key Pressed Event")
 | 
|---|
| 406 |         KeyPressedEvent (nKey, strKeyName, nIsBrailleKey, nIsScriptKey)
 | 
|---|
| 407 | EndFunction
 | 
|---|
| 408 | 
 | 
|---|
| 409 | void function ObjStateChangedEvent (handle hObj)
 | 
|---|
| 410 |         SayString( "Object State Changed Event")
 | 
|---|
| 411 |         ObjStateChangedEvent (hObj)
 | 
|---|
| 412 | EndFunction
 | 
|---|
| 413 | 
 | 
|---|
| 414 | Void Function FocusPointMovedEvent (int nX, int nY, int nOldX, int nOldY, int nUnit, int nDir, int nTimeElapsed)
 | 
|---|
| 415 |         SayString( "Focus Point Moved Event")
 | 
|---|
| 416 |         FocusPointMovedEvent (nX, nY, nOldX, nOldY, nUnit, nDir, nTimeElapsed)
 | 
|---|
| 417 | EndFunction
 | 
|---|
| 418 | 
 | 
|---|
| 419 | Void Function ValueChangedEvent (handle hwnd, int objId, int childId, int nObjType, string sObjName, string sObjValue)
 | 
|---|
| 420 |         SayString( "Value Changed Event")
 | 
|---|
| 421 |         ValueChangedEvent (hwnd, objId, childId, nObjType, sObjName, sObjValue)
 | 
|---|
| 422 | EndFunction
 | 
|---|
| 423 | 
 | 
|---|
| 424 | Void Function DocumentLoadedEvent ()
 | 
|---|
| 425 |         SayString( "Dcoument Loaded Event")
 | 
|---|
| 426 |         DocumentLoadedEvent ()
 | 
|---|
| 427 | EndFunction
 | 
|---|
| 428 | 
 | 
|---|
| 429 | void function FormsModeEvent(int bEntering)
 | 
|---|
| 430 |         SayString( "Forms Mode Event")
 | 
|---|
| 431 |         FormsModeEvent(bEntering)
 | 
|---|
| 432 | EndFunction
 | 
|---|
| 433 | 
 | 
|---|
| 434 | void function TextSelectedEvent(string strText, int bUnSelecting)
 | 
|---|
| 435 |         SayString( "Text Selected Event")
 | 
|---|
| 436 |         TextSelectedEvent(strText, bUnSelecting)
 | 
|---|
| 437 | EndFunction
 | 
|---|
| 438 | /* End of event chasing */
 | 
|---|
| 439 | 
 | 
|---|
| 440 | 
 | 
|---|