aboutsummaryrefslogtreecommitdiff
path: root/lldb/utils/lui/breakwin.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/utils/lui/breakwin.py')
-rw-r--r--lldb/utils/lui/breakwin.py150
1 files changed, 77 insertions, 73 deletions
diff --git a/lldb/utils/lui/breakwin.py b/lldb/utils/lui/breakwin.py
index 734f5ed..7ecb78fd 100644
--- a/lldb/utils/lui/breakwin.py
+++ b/lldb/utils/lui/breakwin.py
@@ -1,90 +1,94 @@
##===-- breakwin.py ------------------------------------------*- Python -*-===##
##
-## The LLVM Compiler Infrastructure
+# The LLVM Compiler Infrastructure
##
-## This file is distributed under the University of Illinois Open Source
-## License. See LICENSE.TXT for details.
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
##
##===----------------------------------------------------------------------===##
import cui
import curses
-import lldb, lldbutil
+import lldb
+import lldbutil
import re
+
class BreakWin(cui.ListWin):
- def __init__(self, driver, x, y, w, h):
- super(BreakWin, self).__init__(x, y, w, h)
- self.driver = driver
- self.update()
- self.showDetails = {}
- def handleEvent(self, event):
- if isinstance(event, lldb.SBEvent):
- if lldb.SBBreakpoint.EventIsBreakpointEvent(event):
+ def __init__(self, driver, x, y, w, h):
+ super(BreakWin, self).__init__(x, y, w, h)
+ self.driver = driver
self.update()
- if isinstance(event, int):
- if event == ord('d'):
- self.deleteSelected()
- if event == curses.ascii.NL or event == curses.ascii.SP:
- self.toggleSelected()
- elif event == curses.ascii.TAB:
- if self.getSelected() != -1:
- target = self.driver.getTarget()
- if not target.IsValid():
- return
- i = target.GetBreakpointAtIndex(self.getSelected()).id
- self.showDetails[i] = not self.showDetails[i]
- self.update()
- super(BreakWin, self).handleEvent(event)
+ self.showDetails = {}
- def toggleSelected(self):
- if self.getSelected() == -1:
- return
- target = self.driver.getTarget()
- if not target.IsValid():
- return
- bp = target.GetBreakpointAtIndex(self.getSelected())
- bp.SetEnabled(not bp.IsEnabled())
+ def handleEvent(self, event):
+ if isinstance(event, lldb.SBEvent):
+ if lldb.SBBreakpoint.EventIsBreakpointEvent(event):
+ self.update()
+ if isinstance(event, int):
+ if event == ord('d'):
+ self.deleteSelected()
+ if event == curses.ascii.NL or event == curses.ascii.SP:
+ self.toggleSelected()
+ elif event == curses.ascii.TAB:
+ if self.getSelected() != -1:
+ target = self.driver.getTarget()
+ if not target.IsValid():
+ return
+ i = target.GetBreakpointAtIndex(self.getSelected()).id
+ self.showDetails[i] = not self.showDetails[i]
+ self.update()
+ super(BreakWin, self).handleEvent(event)
+
+ def toggleSelected(self):
+ if self.getSelected() == -1:
+ return
+ target = self.driver.getTarget()
+ if not target.IsValid():
+ return
+ bp = target.GetBreakpointAtIndex(self.getSelected())
+ bp.SetEnabled(not bp.IsEnabled())
- def deleteSelected(self):
- if self.getSelected() == -1:
- return
- target = self.driver.getTarget()
- if not target.IsValid():
- return
- bp = target.GetBreakpointAtIndex(self.getSelected())
- target.BreakpointDelete(bp.id)
+ def deleteSelected(self):
+ if self.getSelected() == -1:
+ return
+ target = self.driver.getTarget()
+ if not target.IsValid():
+ return
+ bp = target.GetBreakpointAtIndex(self.getSelected())
+ target.BreakpointDelete(bp.id)
- def update(self):
- target = self.driver.getTarget()
- if not target.IsValid():
- self.win.erase()
- self.win.noutrefresh()
- return
- selected = self.getSelected()
- self.clearItems()
- for i in range(0, target.GetNumBreakpoints()):
- bp = target.GetBreakpointAtIndex(i)
- if bp.IsInternal():
- continue
- text = lldbutil.get_description(bp)
- # FIXME: Use an API for this, not parsing the description.
- match = re.search('SBBreakpoint: id = ([^,]+), (.*)', text)
- try:
- id = match.group(1)
- desc = match.group(2).strip()
- if bp.IsEnabled():
- text = '%s: %s' % (id, desc)
- else:
- text = '%s: (disabled) %s' % (id, desc)
- except ValueError as e:
- # bp unparsable
- pass
+ def update(self):
+ target = self.driver.getTarget()
+ if not target.IsValid():
+ self.win.erase()
+ self.win.noutrefresh()
+ return
+ selected = self.getSelected()
+ self.clearItems()
+ for i in range(0, target.GetNumBreakpoints()):
+ bp = target.GetBreakpointAtIndex(i)
+ if bp.IsInternal():
+ continue
+ text = lldbutil.get_description(bp)
+ # FIXME: Use an API for this, not parsing the description.
+ match = re.search('SBBreakpoint: id = ([^,]+), (.*)', text)
+ try:
+ id = match.group(1)
+ desc = match.group(2).strip()
+ if bp.IsEnabled():
+ text = '%s: %s' % (id, desc)
+ else:
+ text = '%s: (disabled) %s' % (id, desc)
+ except ValueError as e:
+ # bp unparsable
+ pass
- if self.showDetails.setdefault(bp.id, False):
- for location in bp:
- desc = lldbutil.get_description(location, lldb.eDescriptionLevelFull)
- text += '\n ' + desc
- self.addItem(text)
- self.setSelected(selected)
+ if self.showDetails.setdefault(bp.id, False):
+ for location in bp:
+ desc = lldbutil.get_description(
+ location, lldb.eDescriptionLevelFull)
+ text += '\n ' + desc
+ self.addItem(text)
+ self.setSelected(selected)