UI/UserInterface.py

branch
maintenance
changeset 5948
6f958d5765f4
parent 5863
0752bdd8db77
child 5949
22657f04f332
equal deleted inserted replaced
5937:cc296ba99a3f 5948:6f958d5765f4
453 self.preferencesChanged.connect(debugServer.preferencesChanged) 453 self.preferencesChanged.connect(debugServer.preferencesChanged)
454 self.preferencesChanged.connect(self.debugViewer.preferencesChanged) 454 self.preferencesChanged.connect(self.debugViewer.preferencesChanged)
455 self.preferencesChanged.connect(self.cooperation.preferencesChanged) 455 self.preferencesChanged.connect(self.cooperation.preferencesChanged)
456 self.preferencesChanged.connect( 456 self.preferencesChanged.connect(
457 self.backgroundService.preferencesOrProjectChanged) 457 self.backgroundService.preferencesOrProjectChanged)
458 self.preferencesChanged.connect(
459 self.codeDocumentationViewer.preferencesChanged)
458 460
459 self.viewmanager.editorSaved.connect(self.project.repopulateItem) 461 self.viewmanager.editorSaved.connect(self.project.repopulateItem)
460 self.viewmanager.lastEditorClosed.connect(self.__lastEditorClosed) 462 self.viewmanager.lastEditorClosed.connect(self.__lastEditorClosed)
461 self.viewmanager.editorOpened.connect(self.__editorOpened) 463 self.viewmanager.editorOpened.connect(self.__editorOpened)
462 self.viewmanager.changeCaption.connect(self.__setWindowCaption) 464 self.viewmanager.changeCaption.connect(self.__setWindowCaption)
529 e5App().registerObject("ToolbarManager", self.toolbarManager) 531 e5App().registerObject("ToolbarManager", self.toolbarManager)
530 e5App().registerObject("Cooperation", self.cooperation) 532 e5App().registerObject("Cooperation", self.cooperation)
531 e5App().registerObject("IRC", self.irc) 533 e5App().registerObject("IRC", self.irc)
532 e5App().registerObject("Symbols", self.symbolsViewer) 534 e5App().registerObject("Symbols", self.symbolsViewer)
533 e5App().registerObject("Numbers", self.numbersViewer) 535 e5App().registerObject("Numbers", self.numbersViewer)
536 e5App().registerObject("DocuViewer", self.codeDocumentationViewer)
534 537
535 # list of web addresses serving the versions file 538 # list of web addresses serving the versions file
536 self.__httpAlternatives = Preferences.getUI("VersionsUrls6") 539 self.__httpAlternatives = Preferences.getUI("VersionsUrls6")
537 self.__inVersionCheck = False 540 self.__inVersionCheck = False
538 self.__versionCheckProgress = None 541 self.__versionCheckProgress = None
639 642
640 # set the keyboard input interval 643 # set the keyboard input interval
641 interval = Preferences.getUI("KeyboardInputInterval") 644 interval = Preferences.getUI("KeyboardInputInterval")
642 if interval > 0: 645 if interval > 0:
643 QApplication.setKeyboardInputInterval(interval) 646 QApplication.setKeyboardInputInterval(interval)
647
648 # finalize the initialization of the code documentation viewer
649 self.codeDocumentationViewer.finalizeSetup()
644 650
645 def __createLayout(self, debugServer): 651 def __createLayout(self, debugServer):
646 """ 652 """
647 Private method to create the layout of the various windows. 653 Private method to create the layout of the various windows.
648 654
698 704
699 @param debugServer reference to the debug server object 705 @param debugServer reference to the debug server object
700 """ 706 """
701 from E5Gui.E5ToolBox import E5VerticalToolBox, E5HorizontalToolBox 707 from E5Gui.E5ToolBox import E5VerticalToolBox, E5HorizontalToolBox
702 708
709 logging.debug("Creating Toolboxes Layout...")
710
703 # Create the left toolbox 711 # Create the left toolbox
704 self.lToolboxDock = self.__createDockWindow("lToolboxDock") 712 self.lToolboxDock = self.__createDockWindow("lToolboxDock")
705 self.lToolbox = E5VerticalToolBox(self.lToolboxDock) 713 self.lToolbox = E5VerticalToolBox(self.lToolboxDock)
706 self.__setupDockWindow(self.lToolboxDock, Qt.LeftDockWidgetArea, 714 self.__setupDockWindow(self.lToolboxDock, Qt.LeftDockWidgetArea,
707 self.lToolbox, self.tr("Left Toolbox")) 715 self.lToolbox, self.tr("Left Toolbox"))
718 self.rToolbox = E5VerticalToolBox(self.rToolboxDock) 726 self.rToolbox = E5VerticalToolBox(self.rToolboxDock)
719 self.__setupDockWindow(self.rToolboxDock, Qt.RightDockWidgetArea, 727 self.__setupDockWindow(self.rToolboxDock, Qt.RightDockWidgetArea,
720 self.rToolbox, self.tr("Right Toolbox")) 728 self.rToolbox, self.tr("Right Toolbox"))
721 729
722 # Create the project browser 730 # Create the project browser
731 logging.debug("Creating Project Browser...")
723 from Project.ProjectBrowser import ProjectBrowser 732 from Project.ProjectBrowser import ProjectBrowser
724 self.projectBrowser = ProjectBrowser( 733 self.projectBrowser = ProjectBrowser(
725 self.project, None, 734 self.project, None,
726 embeddedBrowser=(self.embeddedFileBrowser == 2)) 735 embeddedBrowser=(self.embeddedFileBrowser == 2))
727 self.lToolbox.addItem(self.projectBrowser, 736 self.lToolbox.addItem(self.projectBrowser,
728 UI.PixmapCache.getIcon("projectViewer.png"), 737 UI.PixmapCache.getIcon("projectViewer.png"),
729 self.tr("Project-Viewer")) 738 self.tr("Project-Viewer"))
730 739
731 # Create the multi project browser 740 # Create the multi project browser
741 logging.debug("Creating Multiproject Browser...")
732 from MultiProject.MultiProjectBrowser import MultiProjectBrowser 742 from MultiProject.MultiProjectBrowser import MultiProjectBrowser
733 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, 743 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject,
734 self.project) 744 self.project)
735 self.lToolbox.addItem(self.multiProjectBrowser, 745 self.lToolbox.addItem(self.multiProjectBrowser,
736 UI.PixmapCache.getIcon("multiProjectViewer.png"), 746 UI.PixmapCache.getIcon("multiProjectViewer.png"),
737 self.tr("Multiproject-Viewer")) 747 self.tr("Multiproject-Viewer"))
738 748
739 # Create the template viewer part of the user interface 749 # Create the template viewer part of the user interface
750 logging.debug("Creating Template Viewer...")
740 from Templates.TemplateViewer import TemplateViewer 751 from Templates.TemplateViewer import TemplateViewer
741 self.templateViewer = TemplateViewer(None, 752 self.templateViewer = TemplateViewer(None,
742 self.viewmanager) 753 self.viewmanager)
743 self.lToolbox.addItem(self.templateViewer, 754 self.lToolbox.addItem(self.templateViewer,
744 UI.PixmapCache.getIcon("templateViewer.png"), 755 UI.PixmapCache.getIcon("templateViewer.png"),
745 self.tr("Template-Viewer")) 756 self.tr("Template-Viewer"))
746 757
758 # Create the code documentation viewer
759 logging.debug("Creating Code Documentation Viewer...")
760 from .CodeDocumentationViewer import CodeDocumentationViewer
761 self.codeDocumentationViewer = CodeDocumentationViewer(self)
762 self.rToolbox.addItem(self.codeDocumentationViewer,
763 UI.PixmapCache.getIcon("codeDocuViewer.png"),
764 self.tr("Code Documentation Viewer"))
765
747 # Create the debug viewer maybe without the embedded shell 766 # Create the debug viewer maybe without the embedded shell
767 logging.debug("Creating Debug Viewer...")
748 from Debugger.DebugViewer import DebugViewer 768 from Debugger.DebugViewer import DebugViewer
749 self.debugViewer = DebugViewer( 769 self.debugViewer = DebugViewer(
750 debugServer, True, self.viewmanager, None, 770 debugServer, True, self.viewmanager, None,
751 embeddedShell=self.embeddedShell, 771 embeddedShell=self.embeddedShell,
752 embeddedBrowser=(self.embeddedFileBrowser == 1)) 772 embeddedBrowser=(self.embeddedFileBrowser == 1))
753 self.rToolbox.addItem(self.debugViewer, 773 self.rToolbox.addItem(self.debugViewer,
754 UI.PixmapCache.getIcon("debugViewer.png"), 774 UI.PixmapCache.getIcon("debugViewer.png"),
755 self.tr("Debug-Viewer")) 775 self.tr("Debug-Viewer"))
756 776
757 # Create the chat part of the user interface 777 # Create the chat part of the user interface
778 logging.debug("Creating Chat Widget...")
758 from Cooperation.ChatWidget import ChatWidget 779 from Cooperation.ChatWidget import ChatWidget
759 self.cooperation = ChatWidget(self) 780 self.cooperation = ChatWidget(self)
760 self.rToolbox.addItem(self.cooperation, 781 self.rToolbox.addItem(self.cooperation,
761 UI.PixmapCache.getIcon("cooperation.png"), 782 UI.PixmapCache.getIcon("cooperation.png"),
762 self.tr("Cooperation")) 783 self.tr("Cooperation"))
763 784
764 # Create the IRC part of the user interface 785 # Create the IRC part of the user interface
786 logging.debug("Creating IRC Widget...")
765 from Network.IRC.IrcWidget import IrcWidget 787 from Network.IRC.IrcWidget import IrcWidget
766 self.irc = IrcWidget(self) 788 self.irc = IrcWidget(self)
767 self.rToolbox.addItem(self.irc, 789 self.rToolbox.addItem(self.irc,
768 UI.PixmapCache.getIcon("irc.png"), 790 UI.PixmapCache.getIcon("irc.png"),
769 self.tr("IRC")) 791 self.tr("IRC"))
770 792
771 # Create the task viewer part of the user interface 793 # Create the task viewer part of the user interface
794 logging.debug("Creating Task Viewer...")
772 from Tasks.TaskViewer import TaskViewer 795 from Tasks.TaskViewer import TaskViewer
773 self.taskViewer = TaskViewer(None, self.project) 796 self.taskViewer = TaskViewer(None, self.project)
774 self.hToolbox.addItem(self.taskViewer, 797 self.hToolbox.addItem(self.taskViewer,
775 UI.PixmapCache.getIcon("task.png"), 798 UI.PixmapCache.getIcon("task.png"),
776 self.tr("Task-Viewer")) 799 self.tr("Task-Viewer"))
777 800
778 # Create the log viewer part of the user interface 801 # Create the log viewer part of the user interface
802 logging.debug("Creating Log Viewer...")
779 from .LogView import LogViewer 803 from .LogView import LogViewer
780 self.logViewer = LogViewer(self) 804 self.logViewer = LogViewer(self)
781 self.hToolbox.addItem(self.logViewer, 805 self.hToolbox.addItem(self.logViewer,
782 UI.PixmapCache.getIcon("logViewer.png"), 806 UI.PixmapCache.getIcon("logViewer.png"),
783 self.tr("Log-Viewer")) 807 self.tr("Log-Viewer"))
784 808
785 if self.embeddedShell: 809 if self.embeddedShell:
786 self.shell = self.debugViewer.shell 810 self.shell = self.debugViewer.shell
787 else: 811 else:
788 # Create the shell 812 # Create the shell
813 logging.debug("Creating Shell...")
789 from QScintilla.Shell import ShellAssembly 814 from QScintilla.Shell import ShellAssembly
790 self.shellAssembly = \ 815 self.shellAssembly = \
791 ShellAssembly(debugServer, self.viewmanager, True) 816 ShellAssembly(debugServer, self.viewmanager, True)
792 self.shell = self.shellAssembly.shell() 817 self.shell = self.shellAssembly.shell()
793 self.hToolbox.insertItem(0, self.shellAssembly, 818 self.hToolbox.insertItem(0, self.shellAssembly,
794 UI.PixmapCache.getIcon("shell.png"), 819 UI.PixmapCache.getIcon("shell.png"),
795 self.tr("Shell")) 820 self.tr("Shell"))
796 821
797 if self.embeddedFileBrowser == 0: # separate window 822 if self.embeddedFileBrowser == 0: # separate window
798 # Create the file browser 823 # Create the file browser
824 logging.debug("Creating File Browser...")
799 from .Browser import Browser 825 from .Browser import Browser
800 self.browser = Browser() 826 self.browser = Browser()
801 self.lToolbox.addItem(self.browser, 827 self.lToolbox.addItem(self.browser,
802 UI.PixmapCache.getIcon("browser.png"), 828 UI.PixmapCache.getIcon("browser.png"),
803 self.tr("File-Browser")) 829 self.tr("File-Browser"))
805 self.browser = self.debugViewer.browser 831 self.browser = self.debugViewer.browser
806 else: # embedded in project browser 832 else: # embedded in project browser
807 self.browser = self.projectBrowser.fileBrowser 833 self.browser = self.projectBrowser.fileBrowser
808 834
809 # Create the symbols viewer 835 # Create the symbols viewer
836 logging.debug("Creating Symbols Viewer...")
810 from .SymbolsWidget import SymbolsWidget 837 from .SymbolsWidget import SymbolsWidget
811 self.symbolsViewer = SymbolsWidget() 838 self.symbolsViewer = SymbolsWidget()
812 self.lToolbox.addItem(self.symbolsViewer, 839 self.lToolbox.addItem(self.symbolsViewer,
813 UI.PixmapCache.getIcon("symbols.png"), 840 UI.PixmapCache.getIcon("symbols.png"),
814 self.tr("Symbols")) 841 self.tr("Symbols"))
815 842
816 # Create the numbers viewer 843 # Create the numbers viewer
844 logging.debug("Creating Numbers Viewer...")
817 from .NumbersWidget import NumbersWidget 845 from .NumbersWidget import NumbersWidget
818 self.numbersViewer = NumbersWidget() 846 self.numbersViewer = NumbersWidget()
819 self.hToolbox.addItem(self.numbersViewer, 847 self.hToolbox.addItem(self.numbersViewer,
820 UI.PixmapCache.getIcon("numbers.png"), 848 UI.PixmapCache.getIcon("numbers.png"),
821 self.tr("Numbers")) 849 self.tr("Numbers"))
827 Private method to create the Sidebars layout. 855 Private method to create the Sidebars layout.
828 856
829 @param debugServer reference to the debug server object 857 @param debugServer reference to the debug server object
830 """ 858 """
831 from E5Gui.E5SideBar import E5SideBar 859 from E5Gui.E5SideBar import E5SideBar
860
861 logging.debug("Creating Sidebars Layout...")
832 862
833 delay = Preferences.getUI("SidebarDelay") 863 delay = Preferences.getUI("SidebarDelay")
834 # Create the left sidebar 864 # Create the left sidebar
835 self.leftSidebar = E5SideBar(E5SideBar.West, delay) 865 self.leftSidebar = E5SideBar(E5SideBar.West, delay)
836 866
869 self.leftSidebar.addTab( 899 self.leftSidebar.addTab(
870 self.templateViewer, 900 self.templateViewer,
871 UI.PixmapCache.getIcon("templateViewer.png"), 901 UI.PixmapCache.getIcon("templateViewer.png"),
872 self.tr("Template-Viewer")) 902 self.tr("Template-Viewer"))
873 903
904 # Create the code documentation viewer
905 logging.debug("Creating Code Documentation Viewer...")
906 from .CodeDocumentationViewer import CodeDocumentationViewer
907 self.codeDocumentationViewer = CodeDocumentationViewer(self)
908 self.rightSidebar.addTab(
909 self.codeDocumentationViewer,
910 UI.PixmapCache.getIcon("codeDocuViewer.png"),
911 self.tr("Code Documentation Viewer"))
912
874 # Create the debug viewer maybe without the embedded shell 913 # Create the debug viewer maybe without the embedded shell
875 logging.debug("Creating Debug Viewer...") 914 logging.debug("Creating Debug Viewer...")
876 from Debugger.DebugViewer import DebugViewer 915 from Debugger.DebugViewer import DebugViewer
877 self.debugViewer = DebugViewer( 916 self.debugViewer = DebugViewer(
878 debugServer, True, self.viewmanager, None, 917 debugServer, True, self.viewmanager, None,
1422 self.shellActivateAct = E5Action( 1461 self.shellActivateAct = E5Action(
1423 self.tr('Shell'), 1462 self.tr('Shell'),
1424 self.tr('&Shell'), 1463 self.tr('&Shell'),
1425 QKeySequence(self.tr("Alt+Shift+S")), 1464 QKeySequence(self.tr("Alt+Shift+S")),
1426 0, self, 1465 0, self,
1427 'interprter_shell_activate') 1466 'interpreter_shell_activate')
1428 self.shellActivateAct.setStatusTip(self.tr( 1467 self.shellActivateAct.setStatusTip(self.tr(
1429 "Switch the input focus to the Shell window.")) 1468 "Switch the input focus to the Shell window."))
1430 self.shellActivateAct.setWhatsThis(self.tr( 1469 self.shellActivateAct.setWhatsThis(self.tr(
1431 """<b>Activate Shell</b>""" 1470 """<b>Activate Shell</b>"""
1432 """<p>This switches the input focus to the Shell window.</p>""" 1471 """<p>This switches the input focus to the Shell window.</p>"""
4162 """ 4201 """
4163 aw = self.viewmanager.activeWindow() 4202 aw = self.viewmanager.activeWindow()
4164 if aw is not None: 4203 if aw is not None:
4165 aw.setFocus(Qt.ActiveWindowFocusReason) 4204 aw.setFocus(Qt.ActiveWindowFocusReason)
4166 4205
4206 def activateCodeDocumentationViewer(self, switchFocus=True):
4207 """
4208 Public slot to handle the activation of the Code Documentation Viewer.
4209
4210 @param switchFocus flag indicating to transfer the input focus
4211 @type bool
4212 """
4213 if self.layoutType == "Toolboxes":
4214 self.rToolboxDock.show()
4215 self.rToolbox.setCurrentWidget(self.codeDocumentationViewer)
4216 elif self.layoutType == "Sidebars":
4217 self.rightSidebar.show()
4218 self.rightSidebar.setCurrentWidget(self.codeDocumentationViewer)
4219 else:
4220 self.codeDocumentationViewer.show()
4221 if switchFocus:
4222 self.codeDocumentationViewer.setFocus(Qt.ActiveWindowFocusReason)
4223
4167 def __toggleWindow(self, w): 4224 def __toggleWindow(self, w):
4168 """ 4225 """
4169 Private method to toggle a workspace editor window. 4226 Private method to toggle a workspace editor window.
4170 4227
4171 @param w reference to the workspace editor window 4228 @param w reference to the workspace editor window
6263 if not self.viewmanager.closeViewManager(): 6320 if not self.viewmanager.closeViewManager():
6264 return False 6321 return False
6265 6322
6266 if sessionCreated and not self.__disableCrashSession: 6323 if sessionCreated and not self.__disableCrashSession:
6267 self.__deleteCrashSession() 6324 self.__deleteCrashSession()
6325
6326 self.codeDocumentationViewer.shutdown()
6268 6327
6269 self.__previewer.shutdown() 6328 self.__previewer.shutdown()
6270 6329
6271 self.shell.closeShell() 6330 self.shell.closeShell()
6272 6331
6795 def __ircAutoConnected(self): 6854 def __ircAutoConnected(self):
6796 """ 6855 """
6797 Private slot handling the automatic connection of the IRC client. 6856 Private slot handling the automatic connection of the IRC client.
6798 """ 6857 """
6799 self.__activateIRC() 6858 self.__activateIRC()
6859
6860 ###############################################
6861 ## Support for Code Documentation Viewer below
6862 ###############################################
6863
6864 def documentationViewer(self):
6865 """
6866 Public method to provide a reference to the code documentation viewer.
6867
6868 @return reference to the code documentation viewer
6869 @rtype CodeDocumentationViewer
6870 """
6871 return self.codeDocumentationViewer

eric ide

mercurial