ViewManager/ViewManager.py

changeset 500
c3abc7895a01
parent 486
e4711a55e482
child 501
5c615a85241a
equal deleted inserted replaced
499:622ab17a68d5 500:c3abc7895a01
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
3618 self.recentMenu.addAction(\ 3617 self.recentMenu.addAction(\
3619 QApplication.translate('ViewManager', '&Clear'), self.__clearRecent) 3618 QApplication.translate('ViewManager', '&Clear'), self.__clearRecent)
3620 3619
3621 def __openSourceFile(self, act): 3620 def __openSourceFile(self, act):
3622 """ 3621 """
3623 Private method to open a file from the list of rencently opened files. 3622 Private method to open a file from the list of recently opened files.
3624 3623
3625 @param act reference to the action that triggered (QAction) 3624 @param act reference to the action that triggered (QAction)
3626 """ 3625 """
3627 file = act.data() 3626 file = act.data()
3628 if file: 3627 if file:
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)
4766 4763
4767 It simply reemits the signal. 4764 It simply reemits the signal.
4768 4765
4769 @param fn filename of the saved editor 4766 @param fn filename of the saved editor
4770 """ 4767 """
4771 self.emit(SIGNAL('editorSaved'), fn) 4768 self.editorSaved.emit(fn)
4772 4769
4773 def __cursorChanged(self, fn, line, pos): 4770 def __cursorChanged(self, fn, line, pos):
4774 """ 4771 """
4775 Private slot to handle the cursorChanged signal. 4772 Private slot to handle the cursorChanged signal.
4776 4773

eric ide

mercurial