QScintilla/Editor.py

changeset 6299
feb3cf2cbde3
parent 6297
85e20e9b4d55
child 6305
7652b925c25e
equal deleted inserted replaced
6298:2be37423974e 6299:feb3cf2cbde3
27 27
28 from E5Gui.E5Application import e5App 28 from E5Gui.E5Application import e5App
29 from E5Gui import E5FileDialog, E5MessageBox 29 from E5Gui import E5FileDialog, E5MessageBox
30 from E5Utilities.E5Cache import E5Cache 30 from E5Utilities.E5Cache import E5Cache
31 31
32 from .QsciScintillaCompat import QsciScintillaCompat, QSCINTILLA_VERSION 32 from .QsciScintillaCompat import QsciScintillaCompat
33 from .EditorMarkerMap import EditorMarkerMap 33 from .EditorMarkerMap import EditorMarkerMap
34 34
35 import Preferences 35 import Preferences
36 import Utilities 36 import Utilities
37 from Utilities import MouseUtilities 37 from Utilities import MouseUtilities
271 # connect signals before loading the text 271 # connect signals before loading the text
272 self.modificationChanged.connect(self.__modificationChanged) 272 self.modificationChanged.connect(self.__modificationChanged)
273 self.cursorPositionChanged.connect(self.__cursorPositionChanged) 273 self.cursorPositionChanged.connect(self.__cursorPositionChanged)
274 self.modificationAttempted.connect(self.__modificationReadOnly) 274 self.modificationAttempted.connect(self.__modificationReadOnly)
275 275
276 # margins layout
277 if QSCINTILLA_VERSION() >= 0x020301:
278 self.__unifiedMargins = Preferences.getEditor("UnifiedMargins")
279 else:
280 self.__unifiedMargins = True
281
282 # define the margins markers 276 # define the margins markers
283 self.__changeMarkerSaved = self.markerDefine( 277 self.__changeMarkerSaved = self.markerDefine(
284 self.__createChangeMarkerPixmap( 278 self.__createChangeMarkerPixmap(
285 "OnlineChangeTraceMarkerSaved")) 279 "OnlineChangeTraceMarkerSaved"))
286 self.__changeMarkerUnsaved = self.markerDefine( 280 self.__changeMarkerUnsaved = self.markerDefine(
1147 """ 1141 """
1148 Private method used to setup the context menu for the margins. 1142 Private method used to setup the context menu for the margins.
1149 """ 1143 """
1150 self.marginMenuActs = {} 1144 self.marginMenuActs = {}
1151 1145
1152 if self.__unifiedMargins:
1153 self.__initContextMenuUnifiedMargins()
1154 else:
1155 self.__initContextMenuSeparateMargins()
1156
1157 def __initContextMenuSeparateMargins(self):
1158 """
1159 Private method used to setup the context menu for the separated
1160 margins.
1161 """
1162 # bookmark margin 1146 # bookmark margin
1163 self.bmMarginMenu = QMenu() 1147 self.bmMarginMenu = QMenu()
1164 1148
1165 self.bmMarginMenu.addAction( 1149 self.bmMarginMenu.addAction(
1166 self.tr('Toggle bookmark'), self.menuToggleBookmark) 1150 self.tr('Toggle bookmark'), self.menuToggleBookmark)
1170 self.tr('Previous bookmark'), self.previousBookmark) 1154 self.tr('Previous bookmark'), self.previousBookmark)
1171 self.marginMenuActs["ClearBookmark"] = self.bmMarginMenu.addAction( 1155 self.marginMenuActs["ClearBookmark"] = self.bmMarginMenu.addAction(
1172 self.tr('Clear all bookmarks'), self.clearBookmarks) 1156 self.tr('Clear all bookmarks'), self.clearBookmarks)
1173 1157
1174 self.bmMarginMenu.aboutToShow.connect( 1158 self.bmMarginMenu.aboutToShow.connect(
1175 lambda: self.__showContextMenuMargin(self.bmMarginMenu, False)) 1159 lambda: self.__showContextMenuMargin(self.bmMarginMenu))
1176 1160
1177 # breakpoint margin 1161 # breakpoint margin
1178 self.bpMarginMenu = QMenu() 1162 self.bpMarginMenu = QMenu()
1179 1163
1180 self.marginMenuActs["Breakpoint"] = self.bpMarginMenu.addAction( 1164 self.marginMenuActs["Breakpoint"] = self.bpMarginMenu.addAction(
1195 self.menuPreviousBreakpoint) 1179 self.menuPreviousBreakpoint)
1196 self.marginMenuActs["ClearBreakpoint"] = self.bpMarginMenu.addAction( 1180 self.marginMenuActs["ClearBreakpoint"] = self.bpMarginMenu.addAction(
1197 self.tr('Clear all breakpoints'), self.__menuClearBreakpoints) 1181 self.tr('Clear all breakpoints'), self.__menuClearBreakpoints)
1198 1182
1199 self.bpMarginMenu.aboutToShow.connect( 1183 self.bpMarginMenu.aboutToShow.connect(
1200 lambda: self.__showContextMenuMargin(self.bpMarginMenu, False)) 1184 lambda: self.__showContextMenuMargin(self.bpMarginMenu))
1201 1185
1202 # fold margin 1186 # fold margin
1203 self.foldMarginMenu = QMenu() 1187 self.foldMarginMenu = QMenu()
1204 1188
1205 self.marginMenuActs["ToggleAllFolds"] = \ 1189 self.marginMenuActs["ToggleAllFolds"] = \
1228 self.foldMarginMenu.addAction( 1212 self.foldMarginMenu.addAction(
1229 self.tr("Clear all folds"), 1213 self.tr("Clear all folds"),
1230 self.clearFolds) 1214 self.clearFolds)
1231 1215
1232 self.foldMarginMenu.aboutToShow.connect( 1216 self.foldMarginMenu.aboutToShow.connect(
1233 lambda: self.__showContextMenuMargin(self.foldMarginMenu, False)) 1217 lambda: self.__showContextMenuMargin(self.foldMarginMenu))
1234 1218
1235 # indicator margin 1219 # indicator margin
1236 self.indicMarginMenu = QMenu() 1220 self.indicMarginMenu = QMenu()
1237 1221
1238 self.marginMenuActs["GotoSyntaxError"] = \ 1222 self.marginMenuActs["GotoSyntaxError"] = \
1282 self.marginMenuActs["ClearChangeMarkers"] = \ 1266 self.marginMenuActs["ClearChangeMarkers"] = \
1283 self.indicMarginMenu.addAction( 1267 self.indicMarginMenu.addAction(
1284 self.tr('Clear changes'), self.__reinitOnlineChangeTrace) 1268 self.tr('Clear changes'), self.__reinitOnlineChangeTrace)
1285 1269
1286 self.indicMarginMenu.aboutToShow.connect( 1270 self.indicMarginMenu.aboutToShow.connect(
1287 lambda: self.__showContextMenuMargin(self.indicMarginMenu, False)) 1271 lambda: self.__showContextMenuMargin(self.indicMarginMenu))
1288
1289 def __initContextMenuUnifiedMargins(self):
1290 """
1291 Private method used to setup the context menu for the unified margins.
1292 """
1293 self.marginMenu = QMenu()
1294
1295 self.marginMenu.addAction(
1296 self.tr('Toggle bookmark'), self.menuToggleBookmark)
1297 self.marginMenuActs["NextBookmark"] = self.marginMenu.addAction(
1298 self.tr('Next bookmark'), self.nextBookmark)
1299 self.marginMenuActs["PreviousBookmark"] = self.marginMenu.addAction(
1300 self.tr('Previous bookmark'), self.previousBookmark)
1301 self.marginMenuActs["ClearBookmark"] = self.marginMenu.addAction(
1302 self.tr('Clear all bookmarks'), self.clearBookmarks)
1303 self.marginMenu.addSeparator()
1304 self.marginMenuActs["GotoSyntaxError"] = self.marginMenu.addAction(
1305 self.tr('Goto syntax error'), self.gotoSyntaxError)
1306 self.marginMenuActs["ShowSyntaxError"] = self.marginMenu.addAction(
1307 self.tr('Show syntax error message'), self.__showSyntaxError)
1308 self.marginMenuActs["ClearSyntaxError"] = self.marginMenu.addAction(
1309 self.tr('Clear syntax error'), self.clearSyntaxError)
1310 self.marginMenu.addSeparator()
1311 self.marginMenuActs["NextWarningMarker"] = self.marginMenu.addAction(
1312 self.tr("Next warning"), self.nextWarning)
1313 self.marginMenuActs["PreviousWarningMarker"] = \
1314 self.marginMenu.addAction(
1315 self.tr("Previous warning"), self.previousWarning)
1316 self.marginMenuActs["ShowWarning"] = self.marginMenu.addAction(
1317 self.tr('Show warning message'), self.__showWarning)
1318 self.marginMenuActs["ClearWarnings"] = self.marginMenu.addAction(
1319 self.tr('Clear warnings'), self.clearWarnings)
1320 self.marginMenu.addSeparator()
1321 self.marginMenuActs["Breakpoint"] = self.marginMenu.addAction(
1322 self.tr('Toggle breakpoint'), self.menuToggleBreakpoint)
1323 self.marginMenuActs["TempBreakpoint"] = self.marginMenu.addAction(
1324 self.tr('Toggle temporary breakpoint'),
1325 self.__menuToggleTemporaryBreakpoint)
1326 self.marginMenuActs["EditBreakpoint"] = self.marginMenu.addAction(
1327 self.tr('Edit breakpoint...'), self.menuEditBreakpoint)
1328 self.marginMenuActs["EnableBreakpoint"] = self.marginMenu.addAction(
1329 self.tr('Enable breakpoint'),
1330 self.__menuToggleBreakpointEnabled)
1331 self.marginMenuActs["NextBreakpoint"] = self.marginMenu.addAction(
1332 self.tr('Next breakpoint'), self.menuNextBreakpoint)
1333 self.marginMenuActs["PreviousBreakpoint"] = self.marginMenu.addAction(
1334 self.tr('Previous breakpoint'), self.menuPreviousBreakpoint)
1335 self.marginMenuActs["ClearBreakpoint"] = self.marginMenu.addAction(
1336 self.tr('Clear all breakpoints'), self.__menuClearBreakpoints)
1337 self.marginMenu.addSeparator()
1338 self.marginMenuActs["NextCoverageMarker"] = self.marginMenu.addAction(
1339 self.tr('Next uncovered line'), self.nextUncovered)
1340 self.marginMenuActs["PreviousCoverageMarker"] = \
1341 self.marginMenu.addAction(
1342 self.tr('Previous uncovered line'), self.previousUncovered)
1343 self.marginMenu.addSeparator()
1344 self.marginMenuActs["NextTaskMarker"] = self.marginMenu.addAction(
1345 self.tr('Next task'), self.nextTask)
1346 self.marginMenuActs["PreviousTaskMarker"] = self.marginMenu.addAction(
1347 self.tr('Previous task'), self.previousTask)
1348 self.marginMenu.addSeparator()
1349 self.marginMenuActs["NextChangeMarker"] = self.marginMenu.addAction(
1350 self.tr('Next change'), self.nextChange)
1351 self.marginMenuActs["PreviousChangeMarker"] = \
1352 self.marginMenu.addAction(
1353 self.tr('Previous change'), self.previousChange)
1354 self.marginMenuActs["ClearChangeMarkers"] = \
1355 self.marginMenu.addAction(
1356 self.tr('Clear changes'), self.__reinitOnlineChangeTrace)
1357 self.marginMenu.addSeparator()
1358 self.marginMenuActs["LMBbookmarks"] = self.marginMenu.addAction(
1359 self.tr('LMB toggles bookmarks'), self.__lmBbookmarks)
1360 self.marginMenuActs["LMBbookmarks"].setCheckable(True)
1361 self.marginMenuActs["LMBbookmarks"].setChecked(False)
1362 self.marginMenuActs["LMBbreakpoints"] = self.marginMenu.addAction(
1363 self.tr('LMB toggles breakpoints'), self.__lmBbreakpoints)
1364 self.marginMenuActs["LMBbreakpoints"].setCheckable(True)
1365 self.marginMenuActs["LMBbreakpoints"].setChecked(True)
1366
1367 self.marginMenu.aboutToShow.connect(
1368 lambda: self.__showContextMenuMargin(self.marginMenu, True))
1369 1272
1370 def __exportMenuTriggered(self, act): 1273 def __exportMenuTriggered(self, act):
1371 """ 1274 """
1372 Private method to handle the selection of an export format. 1275 Private method to handle the selection of an export format.
1373 1276
2389 if dlg.exec_() == QDialog.Accepted: 2292 if dlg.exec_() == QDialog.Accepted:
2390 cond, temp, enabled, ignorecount = dlg.getData() 2293 cond, temp, enabled, ignorecount = dlg.getData()
2391 self.breakpointModel.setBreakPointByIndex( 2294 self.breakpointModel.setBreakPointByIndex(
2392 index, self.fileName, ln, 2295 index, self.fileName, ln,
2393 (cond, temp, enabled, ignorecount)) 2296 (cond, temp, enabled, ignorecount))
2297 break
2394 2298
2395 self.line = -1 2299 self.line = -1
2396 2300
2397 def menuNextBreakpoint(self): 2301 def menuNextBreakpoint(self):
2398 """ 2302 """
3383 3287
3384 @param margin id of the clicked margin (integer) 3288 @param margin id of the clicked margin (integer)
3385 @param line line number of the click (integer) 3289 @param line line number of the click (integer)
3386 @param modifiers keyboard modifiers (Qt.KeyboardModifiers) 3290 @param modifiers keyboard modifiers (Qt.KeyboardModifiers)
3387 """ 3291 """
3388 if self.__unifiedMargins: 3292 if margin == self.__bmMargin:
3389 if margin == 1: 3293 self.toggleBookmark(line + 1)
3390 if modifiers & Qt.KeyboardModifiers(Qt.ShiftModifier): 3294 elif margin == self.__bpMargin:
3391 if self.marginMenuActs["LMBbreakpoints"].isChecked(): 3295 self.__toggleBreakpoint(line + 1)
3392 self.toggleBookmark(line + 1) 3296 elif margin == self.__indicMargin:
3393 else: 3297 if self.markersAtLine(line) & (1 << self.syntaxerror):
3394 self.__toggleBreakpoint(line + 1) 3298 self.__showSyntaxError(line)
3395 elif modifiers & Qt.KeyboardModifiers(Qt.ControlModifier): 3299 elif self.markersAtLine(line) & (1 << self.warning):
3396 if self.markersAtLine(line) & (1 << self.syntaxerror): 3300 self.__showWarning(line)
3397 self.__showSyntaxError(line)
3398 elif self.markersAtLine(line) & (1 << self.warning):
3399 self.__showWarning(line)
3400 else:
3401 if self.marginMenuActs["LMBbreakpoints"].isChecked():
3402 self.__toggleBreakpoint(line + 1)
3403 else:
3404 self.toggleBookmark(line + 1)
3405 else:
3406 if margin == self.__bmMargin:
3407 self.toggleBookmark(line + 1)
3408 elif margin == self.__bpMargin:
3409 self.__toggleBreakpoint(line + 1)
3410 elif margin == self.__indicMargin:
3411 if self.markersAtLine(line) & (1 << self.syntaxerror):
3412 self.__showSyntaxError(line)
3413 elif self.markersAtLine(line) & (1 << self.warning):
3414 self.__showWarning(line)
3415 3301
3416 def handleMonospacedEnable(self): 3302 def handleMonospacedEnable(self):
3417 """ 3303 """
3418 Public slot to handle the Use Monospaced Font context menu entry. 3304 Public slot to handle the Use Monospaced Font context menu entry.
3419 """ 3305 """
4192 4078
4193 # read the typing completer settings 4079 # read the typing completer settings
4194 if self.completer is not None: 4080 if self.completer is not None:
4195 self.completer.readSettings() 4081 self.completer.readSettings()
4196 4082
4197 # set the margins layout
4198 if QSCINTILLA_VERSION() >= 0x020301:
4199 self.__unifiedMargins = Preferences.getEditor("UnifiedMargins")
4200
4201 # set the line marker colours or pixmap 4083 # set the line marker colours or pixmap
4202 if Preferences.getEditor("LineMarkersBackground"): 4084 if Preferences.getEditor("LineMarkersBackground"):
4203 self.markerDefine(QsciScintilla.Background, self.currentline) 4085 self.markerDefine(QsciScintilla.Background, self.currentline)
4204 self.markerDefine(QsciScintilla.Background, self.errorline) 4086 self.markerDefine(QsciScintilla.Background, self.errorline)
4205 self.__setLineMarkerColours() 4087 self.__setLineMarkerColours()
4311 self.setMarginMarkerMask(margin, 0) 4193 self.setMarginMarkerMask(margin, 0)
4312 self.setMarginWidth(margin, 0) 4194 self.setMarginWidth(margin, 0)
4313 self.setMarginSensitivity(margin, False) 4195 self.setMarginSensitivity(margin, False)
4314 4196
4315 # set marker margin(s) settings 4197 # set marker margin(s) settings
4316 if self.__unifiedMargins: 4198 self.__bmMargin = 0
4317 margin1Mask = (1 << self.breakpoint) | \ 4199 self.__linenoMargin = 1
4318 (1 << self.cbreakpoint) | \ 4200 self.__bpMargin = 2
4319 (1 << self.tbreakpoint) | \ 4201 self.__foldMargin = 3
4320 (1 << self.tcbreakpoint) | \ 4202 self.__indicMargin = 4
4321 (1 << self.dbreakpoint) | \ 4203
4322 (1 << self.currentline) | \ 4204 marginBmMask = (1 << self.bookmark)
4323 (1 << self.errorline) | \ 4205 self.setMarginWidth(self.__bmMargin, 16)
4324 (1 << self.bookmark) | \ 4206 self.setMarginSensitivity(self.__bmMargin, True)
4325 (1 << self.syntaxerror) | \ 4207 self.setMarginMarkerMask(self.__bmMargin, marginBmMask)
4208
4209 marginBpMask = (1 << self.breakpoint) | \
4210 (1 << self.cbreakpoint) | \
4211 (1 << self.tbreakpoint) | \
4212 (1 << self.tcbreakpoint) | \
4213 (1 << self.dbreakpoint)
4214 self.setMarginWidth(self.__bpMargin, 16)
4215 self.setMarginSensitivity(self.__bpMargin, True)
4216 self.setMarginMarkerMask(self.__bpMargin, marginBpMask)
4217
4218 marginIndicMask = (1 << self.syntaxerror) | \
4326 (1 << self.notcovered) | \ 4219 (1 << self.notcovered) | \
4327 (1 << self.taskmarker) | \ 4220 (1 << self.taskmarker) | \
4328 (1 << self.warning) | \ 4221 (1 << self.warning) | \
4329 (1 << self.__changeMarkerUnsaved) | \ 4222 (1 << self.__changeMarkerUnsaved) | \
4330 (1 << self.__changeMarkerSaved) 4223 (1 << self.__changeMarkerSaved) | \
4331 self.setMarginWidth(1, 16) 4224 (1 << self.currentline) | \
4332 self.setMarginSensitivity(1, True) 4225 (1 << self.errorline)
4333 self.setMarginMarkerMask(1, margin1Mask) 4226 self.setMarginWidth(self.__indicMargin, 16)
4334 4227 self.setMarginSensitivity(self.__indicMargin, True)
4335 self.__linenoMargin = 0 4228 self.setMarginMarkerMask(self.__indicMargin, marginIndicMask)
4336 self.__foldMargin = 2
4337 else:
4338
4339 self.__bmMargin = 0
4340 self.__linenoMargin = 1
4341 self.__bpMargin = 2
4342 self.__foldMargin = 3
4343 self.__indicMargin = 4
4344
4345 marginBmMask = (1 << self.bookmark)
4346 self.setMarginWidth(self.__bmMargin, 16)
4347 self.setMarginSensitivity(self.__bmMargin, True)
4348 self.setMarginMarkerMask(self.__bmMargin, marginBmMask)
4349
4350 marginBpMask = (1 << self.breakpoint) | \
4351 (1 << self.cbreakpoint) | \
4352 (1 << self.tbreakpoint) | \
4353 (1 << self.tcbreakpoint) | \
4354 (1 << self.dbreakpoint)
4355 self.setMarginWidth(self.__bpMargin, 16)
4356 self.setMarginSensitivity(self.__bpMargin, True)
4357 self.setMarginMarkerMask(self.__bpMargin, marginBpMask)
4358
4359 marginIndicMask = (1 << self.syntaxerror) | \
4360 (1 << self.notcovered) | \
4361 (1 << self.taskmarker) | \
4362 (1 << self.warning) | \
4363 (1 << self.__changeMarkerUnsaved) | \
4364 (1 << self.__changeMarkerSaved) | \
4365 (1 << self.currentline) | \
4366 (1 << self.errorline)
4367 self.setMarginWidth(self.__indicMargin, 16)
4368 self.setMarginSensitivity(self.__indicMargin, True)
4369 self.setMarginMarkerMask(self.__indicMargin, marginIndicMask)
4370 4229
4371 # set linenumber margin settings 4230 # set linenumber margin settings
4372 linenoMargin = Preferences.getEditor("LinenoMargin") 4231 linenoMargin = Preferences.getEditor("LinenoMargin")
4373 self.setMarginLineNumbers(self.__linenoMargin, linenoMargin) 4232 self.setMarginLineNumbers(self.__linenoMargin, linenoMargin)
4374 if linenoMargin: 4233 if linenoMargin:
5255 self.spellingMenu.popup(evt.globalPos()) 5114 self.spellingMenu.popup(evt.globalPos())
5256 else: 5115 else:
5257 self.menu.popup(evt.globalPos()) 5116 self.menu.popup(evt.globalPos())
5258 else: 5117 else:
5259 self.line = self.lineAt(evt.pos()) 5118 self.line = self.lineAt(evt.pos())
5260 if self.__unifiedMargins: 5119 if self.__marginNumber(evt.x()) in [self.__bmMargin,
5261 self.marginMenu.popup(evt.globalPos()) 5120 self.__linenoMargin]:
5262 else: 5121 self.bmMarginMenu.popup(evt.globalPos())
5263 if self.__marginNumber(evt.x()) in [self.__bmMargin, 5122 elif self.__marginNumber(evt.x()) == self.__bpMargin:
5264 self.__linenoMargin]: 5123 self.bpMarginMenu.popup(evt.globalPos())
5265 self.bmMarginMenu.popup(evt.globalPos()) 5124 elif self.__marginNumber(evt.x()) == self.__indicMargin:
5266 elif self.__marginNumber(evt.x()) == self.__bpMargin: 5125 self.indicMarginMenu.popup(evt.globalPos())
5267 self.bpMarginMenu.popup(evt.globalPos()) 5126 elif self.__marginNumber(evt.x()) == self.__foldMargin:
5268 elif self.__marginNumber(evt.x()) == self.__indicMargin: 5127 self.foldMarginMenu.popup(evt.globalPos())
5269 self.indicMarginMenu.popup(evt.globalPos())
5270 elif self.__marginNumber(evt.x()) == self.__foldMargin:
5271 self.foldMarginMenu.popup(evt.globalPos())
5272 5128
5273 def __showContextMenu(self): 5129 def __showContextMenu(self):
5274 """ 5130 """
5275 Private slot handling the aboutToShow signal of the context menu. 5131 Private slot handling the aboutToShow signal of the context menu.
5276 """ 5132 """
5428 else: 5284 else:
5429 self.applicationDiagramMenuAct.setEnabled(False) 5285 self.applicationDiagramMenuAct.setEnabled(False)
5430 5286
5431 self.showMenu.emit("Graphics", self.graphicsMenu, self) 5287 self.showMenu.emit("Graphics", self.graphicsMenu, self)
5432 5288
5433 def __showContextMenuMargin(self, menu, unifiedMenu): 5289 def __showContextMenuMargin(self, menu):
5434 """ 5290 """
5435 Private slot handling the aboutToShow signal of the margins context 5291 Private slot handling the aboutToShow signal of the margins context
5436 menu. 5292 menu.
5437 5293
5438 @param menu reference to the menu to be shown 5294 @param menu reference to the menu to be shown
5439 @type QMenu 5295 @type QMenu
5440 @param unifiedMenu flag indicating the unified margins menu 5296 """
5441 @type bool 5297 if menu is self.bpMarginMenu:
5442 """ 5298 supportsDebugger = bool(self.fileName and self.isPyFile())
5443 if unifiedMenu or menu is self.bpMarginMenu: 5299 hasBreakpoints = bool(self.breaks)
5444 if self.fileName and self.isPyFile(): 5300 hasBreakpoint = bool(
5445 self.marginMenuActs["Breakpoint"].setEnabled(True) 5301 self.markersAtLine(self.line) & self.breakpointMask)
5446 self.marginMenuActs["TempBreakpoint"].setEnabled(True) 5302
5447 if self.markersAtLine(self.line) & self.breakpointMask: 5303 self.marginMenuActs["Breakpoint"].setEnabled(supportsDebugger)
5448 self.marginMenuActs["EditBreakpoint"].setEnabled(True) 5304 self.marginMenuActs["TempBreakpoint"].setEnabled(supportsDebugger)
5449 self.marginMenuActs["EnableBreakpoint"].setEnabled(True) 5305 self.marginMenuActs["NextBreakpoint"].setEnabled(
5450 else: 5306 supportsDebugger and hasBreakpoints)
5451 self.marginMenuActs["EditBreakpoint"].setEnabled(False) 5307 self.marginMenuActs["PreviousBreakpoint"].setEnabled(
5452 self.marginMenuActs["EnableBreakpoint"].setEnabled(False) 5308 supportsDebugger and hasBreakpoints)
5309 self.marginMenuActs["ClearBreakpoint"].setEnabled(
5310 supportsDebugger and hasBreakpoints)
5311 self.marginMenuActs["EditBreakpoint"].setEnabled(
5312 supportsDebugger and hasBreakpoint)
5313 self.marginMenuActs["EnableBreakpoint"].setEnabled(
5314 supportsDebugger and hasBreakpoint)
5315 if supportsDebugger:
5453 if self.markersAtLine(self.line) & (1 << self.dbreakpoint): 5316 if self.markersAtLine(self.line) & (1 << self.dbreakpoint):
5454 self.marginMenuActs["EnableBreakpoint"].setText( 5317 self.marginMenuActs["EnableBreakpoint"].setText(
5455 self.tr('Enable breakpoint')) 5318 self.tr('Enable breakpoint'))
5456 else: 5319 else:
5457 self.marginMenuActs["EnableBreakpoint"].setText( 5320 self.marginMenuActs["EnableBreakpoint"].setText(
5458 self.tr('Disable breakpoint')) 5321 self.tr('Disable breakpoint'))
5459 if self.breaks: 5322
5460 self.marginMenuActs["NextBreakpoint"].setEnabled(True) 5323 if menu is self.bmMarginMenu:
5461 self.marginMenuActs["PreviousBreakpoint"].setEnabled(True) 5324 hasBookmarks = bool(self.bookmarks)
5462 self.marginMenuActs["ClearBreakpoint"].setEnabled(True) 5325
5463 else: 5326 self.marginMenuActs["NextBookmark"].setEnabled(hasBookmarks)
5464 self.marginMenuActs["NextBreakpoint"].setEnabled(False) 5327 self.marginMenuActs["PreviousBookmark"].setEnabled(hasBookmarks)
5465 self.marginMenuActs["PreviousBreakpoint"].setEnabled(False) 5328 self.marginMenuActs["ClearBookmark"].setEnabled(hasBookmarks)
5466 self.marginMenuActs["ClearBreakpoint"].setEnabled(False) 5329
5330 if menu is self.foldMarginMenu:
5331 isFoldHeader = bool(self.SendScintilla(
5332 QsciScintilla.SCI_GETFOLDLEVEL, self.line) &
5333 QsciScintilla.SC_FOLDLEVELHEADERFLAG)
5334
5335 self.marginMenuActs["ExpandChildren"].setEnabled(isFoldHeader)
5336 self.marginMenuActs["CollapseChildren"].setEnabled(isFoldHeader)
5337
5338 if menu is self.indicMarginMenu:
5339 hasSyntaxErrors = bool(self.syntaxerrors)
5340 hasWarnings = bool(self.warnings)
5341 hasNotCoveredMarkers = bool(self.notcoveredMarkers)
5342
5343 self.marginMenuActs["GotoSyntaxError"].setEnabled(hasSyntaxErrors)
5344 self.marginMenuActs["ClearSyntaxError"].setEnabled(hasSyntaxErrors)
5345 if hasSyntaxErrors and \
5346 self.markersAtLine(self.line) & (1 << self.syntaxerror):
5347 self.marginMenuActs["ShowSyntaxError"].setEnabled(True)
5467 else: 5348 else:
5468 self.marginMenuActs["Breakpoint"].setEnabled(False)
5469 self.marginMenuActs["TempBreakpoint"].setEnabled(False)
5470 self.marginMenuActs["EditBreakpoint"].setEnabled(False)
5471 self.marginMenuActs["EnableBreakpoint"].setEnabled(False)
5472 self.marginMenuActs["NextBreakpoint"].setEnabled(False)
5473 self.marginMenuActs["PreviousBreakpoint"].setEnabled(False)
5474 self.marginMenuActs["ClearBreakpoint"].setEnabled(False)
5475
5476 if unifiedMenu or menu is self.bmMarginMenu:
5477 if self.bookmarks:
5478 self.marginMenuActs["NextBookmark"].setEnabled(True)
5479 self.marginMenuActs["PreviousBookmark"].setEnabled(True)
5480 self.marginMenuActs["ClearBookmark"].setEnabled(True)
5481 else:
5482 self.marginMenuActs["NextBookmark"].setEnabled(False)
5483 self.marginMenuActs["PreviousBookmark"].setEnabled(False)
5484 self.marginMenuActs["ClearBookmark"].setEnabled(False)
5485
5486 if unifiedMenu or menu is self.indicMarginMenu:
5487 if len(self.syntaxerrors):
5488 self.marginMenuActs["GotoSyntaxError"].setEnabled(True)
5489 self.marginMenuActs["ClearSyntaxError"].setEnabled(True)
5490 if self.markersAtLine(self.line) & (1 << self.syntaxerror):
5491 self.marginMenuActs["ShowSyntaxError"].setEnabled(True)
5492 else:
5493 self.marginMenuActs["ShowSyntaxError"].setEnabled(False)
5494 else:
5495 self.marginMenuActs["GotoSyntaxError"].setEnabled(False)
5496 self.marginMenuActs["ClearSyntaxError"].setEnabled(False)
5497 self.marginMenuActs["ShowSyntaxError"].setEnabled(False) 5349 self.marginMenuActs["ShowSyntaxError"].setEnabled(False)
5498 5350
5499 if len(self.warnings): 5351 self.marginMenuActs["NextWarningMarker"].setEnabled(hasWarnings)
5500 self.marginMenuActs["NextWarningMarker"].setEnabled(True) 5352 self.marginMenuActs["PreviousWarningMarker"].setEnabled(
5501 self.marginMenuActs["PreviousWarningMarker"].setEnabled(True) 5353 hasWarnings)
5502 self.marginMenuActs["ClearWarnings"].setEnabled(True) 5354 self.marginMenuActs["ClearWarnings"].setEnabled(hasWarnings)
5503 if self.markersAtLine(self.line) & (1 << self.warning): 5355 if hasWarnings and \
5504 self.marginMenuActs["ShowWarning"].setEnabled(True) 5356 self.markersAtLine(self.line) & (1 << self.warning):
5505 else: 5357 self.marginMenuActs["ShowWarning"].setEnabled(True)
5506 self.marginMenuActs["ShowWarning"].setEnabled(False)
5507 else: 5358 else:
5508 self.marginMenuActs["NextWarningMarker"].setEnabled(False)
5509 self.marginMenuActs["PreviousWarningMarker"].setEnabled(False)
5510 self.marginMenuActs["ClearWarnings"].setEnabled(False)
5511 self.marginMenuActs["ShowWarning"].setEnabled(False) 5359 self.marginMenuActs["ShowWarning"].setEnabled(False)
5512 5360
5513 if self.notcoveredMarkers: 5361 self.marginMenuActs["NextCoverageMarker"].setEnabled(
5514 self.marginMenuActs["NextCoverageMarker"].setEnabled(True) 5362 hasNotCoveredMarkers)
5515 self.marginMenuActs["PreviousCoverageMarker"].setEnabled(True) 5363 self.marginMenuActs["PreviousCoverageMarker"].setEnabled(
5516 else: 5364 hasNotCoveredMarkers)
5517 self.marginMenuActs["NextCoverageMarker"].setEnabled(False)
5518 self.marginMenuActs["PreviousCoverageMarker"].setEnabled(False)
5519 5365
5520 if self.__hasTaskMarkers: 5366 self.marginMenuActs["PreviousTaskMarker"].setEnabled(
5521 self.marginMenuActs["PreviousTaskMarker"].setEnabled(True) 5367 self.__hasTaskMarkers)
5522 self.marginMenuActs["NextTaskMarker"].setEnabled(True) 5368 self.marginMenuActs["NextTaskMarker"].setEnabled(
5523 else: 5369 self.__hasTaskMarkers)
5524 self.marginMenuActs["PreviousTaskMarker"].setEnabled(False)
5525 self.marginMenuActs["NextTaskMarker"].setEnabled(False)
5526 5370
5527 if self.__hasChangeMarkers: 5371 self.marginMenuActs["PreviousChangeMarker"].setEnabled(
5528 self.marginMenuActs["PreviousChangeMarker"].setEnabled(True) 5372 self.__hasChangeMarkers)
5529 self.marginMenuActs["NextChangeMarker"].setEnabled(True) 5373 self.marginMenuActs["NextChangeMarker"].setEnabled(
5530 self.marginMenuActs["ClearChangeMarkers"].setEnabled(True) 5374 self.__hasChangeMarkers)
5531 5375 self.marginMenuActs["ClearChangeMarkers"].setEnabled(
5532 else: 5376 self.__hasChangeMarkers)
5533 self.marginMenuActs["PreviousChangeMarker"].setEnabled(False)
5534 self.marginMenuActs["NextChangeMarker"].setEnabled(False)
5535 self.marginMenuActs["ClearChangeMarkers"].setEnabled(False)
5536 5377
5537 self.showMenu.emit("Margin", menu, self) 5378 self.showMenu.emit("Margin", menu, self)
5538 5379
5539 def __showContextMenuChecks(self): 5380 def __showContextMenuChecks(self):
5540 """ 5381 """

eric ide

mercurial