40 |
40 |
41 self.setHeaderHidden(True) |
41 self.setHeaderHidden(True) |
42 self.setAlternatingRowColors(True) |
42 self.setAlternatingRowColors(True) |
43 self.setItemsExpandable(False) |
43 self.setItemsExpandable(False) |
44 self.setRootIsDecorated(False) |
44 self.setRootIsDecorated(False) |
45 self.setWindowTitle(self.trUtf8("Call Stack")) |
45 self.setWindowTitle(self.tr("Call Stack")) |
46 |
46 |
47 self.__menu = QMenu(self) |
47 self.__menu = QMenu(self) |
48 self.__sourceAct = self.__menu.addAction( |
48 self.__sourceAct = self.__menu.addAction( |
49 self.trUtf8("Show source"), self.__openSource) |
49 self.tr("Show source"), self.__openSource) |
50 self.__menu.addAction(self.trUtf8("Clear"), self.clear) |
50 self.__menu.addAction(self.tr("Clear"), self.clear) |
51 self.__menu.addSeparator() |
51 self.__menu.addSeparator() |
52 self.__menu.addAction(self.trUtf8("Save"), self.__saveStackTrace) |
52 self.__menu.addAction(self.tr("Save"), self.__saveStackTrace) |
53 self.setContextMenuPolicy(Qt.CustomContextMenu) |
53 self.setContextMenuPolicy(Qt.CustomContextMenu) |
54 self.customContextMenuRequested.connect(self.__showContextMenu) |
54 self.customContextMenuRequested.connect(self.__showContextMenu) |
55 |
55 |
56 self.__dbs = debugServer |
56 self.__dbs = debugServer |
57 |
57 |
58 # file name, line number, function name, arguments |
58 # file name, line number, function name, arguments |
59 self.__entryFormat = self.trUtf8("File: {0}\nLine: {1}\n{2}{3}") |
59 self.__entryFormat = self.tr("File: {0}\nLine: {1}\n{2}{3}") |
60 # file name, line number |
60 # file name, line number |
61 self.__entryFormatShort = self.trUtf8("File: {0}\nLine: {1}") |
61 self.__entryFormatShort = self.tr("File: {0}\nLine: {1}") |
62 |
62 |
63 self.__projectMode = False |
63 self.__projectMode = False |
64 self.__project = None |
64 self.__project = None |
65 |
65 |
66 self.__dbs.clientStack.connect(self.__showCallStack) |
66 self.__dbs.clientStack.connect(self.__showCallStack) |
153 Private slot to save the stack trace info to a file. |
153 Private slot to save the stack trace info to a file. |
154 """ |
154 """ |
155 if self.topLevelItemCount() > 0: |
155 if self.topLevelItemCount() > 0: |
156 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( |
156 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( |
157 self, |
157 self, |
158 self.trUtf8("Save Call Stack Info"), |
158 self.tr("Save Call Stack Info"), |
159 "", |
159 "", |
160 self.trUtf8("Text Files (*.txt);;All Files (*)"), |
160 self.tr("Text Files (*.txt);;All Files (*)"), |
161 None, |
161 None, |
162 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) |
162 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) |
163 if fname: |
163 if fname: |
164 ext = QFileInfo(fname).suffix() |
164 ext = QFileInfo(fname).suffix() |
165 if not ext: |
165 if not ext: |
167 if ex: |
167 if ex: |
168 fname += ex |
168 fname += ex |
169 if QFileInfo(fname).exists(): |
169 if QFileInfo(fname).exists(): |
170 res = E5MessageBox.yesNo( |
170 res = E5MessageBox.yesNo( |
171 self, |
171 self, |
172 self.trUtf8("Save Call Stack Info"), |
172 self.tr("Save Call Stack Info"), |
173 self.trUtf8("<p>The file <b>{0}</b> already exists." |
173 self.tr("<p>The file <b>{0}</b> already exists." |
174 " Overwrite it?</p>").format(fname), |
174 " Overwrite it?</p>").format(fname), |
175 icon=E5MessageBox.Warning) |
175 icon=E5MessageBox.Warning) |
176 if not res: |
176 if not res: |
177 return |
177 return |
178 fname = Utilities.toNativeSeparators(fname) |
178 fname = Utilities.toNativeSeparators(fname) |
179 |
179 |
186 itm = self.itemBelow(itm) |
186 itm = self.itemBelow(itm) |
187 f.close() |
187 f.close() |
188 except IOError as err: |
188 except IOError as err: |
189 E5MessageBox.critical( |
189 E5MessageBox.critical( |
190 self, |
190 self, |
191 self.trUtf8("Error saving Call Stack Info"), |
191 self.tr("Error saving Call Stack Info"), |
192 self.trUtf8("""<p>The call stack info could not be""" |
192 self.tr("""<p>The call stack info could not be""" |
193 """ written to <b>{0}</b></p>""" |
193 """ written to <b>{0}</b></p>""" |
194 """<p>Reason: {1}</p>""") |
194 """<p>Reason: {1}</p>""") |
195 .format(fname, str(err))) |
195 .format(fname, str(err))) |