138 self.menu = QMenu() |
139 self.menu = QMenu() |
139 self.menu.addAction(self.trUtf8("Add"), self.__addWatchPoint) |
140 self.menu.addAction(self.trUtf8("Add"), self.__addWatchPoint) |
140 self.menu.addAction(self.trUtf8("Edit..."), self.__editWatchPoint) |
141 self.menu.addAction(self.trUtf8("Edit..."), self.__editWatchPoint) |
141 self.menu.addSeparator() |
142 self.menu.addSeparator() |
142 self.menu.addAction(self.trUtf8("Enable"), self.__enableWatchPoint) |
143 self.menu.addAction(self.trUtf8("Enable"), self.__enableWatchPoint) |
143 self.menu.addAction(self.trUtf8("Enable all"), self.__enableAllWatchPoints) |
144 self.menu.addAction(self.trUtf8("Enable all"), |
|
145 self.__enableAllWatchPoints) |
144 self.menu.addSeparator() |
146 self.menu.addSeparator() |
145 self.menu.addAction(self.trUtf8("Disable"), self.__disableWatchPoint) |
147 self.menu.addAction(self.trUtf8("Disable"), self.__disableWatchPoint) |
146 self.menu.addAction(self.trUtf8("Disable all"), self.__disableAllWatchPoints) |
148 self.menu.addAction(self.trUtf8("Disable all"), |
|
149 self.__disableAllWatchPoints) |
147 self.menu.addSeparator() |
150 self.menu.addSeparator() |
148 self.menu.addAction(self.trUtf8("Delete"), self.__deleteWatchPoint) |
151 self.menu.addAction(self.trUtf8("Delete"), self.__deleteWatchPoint) |
149 self.menu.addAction(self.trUtf8("Delete all"), self.__deleteAllWatchPoints) |
152 self.menu.addAction(self.trUtf8("Delete all"), |
|
153 self.__deleteAllWatchPoints) |
150 self.menu.addSeparator() |
154 self.menu.addSeparator() |
151 self.menu.addAction(self.trUtf8("Configure..."), self.__configure) |
155 self.menu.addAction(self.trUtf8("Configure..."), self.__configure) |
152 |
156 |
153 self.backMenuActions = {} |
157 self.backMenuActions = {} |
154 self.backMenu = QMenu() |
158 self.backMenu = QMenu() |
155 self.backMenu.addAction(self.trUtf8("Add"), self.__addWatchPoint) |
159 self.backMenu.addAction(self.trUtf8("Add"), self.__addWatchPoint) |
156 self.backMenuActions["EnableAll"] = \ |
160 self.backMenuActions["EnableAll"] = \ |
157 self.backMenu.addAction(self.trUtf8("Enable all"), |
161 self.backMenu.addAction(self.trUtf8("Enable all"), |
158 self.__enableAllWatchPoints) |
162 self.__enableAllWatchPoints) |
159 self.backMenuActions["DisableAll"] = \ |
163 self.backMenuActions["DisableAll"] = \ |
160 self.backMenu.addAction(self.trUtf8("Disable all"), |
164 self.backMenu.addAction(self.trUtf8("Disable all"), |
161 self.__disableAllWatchPoints) |
165 self.__disableAllWatchPoints) |
162 self.backMenuActions["DeleteAll"] = \ |
166 self.backMenuActions["DeleteAll"] = \ |
163 self.backMenu.addAction(self.trUtf8("Delete all"), |
167 self.backMenu.addAction(self.trUtf8("Delete all"), |
164 self.__deleteAllWatchPoints) |
168 self.__deleteAllWatchPoints) |
165 self.backMenu.addSeparator() |
169 self.backMenu.addSeparator() |
166 self.backMenu.addAction(self.trUtf8("Configure..."), self.__configure) |
170 self.backMenu.addAction(self.trUtf8("Configure..."), self.__configure) |
167 self.backMenu.aboutToShow.connect(self.__showBackMenu) |
171 self.backMenu.aboutToShow.connect(self.__showBackMenu) |
168 |
172 |
169 self.multiMenu = QMenu() |
173 self.multiMenu = QMenu() |
170 self.multiMenu.addAction(self.trUtf8("Add"), self.__addWatchPoint) |
174 self.multiMenu.addAction(self.trUtf8("Add"), self.__addWatchPoint) |
171 self.multiMenu.addSeparator() |
175 self.multiMenu.addSeparator() |
172 self.multiMenu.addAction(self.trUtf8("Enable selected"), |
176 self.multiMenu.addAction(self.trUtf8("Enable selected"), |
173 self.__enableSelectedWatchPoints) |
177 self.__enableSelectedWatchPoints) |
174 self.multiMenu.addAction(self.trUtf8("Enable all"), self.__enableAllWatchPoints) |
178 self.multiMenu.addAction(self.trUtf8("Enable all"), |
|
179 self.__enableAllWatchPoints) |
175 self.multiMenu.addSeparator() |
180 self.multiMenu.addSeparator() |
176 self.multiMenu.addAction(self.trUtf8("Disable selected"), |
181 self.multiMenu.addAction(self.trUtf8("Disable selected"), |
177 self.__disableSelectedWatchPoints) |
182 self.__disableSelectedWatchPoints) |
178 self.multiMenu.addAction(self.trUtf8("Disable all"), self.__disableAllWatchPoints) |
183 self.multiMenu.addAction(self.trUtf8("Disable all"), |
|
184 self.__disableAllWatchPoints) |
179 self.multiMenu.addSeparator() |
185 self.multiMenu.addSeparator() |
180 self.multiMenu.addAction(self.trUtf8("Delete selected"), |
186 self.multiMenu.addAction(self.trUtf8("Delete selected"), |
181 self.__deleteSelectedWatchPoints) |
187 self.__deleteSelectedWatchPoints) |
182 self.multiMenu.addAction(self.trUtf8("Delete all"), self.__deleteAllWatchPoints) |
188 self.multiMenu.addAction(self.trUtf8("Delete all"), |
|
189 self.__deleteAllWatchPoints) |
183 self.multiMenu.addSeparator() |
190 self.multiMenu.addSeparator() |
184 self.multiMenu.addAction(self.trUtf8("Configure..."), self.__configure) |
191 self.multiMenu.addAction(self.trUtf8("Configure..."), self.__configure) |
185 |
192 |
186 def __showContextMenu(self, coord): |
193 def __showContextMenu(self, coord): |
187 """ |
194 """ |
208 Private slot to clear the selection. |
215 Private slot to clear the selection. |
209 """ |
216 """ |
210 for index in self.selectedIndexes(): |
217 for index in self.selectedIndexes(): |
211 self.__setRowSelected(index, False) |
218 self.__setRowSelected(index, False) |
212 |
219 |
213 def __findDuplicates(self, cond, special, showMessage=False, index=QModelIndex()): |
220 def __findDuplicates(self, cond, special, showMessage=False, |
|
221 index=QModelIndex()): |
214 """ |
222 """ |
215 Private method to check, if an entry already exists. |
223 Private method to check, if an entry already exists. |
216 |
224 |
217 @param cond condition to check (string) |
225 @param cond condition to check (string) |
218 @param special special condition to check (string) |
226 @param special special condition to check (string) |
219 @param showMessage flag indicating a message should be shown, |
227 @param showMessage flag indicating a message should be shown, |
220 if a duplicate entry is found (boolean) |
228 if a duplicate entry is found (boolean) |
221 @param index index that should not be considered duplicate (QModelIndex) |
229 @param index index that should not be considered duplicate |
|
230 (QModelIndex) |
222 @return flag indicating a duplicate entry (boolean) |
231 @return flag indicating a duplicate entry (boolean) |
223 """ |
232 """ |
224 idx = self.__model.getWatchPointIndex(cond, special) |
233 idx = self.__model.getWatchPointIndex(cond, special) |
225 duplicate = idx.isValid() and idx.internalPointer() != index.internalPointer() |
234 duplicate = idx.isValid() and \ |
|
235 idx.internalPointer() != index.internalPointer() |
226 if showMessage and duplicate: |
236 if showMessage and duplicate: |
227 if not special: |
237 if not special: |
228 msg = self.trUtf8("""<p>A watch expression '<b>{0}</b>'""" |
238 msg = self.trUtf8("""<p>A watch expression '<b>{0}</b>'""" |
229 """ already exists.</p>""")\ |
239 """ already exists.</p>""")\ |
230 .format(Utilities.html_encode(cond)) |
240 .format(Utilities.html_encode(cond)) |
231 else: |
241 else: |
232 msg = self.trUtf8("""<p>A watch expression '<b>{0}</b>'""" |
242 msg = self.trUtf8( |
233 """ for the variable <b>{1}</b> already exists.</p>""")\ |
243 """<p>A watch expression '<b>{0}</b>'""" |
234 .format(special, Utilities.html_encode(cond)) |
244 """ for the variable <b>{1}</b> already exists.</p>""")\ |
|
245 .format(special, Utilities.html_encode(cond)) |
235 E5MessageBox.warning(self, |
246 E5MessageBox.warning(self, |
236 self.trUtf8("Watch expression already exists"), |
247 self.trUtf8("Watch expression already exists"), |
237 msg) |
248 msg) |
238 |
249 |
239 return duplicate |
250 return duplicate |
245 from .EditWatchpointDialog import EditWatchpointDialog |
256 from .EditWatchpointDialog import EditWatchpointDialog |
246 dlg = EditWatchpointDialog(("", False, True, 0, ""), self) |
257 dlg = EditWatchpointDialog(("", False, True, 0, ""), self) |
247 if dlg.exec_() == QDialog.Accepted: |
258 if dlg.exec_() == QDialog.Accepted: |
248 cond, temp, enabled, ignorecount, special = dlg.getData() |
259 cond, temp, enabled, ignorecount, special = dlg.getData() |
249 if not self.__findDuplicates(cond, special, True): |
260 if not self.__findDuplicates(cond, special, True): |
250 self.__model.addWatchPoint(cond, special, (temp, enabled, ignorecount)) |
261 self.__model.addWatchPoint(cond, special, |
|
262 (temp, enabled, ignorecount)) |
251 self.__resizeColumns() |
263 self.__resizeColumns() |
252 self.__resort() |
264 self.__resort() |
253 |
265 |
254 def __doubleClicked(self, index): |
266 def __doubleClicked(self, index): |
255 """ |
267 """ |
313 self.__resizeColumns() |
326 self.__resizeColumns() |
314 self.__resort() |
327 self.__resort() |
315 |
328 |
316 def __enableAllWatchPoints(self): |
329 def __enableAllWatchPoints(self): |
317 """ |
330 """ |
318 Private slot to handle the enable all watch expressions context menu entry. |
331 Private slot to handle the enable all watch expressions context menu |
|
332 entry. |
319 """ |
333 """ |
320 index = self.model().index(0, 0) |
334 index = self.model().index(0, 0) |
321 while index.isValid(): |
335 while index.isValid(): |
322 self.__setWpEnabled(index, True) |
336 self.__setWpEnabled(index, True) |
323 index = self.indexBelow(index) |
337 index = self.indexBelow(index) |
324 self.__resizeColumns() |
338 self.__resizeColumns() |
325 self.__resort() |
339 self.__resort() |
326 |
340 |
327 def __enableSelectedWatchPoints(self): |
341 def __enableSelectedWatchPoints(self): |
328 """ |
342 """ |
329 Private slot to handle the enable selected watch expressions context menu entry. |
343 Private slot to handle the enable selected watch expressions context |
|
344 menu entry. |
330 """ |
345 """ |
331 for index in self.selectedIndexes(): |
346 for index in self.selectedIndexes(): |
332 if index.column() == 0: |
347 if index.column() == 0: |
333 self.__setWpEnabled(index, True) |
348 self.__setWpEnabled(index, True) |
334 self.__resizeColumns() |
349 self.__resizeColumns() |
343 self.__resizeColumns() |
358 self.__resizeColumns() |
344 self.__resort() |
359 self.__resort() |
345 |
360 |
346 def __disableAllWatchPoints(self): |
361 def __disableAllWatchPoints(self): |
347 """ |
362 """ |
348 Private slot to handle the disable all watch expressions context menu entry. |
363 Private slot to handle the disable all watch expressions context menu |
|
364 entry. |
349 """ |
365 """ |
350 index = self.model().index(0, 0) |
366 index = self.model().index(0, 0) |
351 while index.isValid(): |
367 while index.isValid(): |
352 self.__setWpEnabled(index, False) |
368 self.__setWpEnabled(index, False) |
353 index = self.indexBelow(index) |
369 index = self.indexBelow(index) |
354 self.__resizeColumns() |
370 self.__resizeColumns() |
355 self.__resort() |
371 self.__resort() |
356 |
372 |
357 def __disableSelectedWatchPoints(self): |
373 def __disableSelectedWatchPoints(self): |
358 """ |
374 """ |
359 Private slot to handle the disable selected watch expressions context menu entry. |
375 Private slot to handle the disable selected watch expressions context |
|
376 menu entry. |
360 """ |
377 """ |
361 for index in self.selectedIndexes(): |
378 for index in self.selectedIndexes(): |
362 if index.column() == 0: |
379 if index.column() == 0: |
363 self.__setWpEnabled(index, False) |
380 self.__setWpEnabled(index, False) |
364 self.__resizeColumns() |
381 self.__resizeColumns() |