46 @signal escPressed() emitted after the cancel command was activated |
46 @signal escPressed() emitted after the cancel command was activated |
47 @signal returnPressed() emitted after a newline command was activated |
47 @signal returnPressed() emitted after a newline command was activated |
48 @signal gotFocus() emitted when the focus is changed to this widget |
48 @signal gotFocus() emitted when the focus is changed to this widget |
49 """ |
49 """ |
50 escPressed = pyqtSignal() |
50 escPressed = pyqtSignal() |
|
51 returnPressed = pyqtSignal() |
51 gotFocus = pyqtSignal() |
52 gotFocus = pyqtSignal() |
52 |
53 |
53 def editorCommand(self, cmd): |
54 def editorCommand(self, cmd): |
54 """ |
55 """ |
55 Public method to perform an editor command. |
56 Public method to perform an editor command. |
93 Base class inherited by all specific viewmanager classes. |
94 Base class inherited by all specific viewmanager classes. |
94 |
95 |
95 It defines the interface to be implemented by specific |
96 It defines the interface to be implemented by specific |
96 viewmanager classes and all common methods. |
97 viewmanager classes and all common methods. |
97 |
98 |
98 @signal lastEditorClosed emitted after the last editor window was closed |
99 @signal lastEditorClosed() emitted after the last editor window was closed |
99 @signal editorOpened(string) emitted after an editor window was opened |
100 @signal editorOpened(string) emitted after an editor window was opened |
100 @signal editorOpenedEd(editor) emitted after an editor window was opened |
101 @signal editorOpenedEd(editor) emitted after an editor window was opened |
101 @signal editorClosed(string) emitted just before an editor window gets closed |
102 @signal editorClosed(string) emitted just before an editor window gets closed |
102 @signal editorClosedEd(editor) emitted just before an editor window gets closed |
103 @signal editorClosedEd(editor) emitted just before an editor window gets closed |
103 @signal editorSaved(string) emitted after an editor window was saved |
104 @signal editorSaved(string) emitted after an editor window was saved |
106 @signal cursorChanged(editor) emitted after the cursor position of the active |
107 @signal cursorChanged(editor) emitted after the cursor position of the active |
107 window has changed |
108 window has changed |
108 @signal breakpointToggled(editor) emitted when a breakpoint is toggled. |
109 @signal breakpointToggled(editor) emitted when a breakpoint is toggled. |
109 @signal bookmarkToggled(editor) emitted when a bookmark is toggled. |
110 @signal bookmarkToggled(editor) emitted when a bookmark is toggled. |
110 """ |
111 """ |
|
112 lastEditorClosed = pyqtSignal() |
111 editorOpened = pyqtSignal(str) |
113 editorOpened = pyqtSignal(str) |
112 lastEditorClosed = pyqtSignal() |
114 editorOpenedEd = pyqtSignal(Editor) |
|
115 editorClosed = pyqtSignal(str) |
|
116 editorClosedEd = pyqtSignal(Editor) |
|
117 editorSaved = pyqtSignal(str) |
113 checkActions = pyqtSignal(Editor) |
118 checkActions = pyqtSignal(Editor) |
114 cursorChanged = pyqtSignal(Editor) |
119 cursorChanged = pyqtSignal(Editor) |
115 breakpointToggled = pyqtSignal(Editor) |
120 breakpointToggled = pyqtSignal(Editor) |
|
121 bookmarkToggled = pyqtSignal(Editor) |
|
122 syntaxerrorToggled = pyqtSignal(Editor) |
116 |
123 |
117 def __init__(self): |
124 def __init__(self): |
118 """ |
125 """ |
119 Constructor |
126 Constructor |
120 |
127 |
144 # initialize the autosave timer |
151 # initialize the autosave timer |
145 self.autosaveInterval = Preferences.getEditor("AutosaveInterval") |
152 self.autosaveInterval = Preferences.getEditor("AutosaveInterval") |
146 self.autosaveTimer = QTimer(self) |
153 self.autosaveTimer = QTimer(self) |
147 self.autosaveTimer.setObjectName("AutosaveTimer") |
154 self.autosaveTimer.setObjectName("AutosaveTimer") |
148 self.autosaveTimer.setSingleShot(True) |
155 self.autosaveTimer.setSingleShot(True) |
149 self.connect(self.autosaveTimer, SIGNAL('timeout()'), self.__autosave) |
156 self.autosaveTimer.timeout.connect(self.__autosave) |
150 |
157 |
151 # initialize the APIs manager |
158 # initialize the APIs manager |
152 self.apisManager = APIsManager(parent = self) |
159 self.apisManager = APIsManager(parent = self) |
153 |
160 |
154 self.__cooperationClient = None |
161 self.__cooperationClient = None |
668 menu.addSeparator() |
675 menu.addSeparator() |
669 menu.addAction(self.printPreviewAct) |
676 menu.addAction(self.printPreviewAct) |
670 menu.addAction(self.printAct) |
677 menu.addAction(self.printAct) |
671 |
678 |
672 self.recentMenu.aboutToShow.connect(self.__showRecentMenu) |
679 self.recentMenu.aboutToShow.connect(self.__showRecentMenu) |
673 self.connect(self.recentMenu, SIGNAL('triggered(QAction *)'), |
680 self.recentMenu.triggered.connect(self.__openSourceFile) |
674 self.__openSourceFile) |
|
675 self.bookmarkedMenu.aboutToShow.connect(self.__showBookmarkedMenu) |
681 self.bookmarkedMenu.aboutToShow.connect(self.__showBookmarkedMenu) |
676 self.connect(self.bookmarkedMenu, SIGNAL('triggered(QAction *)'), |
682 self.bookmarkedMenu.triggered.connect(self.__openSourceFile) |
677 self.__openSourceFile) |
|
678 menu.aboutToShow.connect(self.__showFileMenu) |
683 menu.aboutToShow.connect(self.__showFileMenu) |
679 |
684 |
680 self.exportersMenuAct.setEnabled(False) |
685 self.exportersMenuAct.setEnabled(False) |
681 |
686 |
682 return menu |
687 return menu |
719 exporters = sorted(list(supportedExporters.keys())) |
724 exporters = sorted(list(supportedExporters.keys())) |
720 for exporter in exporters: |
725 for exporter in exporters: |
721 act = menu.addAction(supportedExporters[exporter]) |
726 act = menu.addAction(supportedExporters[exporter]) |
722 act.setData(exporter) |
727 act.setData(exporter) |
723 |
728 |
724 self.connect(menu, SIGNAL('triggered(QAction *)'), self.__exportMenuTriggered) |
729 menu.triggered.connect(self.__exportMenuTriggered) |
725 |
730 |
726 return menu |
731 return menu |
727 |
732 |
728 ################################################################## |
733 ################################################################## |
729 ## Initialize the edit related actions, edit menu and toolbar |
734 ## Initialize the edit related actions, edit menu and toolbar |
1142 #################################################################### |
1147 #################################################################### |
1143 ## Below follow the actions for qscintilla standard commands. |
1148 ## Below follow the actions for qscintilla standard commands. |
1144 #################################################################### |
1149 #################################################################### |
1145 |
1150 |
1146 self.esm = QSignalMapper(self) |
1151 self.esm = QSignalMapper(self) |
1147 self.connect(self.esm, SIGNAL('mapped(int)'), self.__editorCommand) |
1152 self.esm.mapped[int].connect(self.__editorCommand) |
1148 |
1153 |
1149 self.editorActGrp = createActionGroup(self.editActGrp) |
1154 self.editorActGrp = createActionGroup(self.editActGrp) |
1150 |
1155 |
1151 act = E5Action(QApplication.translate('ViewManager', 'Move left one character'), |
1156 act = E5Action(QApplication.translate('ViewManager', 'Move left one character'), |
1152 QApplication.translate('ViewManager', 'Move left one character'), |
1157 QApplication.translate('ViewManager', 'Move left one character'), |
2365 self.splitOrientationAct.setWhatsThis(QApplication.translate('ViewManager', |
2370 self.splitOrientationAct.setWhatsThis(QApplication.translate('ViewManager', |
2366 """<b>Arrange horizontally</b>""" |
2371 """<b>Arrange horizontally</b>""" |
2367 """<p>Arrange the splitted views horizontally.</p>""" |
2372 """<p>Arrange the splitted views horizontally.</p>""" |
2368 )) |
2373 )) |
2369 self.splitOrientationAct.setChecked(False) |
2374 self.splitOrientationAct.setChecked(False) |
2370 self.connect(self.splitOrientationAct, SIGNAL('toggled(bool)'), |
2375 self.splitOrientationAct.toggled[bool].connect(self.__splitOrientation) |
2371 self.__splitOrientation) |
|
2372 self.viewActions.append(self.splitOrientationAct) |
2376 self.viewActions.append(self.splitOrientationAct) |
2373 |
2377 |
2374 self.splitRemoveAct = E5Action(QApplication.translate('ViewManager', |
2378 self.splitRemoveAct = E5Action(QApplication.translate('ViewManager', |
2375 'Remove split'), |
2379 'Remove split'), |
2376 UI.PixmapCache.getIcon("remsplitVertical.png"), |
2380 UI.PixmapCache.getIcon("remsplitVertical.png"), |
2815 menu.addSeparator() |
2819 menu.addSeparator() |
2816 menu.addAction(self.taskNextAct) |
2820 menu.addAction(self.taskNextAct) |
2817 menu.addAction(self.taskPreviousAct) |
2821 menu.addAction(self.taskPreviousAct) |
2818 |
2822 |
2819 self.bookmarksMenu.aboutToShow.connect(self.__showBookmarksMenu) |
2823 self.bookmarksMenu.aboutToShow.connect(self.__showBookmarksMenu) |
2820 self.connect(self.bookmarksMenu, SIGNAL('triggered(QAction *)'), |
2824 self.bookmarksMenu.triggered.connect(self.__bookmarkSelected) |
2821 self.__bookmarkSelected) |
|
2822 menu.aboutToShow.connect(self.__showBookmarkMenu) |
2825 menu.aboutToShow.connect(self.__showBookmarkMenu) |
2823 |
2826 |
2824 return menu |
2827 return menu |
2825 |
2828 |
2826 def initBookmarkToolbar(self, toolbarManager): |
2829 def initBookmarkToolbar(self, toolbarManager): |
3043 self._removeView(editor) |
3046 self._removeView(editor) |
3044 self.editors.remove(editor) |
3047 self.editors.remove(editor) |
3045 |
3048 |
3046 # send a signal, if it was the last editor for this filename |
3049 # send a signal, if it was the last editor for this filename |
3047 if fn and self.getOpenEditor(fn) is None: |
3050 if fn and self.getOpenEditor(fn) is None: |
3048 self.emit(SIGNAL('editorClosed'), fn) |
3051 self.editorClosed.emit(fn) |
3049 self.emit(SIGNAL('editorClosedEd'), editor) |
3052 self.editorClosedEd.emit(editor) |
3050 |
3053 |
3051 # send a signal, if it was the very last editor |
3054 # send a signal, if it was the very last editor |
3052 if not len(self.editors): |
3055 if not len(self.editors): |
3053 self.__lastEditorClosed() |
3056 self.__lastEditorClosed() |
3054 self.lastEditorClosed.emit() |
3057 self.lastEditorClosed.emit() |
3154 """ |
3157 """ |
3155 Private method to establish all editor connections. |
3158 Private method to establish all editor connections. |
3156 |
3159 |
3157 @param editor reference to the editor object to be connected |
3160 @param editor reference to the editor object to be connected |
3158 """ |
3161 """ |
3159 self.connect(editor, SIGNAL('modificationStatusChanged'), |
3162 editor.modificationStatusChanged.connect(self._modificationStatusChanged) |
3160 self._modificationStatusChanged) |
|
3161 editor.cursorChanged.connect(self.__cursorChanged) |
3163 editor.cursorChanged.connect(self.__cursorChanged) |
3162 self.connect(editor, SIGNAL('editorSaved'), self.__editorSaved) |
3164 editor.editorSaved.connect(self.__editorSaved) |
3163 editor.breakpointToggled.connect(self.__breakpointToggled) |
3165 editor.breakpointToggled.connect(self.__breakpointToggled) |
3164 self.connect(editor, SIGNAL('bookmarkToggled'), self.__bookmarkToggled) |
3166 editor.bookmarkToggled.connect(self.__bookmarkToggled) |
3165 self.connect(editor, SIGNAL('syntaxerrorToggled'), self._syntaxErrorToggled) |
3167 editor.syntaxerrorToggled.connect(self._syntaxErrorToggled) |
3166 self.connect(editor, SIGNAL('coverageMarkersShown'), |
3168 editor.coverageMarkersShown.connect(self.__coverageMarkersShown) |
3167 self.__coverageMarkersShown) |
3169 editor.autoCompletionAPIsAvailable.connect( |
3168 self.connect(editor, SIGNAL('autoCompletionAPIsAvailable'), |
|
3169 self.__editorAutoCompletionAPIsAvailable) |
3170 self.__editorAutoCompletionAPIsAvailable) |
3170 self.connect(editor, SIGNAL('undoAvailable'), self.undoAct.setEnabled) |
3171 editor.undoAvailable.connect(self.undoAct.setEnabled) |
3171 self.connect(editor, SIGNAL('redoAvailable'), self.redoAct.setEnabled) |
3172 editor.redoAvailable.connect(self.redoAct.setEnabled) |
3172 self.connect(editor, SIGNAL('taskMarkersUpdated'), self.__taskMarkersUpdated) |
3173 editor.taskMarkersUpdated.connect(self.__taskMarkersUpdated) |
3173 self.connect(editor, SIGNAL('languageChanged'), self.__editorConfigChanged) |
3174 editor.languageChanged.connect(self.__editorConfigChanged) |
3174 self.connect(editor, SIGNAL('eolChanged'), self.__editorConfigChanged) |
3175 editor.eolChanged.connect(self.__editorConfigChanged) |
3175 self.connect(editor, SIGNAL('encodingChanged'), self.__editorConfigChanged) |
3176 editor.encodingChanged.connect(self.__editorConfigChanged) |
3176 self.connect(editor, SIGNAL("selectionChanged()"), |
3177 editor.selectionChanged.connect(self.searchDlg.selectionChanged) |
3177 self.searchDlg.selectionChanged) |
3178 editor.selectionChanged.connect(self.replaceDlg.selectionChanged) |
3178 self.connect(editor, SIGNAL("selectionChanged()"), |
|
3179 self.replaceDlg.selectionChanged) |
|
3180 |
3179 |
3181 def newEditorView(self, fn, caller, filetype = ""): |
3180 def newEditorView(self, fn, caller, filetype = ""): |
3182 """ |
3181 """ |
3183 Public method to create a new editor displaying the given document. |
3182 Public method to create a new editor displaying the given document. |
3184 |
3183 |
3205 tv = e5App().getObject("TaskViewer")) |
3204 tv = e5App().getObject("TaskViewer")) |
3206 self.editors.append(editor) |
3205 self.editors.append(editor) |
3207 self.__connectEditor(editor) |
3206 self.__connectEditor(editor) |
3208 self.__editorOpened() |
3207 self.__editorOpened() |
3209 self.editorOpened.emit(fn) |
3208 self.editorOpened.emit(fn) |
3210 self.emit(SIGNAL('editorOpenedEd'), editor) |
3209 self.editorOpenedEd.emit(editor) |
3211 |
3210 |
3212 return editor |
3211 return editor |
3213 |
3212 |
3214 def addToRecentList(self, fn): |
3213 def addToRecentList(self, fn): |
3215 """ |
3214 """ |
3358 tv = e5App().getObject("TaskViewer")) |
3357 tv = e5App().getObject("TaskViewer")) |
3359 self.editors.append(editor) |
3358 self.editors.append(editor) |
3360 self.__connectEditor(editor) |
3359 self.__connectEditor(editor) |
3361 self.__editorOpened() |
3360 self.__editorOpened() |
3362 self.editorOpened.emit(fn) |
3361 self.editorOpened.emit(fn) |
3363 self.emit(SIGNAL('editorOpenedEd'), editor) |
3362 self.editorOpenedEd.emit(editor) |
3364 newWin = True |
3363 newWin = True |
3365 |
3364 |
3366 if newWin: |
3365 if newWin: |
3367 self._addView(editor, fn) |
3366 self._addView(editor, fn) |
3368 else: |
3367 else: |
3557 self.__connectEditor(editor) |
3556 self.__connectEditor(editor) |
3558 self._addView(editor, None) |
3557 self._addView(editor, None) |
3559 self.__editorOpened() |
3558 self.__editorOpened() |
3560 self._checkActions(editor) |
3559 self._checkActions(editor) |
3561 self.editorOpened.emit("") |
3560 self.editorOpened.emit("") |
3562 self.emit(SIGNAL('editorOpenedEd'), editor) |
3561 self.editorOpenedEd.emit(editor) |
3563 |
3562 |
3564 def printEditor(self, editor): |
3563 def printEditor(self, editor): |
3565 """ |
3564 """ |
3566 Public slot to print an editor. |
3565 Public slot to print an editor. |
3567 |
3566 |
4401 self.bookmarkClearAct.setEnabled(True) |
4400 self.bookmarkClearAct.setEnabled(True) |
4402 else: |
4401 else: |
4403 self.bookmarkNextAct.setEnabled(False) |
4402 self.bookmarkNextAct.setEnabled(False) |
4404 self.bookmarkPreviousAct.setEnabled(False) |
4403 self.bookmarkPreviousAct.setEnabled(False) |
4405 self.bookmarkClearAct.setEnabled(False) |
4404 self.bookmarkClearAct.setEnabled(False) |
4406 self.emit(SIGNAL('bookmarkToggled'), editor) |
4405 self.bookmarkToggled.emit(editor) |
4407 |
4406 |
4408 def __gotoSyntaxError(self): |
4407 def __gotoSyntaxError(self): |
4409 """ |
4408 """ |
4410 Private method to handle the goto syntax error action. |
4409 Private method to handle the goto syntax error action. |
4411 """ |
4410 """ |
4438 self.warningsClearAct.setEnabled(True) |
4437 self.warningsClearAct.setEnabled(True) |
4439 else: |
4438 else: |
4440 self.warningsNextAct.setEnabled(False) |
4439 self.warningsNextAct.setEnabled(False) |
4441 self.warningsPreviousAct.setEnabled(False) |
4440 self.warningsPreviousAct.setEnabled(False) |
4442 self.warningsClearAct.setEnabled(False) |
4441 self.warningsClearAct.setEnabled(False) |
4443 self.emit(SIGNAL('syntaxerrorToggled'), editor) |
4442 self.syntaxerrorToggled.emit(editor) |
4444 |
4443 |
4445 def __nextWarning(self): |
4444 def __nextWarning(self): |
4446 """ |
4445 """ |
4447 Private method to handle the next warning action. |
4446 Private method to handle the next warning action. |
4448 """ |
4447 """ |
4486 self.notcoveredNextAct.setEnabled(False) |
4485 self.notcoveredNextAct.setEnabled(False) |
4487 self.notcoveredPreviousAct.setEnabled(False) |
4486 self.notcoveredPreviousAct.setEnabled(False) |
4488 |
4487 |
4489 def __taskMarkersUpdated(self, editor): |
4488 def __taskMarkersUpdated(self, editor): |
4490 """ |
4489 """ |
4491 Protected slot to handle the syntaxerrorToggled signal. |
4490 Protected slot to handle the taskMarkersUpdated signal. |
4492 |
|
4493 It checks some syntax error actions and reemits the signal. |
|
4494 |
4491 |
4495 @param editor editor that sent the signal |
4492 @param editor editor that sent the signal |
4496 """ |
4493 """ |
4497 if editor.hasTaskMarkers(): |
4494 if editor.hasTaskMarkers(): |
4498 self.taskNextAct.setEnabled(True) |
4495 self.taskNextAct.setEnabled(True) |