5 |
5 |
6 """ |
6 """ |
7 Module implementing the Call Trace viewer widget. |
7 Module implementing the Call Trace viewer widget. |
8 """ |
8 """ |
9 |
9 |
10 |
10 import re |
11 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QRegExp, QFileInfo |
11 |
|
12 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QFileInfo |
12 from PyQt5.QtWidgets import QWidget, QTreeWidgetItem |
13 from PyQt5.QtWidgets import QWidget, QTreeWidgetItem |
13 |
14 |
14 from E5Gui.E5Application import e5App |
15 from E5Gui.E5Application import e5App |
15 from E5Gui import E5FileDialog, E5MessageBox |
16 from E5Gui import E5FileDialog, E5MessageBox |
16 |
17 |
56 self.callTrace.setHeaderItem(self.__headerItem) |
57 self.callTrace.setHeaderItem(self.__headerItem) |
57 |
58 |
58 self.__callStack = [] |
59 self.__callStack = [] |
59 |
60 |
60 self.__entryFormat = "{0}:{1} ({2})" |
61 self.__entryFormat = "{0}:{1} ({2})" |
61 self.__entryRe = QRegExp(r"""(.+):(\d+)\s\((.*)\)""") |
62 self.__entryRe = re.compile(r"""(.+):(\d+)\s\((.*)\)""") |
62 |
63 |
63 self.__projectMode = False |
64 self.__projectMode = False |
64 self.__project = None |
65 self.__project = None |
65 |
66 |
66 stopOnExit = Preferences.toBool( |
67 stopOnExit = Preferences.toBool( |
195 @param item reference to the double clicked item (QTreeWidgetItem) |
196 @param item reference to the double clicked item (QTreeWidgetItem) |
196 @param column column that was double clicked (integer) |
197 @param column column that was double clicked (integer) |
197 """ |
198 """ |
198 if item is not None and column > 0: |
199 if item is not None and column > 0: |
199 columnStr = item.text(column) |
200 columnStr = item.text(column) |
200 if self.__entryRe.exactMatch(columnStr.strip()): |
201 match = self.__entryRe.fullmatch(columnStr.strip()) |
201 filename, lineno, func = self.__entryRe.capturedTexts()[1:] |
202 if match: |
|
203 filename, lineno, func = match.groups() |
202 try: |
204 try: |
203 lineno = int(lineno) |
205 lineno = int(lineno) |
204 except ValueError: |
206 except ValueError: |
205 # do nothing, if the line info is not an integer |
207 # do nothing, if the line info is not an integer |
206 return |
208 return |