import wx
def OnUpdateUI(evt,text_id):
# check for matching braces
CurrentWidget = wx.FindWindowById(text_id)
braceAtCaret = -1
braceOpposite = -1
charBefore = None
caretPos = CurrentWidget.GetCurrentPos()
if caretPos > 0:
charBefore = CurrentWidget.GetCharAt(caretPos - 1)
styleBefore = CurrentWidget.GetStyleAt(caretPos - 1)
# check before
if charBefore and chr(charBefore) in "[]{}()" and styleBefore == wx.stc.STC_P_OPERATOR:
braceAtCaret = caretPos - 1
# check after
if braceAtCaret < 0:
charAfter = CurrentWidget.GetCharAt(caretPos)
styleAfter = CurrentWidget.GetStyleAt(caretPos)
if charAfter and chr(charAfter) in "[]{}()" and styleAfter == wx.stc.STC_P_OPERATOR:
braceAtCaret = caretPos
if braceAtCaret >= 0:
braceOpposite = CurrentWidget.BraceMatch(braceAtCaret)
if braceAtCaret != -1 and braceOpposite == -1:
CurrentWidget.BraceBadLight(braceAtCaret)
else:
CurrentWidget.BraceHighlight(braceAtCaret, braceOpposite)
#pt = CurrentWidget.PointFromPosition(braceOpposite)
#CurrentWidget.Refresh(True, wx.Rect(pt.x, pt.y, 5,5))
#print pt
#CurrentWidget.Refresh(True)
evt.Skip()