944:1b59c4ba121e | 945:8cd4d08fa9f6 |
---|---|
162 | 162 |
163 @param s data to be written (it must support the str-method) | 163 @param s data to be written (it must support the str-method) |
164 """ | 164 """ |
165 self.buffer += str(s) | 165 self.buffer += str(s) |
166 self.__nWrite(self.__bufferedWrite()) | 166 self.__nWrite(self.__bufferedWrite()) |
167 | |
167 | 168 |
168 class UserInterface(QMainWindow): | 169 class UserInterface(QMainWindow): |
169 """ | 170 """ |
170 Class implementing the main user interface. | 171 Class implementing the main user interface. |
171 | 172 |
246 self.multiProject = MultiProject(self.project, self) | 247 self.multiProject = MultiProject(self.project, self) |
247 | 248 |
248 splash.showMessage(self.trUtf8("Initializing Plugin Manager...")) | 249 splash.showMessage(self.trUtf8("Initializing Plugin Manager...")) |
249 | 250 |
250 # Initialize the Plugin Manager (Plugins are initialized later | 251 # Initialize the Plugin Manager (Plugins are initialized later |
251 self.pluginManager = PluginManager(self, develPlugin = plugin) | 252 self.pluginManager = PluginManager(self, develPlugin=plugin) |
252 | 253 |
253 splash.showMessage(self.trUtf8("Generating Main User Interface...")) | 254 splash.showMessage(self.trUtf8("Generating Main User Interface...")) |
254 | 255 |
255 # Create the main window now so that we can connect QActions to it. | 256 # Create the main window now so that we can connect QActions to it. |
256 logging.debug("Creating Layout...") | 257 logging.debug("Creating Layout...") |
257 self.__createLayout(debugServer) | 258 self.__createLayout(debugServer) |
258 | 259 |
259 # Generate the debugger part of the ui | 260 # Generate the debugger part of the ui |
260 logging.debug("Creating Debugger UI...") | 261 logging.debug("Creating Debugger UI...") |
261 self.debuggerUI = DebugUI(self, self.viewmanager, debugServer, | 262 self.debuggerUI = DebugUI(self, self.viewmanager, debugServer, |
262 self.debugViewer, self.project) | 263 self.debugViewer, self.project) |
263 self.debugViewer.setDebugger(self.debuggerUI) | 264 self.debugViewer.setDebugger(self.debuggerUI) |
264 self.shell.setDebuggerUI(self.debuggerUI) | 265 self.shell.setDebuggerUI(self.debuggerUI) |
265 | 266 |
266 # Generate the redirection helpers | 267 # Generate the redirection helpers |
447 # Generate the find in project files dialog | 448 # Generate the find in project files dialog |
448 self.findFilesDialog = FindFileDialog(self.project) | 449 self.findFilesDialog = FindFileDialog(self.project) |
449 self.findFilesDialog.sourceFile.connect( | 450 self.findFilesDialog.sourceFile.connect( |
450 self.viewmanager.openSourceFile) | 451 self.viewmanager.openSourceFile) |
451 self.findFilesDialog.designerFile.connect(self.__designer) | 452 self.findFilesDialog.designerFile.connect(self.__designer) |
452 self.replaceFilesDialog = FindFileDialog(self.project, replaceMode = True) | 453 self.replaceFilesDialog = FindFileDialog(self.project, replaceMode=True) |
453 self.replaceFilesDialog.sourceFile.connect( | 454 self.replaceFilesDialog.sourceFile.connect( |
454 self.viewmanager.openSourceFile) | 455 self.viewmanager.openSourceFile) |
455 self.replaceFilesDialog.designerFile.connect(self.__designer) | 456 self.replaceFilesDialog.designerFile.connect(self.__designer) |
456 | 457 |
457 # generate the find file dialog | 458 # generate the find file dialog |
598 | 599 |
599 # step 2: set a style sheet | 600 # step 2: set a style sheet |
600 styleSheetFile = Preferences.getUI("StyleSheet") | 601 styleSheetFile = Preferences.getUI("StyleSheet") |
601 if styleSheetFile: | 602 if styleSheetFile: |
602 try: | 603 try: |
603 f = open(styleSheetFile, "r", encoding = "utf-8") | 604 f = open(styleSheetFile, "r", encoding="utf-8") |
604 styleSheet = f.read() | 605 styleSheet = f.read() |
605 f.close() | 606 f.close() |
606 except IOError as msg: | 607 except IOError as msg: |
607 E5MessageBox.warning(self, | 608 E5MessageBox.warning(self, |
608 self.trUtf8("Loading Style Sheet"), | 609 self.trUtf8("Loading Style Sheet"), |
676 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) | 677 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) |
677 self.multiProjectBrowser.setWindowTitle(self.trUtf8("Multiproject-Viewer")) | 678 self.multiProjectBrowser.setWindowTitle(self.trUtf8("Multiproject-Viewer")) |
678 | 679 |
679 # Create the debug viewer maybe without the embedded shell | 680 # Create the debug viewer maybe without the embedded shell |
680 self.debugViewer = DebugViewer(debugServer, False, self.viewmanager, None, | 681 self.debugViewer = DebugViewer(debugServer, False, self.viewmanager, None, |
681 embeddedShell=self.embeddedShell, | 682 embeddedShell=self.embeddedShell, |
682 embeddedBrowser=(self.embeddedFileBrowser == 1)) | 683 embeddedBrowser=(self.embeddedFileBrowser == 1)) |
683 self.debugViewer.setWindowTitle(self.trUtf8("Debug-Viewer")) | 684 self.debugViewer.setWindowTitle(self.trUtf8("Debug-Viewer")) |
684 | 685 |
685 # Create the chat part of the user interface | 686 # Create the chat part of the user interface |
686 self.cooperation = ChatWidget() | 687 self.cooperation = ChatWidget() |
708 | 709 |
709 # Create the numbers viewer | 710 # Create the numbers viewer |
710 self.numbersViewer = NumbersWidget() | 711 self.numbersViewer = NumbersWidget() |
711 self.numbersViewer.setWindowTitle(self.trUtf8("Numbers")) | 712 self.numbersViewer.setWindowTitle(self.trUtf8("Numbers")) |
712 | 713 |
713 self.windows = [self.projectBrowser, None, self.debugViewer, | 714 self.windows = [self.projectBrowser, None, self.debugViewer, |
714 None, self.logViewer, self.taskViewer, self.templateViewer, | 715 None, self.logViewer, self.taskViewer, self.templateViewer, |
715 self.multiProjectBrowser, self.terminal, self.cooperation, | 716 self.multiProjectBrowser, self.terminal, self.cooperation, |
716 self.symbolsViewer, self.numbersViewer] | 717 self.symbolsViewer, self.numbersViewer] |
717 | 718 |
718 if self.embeddedShell: | 719 if self.embeddedShell: |
719 self.shell = self.debugViewer.shell | 720 self.shell = self.debugViewer.shell |
720 else: | 721 else: |
725 if self.embeddedFileBrowser == 0: # separate window | 726 if self.embeddedFileBrowser == 0: # separate window |
726 # Create the file browser | 727 # Create the file browser |
727 self.browser = Browser(None) | 728 self.browser = Browser(None) |
728 self.browser.setWindowTitle(self.trUtf8("File-Browser")) | 729 self.browser.setWindowTitle(self.trUtf8("File-Browser")) |
729 self.windows[1] = self.browser | 730 self.windows[1] = self.browser |
730 elif self.embeddedFileBrowser == 1: # embedded in debug browser | 731 elif self.embeddedFileBrowser == 1: # embedded in debug browser |
731 self.browser = self.debugViewer.browser | 732 self.browser = self.debugViewer.browser |
732 else: # embedded in project browser | 733 else: # embedded in project browser |
733 self.browser = self.projectBrowser.fileBrowser | 734 self.browser = self.projectBrowser.fileBrowser |
734 | 735 |
735 def __createDockWindowsLayout(self, debugServer): | 736 def __createDockWindowsLayout(self, debugServer): |
748 # Create the multi project browser | 749 # Create the multi project browser |
749 self.multiProjectBrowserDock = \ | 750 self.multiProjectBrowserDock = \ |
750 self.__createDockWindow("MultiProjectBrowserDock") | 751 self.__createDockWindow("MultiProjectBrowserDock") |
751 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) | 752 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) |
752 self.__setupDockWindow(self.multiProjectBrowserDock, Qt.LeftDockWidgetArea, | 753 self.__setupDockWindow(self.multiProjectBrowserDock, Qt.LeftDockWidgetArea, |
753 self.multiProjectBrowser, | 754 self.multiProjectBrowser, |
754 self.trUtf8("Multiproject-Viewer")) | 755 self.trUtf8("Multiproject-Viewer")) |
755 | 756 |
756 # Create the debug viewer maybe without the embedded shell | 757 # Create the debug viewer maybe without the embedded shell |
757 self.debugViewerDock = self.__createDockWindow("DebugViewerDock") | 758 self.debugViewerDock = self.__createDockWindow("DebugViewerDock") |
758 self.debugViewer = DebugViewer(debugServer, True, self.viewmanager, | 759 self.debugViewer = DebugViewer(debugServer, True, self.viewmanager, |
759 self.debugViewerDock, | 760 self.debugViewerDock, |
760 embeddedShell=self.embeddedShell, | 761 embeddedShell=self.embeddedShell, |
761 embeddedBrowser=(self.embeddedFileBrowser == 1)) | 762 embeddedBrowser=(self.embeddedFileBrowser == 1)) |
762 self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea, | 763 self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea, |
763 self.debugViewer, self.trUtf8("Debug-Viewer")) | 764 self.debugViewer, self.trUtf8("Debug-Viewer")) |
764 | 765 |
765 # Create the chat part of the user interface | 766 # Create the chat part of the user interface |
766 self.cooperationDock = self.__createDockWindow("CooperationDock") | 767 self.cooperationDock = self.__createDockWindow("CooperationDock") |
767 self.cooperation = ChatWidget(parent = self.cooperationDock) | 768 self.cooperation = ChatWidget(parent=self.cooperationDock) |
768 self.__setupDockWindow(self.cooperationDock, Qt.RightDockWidgetArea, | 769 self.__setupDockWindow(self.cooperationDock, Qt.RightDockWidgetArea, |
769 self.cooperation, self.trUtf8("Cooperation")) | 770 self.cooperation, self.trUtf8("Cooperation")) |
770 | 771 |
771 # Create the log viewer part of the user interface | 772 # Create the log viewer part of the user interface |
772 self.logViewerDock = self.__createDockWindow("LogViewerDock") | 773 self.logViewerDock = self.__createDockWindow("LogViewerDock") |
780 self.__setupDockWindow(self.taskViewerDock, Qt.BottomDockWidgetArea, | 781 self.__setupDockWindow(self.taskViewerDock, Qt.BottomDockWidgetArea, |
781 self.taskViewer, self.trUtf8("Task-Viewer")) | 782 self.taskViewer, self.trUtf8("Task-Viewer")) |
782 | 783 |
783 # Create the template viewer part of the user interface | 784 # Create the template viewer part of the user interface |
784 self.templateViewerDock = self.__createDockWindow("TemplateViewerDock") | 785 self.templateViewerDock = self.__createDockWindow("TemplateViewerDock") |
785 self.templateViewer = TemplateViewer(self.templateViewerDock, | 786 self.templateViewer = TemplateViewer(self.templateViewerDock, |
786 self.viewmanager) | 787 self.viewmanager) |
787 self.__setupDockWindow(self.templateViewerDock, Qt.RightDockWidgetArea, | 788 self.__setupDockWindow(self.templateViewerDock, Qt.RightDockWidgetArea, |
788 self.templateViewer, self.trUtf8("Template-Viewer")) | 789 self.templateViewer, self.trUtf8("Template-Viewer")) |
789 | 790 |
790 # Create the terminal | 791 # Create the terminal |
791 self.terminalDock = self.__createDockWindow("TerminalDock") | 792 self.terminalDock = self.__createDockWindow("TerminalDock") |
792 self.terminal = Terminal(self.viewmanager, self.terminalDock) | 793 self.terminal = Terminal(self.viewmanager, self.terminalDock) |
793 self.__setupDockWindow(self.terminalDock, Qt.BottomDockWidgetArea, | 794 self.__setupDockWindow(self.terminalDock, Qt.BottomDockWidgetArea, |
794 self.terminal, self.trUtf8("Terminal")) | 795 self.terminal, self.trUtf8("Terminal")) |
795 | 796 |
796 self.windows = [self.projectBrowserDock, None, self.debugViewerDock, | 797 self.windows = [self.projectBrowserDock, None, self.debugViewerDock, |
797 None, self.logViewerDock, self.taskViewerDock, self.templateViewerDock, | 798 None, self.logViewerDock, self.taskViewerDock, self.templateViewerDock, |
798 self.multiProjectBrowserDock, self.terminalDock, self.cooperationDock] | 799 self.multiProjectBrowserDock, self.terminalDock, self.cooperationDock] |
799 | 800 |
800 if self.embeddedShell: | 801 if self.embeddedShell: |
801 self.shell = self.debugViewer.shell | 802 self.shell = self.debugViewer.shell |
802 else: | 803 else: |
812 self.browserDock = self.__createDockWindow("BrowserDock") | 813 self.browserDock = self.__createDockWindow("BrowserDock") |
813 self.browser = Browser(self.browserDock) | 814 self.browser = Browser(self.browserDock) |
814 self.__setupDockWindow(self.browserDock, Qt.RightDockWidgetArea, | 815 self.__setupDockWindow(self.browserDock, Qt.RightDockWidgetArea, |
815 self.browser, self.trUtf8("File-Browser")) | 816 self.browser, self.trUtf8("File-Browser")) |
816 self.windows[1] = self.browserDock | 817 self.windows[1] = self.browserDock |
817 elif self.embeddedFileBrowser == 1: # embedded in debug browser | 818 elif self.embeddedFileBrowser == 1: # embedded in debug browser |
818 self.browser = self.debugViewer.browser | 819 self.browser = self.debugViewer.browser |
819 else: # embedded in project browser | 820 else: # embedded in project browser |
820 self.browser = self.projectBrowser.fileBrowser | 821 self.browser = self.projectBrowser.fileBrowser |
821 | 822 |
822 # Create the symbols viewer | 823 # Create the symbols viewer |
840 @param debugServer reference to the debug server object | 841 @param debugServer reference to the debug server object |
841 """ | 842 """ |
842 # Create the vertical toolbox | 843 # Create the vertical toolbox |
843 self.vToolboxDock = self.__createDockWindow("vToolboxDock") | 844 self.vToolboxDock = self.__createDockWindow("vToolboxDock") |
844 self.vToolbox = E5VerticalToolBox(self.vToolboxDock) | 845 self.vToolbox = E5VerticalToolBox(self.vToolboxDock) |
845 self.__setupDockWindow(self.vToolboxDock, Qt.LeftDockWidgetArea, | 846 self.__setupDockWindow(self.vToolboxDock, Qt.LeftDockWidgetArea, |
846 self.vToolbox, self.trUtf8("Vertical Toolbox")) | 847 self.vToolbox, self.trUtf8("Vertical Toolbox")) |
847 | 848 |
848 # Create the horizontal toolbox | 849 # Create the horizontal toolbox |
849 self.hToolboxDock = self.__createDockWindow("hToolboxDock") | 850 self.hToolboxDock = self.__createDockWindow("hToolboxDock") |
850 self.hToolbox = E5HorizontalToolBox(self.hToolboxDock) | 851 self.hToolbox = E5HorizontalToolBox(self.hToolboxDock) |
851 self.__setupDockWindow(self.hToolboxDock, Qt.BottomDockWidgetArea, | 852 self.__setupDockWindow(self.hToolboxDock, Qt.BottomDockWidgetArea, |
852 self.hToolbox, self.trUtf8("Horizontal Toolbox")) | 853 self.hToolbox, self.trUtf8("Horizontal Toolbox")) |
853 | 854 |
854 # Create the project browser | 855 # Create the project browser |
855 self.projectBrowser = ProjectBrowser(self.project, None, | 856 self.projectBrowser = ProjectBrowser(self.project, None, |
856 embeddedBrowser=(self.embeddedFileBrowser == 2)) | 857 embeddedBrowser=(self.embeddedFileBrowser == 2)) |
857 self.vToolbox.addItem(self.projectBrowser, | 858 self.vToolbox.addItem(self.projectBrowser, |
858 UI.PixmapCache.getIcon("projectViewer.png"), | 859 UI.PixmapCache.getIcon("projectViewer.png"), |
859 self.trUtf8("Project-Viewer")) | 860 self.trUtf8("Project-Viewer")) |
860 | 861 |
861 # Create the multi project browser | 862 # Create the multi project browser |
862 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) | 863 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) |
863 self.vToolbox.addItem(self.multiProjectBrowser, | 864 self.vToolbox.addItem(self.multiProjectBrowser, |
864 UI.PixmapCache.getIcon("multiProjectViewer.png"), | 865 UI.PixmapCache.getIcon("multiProjectViewer.png"), |
865 self.trUtf8("Multiproject-Viewer")) | 866 self.trUtf8("Multiproject-Viewer")) |
866 | 867 |
867 # Create the template viewer part of the user interface | 868 # Create the template viewer part of the user interface |
868 self.templateViewer = TemplateViewer(None, | 869 self.templateViewer = TemplateViewer(None, |
869 self.viewmanager) | 870 self.viewmanager) |
870 self.vToolbox.addItem(self.templateViewer, | 871 self.vToolbox.addItem(self.templateViewer, |
871 UI.PixmapCache.getIcon("templateViewer.png"), | 872 UI.PixmapCache.getIcon("templateViewer.png"), |
872 self.trUtf8("Template-Viewer")) | 873 self.trUtf8("Template-Viewer")) |
873 | 874 |
874 # Create the debug viewer maybe without the embedded shell | 875 # Create the debug viewer maybe without the embedded shell |
875 self.debugViewerDock = self.__createDockWindow("DebugViewerDock") | 876 self.debugViewerDock = self.__createDockWindow("DebugViewerDock") |
876 self.debugViewer = DebugViewer(debugServer, True, self.viewmanager, | 877 self.debugViewer = DebugViewer(debugServer, True, self.viewmanager, |
877 self.debugViewerDock, | 878 self.debugViewerDock, |
878 embeddedShell=self.embeddedShell, | 879 embeddedShell=self.embeddedShell, |
879 embeddedBrowser=(self.embeddedFileBrowser == 1)) | 880 embeddedBrowser=(self.embeddedFileBrowser == 1)) |
880 self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea, | 881 self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea, |
881 self.debugViewer, self.trUtf8("Debug-Viewer")) | 882 self.debugViewer, self.trUtf8("Debug-Viewer")) |
882 | 883 |
883 # Create the chat part of the user interface | 884 # Create the chat part of the user interface |
884 self.cooperationDock = self.__createDockWindow("CooperationDock") | 885 self.cooperationDock = self.__createDockWindow("CooperationDock") |
885 self.cooperation = ChatWidget(parent = self.cooperationDock) | 886 self.cooperation = ChatWidget(parent=self.cooperationDock) |
886 self.__setupDockWindow(self.cooperationDock, Qt.RightDockWidgetArea, | 887 self.__setupDockWindow(self.cooperationDock, Qt.RightDockWidgetArea, |
887 self.cooperation, self.trUtf8("Cooperation")) | 888 self.cooperation, self.trUtf8("Cooperation")) |
888 | 889 |
889 # Create the terminal part of the user interface | 890 # Create the terminal part of the user interface |
890 self.terminal = Terminal(self.viewmanager) | 891 self.terminal = Terminal(self.viewmanager) |
891 self.hToolbox.addItem(self.terminal, | 892 self.hToolbox.addItem(self.terminal, |
892 UI.PixmapCache.getIcon("terminal.png"), | 893 UI.PixmapCache.getIcon("terminal.png"), |
893 self.trUtf8("Terminal")) | 894 self.trUtf8("Terminal")) |
894 | 895 |
895 # Create the task viewer part of the user interface | 896 # Create the task viewer part of the user interface |
896 self.taskViewer = TaskViewer(None, self.project) | 897 self.taskViewer = TaskViewer(None, self.project) |
897 self.hToolbox.addItem(self.taskViewer, | 898 self.hToolbox.addItem(self.taskViewer, |
898 UI.PixmapCache.getIcon("task.png"), | 899 UI.PixmapCache.getIcon("task.png"), |
899 self.trUtf8("Task-Viewer")) | 900 self.trUtf8("Task-Viewer")) |
900 | 901 |
901 # Create the log viewer part of the user interface | 902 # Create the log viewer part of the user interface |
902 self.logViewer = LogViewer() | 903 self.logViewer = LogViewer() |
903 self.hToolbox.addItem(self.logViewer, | 904 self.hToolbox.addItem(self.logViewer, |
904 UI.PixmapCache.getIcon("logViewer.png"), | 905 UI.PixmapCache.getIcon("logViewer.png"), |
905 self.trUtf8("Log-Viewer")) | 906 self.trUtf8("Log-Viewer")) |
906 | 907 |
907 self.windows = [None, None, self.debugViewerDock, None, None, | 908 self.windows = [None, None, self.debugViewerDock, None, None, |
908 None, None, None, None, self.cooperationDock] | 909 None, None, None, None, self.cooperationDock] |
909 | 910 |
910 if self.embeddedShell: | 911 if self.embeddedShell: |
911 self.shell = self.debugViewer.shell | 912 self.shell = self.debugViewer.shell |
912 else: | 913 else: |
913 # Create the shell | 914 # Create the shell |
914 self.shell = Shell(debugServer, self.viewmanager) | 915 self.shell = Shell(debugServer, self.viewmanager) |
915 self.hToolbox.insertItem(0, self.shell, | 916 self.hToolbox.insertItem(0, self.shell, |
916 UI.PixmapCache.getIcon("shell.png"), | 917 UI.PixmapCache.getIcon("shell.png"), |
917 self.trUtf8("Shell")) | 918 self.trUtf8("Shell")) |
918 | 919 |
919 if self.embeddedFileBrowser == 0: # separate window | 920 if self.embeddedFileBrowser == 0: # separate window |
920 # Create the file browser | 921 # Create the file browser |
921 self.browser = Browser() | 922 self.browser = Browser() |
922 self.vToolbox.addItem(self.browser, | 923 self.vToolbox.addItem(self.browser, |
923 UI.PixmapCache.getIcon("browser.png"), | 924 UI.PixmapCache.getIcon("browser.png"), |
924 self.trUtf8("File-Browser")) | 925 self.trUtf8("File-Browser")) |
925 elif self.embeddedFileBrowser == 1: # embedded in debug browser | 926 elif self.embeddedFileBrowser == 1: # embedded in debug browser |
926 self.browser = self.debugViewer.browser | 927 self.browser = self.debugViewer.browser |
927 else: # embedded in project browser | 928 else: # embedded in project browser |
928 self.browser = self.projectBrowser.fileBrowser | 929 self.browser = self.projectBrowser.fileBrowser |
929 | 930 |
930 # Create the symbols viewer | 931 # Create the symbols viewer |
931 self.symbolsViewer = SymbolsWidget() | 932 self.symbolsViewer = SymbolsWidget() |
932 self.vToolbox.addItem(self.symbolsViewer, | 933 self.vToolbox.addItem(self.symbolsViewer, |
933 UI.PixmapCache.getIcon("symbols.png"), | 934 UI.PixmapCache.getIcon("symbols.png"), |
934 self.trUtf8("Symbols")) | 935 self.trUtf8("Symbols")) |
935 | 936 |
936 # Create the numbers viewer | 937 # Create the numbers viewer |
937 self.numbersViewer = NumbersWidget() | 938 self.numbersViewer = NumbersWidget() |
938 self.hToolbox.addItem(self.numbersViewer, | 939 self.hToolbox.addItem(self.numbersViewer, |
939 UI.PixmapCache.getIcon("numbers.png"), | 940 UI.PixmapCache.getIcon("numbers.png"), |
940 self.trUtf8("Numbers")) | 941 self.trUtf8("Numbers")) |
941 | 942 |
942 self.hToolbox.setCurrentIndex(0) | 943 self.hToolbox.setCurrentIndex(0) |
943 | 944 |
944 def __createSidebarsLayout(self, debugServer): | 945 def __createSidebarsLayout(self, debugServer): |
955 | 956 |
956 # Create the project browser | 957 # Create the project browser |
957 logging.debug("Creating Project Browser...") | 958 logging.debug("Creating Project Browser...") |
958 self.projectBrowser = ProjectBrowser(self.project, None, | 959 self.projectBrowser = ProjectBrowser(self.project, None, |
959 embeddedBrowser=(self.embeddedFileBrowser == 2)) | 960 embeddedBrowser=(self.embeddedFileBrowser == 2)) |
960 self.leftSidebar.addTab(self.projectBrowser, | 961 self.leftSidebar.addTab(self.projectBrowser, |
961 UI.PixmapCache.getIcon("projectViewer.png"), | 962 UI.PixmapCache.getIcon("projectViewer.png"), |
962 self.trUtf8("Project-Viewer")) | 963 self.trUtf8("Project-Viewer")) |
963 | 964 |
964 # Create the multi project browser | 965 # Create the multi project browser |
965 logging.debug("Creating Multiproject Browser...") | 966 logging.debug("Creating Multiproject Browser...") |
966 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) | 967 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject) |
967 self.leftSidebar.addTab(self.multiProjectBrowser, | 968 self.leftSidebar.addTab(self.multiProjectBrowser, |
968 UI.PixmapCache.getIcon("multiProjectViewer.png"), | 969 UI.PixmapCache.getIcon("multiProjectViewer.png"), |
969 self.trUtf8("Multiproject-Viewer")) | 970 self.trUtf8("Multiproject-Viewer")) |
970 | 971 |
971 # Create the template viewer part of the user interface | 972 # Create the template viewer part of the user interface |
972 logging.debug("Creating Template Viewer...") | 973 logging.debug("Creating Template Viewer...") |
973 self.templateViewer = TemplateViewer(None, | 974 self.templateViewer = TemplateViewer(None, |
974 self.viewmanager) | 975 self.viewmanager) |
975 self.leftSidebar.addTab(self.templateViewer, | 976 self.leftSidebar.addTab(self.templateViewer, |
976 UI.PixmapCache.getIcon("templateViewer.png"), | 977 UI.PixmapCache.getIcon("templateViewer.png"), |
977 self.trUtf8("Template-Viewer")) | 978 self.trUtf8("Template-Viewer")) |
978 | 979 |
979 # Create the debug viewer maybe without the embedded shell | 980 # Create the debug viewer maybe without the embedded shell |
980 logging.debug("Creating Debug Viewer...") | 981 logging.debug("Creating Debug Viewer...") |
981 self.debugViewerDock = self.__createDockWindow("DebugViewerDock") | 982 self.debugViewerDock = self.__createDockWindow("DebugViewerDock") |
982 self.debugViewer = DebugViewer(debugServer, True, self.viewmanager, | 983 self.debugViewer = DebugViewer(debugServer, True, self.viewmanager, |
983 self.debugViewerDock, | 984 self.debugViewerDock, |
984 embeddedShell=self.embeddedShell, | 985 embeddedShell=self.embeddedShell, |
985 embeddedBrowser=(self.embeddedFileBrowser == 1)) | 986 embeddedBrowser=(self.embeddedFileBrowser == 1)) |
986 self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea, | 987 self.__setupDockWindow(self.debugViewerDock, Qt.RightDockWidgetArea, |
987 self.debugViewer, self.trUtf8("Debug-Viewer")) | 988 self.debugViewer, self.trUtf8("Debug-Viewer")) |
988 | 989 |
989 # Create the chat part of the user interface | 990 # Create the chat part of the user interface |
990 self.cooperationDock = self.__createDockWindow("CooperationDock") | 991 self.cooperationDock = self.__createDockWindow("CooperationDock") |
991 self.cooperation = ChatWidget(parent = self.cooperationDock) | 992 self.cooperation = ChatWidget(parent=self.cooperationDock) |
992 self.__setupDockWindow(self.cooperationDock, Qt.RightDockWidgetArea, | 993 self.__setupDockWindow(self.cooperationDock, Qt.RightDockWidgetArea, |
993 self.cooperation, self.trUtf8("Cooperation")) | 994 self.cooperation, self.trUtf8("Cooperation")) |
994 | 995 |
995 # Create the terminal part of the user interface | 996 # Create the terminal part of the user interface |
996 logging.debug("Creating Terminal...") | 997 logging.debug("Creating Terminal...") |
997 self.terminal = Terminal(self.viewmanager) | 998 self.terminal = Terminal(self.viewmanager) |
998 self.bottomSidebar.addTab(self.terminal, | 999 self.bottomSidebar.addTab(self.terminal, |
999 UI.PixmapCache.getIcon("terminal.png"), | 1000 UI.PixmapCache.getIcon("terminal.png"), |
1000 self.trUtf8("Terminal")) | 1001 self.trUtf8("Terminal")) |
1001 | 1002 |
1002 # Create the task viewer part of the user interface | 1003 # Create the task viewer part of the user interface |
1003 logging.debug("Creating Task Viewer...") | 1004 logging.debug("Creating Task Viewer...") |
1004 self.taskViewer = TaskViewer(None, self.project) | 1005 self.taskViewer = TaskViewer(None, self.project) |
1005 self.bottomSidebar.addTab(self.taskViewer, | 1006 self.bottomSidebar.addTab(self.taskViewer, |
1006 UI.PixmapCache.getIcon("task.png"), | 1007 UI.PixmapCache.getIcon("task.png"), |
1007 self.trUtf8("Task-Viewer")) | 1008 self.trUtf8("Task-Viewer")) |
1008 | 1009 |
1009 # Create the log viewer part of the user interface | 1010 # Create the log viewer part of the user interface |
1010 logging.debug("Creating Log Viewer...") | 1011 logging.debug("Creating Log Viewer...") |
1011 self.logViewer = LogViewer() | 1012 self.logViewer = LogViewer() |
1012 self.bottomSidebar.addTab(self.logViewer, | 1013 self.bottomSidebar.addTab(self.logViewer, |
1013 UI.PixmapCache.getIcon("logViewer.png"), | 1014 UI.PixmapCache.getIcon("logViewer.png"), |
1014 self.trUtf8("Log-Viewer")) | 1015 self.trUtf8("Log-Viewer")) |
1015 | 1016 |
1016 self.windows = [None, None, self.debugViewerDock, None, None, | 1017 self.windows = [None, None, self.debugViewerDock, None, None, |
1017 None, None, None, None, self.cooperationDock] | 1018 None, None, None, None, self.cooperationDock] |
1018 | 1019 |
1019 if self.embeddedShell: | 1020 if self.embeddedShell: |
1020 self.shell = self.debugViewer.shell | 1021 self.shell = self.debugViewer.shell |
1021 else: | 1022 else: |
1022 # Create the shell | 1023 # Create the shell |
1023 logging.debug("Creating Shell...") | 1024 logging.debug("Creating Shell...") |
1024 self.shell = Shell(debugServer, self.viewmanager) | 1025 self.shell = Shell(debugServer, self.viewmanager) |
1025 self.bottomSidebar.insertTab(0, self.shell, | 1026 self.bottomSidebar.insertTab(0, self.shell, |
1026 UI.PixmapCache.getIcon("shell.png"), | 1027 UI.PixmapCache.getIcon("shell.png"), |
1027 self.trUtf8("Shell")) | 1028 self.trUtf8("Shell")) |
1028 | 1029 |
1029 if self.embeddedFileBrowser == 0: # separate window | 1030 if self.embeddedFileBrowser == 0: # separate window |
1030 # Create the file browser | 1031 # Create the file browser |
1031 logging.debug("Creating File Browser...") | 1032 logging.debug("Creating File Browser...") |
1032 self.browser = Browser() | 1033 self.browser = Browser() |
1033 self.leftSidebar.addTab(self.browser, | 1034 self.leftSidebar.addTab(self.browser, |
1034 UI.PixmapCache.getIcon("browser.png"), | 1035 UI.PixmapCache.getIcon("browser.png"), |
1035 self.trUtf8("File-Browser")) | 1036 self.trUtf8("File-Browser")) |
1036 elif self.embeddedFileBrowser == 1: # embedded in debug browser | 1037 elif self.embeddedFileBrowser == 1: # embedded in debug browser |
1037 self.browser = self.debugViewer.browser | 1038 self.browser = self.debugViewer.browser |
1038 else: # embedded in project browser | 1039 else: # embedded in project browser |
1039 self.browser = self.projectBrowser.fileBrowser | 1040 self.browser = self.projectBrowser.fileBrowser |
1040 | 1041 |
1041 # Create the symbols viewer | 1042 # Create the symbols viewer |
1042 self.symbolsViewer = SymbolsWidget() | 1043 self.symbolsViewer = SymbolsWidget() |
1043 self.leftSidebar.addTab(self.symbolsViewer, | 1044 self.leftSidebar.addTab(self.symbolsViewer, |
1044 UI.PixmapCache.getIcon("symbols.png"), | 1045 UI.PixmapCache.getIcon("symbols.png"), |
1045 self.trUtf8("Symbols")) | 1046 self.trUtf8("Symbols")) |
1046 | 1047 |
1047 # Create the numbers viewer | 1048 # Create the numbers viewer |
1048 self.numbersViewer = NumbersWidget() | 1049 self.numbersViewer = NumbersWidget() |
1049 self.bottomSidebar.addTab(self.numbersViewer, | 1050 self.bottomSidebar.addTab(self.numbersViewer, |
1050 UI.PixmapCache.getIcon("numbers.png"), | 1051 UI.PixmapCache.getIcon("numbers.png"), |
1051 self.trUtf8("Numbers")) | 1052 self.trUtf8("Numbers")) |
1052 | 1053 |
1053 self.bottomSidebar.setCurrentIndex(0) | 1054 self.bottomSidebar.setCurrentIndex(0) |
1054 | 1055 |
1055 # create the central widget | 1056 # create the central widget |
1106 self.bottomSidebar.setCurrentWidget(self.logViewer) | 1107 self.bottomSidebar.setCurrentWidget(self.logViewer) |
1107 self.bottomSidebar.raise_() | 1108 self.bottomSidebar.raise_() |
1108 if self.bottomSidebar.isAutoHiding(): | 1109 if self.bottomSidebar.isAutoHiding(): |
1109 self.bottomSidebar.setFocus() | 1110 self.bottomSidebar.setFocus() |
1110 | 1111 |
1111 def __openOnStartup(self, startupType = None): | 1112 def __openOnStartup(self, startupType=None): |
1112 """ | 1113 """ |
1113 Private method to open the last file, project or multiproject. | 1114 Private method to open the last file, project or multiproject. |
1114 | 1115 |
1115 @param startupType type of startup requested (string, one of | 1116 @param startupType type of startup requested (string, one of |
1116 "Nothing", "File", "Project", "MultiProject" or "Session") | 1117 "Nothing", "File", "Project", "MultiProject" or "Session") |
1117 """ | 1118 """ |
1118 startupTypeMapping = { | 1119 startupTypeMapping = { |
1119 "Nothing" : 0, | 1120 "Nothing": 0, |
1120 "File" : 1, | 1121 "File": 1, |
1121 "Project" : 2, | 1122 "Project": 2, |
1122 "MultiProject" : 3, | 1123 "MultiProject": 3, |
1123 "Session" : 4, | 1124 "Session": 4, |
1124 } | 1125 } |
1125 | 1126 |
1126 if startupType is None: | 1127 if startupType is None: |
1127 startup = Preferences.getUI("OpenOnStartup") | 1128 startup = Preferences.getUI("OpenOnStartup") |
1128 else: | 1129 else: |
1157 """ | 1158 """ |
1158 Public method to process the command line args passed to the UI. | 1159 Public method to process the command line args passed to the UI. |
1159 | 1160 |
1160 @param args list of files to open<br /> | 1161 @param args list of files to open<br /> |
1161 The args are processed one at a time. All arguments after a | 1162 The args are processed one at a time. All arguments after a |
1162 '--' option are considered debug arguments to the program | 1163 '--' option are considered debug arguments to the program |
1163 for the debugger. All files named before the '--' option | 1164 for the debugger. All files named before the '--' option |
1164 are opened in a text editor, unless the argument ends in | 1165 are opened in a text editor, unless the argument ends in |
1165 .e4p, then it is opened as a project file. If it ends in | 1166 .e4p, then it is opened as a project file. If it ends in |
1166 .e4m, it is opened as a multiproject. | 1167 .e4m, it is opened as a multiproject. |
1167 """ | 1168 """ |
1168 # no args, return | 1169 # no args, return |
1169 if args is None: | 1170 if args is None: |
1170 if not self.__noOpenAtStartup: | 1171 if not self.__noOpenAtStartup: |
1250 self.addDockWidget(where, dock) | 1251 self.addDockWidget(where, dock) |
1251 dock.setWidget(widget) | 1252 dock.setWidget(widget) |
1252 dock.setWindowTitle(caption) | 1253 dock.setWindowTitle(caption) |
1253 dock.show() | 1254 dock.show() |
1254 | 1255 |
1255 def __setWindowCaption(self, editor = None, project = None): | 1256 def __setWindowCaption(self, editor=None, project=None): |
1256 """ | 1257 """ |
1257 Private method to set the caption of the Main Window. | 1258 Private method to set the caption of the Main Window. |
1258 | 1259 |
1259 @param editor filename to be displayed (string) | 1260 @param editor filename to be displayed (string) |
1260 @param project project name to be displayed (string) | 1261 @param project project name to be displayed (string) |
1296 self.wizardsActions = [] | 1297 self.wizardsActions = [] |
1297 | 1298 |
1298 self.exitAct = E5Action(self.trUtf8('Quit'), | 1299 self.exitAct = E5Action(self.trUtf8('Quit'), |
1299 UI.PixmapCache.getIcon("exit.png"), | 1300 UI.PixmapCache.getIcon("exit.png"), |
1300 self.trUtf8('&Quit'), | 1301 self.trUtf8('&Quit'), |
1301 QKeySequence(self.trUtf8("Ctrl+Q","File|Quit")), | 1302 QKeySequence(self.trUtf8("Ctrl+Q", "File|Quit")), |
1302 0, self, 'quit') | 1303 0, self, 'quit') |
1303 self.exitAct.setStatusTip(self.trUtf8('Quit the IDE')) | 1304 self.exitAct.setStatusTip(self.trUtf8('Quit the IDE')) |
1304 self.exitAct.setWhatsThis(self.trUtf8( | 1305 self.exitAct.setWhatsThis(self.trUtf8( |
1305 """<b>Quit the IDE</b>""" | 1306 """<b>Quit the IDE</b>""" |
1306 """<p>This quits the IDE. Any unsaved changes may be saved first.""" | 1307 """<p>This quits the IDE. Any unsaved changes may be saved first.""" |
1362 self.pbActivateAct.triggered[()].connect(self.__activateProjectBrowser) | 1363 self.pbActivateAct.triggered[()].connect(self.__activateProjectBrowser) |
1363 self.actions.append(self.pbActivateAct) | 1364 self.actions.append(self.pbActivateAct) |
1364 self.addAction(self.pbActivateAct) | 1365 self.addAction(self.pbActivateAct) |
1365 | 1366 |
1366 self.mpbAct = E5Action(self.trUtf8('Multiproject-Viewer'), | 1367 self.mpbAct = E5Action(self.trUtf8('Multiproject-Viewer'), |
1367 self.trUtf8('&Multiproject-Viewer'), 0, 0, self, | 1368 self.trUtf8('&Multiproject-Viewer'), 0, 0, self, |
1368 'multi_project_viewer', True) | 1369 'multi_project_viewer', True) |
1369 self.mpbAct.setStatusTip(self.trUtf8('Toggle the Multiproject-Viewer window')) | 1370 self.mpbAct.setStatusTip(self.trUtf8('Toggle the Multiproject-Viewer window')) |
1370 self.mpbAct.setWhatsThis(self.trUtf8( | 1371 self.mpbAct.setWhatsThis(self.trUtf8( |
1371 """<b>Toggle the Multiproject-Viewer window</b>""" | 1372 """<b>Toggle the Multiproject-Viewer window</b>""" |
1372 """<p>If the Multiproject-Viewer window is hidden then display it.""" | 1373 """<p>If the Multiproject-Viewer window is hidden then display it.""" |
1499 | 1500 |
1500 self.taskViewerActivateAct = E5Action(self.trUtf8('Activate Task-Viewer'), | 1501 self.taskViewerActivateAct = E5Action(self.trUtf8('Activate Task-Viewer'), |
1501 self.trUtf8('Activate Task-Viewer'), | 1502 self.trUtf8('Activate Task-Viewer'), |
1502 QKeySequence(self.trUtf8("Alt+Shift+T")), | 1503 QKeySequence(self.trUtf8("Alt+Shift+T")), |
1503 0, self, | 1504 0, self, |
1504 'task_viewer_activate',1) | 1505 'task_viewer_activate', 1) |
1505 self.taskViewerActivateAct.triggered[()].connect(self.__activateTaskViewer) | 1506 self.taskViewerActivateAct.triggered[()].connect(self.__activateTaskViewer) |
1506 self.actions.append(self.taskViewerActivateAct) | 1507 self.actions.append(self.taskViewerActivateAct) |
1507 self.addAction(self.taskViewerActivateAct) | 1508 self.addAction(self.taskViewerActivateAct) |
1508 | 1509 |
1509 self.templateViewerAct = E5Action(self.trUtf8('Template-Viewer'), | 1510 self.templateViewerAct = E5Action(self.trUtf8('Template-Viewer'), |
1520 | 1521 |
1521 self.templateViewerActivateAct = E5Action(self.trUtf8('Activate Template-Viewer'), | 1522 self.templateViewerActivateAct = E5Action(self.trUtf8('Activate Template-Viewer'), |
1522 self.trUtf8('Activate Template-Viewer'), | 1523 self.trUtf8('Activate Template-Viewer'), |
1523 QKeySequence(self.trUtf8("Alt+Shift+A")), | 1524 QKeySequence(self.trUtf8("Alt+Shift+A")), |
1524 0, self, | 1525 0, self, |
1525 'template_viewer_activate',1) | 1526 'template_viewer_activate', 1) |
1526 self.templateViewerActivateAct.triggered[()].connect(self.__activateTemplateViewer) | 1527 self.templateViewerActivateAct.triggered[()].connect(self.__activateTemplateViewer) |
1527 self.actions.append(self.templateViewerActivateAct) | 1528 self.actions.append(self.templateViewerActivateAct) |
1528 self.addAction(self.templateViewerActivateAct) | 1529 self.addAction(self.templateViewerActivateAct) |
1529 | 1530 |
1530 self.vtAct = E5Action(self.trUtf8('Vertical Toolbox'), | 1531 self.vtAct = E5Action(self.trUtf8('Vertical Toolbox'), |
1537 )) | 1538 )) |
1538 self.vtAct.triggered[()].connect(self.__toggleVerticalToolbox) | 1539 self.vtAct.triggered[()].connect(self.__toggleVerticalToolbox) |
1539 self.actions.append(self.vtAct) | 1540 self.actions.append(self.vtAct) |
1540 | 1541 |
1541 self.htAct = E5Action(self.trUtf8('Horizontal Toolbox'), | 1542 self.htAct = E5Action(self.trUtf8('Horizontal Toolbox'), |
1542 self.trUtf8('&Horizontal Toolbox'), 0, 0, self, | 1543 self.trUtf8('&Horizontal Toolbox'), 0, 0, self, |
1543 'horizontal_toolbox', True) | 1544 'horizontal_toolbox', True) |
1544 self.htAct.setStatusTip(self.trUtf8('Toggle the Horizontal Toolbox window')) | 1545 self.htAct.setStatusTip(self.trUtf8('Toggle the Horizontal Toolbox window')) |
1545 self.htAct.setWhatsThis(self.trUtf8( | 1546 self.htAct.setWhatsThis(self.trUtf8( |
1546 """<b>Toggle the Horizontal Toolbox window</b>""" | 1547 """<b>Toggle the Horizontal Toolbox window</b>""" |
1547 """<p>If the Horizontal Toolbox window is hidden then display it.""" | 1548 """<p>If the Horizontal Toolbox window is hidden then display it.""" |
1560 )) | 1561 )) |
1561 self.lsbAct.triggered[()].connect(self.__toggleLeftSidebar) | 1562 self.lsbAct.triggered[()].connect(self.__toggleLeftSidebar) |
1562 self.actions.append(self.lsbAct) | 1563 self.actions.append(self.lsbAct) |
1563 | 1564 |
1564 self.bsbAct = E5Action(self.trUtf8('Bottom Sidebar'), | 1565 self.bsbAct = E5Action(self.trUtf8('Bottom Sidebar'), |
1565 self.trUtf8('&Bottom Sidebar'), 0, 0, self, | 1566 self.trUtf8('&Bottom Sidebar'), 0, 0, self, |
1566 'bottom_sidebar', True) | 1567 'bottom_sidebar', True) |
1567 self.bsbAct.setStatusTip(self.trUtf8('Toggle the bottom sidebar window')) | 1568 self.bsbAct.setStatusTip(self.trUtf8('Toggle the bottom sidebar window')) |
1568 self.bsbAct.setWhatsThis(self.trUtf8( | 1569 self.bsbAct.setWhatsThis(self.trUtf8( |
1569 """<b>Toggle the bottom sidebar window</b>""" | 1570 """<b>Toggle the bottom sidebar window</b>""" |
1570 """<p>If the bottom sidebar window is hidden then display it.""" | 1571 """<p>If the bottom sidebar window is hidden then display it.""" |
1639 self.actions.append(self.numbersViewerActivateAct) | 1640 self.actions.append(self.numbersViewerActivateAct) |
1640 self.addAction(self.numbersViewerActivateAct) | 1641 self.addAction(self.numbersViewerActivateAct) |
1641 | 1642 |
1642 self.whatsThisAct = E5Action(self.trUtf8('What\'s This?'), | 1643 self.whatsThisAct = E5Action(self.trUtf8('What\'s This?'), |
1643 UI.PixmapCache.getIcon("whatsThis.png"), | 1644 UI.PixmapCache.getIcon("whatsThis.png"), |
1644 self.trUtf8('&What\'s This?'), | 1645 self.trUtf8('&What\'s This?'), |
1645 QKeySequence(self.trUtf8("Shift+F1")), | 1646 QKeySequence(self.trUtf8("Shift+F1")), |
1646 0, self, 'whatsThis') | 1647 0, self, 'whatsThis') |
1647 self.whatsThisAct.setStatusTip(self.trUtf8('Context sensitive help')) | 1648 self.whatsThisAct.setStatusTip(self.trUtf8('Context sensitive help')) |
1648 self.whatsThisAct.setWhatsThis(self.trUtf8( | 1649 self.whatsThisAct.setWhatsThis(self.trUtf8( |
1649 """<b>Display context sensitive help</b>""" | 1650 """<b>Display context sensitive help</b>""" |
1656 self.whatsThisAct.triggered[()].connect(self.__whatsThis) | 1657 self.whatsThisAct.triggered[()].connect(self.__whatsThis) |
1657 self.actions.append(self.whatsThisAct) | 1658 self.actions.append(self.whatsThisAct) |
1658 | 1659 |
1659 self.helpviewerAct = E5Action(self.trUtf8('Helpviewer'), | 1660 self.helpviewerAct = E5Action(self.trUtf8('Helpviewer'), |
1660 UI.PixmapCache.getIcon("help.png"), | 1661 UI.PixmapCache.getIcon("help.png"), |
1661 self.trUtf8('&Helpviewer...'), | 1662 self.trUtf8('&Helpviewer...'), |
1662 QKeySequence(self.trUtf8("F1")), | 1663 QKeySequence(self.trUtf8("F1")), |
1663 0, self, 'helpviewer') | 1664 0, self, 'helpviewer') |
1664 self.helpviewerAct.setStatusTip(self.trUtf8('Open the helpviewer window')) | 1665 self.helpviewerAct.setStatusTip(self.trUtf8('Open the helpviewer window')) |
1665 self.helpviewerAct.setWhatsThis(self.trUtf8( | 1666 self.helpviewerAct.setWhatsThis(self.trUtf8( |
1666 """<b>Helpviewer</b>""" | 1667 """<b>Helpviewer</b>""" |
1698 )) | 1699 )) |
1699 self.checkUpdateAct.triggered[()].connect(self.performVersionCheck) | 1700 self.checkUpdateAct.triggered[()].connect(self.performVersionCheck) |
1700 self.actions.append(self.checkUpdateAct) | 1701 self.actions.append(self.checkUpdateAct) |
1701 | 1702 |
1702 self.showVersionsAct = E5Action(self.trUtf8('Show downloadable versions'), | 1703 self.showVersionsAct = E5Action(self.trUtf8('Show downloadable versions'), |
1703 self.trUtf8('Show &downloadable versions...'), | 1704 self.trUtf8('Show &downloadable versions...'), |
1704 0, 0, self, 'show_downloadable_versions') | 1705 0, 0, self, 'show_downloadable_versions') |
1705 self.showVersionsAct.setStatusTip( | 1706 self.showVersionsAct.setStatusTip( |
1706 self.trUtf8('Show the versions available for download')) | 1707 self.trUtf8('Show the versions available for download')) |
1707 self.showVersionsAct.setWhatsThis(self.trUtf8( | 1708 self.showVersionsAct.setWhatsThis(self.trUtf8( |
1708 """<b>Show downloadable versions...</b>""" | 1709 """<b>Show downloadable versions...</b>""" |
1732 self.requestFeatureAct.triggered[()].connect(self.__requestFeature) | 1733 self.requestFeatureAct.triggered[()].connect(self.__requestFeature) |
1733 self.actions.append(self.requestFeatureAct) | 1734 self.actions.append(self.requestFeatureAct) |
1734 | 1735 |
1735 self.utActGrp = createActionGroup(self) | 1736 self.utActGrp = createActionGroup(self) |
1736 | 1737 |
1737 self.utDialogAct = E5Action(self.trUtf8('Unittest'), | 1738 self.utDialogAct = E5Action(self.trUtf8('Unittest'), |
1738 UI.PixmapCache.getIcon("unittest.png"), | 1739 UI.PixmapCache.getIcon("unittest.png"), |
1739 self.trUtf8('&Unittest...'), | 1740 self.trUtf8('&Unittest...'), |
1740 0, 0, self.utActGrp, 'unittest') | 1741 0, 0, self.utActGrp, 'unittest') |
1741 self.utDialogAct.setStatusTip(self.trUtf8('Start unittest dialog')) | 1742 self.utDialogAct.setStatusTip(self.trUtf8('Start unittest dialog')) |
1742 self.utDialogAct.setWhatsThis(self.trUtf8( | 1743 self.utDialogAct.setWhatsThis(self.trUtf8( |
1789 # check for Qt4 designer and linguist | 1790 # check for Qt4 designer and linguist |
1790 designerExe = Utilities.isWindowsPlatform() and \ | 1791 designerExe = Utilities.isWindowsPlatform() and \ |
1791 "{0}.exe".format(Utilities.generateQtToolName("designer")) or \ | 1792 "{0}.exe".format(Utilities.generateQtToolName("designer")) or \ |
1792 Utilities.generateQtToolName("designer") | 1793 Utilities.generateQtToolName("designer") |
1793 if Utilities.isinpath(designerExe): | 1794 if Utilities.isinpath(designerExe): |
1794 self.designer4Act = E5Action(self.trUtf8('Qt-Designer 4'), | 1795 self.designer4Act = E5Action(self.trUtf8('Qt-Designer 4'), |
1795 UI.PixmapCache.getIcon("designer4.png"), | 1796 UI.PixmapCache.getIcon("designer4.png"), |
1796 self.trUtf8('&Designer 4...'), 0, 0, self, 'qt_designer4') | 1797 self.trUtf8('&Designer 4...'), 0, 0, self, 'qt_designer4') |
1797 self.designer4Act.setStatusTip(self.trUtf8('Start Qt-Designer 4')) | 1798 self.designer4Act.setStatusTip(self.trUtf8('Start Qt-Designer 4')) |
1798 self.designer4Act.setWhatsThis(self.trUtf8( | 1799 self.designer4Act.setWhatsThis(self.trUtf8( |
1799 """<b>Qt-Designer 4</b>""" | 1800 """<b>Qt-Designer 4</b>""" |
1806 | 1807 |
1807 linguistExe = Utilities.isWindowsPlatform() and \ | 1808 linguistExe = Utilities.isWindowsPlatform() and \ |
1808 "{0}.exe".format(Utilities.generateQtToolName("linguist")) or \ | 1809 "{0}.exe".format(Utilities.generateQtToolName("linguist")) or \ |
1809 Utilities.generateQtToolName("linguist") | 1810 Utilities.generateQtToolName("linguist") |
1810 if Utilities.isinpath(linguistExe): | 1811 if Utilities.isinpath(linguistExe): |
1811 self.linguist4Act = E5Action(self.trUtf8('Qt-Linguist 4'), | 1812 self.linguist4Act = E5Action(self.trUtf8('Qt-Linguist 4'), |
1812 UI.PixmapCache.getIcon("linguist4.png"), | 1813 UI.PixmapCache.getIcon("linguist4.png"), |
1813 self.trUtf8('&Linguist 4...'), 0, 0, self, 'qt_linguist4') | 1814 self.trUtf8('&Linguist 4...'), 0, 0, self, 'qt_linguist4') |
1814 self.linguist4Act.setStatusTip(self.trUtf8('Start Qt-Linguist 4')) | 1815 self.linguist4Act.setStatusTip(self.trUtf8('Start Qt-Linguist 4')) |
1815 self.linguist4Act.setWhatsThis(self.trUtf8( | 1816 self.linguist4Act.setWhatsThis(self.trUtf8( |
1816 """<b>Qt-Linguist 4</b>""" | 1817 """<b>Qt-Linguist 4</b>""" |
1819 self.linguist4Act.triggered[()].connect(self.__linguist4) | 1820 self.linguist4Act.triggered[()].connect(self.__linguist4) |
1820 self.actions.append(self.linguist4Act) | 1821 self.actions.append(self.linguist4Act) |
1821 else: | 1822 else: |
1822 self.linguist4Act = None | 1823 self.linguist4Act = None |
1823 | 1824 |
1824 self.uipreviewerAct = E5Action(self.trUtf8('UI Previewer'), | 1825 self.uipreviewerAct = E5Action(self.trUtf8('UI Previewer'), |
1825 UI.PixmapCache.getIcon("uiPreviewer.png"), | 1826 UI.PixmapCache.getIcon("uiPreviewer.png"), |
1826 self.trUtf8('&UI Previewer...'), 0, 0, self, 'ui_previewer') | 1827 self.trUtf8('&UI Previewer...'), 0, 0, self, 'ui_previewer') |
1827 self.uipreviewerAct.setStatusTip(self.trUtf8('Start the UI Previewer')) | 1828 self.uipreviewerAct.setStatusTip(self.trUtf8('Start the UI Previewer')) |
1828 self.uipreviewerAct.setWhatsThis(self.trUtf8( | 1829 self.uipreviewerAct.setWhatsThis(self.trUtf8( |
1829 """<b>UI Previewer</b>""" | 1830 """<b>UI Previewer</b>""" |
1830 """<p>Start the UI Previewer.</p>""" | 1831 """<p>Start the UI Previewer.</p>""" |
1831 )) | 1832 )) |
1832 self.uipreviewerAct.triggered[()].connect(self.__UIPreviewer) | 1833 self.uipreviewerAct.triggered[()].connect(self.__UIPreviewer) |
1833 self.actions.append(self.uipreviewerAct) | 1834 self.actions.append(self.uipreviewerAct) |
1834 | 1835 |
1835 self.trpreviewerAct = E5Action(self.trUtf8('Translations Previewer'), | 1836 self.trpreviewerAct = E5Action(self.trUtf8('Translations Previewer'), |
1836 UI.PixmapCache.getIcon("trPreviewer.png"), | 1837 UI.PixmapCache.getIcon("trPreviewer.png"), |
1837 self.trUtf8('&Translations Previewer...'), 0, 0, self, 'tr_previewer') | 1838 self.trUtf8('&Translations Previewer...'), 0, 0, self, 'tr_previewer') |
1838 self.trpreviewerAct.setStatusTip(self.trUtf8('Start the Translations Previewer')) | 1839 self.trpreviewerAct.setStatusTip(self.trUtf8('Start the Translations Previewer')) |
1839 self.trpreviewerAct.setWhatsThis(self.trUtf8( | 1840 self.trpreviewerAct.setWhatsThis(self.trUtf8( |
1840 """<b>Translations Previewer</b>""" | 1841 """<b>Translations Previewer</b>""" |
1854 self.diffAct.triggered[()].connect(self.__compareFiles) | 1855 self.diffAct.triggered[()].connect(self.__compareFiles) |
1855 self.actions.append(self.diffAct) | 1856 self.actions.append(self.diffAct) |
1856 | 1857 |
1857 self.compareAct = E5Action(self.trUtf8('Compare Files side by side'), | 1858 self.compareAct = E5Action(self.trUtf8('Compare Files side by side'), |
1858 UI.PixmapCache.getIcon("compareFiles.png"), | 1859 UI.PixmapCache.getIcon("compareFiles.png"), |
1859 self.trUtf8('Compare Files &side by side...'), | 1860 self.trUtf8('Compare Files &side by side...'), |
1860 0, 0, self, 'compare_files') | 1861 0, 0, self, 'compare_files') |
1861 self.compareAct.setStatusTip(self.trUtf8('Compare two files')) | 1862 self.compareAct.setStatusTip(self.trUtf8('Compare two files')) |
1862 self.compareAct.setWhatsThis(self.trUtf8( | 1863 self.compareAct.setWhatsThis(self.trUtf8( |
1863 """<b>Compare Files side by side</b>""" | 1864 """<b>Compare Files side by side</b>""" |
1864 """<p>Open a dialog to compare two files and show the result""" | 1865 """<p>Open a dialog to compare two files and show the result""" |
1867 self.compareAct.triggered[()].connect(self.__compareFilesSbs) | 1868 self.compareAct.triggered[()].connect(self.__compareFilesSbs) |
1868 self.actions.append(self.compareAct) | 1869 self.actions.append(self.compareAct) |
1869 | 1870 |
1870 self.sqlBrowserAct = E5Action(self.trUtf8('SQL Browser'), | 1871 self.sqlBrowserAct = E5Action(self.trUtf8('SQL Browser'), |
1871 UI.PixmapCache.getIcon("sqlBrowser.png"), | 1872 UI.PixmapCache.getIcon("sqlBrowser.png"), |
1872 self.trUtf8('SQL &Browser...'), | 1873 self.trUtf8('SQL &Browser...'), |
1873 0, 0, self, 'sql_browser') | 1874 0, 0, self, 'sql_browser') |
1874 self.sqlBrowserAct.setStatusTip(self.trUtf8('Browse a SQL database')) | 1875 self.sqlBrowserAct.setStatusTip(self.trUtf8('Browse a SQL database')) |
1875 self.sqlBrowserAct.setWhatsThis(self.trUtf8( | 1876 self.sqlBrowserAct.setWhatsThis(self.trUtf8( |
1876 """<b>SQL Browser</b>""" | 1877 """<b>SQL Browser</b>""" |
1877 """<p>Browse a SQL database.</p>""" | 1878 """<p>Browse a SQL database.</p>""" |
1879 self.sqlBrowserAct.triggered[()].connect(self.__sqlBrowser) | 1880 self.sqlBrowserAct.triggered[()].connect(self.__sqlBrowser) |
1880 self.actions.append(self.sqlBrowserAct) | 1881 self.actions.append(self.sqlBrowserAct) |
1881 | 1882 |
1882 self.miniEditorAct = E5Action(self.trUtf8('Mini Editor'), | 1883 self.miniEditorAct = E5Action(self.trUtf8('Mini Editor'), |
1883 UI.PixmapCache.getIcon("editor.png"), | 1884 UI.PixmapCache.getIcon("editor.png"), |
1884 self.trUtf8('Mini &Editor...'), | 1885 self.trUtf8('Mini &Editor...'), |
1885 0, 0, self, 'mini_editor') | 1886 0, 0, self, 'mini_editor') |
1886 self.miniEditorAct.setStatusTip(self.trUtf8('Mini Editor')) | 1887 self.miniEditorAct.setStatusTip(self.trUtf8('Mini Editor')) |
1887 self.miniEditorAct.setWhatsThis(self.trUtf8( | 1888 self.miniEditorAct.setWhatsThis(self.trUtf8( |
1888 """<b>Mini Editor</b>""" | 1889 """<b>Mini Editor</b>""" |
1889 """<p>Open a dialog with a simplified editor.</p>""" | 1890 """<p>Open a dialog with a simplified editor.</p>""" |
1891 self.miniEditorAct.triggered[()].connect(self.__openMiniEditor) | 1892 self.miniEditorAct.triggered[()].connect(self.__openMiniEditor) |
1892 self.actions.append(self.miniEditorAct) | 1893 self.actions.append(self.miniEditorAct) |
1893 | 1894 |
1894 self.webBrowserAct = E5Action(self.trUtf8('Web Browser'), | 1895 self.webBrowserAct = E5Action(self.trUtf8('Web Browser'), |
1895 UI.PixmapCache.getIcon("ericWeb.png"), | 1896 UI.PixmapCache.getIcon("ericWeb.png"), |
1896 self.trUtf8('&Web Browser...'), | 1897 self.trUtf8('&Web Browser...'), |
1897 0, 0, self, 'web_browser') | 1898 0, 0, self, 'web_browser') |
1898 self.webBrowserAct.setStatusTip(self.trUtf8('Start the eric5 Web Browser')) | 1899 self.webBrowserAct.setStatusTip(self.trUtf8('Start the eric5 Web Browser')) |
1899 self.webBrowserAct.setWhatsThis(self.trUtf8( | 1900 self.webBrowserAct.setWhatsThis(self.trUtf8( |
1900 """<b>Web Browser</b>""" | 1901 """<b>Web Browser</b>""" |
1901 """<p>Browse the Internet with the eric5 Web Browser.</p>""" | 1902 """<p>Browse the Internet with the eric5 Web Browser.</p>""" |
1903 self.webBrowserAct.triggered[()].connect(self.__startWebBrowser) | 1904 self.webBrowserAct.triggered[()].connect(self.__startWebBrowser) |
1904 self.actions.append(self.webBrowserAct) | 1905 self.actions.append(self.webBrowserAct) |
1905 | 1906 |
1906 self.iconEditorAct = E5Action(self.trUtf8('Icon Editor'), | 1907 self.iconEditorAct = E5Action(self.trUtf8('Icon Editor'), |
1907 UI.PixmapCache.getIcon("iconEditor.png"), | 1908 UI.PixmapCache.getIcon("iconEditor.png"), |
1908 self.trUtf8('&Icon Editor...'), | 1909 self.trUtf8('&Icon Editor...'), |
1909 0, 0, self, 'icon_editor') | 1910 0, 0, self, 'icon_editor') |
1910 self.iconEditorAct.setStatusTip(self.trUtf8('Start the eric5 Icon Editor')) | 1911 self.iconEditorAct.setStatusTip(self.trUtf8('Start the eric5 Icon Editor')) |
1911 self.iconEditorAct.setWhatsThis(self.trUtf8( | 1912 self.iconEditorAct.setWhatsThis(self.trUtf8( |
1912 """<b>Icon Editor</b>""" | 1913 """<b>Icon Editor</b>""" |
1913 """<p>Starts the eric5 Icon Editor for editing simple icons.</p>""" | 1914 """<p>Starts the eric5 Icon Editor for editing simple icons.</p>""" |
2036 | 2037 |
2037 self.viewmanagerActivateAct = E5Action(self.trUtf8('Activate current editor'), | 2038 self.viewmanagerActivateAct = E5Action(self.trUtf8('Activate current editor'), |
2038 self.trUtf8('Activate current editor'), | 2039 self.trUtf8('Activate current editor'), |
2039 QKeySequence(self.trUtf8("Alt+Shift+E")), | 2040 QKeySequence(self.trUtf8("Alt+Shift+E")), |
2040 0, self, | 2041 0, self, |
2041 'viewmanager_activate',1) | 2042 'viewmanager_activate', 1) |
2042 self.viewmanagerActivateAct.triggered[()].connect(self.__activateViewmanager) | 2043 self.viewmanagerActivateAct.triggered[()].connect(self.__activateViewmanager) |
2043 self.actions.append(self.viewmanagerActivateAct) | 2044 self.actions.append(self.viewmanagerActivateAct) |
2044 self.addAction(self.viewmanagerActivateAct) | 2045 self.addAction(self.viewmanagerActivateAct) |
2045 | 2046 |
2046 self.nextTabAct = E5Action(self.trUtf8('Show next'), | 2047 self.nextTabAct = E5Action(self.trUtf8('Show next'), |
2047 self.trUtf8('Show next'), | 2048 self.trUtf8('Show next'), |
2048 QKeySequence(self.trUtf8('Ctrl+Alt+Tab')), 0, | 2049 QKeySequence(self.trUtf8('Ctrl+Alt+Tab')), 0, |
2049 self, 'view_next_tab') | 2050 self, 'view_next_tab') |
2050 self.nextTabAct.triggered[()].connect(self.__showNext) | 2051 self.nextTabAct.triggered[()].connect(self.__showNext) |
2051 self.actions.append(self.nextTabAct) | 2052 self.actions.append(self.nextTabAct) |
2052 self.addAction(self.nextTabAct) | 2053 self.addAction(self.nextTabAct) |
2053 | 2054 |
2054 self.prevTabAct = E5Action(self.trUtf8('Show previous'), | 2055 self.prevTabAct = E5Action(self.trUtf8('Show previous'), |
2055 self.trUtf8('Show previous'), | 2056 self.trUtf8('Show previous'), |
2056 QKeySequence(self.trUtf8('Shift+Ctrl+Alt+Tab')), 0, | 2057 QKeySequence(self.trUtf8('Shift+Ctrl+Alt+Tab')), 0, |
2057 self, 'view_previous_tab') | 2058 self, 'view_previous_tab') |
2058 self.prevTabAct.triggered[()].connect(self.__showPrevious) | 2059 self.prevTabAct.triggered[()].connect(self.__showPrevious) |
2059 self.actions.append(self.prevTabAct) | 2060 self.actions.append(self.prevTabAct) |
2060 self.addAction(self.prevTabAct) | 2061 self.addAction(self.prevTabAct) |
2061 | 2062 |
2062 self.switchTabAct = E5Action(self.trUtf8('Switch between tabs'), | 2063 self.switchTabAct = E5Action(self.trUtf8('Switch between tabs'), |
2063 self.trUtf8('Switch between tabs'), | 2064 self.trUtf8('Switch between tabs'), |
2064 QKeySequence(self.trUtf8('Ctrl+1')), 0, | 2065 QKeySequence(self.trUtf8('Ctrl+1')), 0, |
2065 self, 'switch_tabs') | 2066 self, 'switch_tabs') |
2066 self.switchTabAct.triggered[()].connect(self.__switchTab) | 2067 self.switchTabAct.triggered[()].connect(self.__switchTab) |
2067 self.actions.append(self.switchTabAct) | 2068 self.actions.append(self.switchTabAct) |
2068 self.addAction(self.switchTabAct) | 2069 self.addAction(self.switchTabAct) |
2313 QMenu(self.trUtf8("&Toolbars"), self.__menus["window"]) | 2314 QMenu(self.trUtf8("&Toolbars"), self.__menus["window"]) |
2314 self.__menus["toolbars"].setTearOffEnabled(True) | 2315 self.__menus["toolbars"].setTearOffEnabled(True) |
2315 self.__menus["toolbars"].aboutToShow.connect(self.__showToolbarsMenu) | 2316 self.__menus["toolbars"].aboutToShow.connect(self.__showToolbarsMenu) |
2316 self.__menus["toolbars"].triggered.connect(self.__TBMenuTriggered) | 2317 self.__menus["toolbars"].triggered.connect(self.__TBMenuTriggered) |
2317 | 2318 |
2318 self.__showWindowMenu() # to initialize these actions | 2319 self.__showWindowMenu() # to initialize these actions |
2319 | 2320 |
2320 self.__menus["bookmarks"] = self.viewmanager.initBookmarkMenu() | 2321 self.__menus["bookmarks"] = self.viewmanager.initBookmarkMenu() |
2321 mb.addMenu(self.__menus["bookmarks"]) | 2322 mb.addMenu(self.__menus["bookmarks"]) |
2322 self.__menus["bookmarks"].setTearOffEnabled(True) | 2323 self.__menus["bookmarks"].setTearOffEnabled(True) |
2323 | 2324 |
2589 self.sbPos.setWhatsThis(self.trUtf8( | 2590 self.sbPos.setWhatsThis(self.trUtf8( |
2590 """<p>This part of the status bar displays the cursor position of""" | 2591 """<p>This part of the status bar displays the cursor position of""" |
2591 """ the current editor.</p>""" | 2592 """ the current editor.</p>""" |
2592 )) | 2593 )) |
2593 | 2594 |
2594 self.viewmanager.setSbInfo(self.sbFile, self.sbLine, self.sbPos, | 2595 self.viewmanager.setSbInfo(self.sbFile, self.sbLine, self.sbPos, |
2595 self.sbWritable, self.sbEncoding, self.sbLanguage, | 2596 self.sbWritable, self.sbEncoding, self.sbLanguage, |
2596 self.sbEol) | 2597 self.sbEol) |
2597 | 2598 |
2598 self.sbVcsMonitorLed = StatusMonitorLed(self.project, self.__statusBar) | 2599 self.sbVcsMonitorLed = StatusMonitorLed(self.project, self.__statusBar) |
2599 self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed) | 2600 self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed) |
2600 | 2601 |
2605 self.toolGroupActions = {} | 2606 self.toolGroupActions = {} |
2606 for toolGroup in self.toolGroups: | 2607 for toolGroup in self.toolGroups: |
2607 category = self.trUtf8("External Tools/{0}").format(toolGroup[0]) | 2608 category = self.trUtf8("External Tools/{0}").format(toolGroup[0]) |
2608 for tool in toolGroup[1]: | 2609 for tool in toolGroup[1]: |
2609 if tool['menutext'] != '--': | 2610 if tool['menutext'] != '--': |
2610 act = QAction(UI.PixmapCache.getIcon(tool['icon']), tool['menutext'], | 2611 act = QAction(UI.PixmapCache.getIcon(tool['icon']), tool['menutext'], |
2611 self) | 2612 self) |
2612 act.setObjectName("{0}@@{1}".format(toolGroup[0], | 2613 act.setObjectName("{0}@@{1}".format(toolGroup[0], |
2613 tool['menutext'])) | 2614 tool['menutext'])) |
2614 act.triggered[()].connect(self.__toolActionTriggered) | 2615 act.triggered[()].connect(self.__toolActionTriggered) |
2615 self.toolGroupActions[act.objectName()] = act | 2616 self.toolGroupActions[act.objectName()] = act |
2616 | 2617 |
2617 self.toolbarManager.addAction(act, category) | 2618 self.toolbarManager.addAction(act, category) |
2646 category = self.trUtf8("External Tools/{0}").format(toolGroup[0]) | 2647 category = self.trUtf8("External Tools/{0}").format(toolGroup[0]) |
2647 for tool in toolGroup[1]: | 2648 for tool in toolGroup[1]: |
2648 if tool['menutext'] != '--': | 2649 if tool['menutext'] != '--': |
2649 key = "{0}@@{1}".format(toolGroup[0], tool['menutext']) | 2650 key = "{0}@@{1}".format(toolGroup[0], tool['menutext']) |
2650 if key not in groupActionKeys: | 2651 if key not in groupActionKeys: |
2651 act = QAction(UI.PixmapCache.getIcon(tool['icon']), tool['menutext'], | 2652 act = QAction(UI.PixmapCache.getIcon(tool['icon']), tool['menutext'], |
2652 self) | 2653 self) |
2653 act.setObjectName(key) | 2654 act.setObjectName(key) |
2654 act.triggered[()].connect(self.__toolActionTriggered) | 2655 act.triggered[()].connect(self.__toolActionTriggered) |
2655 self.toolGroupActions[key] = act | 2656 self.toolGroupActions[key] = act |
2656 | 2657 |
2764 """ | 2765 """ |
2765 Private slot to handle the Feature Request dialog. | 2766 Private slot to handle the Feature Request dialog. |
2766 """ | 2767 """ |
2767 self.__showEmailDialog("feature") | 2768 self.__showEmailDialog("feature") |
2768 | 2769 |
2769 def __showEmailDialog(self, mode, attachFile = None, deleteAttachFile = False): | 2770 def __showEmailDialog(self, mode, attachFile=None, deleteAttachFile=False): |
2770 """ | 2771 """ |
2771 Private slot to show the email dialog in a given mode. | 2772 Private slot to show the email dialog in a given mode. |
2772 | 2773 |
2773 @param mode mode of the email dialog (string, "bug" or "feature") | 2774 @param mode mode of the email dialog (string, "bug" or "feature") |
2774 @param attachFile name of a file to attach to the email (string) | 2775 @param attachFile name of a file to attach to the email (string) |
2780 else: | 2781 else: |
2781 if Preferences.getUser("Email") == "" or \ | 2782 if Preferences.getUser("Email") == "" or \ |
2782 Preferences.getUser("MailServer") == "": | 2783 Preferences.getUser("MailServer") == "": |
2783 E5MessageBox.critical(self, | 2784 E5MessageBox.critical(self, |
2784 self.trUtf8("Report Bug"), | 2785 self.trUtf8("Report Bug"), |
2785 self.trUtf8("""Email address or mail server address is empty.""" | 2786 self.trUtf8("""Email address or mail server address is empty.""" |
2786 """ Please configure your Email settings in the""" | 2787 """ Please configure your Email settings in the""" |
2787 """ Preferences Dialog.""")) | 2788 """ Preferences Dialog.""")) |
2788 self.showPreferences("emailPage") | 2789 self.showPreferences("emailPage") |
2789 return | 2790 return |
2790 | 2791 |
2791 self.dlg = EmailDialog(mode = mode) | 2792 self.dlg = EmailDialog(mode=mode) |
2792 if attachFile is not None: | 2793 if attachFile is not None: |
2793 self.dlg.attachFile(attachFile, deleteAttachFile) | 2794 self.dlg.attachFile(attachFile, deleteAttachFile) |
2794 self.dlg.show() | 2795 self.dlg.show() |
2795 | 2796 |
2796 def __showSystemEmailClient(self, mode, attachFile = None, deleteAttachFile = False): | 2797 def __showSystemEmailClient(self, mode, attachFile=None, deleteAttachFile=False): |
2797 """ | 2798 """ |
2798 Private slot to show the system email dialog. | 2799 Private slot to show the system email dialog. |
2799 | 2800 |
2800 @param mode mode of the email dialog (string, "bug" or "feature") | 2801 @param mode mode of the email dialog (string, "bug" or "feature") |
2801 @param attachFile name of a file to put into the body of the | 2802 @param attachFile name of a file to put into the body of the |
2802 email (string) | 2803 email (string) |
2803 @param deleteAttachFile flag indicating to delete the file after | 2804 @param deleteAttachFile flag indicating to delete the file after |
2804 it has been read (boolean) | 2805 it has been read (boolean) |
2805 """ | 2806 """ |
2806 if mode == "feature": | 2807 if mode == "feature": |
2807 address = FeatureAddress | 2808 address = FeatureAddress |
2808 else: | 2809 else: |
2809 address = BugAddress | 2810 address = BugAddress |
2810 subject = "[eric5] " | 2811 subject = "[eric5] " |
2811 if attachFile is not None: | 2812 if attachFile is not None: |
2812 f = open(attachFile, "r", encoding = "utf-8") | 2813 f = open(attachFile, "r", encoding="utf-8") |
2813 body = f.read() | 2814 body = f.read() |
2814 f.close() | 2815 f.close() |
2815 if deleteAttachFile: | 2816 if deleteAttachFile: |
2816 os.remove(attachFile) | 2817 os.remove(attachFile) |
2817 else: | 2818 else: |
2818 body = "\r\n----\r\n{0}----\r\n{1}----\r\n{2}".format( | 2819 body = "\r\n----\r\n{0}----\r\n{1}----\r\n{2}".format( |
2819 Utilities.generateVersionInfo("\r\n"), | 2820 Utilities.generateVersionInfo("\r\n"), |
2820 Utilities.generatePluginsVersionInfo("\r\n"), | 2821 Utilities.generatePluginsVersionInfo("\r\n"), |
2821 Utilities.generateDistroInfo("\r\n")) | 2822 Utilities.generateDistroInfo("\r\n")) |
2822 | 2823 |
2823 url = QUrl("mailto:{0}".format(address)) | 2824 url = QUrl("mailto:{0}".format(address)) |
2824 url.addQueryItem("subject", subject) | 2825 url.addQueryItem("subject", subject) |
2825 url.addQueryItem("body", body) | 2826 url.addQueryItem("body", body) |
2831 what to do with it. | 2832 what to do with it. |
2832 """ | 2833 """ |
2833 if Preferences.getUI("CheckErrorLog"): | 2834 if Preferences.getUI("CheckErrorLog"): |
2834 logFile = os.path.join(Utilities.getConfigDir(), "eric5_error.log") | 2835 logFile = os.path.join(Utilities.getConfigDir(), "eric5_error.log") |
2835 if os.path.exists(logFile): | 2836 if os.path.exists(logFile): |
2836 dlg = E5MessageBox.E5MessageBox(E5MessageBox.Question, | 2837 dlg = E5MessageBox.E5MessageBox(E5MessageBox.Question, |
2837 self.trUtf8("Error log found"), | 2838 self.trUtf8("Error log found"), |
2838 self.trUtf8("An error log file was found. " | 2839 self.trUtf8("An error log file was found. " |
2839 "What should be done with it?"), | 2840 "What should be done with it?"), |
2840 modal = True, parent = self) | 2841 modal=True, parent=self) |
2841 try: | 2842 try: |
2842 f = open(logFile, "r", encoding = "utf-8") | 2843 f = open(logFile, "r", encoding="utf-8") |
2843 txt = f.read() | 2844 txt = f.read() |
2844 f.close() | 2845 f.close() |
2845 dlg.setDetailedText(txt) | 2846 dlg.setDetailedText(txt) |
2846 except IOError: | 2847 except IOError: |
2847 pass | 2848 pass |
2848 emailButton = \ | 2849 emailButton = \ |
2849 dlg.addButton(self.trUtf8("Send Bug Email"), | 2850 dlg.addButton(self.trUtf8("Send Bug Email"), |
2850 E5MessageBox.AcceptRole) | 2851 E5MessageBox.AcceptRole) |
2851 deleteButton = \ | 2852 deleteButton = \ |
2852 dlg.addButton(self.trUtf8("Ignore and Delete"), | 2853 dlg.addButton(self.trUtf8("Ignore and Delete"), |
2853 E5MessageBox.AcceptRole) | 2854 E5MessageBox.AcceptRole) |
2854 keepButton = \ | 2855 keepButton = \ |
2855 dlg.addButton(self.trUtf8("Ignore but Keep"), | 2856 dlg.addButton(self.trUtf8("Ignore but Keep"), |
2856 E5MessageBox.AcceptRole) | 2857 E5MessageBox.AcceptRole) |
2857 dlg.setDefaultButton(emailButton) | 2858 dlg.setDefaultButton(emailButton) |
2858 dlg.setEscapeButton(keepButton) | 2859 dlg.setEscapeButton(keepButton) |
2859 dlg.exec_() | 2860 dlg.exec_() |
2860 btn = dlg.clickedButton() | 2861 btn = dlg.clickedButton() |
2861 if btn == emailButton: | 2862 if btn == emailButton: |
2862 # start email dialog | 2863 # start email dialog |
2863 self.__showEmailDialog("bug", | 2864 self.__showEmailDialog("bug", |
2864 attachFile = logFile, deleteAttachFile = True) | 2865 attachFile=logFile, deleteAttachFile=True) |
2865 elif btn == deleteButton: | 2866 elif btn == deleteButton: |
2866 # delete the error log | 2867 # delete the error log |
2867 os.remove(logFile) | 2868 os.remove(logFile) |
2868 elif btn == keepButton: | 2869 elif btn == keepButton: |
2869 # keep the error log | 2870 # keep the error log |
2887 | 2888 |
2888 def __openMiniEditor(self): | 2889 def __openMiniEditor(self): |
2889 """ | 2890 """ |
2890 Private slot to show a mini editor window. | 2891 Private slot to show a mini editor window. |
2891 """ | 2892 """ |
2892 editor = MiniEditor(parent = self) | 2893 editor = MiniEditor(parent=self) |
2893 editor.show() | 2894 editor.show() |
2894 | 2895 |
2895 def addE5Actions(self, actions, type): | 2896 def addE5Actions(self, actions, type): |
2896 """ | 2897 """ |
2897 Public method to add actions to the list of actions. | 2898 Public method to add actions to the list of actions. |
2903 if type == 'ui': | 2904 if type == 'ui': |
2904 self.actions.extend(actions) | 2905 self.actions.extend(actions) |
2905 elif type == 'wizards': | 2906 elif type == 'wizards': |
2906 self.wizardsActions.extend(actions) | 2907 self.wizardsActions.extend(actions) |
2907 | 2908 |
2908 def removeE5Actions(self, actions, type = 'ui'): | 2909 def removeE5Actions(self, actions, type='ui'): |
2909 """ | 2910 """ |
2910 Public method to remove actions from the list of actions. | 2911 Public method to remove actions from the list of actions. |
2911 | 2912 |
2912 @param type string denoting the action set to get. | 2913 @param type string denoting the action set to get. |
2913 It must be one of "ui" or "wizards". | 2914 It must be one of "ui" or "wizards". |
2940 def getMenuAction(self, menuName, actionName): | 2941 def getMenuAction(self, menuName, actionName): |
2941 """ | 2942 """ |
2942 Public method to get a reference to an action of a menu. | 2943 Public method to get a reference to an action of a menu. |
2943 | 2944 |
2944 @param menuName name of the menu to search in (string) | 2945 @param menuName name of the menu to search in (string) |
2945 @param actionName object name of the action to search for | 2946 @param actionName object name of the action to search for |
2946 (string) | 2947 (string) |
2947 """ | 2948 """ |
2948 try: | 2949 try: |
2949 menu = self.__menus[menuName] | 2950 menu = self.__menus[menuName] |
2950 except KeyError: | 2951 except KeyError: |
3051 Private method to restart the application. | 3052 Private method to restart the application. |
3052 """ | 3053 """ |
3053 res = E5MessageBox.yesNo(self, | 3054 res = E5MessageBox.yesNo(self, |
3054 self.trUtf8("Restart application"), | 3055 self.trUtf8("Restart application"), |
3055 self.trUtf8("""The application needs to be restarted. Do it now?"""), | 3056 self.trUtf8("""The application needs to be restarted. Do it now?"""), |
3056 yesDefault = True) | 3057 yesDefault=True) |
3057 | 3058 |
3058 if res and self.__shutdown(): | 3059 if res and self.__shutdown(): |
3059 e5App().closeAllWindows() | 3060 e5App().closeAllWindows() |
3060 program = sys.executable | 3061 program = sys.executable |
3061 eric5 = os.path.join(getConfig("ericDir"), "eric5.py") | 3062 eric5 = os.path.join(getConfig("ericDir"), "eric5.py") |
3073 self.__menus["tools"].addMenu(self.toolGroupsMenu) | 3074 self.__menus["tools"].addMenu(self.toolGroupsMenu) |
3074 act = self.__menus["tools"].addAction(self.trUtf8("Configure Tool Groups ..."), | 3075 act = self.__menus["tools"].addAction(self.trUtf8("Configure Tool Groups ..."), |
3075 self.__toolGroupsConfiguration) | 3076 self.__toolGroupsConfiguration) |
3076 act.setData(-1) | 3077 act.setData(-1) |
3077 act = self.__menus["tools"].addAction( | 3078 act = self.__menus["tools"].addAction( |
3078 self.trUtf8("Configure current Tool Group ..."), | 3079 self.trUtf8("Configure current Tool Group ..."), |
3079 self.__toolsConfiguration) | 3080 self.__toolsConfiguration) |
3080 act.setData(-2) | 3081 act.setData(-2) |
3081 self.__menus["tools"].addSeparator() | 3082 self.__menus["tools"].addSeparator() |
3082 | 3083 |
3083 if self.currentToolGroup == -1: | 3084 if self.currentToolGroup == -1: |
3353 elif self.layout == "Sidebars": | 3354 elif self.layout == "Sidebars": |
3354 self.profiles[self.currentProfile][5][0] = self.leftSidebar.isVisible() | 3355 self.profiles[self.currentProfile][5][0] = self.leftSidebar.isVisible() |
3355 self.profiles[self.currentProfile][5][1] = self.bottomSidebar.isVisible() | 3356 self.profiles[self.currentProfile][5][1] = self.bottomSidebar.isVisible() |
3356 Preferences.setUI("ViewProfiles", self.profiles) | 3357 Preferences.setUI("ViewProfiles", self.profiles) |
3357 | 3358 |
3358 def __activateViewProfile(self, name, save = True): | 3359 def __activateViewProfile(self, name, save=True): |
3359 """ | 3360 """ |
3360 Private slot to activate a view profile. | 3361 Private slot to activate a view profile. |
3361 | 3362 |
3362 @param name name of the profile to be activated (string) | 3363 @param name name of the profile to be activated (string) |
3363 @param save flag indicating that the current profile should | 3364 @param save flag indicating that the current profile should |
3423 if self.__menus["toolbars"].isTearOffMenuVisible(): | 3424 if self.__menus["toolbars"].isTearOffMenuVisible(): |
3424 self.__showToolbarsMenu() | 3425 self.__showToolbarsMenu() |
3425 if self.__menus["window"].isTearOffMenuVisible(): | 3426 if self.__menus["window"].isTearOffMenuVisible(): |
3426 self.__showWindowMenu() | 3427 self.__showWindowMenu() |
3427 | 3428 |
3428 def __setEditProfile(self, save = True): | 3429 def __setEditProfile(self, save=True): |
3429 """ | 3430 """ |
3430 Private slot to activate the edit view profile. | 3431 Private slot to activate the edit view profile. |
3431 | 3432 |
3432 @param save flag indicating that the current profile should | 3433 @param save flag indicating that the current profile should |
3433 be saved (boolean) | 3434 be saved (boolean) |
3445 self.hToolbox.setCurrentWidget(self.shell) | 3446 self.hToolbox.setCurrentWidget(self.shell) |
3446 elif self.layout == "Sidebars": | 3447 elif self.layout == "Sidebars": |
3447 if not self.embeddedShell: | 3448 if not self.embeddedShell: |
3448 self.bottomSidebar.setCurrentWidget(self.shell) | 3449 self.bottomSidebar.setCurrentWidget(self.shell) |
3449 | 3450 |
3450 def setDebugProfile(self, save = True): | 3451 def setDebugProfile(self, save=True): |
3451 """ | 3452 """ |
3452 Public slot to activate the debug view profile. | 3453 Public slot to activate the debug view profile. |
3453 | 3454 |
3454 @param save flag indicating that the current profile should | 3455 @param save flag indicating that the current profile should |
3455 be saved (boolean) | 3456 be saved (boolean) |
3754 elif self.layout == "Sidebars": | 3755 elif self.layout == "Sidebars": |
3755 self.leftSidebar.show() | 3756 self.leftSidebar.show() |
3756 self.leftSidebar.setCurrentWidget(self.browser) | 3757 self.leftSidebar.setCurrentWidget(self.browser) |
3757 else: | 3758 else: |
3758 self.browser.show() | 3759 self.browser.show() |
3759 elif self.embeddedFileBrowser == 1: # embedded in debug browser | 3760 elif self.embeddedFileBrowser == 1: # embedded in debug browser |
3760 if self.layout in ["DockWindows", "Toolboxes", "Sidebars"]: | 3761 if self.layout in ["DockWindows", "Toolboxes", "Sidebars"]: |
3761 self.debugViewerDock.show() | 3762 self.debugViewerDock.show() |
3762 self.debugViewerDock.raise_() | 3763 self.debugViewerDock.raise_() |
3763 else: | 3764 else: |
3764 self.debugViewer.show() | 3765 self.debugViewer.show() |
3960 Private slot for displaying the unittest dialog. | 3961 Private slot for displaying the unittest dialog. |
3961 """ | 3962 """ |
3962 self.unittestDialog.show() | 3963 self.unittestDialog.show() |
3963 self.unittestDialog.raise_() | 3964 self.unittestDialog.raise_() |
3964 | 3965 |
3965 def __unittestScript(self, prog = None): | 3966 def __unittestScript(self, prog=None): |
3966 """ | 3967 """ |
3967 Private slot for displaying the unittest dialog and run the current script. | 3968 Private slot for displaying the unittest dialog and run the current script. |
3968 | 3969 |
3969 @param prog the python program to be opened | 3970 @param prog the python program to be opened |
3970 """ | 3971 """ |
4011 """ | 4012 """ |
4012 self.unittestDialog.show() | 4013 self.unittestDialog.show() |
4013 self.unittestDialog.raise_() | 4014 self.unittestDialog.raise_() |
4014 self.unittestDialog.on_startButton_clicked() | 4015 self.unittestDialog.on_startButton_clicked() |
4015 | 4016 |
4016 def __designer(self, fn = None, version = 0): | 4017 def __designer(self, fn=None, version=0): |
4017 """ | 4018 """ |
4018 Private slot to start the Qt-Designer executable. | 4019 Private slot to start the Qt-Designer executable. |
4019 | 4020 |
4020 @param fn filename of the form to be opened | 4021 @param fn filename of the form to be opened |
4021 @param version indication for the requested version (Qt 4) (integer) | 4022 @param version indication for the requested version (Qt 4) (integer) |
4022 """ | 4023 """ |
4023 if fn is not None and version == 0: | 4024 if fn is not None and version == 0: |
4024 # determine version from file, if not specified | 4025 # determine version from file, if not specified |
4025 try: | 4026 try: |
4026 f = open(fn, "r", encoding = "utf-8") | 4027 f = open(fn, "r", encoding="utf-8") |
4027 found = False | 4028 found = False |
4028 while not found: | 4029 while not found: |
4029 uiLine = f.readline() | 4030 uiLine = f.readline() |
4030 found = uiLine.lower().startswith("<ui ") | 4031 found = uiLine.lower().startswith("<ui ") |
4031 f.close() | 4032 f.close() |
4085 | 4086 |
4086 def __designer4(self): | 4087 def __designer4(self): |
4087 """ | 4088 """ |
4088 Private slot to start the Qt-Designer 4 executable. | 4089 Private slot to start the Qt-Designer 4 executable. |
4089 """ | 4090 """ |
4090 self.__designer(version = 4) | 4091 self.__designer(version=4) |
4091 | 4092 |
4092 def __linguist(self, fn = None, version = 0): | 4093 def __linguist(self, fn=None, version=0): |
4093 """ | 4094 """ |
4094 Private slot to start the Qt-Linguist executable. | 4095 Private slot to start the Qt-Linguist executable. |
4095 | 4096 |
4096 @param fn filename of the translation file to be opened | 4097 @param fn filename of the translation file to be opened |
4097 @param version indication for the requested version (Qt 4) (integer) | 4098 @param version indication for the requested version (Qt 4) (integer) |
4138 self.trUtf8( | 4139 self.trUtf8( |
4139 '<p>Could not start Qt-Linguist.<br>' | 4140 '<p>Could not start Qt-Linguist.<br>' |
4140 'Ensure that it is available as <b>{0}</b>.</p>' | 4141 'Ensure that it is available as <b>{0}</b>.</p>' |
4141 ).format(linguist)) | 4142 ).format(linguist)) |
4142 | 4143 |
4143 def __linguist4(self, fn = None): | 4144 def __linguist4(self, fn=None): |
4144 """ | 4145 """ |
4145 Private slot to start the Qt-Linguist 4 executable. | 4146 Private slot to start the Qt-Linguist 4 executable. |
4146 | 4147 |
4147 @param fn filename of the translation file to be opened | 4148 @param fn filename of the translation file to be opened |
4148 """ | 4149 """ |
4149 self.__linguist(fn, version = 4) | 4150 self.__linguist(fn, version=4) |
4150 | 4151 |
4151 def __assistant(self, home = None, version = 0): | 4152 def __assistant(self, home=None, version=0): |
4152 """ | 4153 """ |
4153 Private slot to start the Qt-Assistant executable. | 4154 Private slot to start the Qt-Assistant executable. |
4154 | 4155 |
4155 @param home full pathname of a file to display (string) | 4156 @param home full pathname of a file to display (string) |
4156 @param version indication for the requested version (Qt 4) (integer) | 4157 @param version indication for the requested version (Qt 4) (integer) |
4186 | 4187 |
4187 def __assistant4(self): | 4188 def __assistant4(self): |
4188 """ | 4189 """ |
4189 Private slot to start the Qt-Assistant 4 executable. | 4190 Private slot to start the Qt-Assistant 4 executable. |
4190 """ | 4191 """ |
4191 self.__assistant(version = 4) | 4192 self.__assistant(version=4) |
4192 | 4193 |
4193 def __startWebBrowser(self, home = ""): | 4194 def __startWebBrowser(self, home=""): |
4194 """ | 4195 """ |
4195 Private slot to start the eric5 web browser. | 4196 Private slot to start the eric5 web browser. |
4196 | 4197 |
4197 @param home full pathname of a file to display (string) | 4198 @param home full pathname of a file to display (string) |
4198 """ | 4199 """ |
4199 self.launchHelpViewer(home) | 4200 self.launchHelpViewer(home) |
4200 | 4201 |
4201 def __customViewer(self, home = None): | 4202 def __customViewer(self, home=None): |
4202 """ | 4203 """ |
4203 Private slot to start a custom viewer. | 4204 Private slot to start a custom viewer. |
4204 | 4205 |
4205 @param home full pathname of a file to display (string) | 4206 @param home full pathname of a file to display (string) |
4206 """ | 4207 """ |
4242 self.trUtf8( | 4243 self.trUtf8( |
4243 '<p>Could not start the help viewer.<br>' | 4244 '<p>Could not start the help viewer.<br>' |
4244 'Ensure that it is available as <b>hh</b>.</p>' | 4245 'Ensure that it is available as <b>hh</b>.</p>' |
4245 )) | 4246 )) |
4246 | 4247 |
4247 def __UIPreviewer(self,fn=None): | 4248 def __UIPreviewer(self, fn=None): |
4248 """ | 4249 """ |
4249 Private slot to start the UI Previewer executable. | 4250 Private slot to start the UI Previewer executable. |
4250 | 4251 |
4251 @param fn filename of the form to be previewed (string) | 4252 @param fn filename of the form to be previewed (string) |
4252 """ | 4253 """ |
4282 self.trUtf8( | 4283 self.trUtf8( |
4283 '<p>Could not start UI Previewer.<br>' | 4284 '<p>Could not start UI Previewer.<br>' |
4284 'Ensure that it is available as <b>{0}</b>.</p>' | 4285 'Ensure that it is available as <b>{0}</b>.</p>' |
4285 ).format(viewer)) | 4286 ).format(viewer)) |
4286 | 4287 |
4287 def __TRPreviewer(self, fileNames = None, ignore = False): | 4288 def __TRPreviewer(self, fileNames=None, ignore=False): |
4288 """ | 4289 """ |
4289 Private slot to start the Translation Previewer executable. | 4290 Private slot to start the Translation Previewer executable. |
4290 | 4291 |
4291 @param fileNames filenames of forms and/or translations to be previewed | 4292 @param fileNames filenames of forms and/or translations to be previewed |
4292 (list of strings) | 4293 (list of strings) |
4346 self.trUtf8( | 4347 self.trUtf8( |
4347 '<p>Could not start SQL Browser.<br>' | 4348 '<p>Could not start SQL Browser.<br>' |
4348 'Ensure that it is available as <b>{0}</b>.</p>' | 4349 'Ensure that it is available as <b>{0}</b>.</p>' |
4349 ).format(browser)) | 4350 ).format(browser)) |
4350 | 4351 |
4351 def __editPixmap(self, fn = ""): | 4352 def __editPixmap(self, fn=""): |
4352 """ | 4353 """ |
4353 Private slot to show a pixmap in a dialog. | 4354 Private slot to show a pixmap in a dialog. |
4354 | 4355 |
4355 @param fn filename of the file to show (string) | 4356 @param fn filename of the file to show (string) |
4356 """ | 4357 """ |
4357 dlg = IconEditorWindow(fn, self, fromEric = True) | 4358 dlg = IconEditorWindow(fn, self, fromEric=True) |
4358 dlg.show() | 4359 dlg.show() |
4359 | 4360 |
4360 def __showPixmap(self, fn): | 4361 def __showPixmap(self, fn): |
4361 """ | 4362 """ |
4362 Private slot to show a pixmap in a dialog. | 4363 Private slot to show a pixmap in a dialog. |
4469 # loop through all running tool processes | 4470 # loop through all running tool processes |
4470 for program, toolProc, toolProcData in self.toolProcs: | 4471 for program, toolProc, toolProcData in self.toolProcs: |
4471 toolProc.setReadChannel(QProcess.StandardOutput) | 4472 toolProc.setReadChannel(QProcess.StandardOutput) |
4472 | 4473 |
4473 if toolProcData[0] is None or \ | 4474 if toolProcData[0] is None or \ |
4474 toolProcData[1] not in ["insert", "replaceSelection"]: | 4475 toolProcData[1] not in ["insert", "replaceSelection"]: |
4475 # not connected to an editor or wrong mode | 4476 # not connected to an editor or wrong mode |
4476 while toolProc.canReadLine(): | 4477 while toolProc.canReadLine(): |
4477 s = "{0} - ".format(program) | 4478 s = "{0} - ".format(program) |
4478 output = str(toolProc.readLine(), ioEncoding, 'replace') | 4479 output = str(toolProc.readLine(), ioEncoding, 'replace') |
4479 s.append(output) | 4480 s.append(output) |
4532 Private slot to show the Python 3 documentation. | 4533 Private slot to show the Python 3 documentation. |
4533 """ | 4534 """ |
4534 pythonDocDir = Preferences.getHelp("PythonDocDir") | 4535 pythonDocDir = Preferences.getHelp("PythonDocDir") |
4535 if not pythonDocDir: | 4536 if not pythonDocDir: |
4536 if Utilities.isWindowsPlatform(): | 4537 if Utilities.isWindowsPlatform(): |
4537 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON3DOCDIR", | 4538 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON3DOCDIR", |
4538 os.path.join(os.path.dirname(sys.executable), "doc")) | 4539 os.path.join(os.path.dirname(sys.executable), "doc")) |
4539 else: | 4540 else: |
4540 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON3DOCDIR", | 4541 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON3DOCDIR", |
4541 '/usr/share/doc/packages/python/html') | 4542 '/usr/share/doc/packages/python/html') |
4542 if not pythonDocDir.startswith("http://") and \ | 4543 if not pythonDocDir.startswith("http://") and \ |
4543 not pythonDocDir.startswith("https://"): | 4544 not pythonDocDir.startswith("https://"): |
4544 if pythonDocDir.startswith("file://"): | 4545 if pythonDocDir.startswith("file://"): |
4545 pythonDocDir = pythonDocDir[7:] | 4546 pythonDocDir = pythonDocDir[7:] |
4574 else: | 4575 else: |
4575 hvType = Preferences.getHelp("HelpViewerType") | 4576 hvType = Preferences.getHelp("HelpViewerType") |
4576 if hvType == 1: | 4577 if hvType == 1: |
4577 self.launchHelpViewer(home) | 4578 self.launchHelpViewer(home) |
4578 elif hvType == 2: | 4579 elif hvType == 2: |
4579 self.__assistant(home, version = 4) | 4580 self.__assistant(home, version=4) |
4580 elif hvType == 3: | 4581 elif hvType == 3: |
4581 self.__webBrowser(home) | 4582 self.__webBrowser(home) |
4582 else: | 4583 else: |
4583 self.__customViewer(home) | 4584 self.__customViewer(home) |
4584 | 4585 |
4594 default = os.path.join(os.path.dirname(executable), "doc") | 4595 default = os.path.join(os.path.dirname(executable), "doc") |
4595 else: | 4596 else: |
4596 default = "" | 4597 default = "" |
4597 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON2DOCDIR", default) | 4598 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON2DOCDIR", default) |
4598 else: | 4599 else: |
4599 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON3DOCDIR", | 4600 pythonDocDir = Utilities.getEnvironmentEntry("PYTHON3DOCDIR", |
4600 '/usr/share/doc/packages/python/html/python-docs-html') | 4601 '/usr/share/doc/packages/python/html/python-docs-html') |
4601 if not pythonDocDir.startswith("http://") and \ | 4602 if not pythonDocDir.startswith("http://") and \ |
4602 not pythonDocDir.startswith("https://"): | 4603 not pythonDocDir.startswith("https://"): |
4603 if pythonDocDir.startswith("file://"): | 4604 if pythonDocDir.startswith("file://"): |
4604 pythonDocDir = pythonDocDir[7:] | 4605 pythonDocDir = pythonDocDir[7:] |
4628 else: | 4629 else: |
4629 hvType = Preferences.getHelp("HelpViewerType") | 4630 hvType = Preferences.getHelp("HelpViewerType") |
4630 if hvType == 1: | 4631 if hvType == 1: |
4631 self.launchHelpViewer(home) | 4632 self.launchHelpViewer(home) |
4632 elif hvType == 2: | 4633 elif hvType == 2: |
4633 self.__assistant(home, version = 4) | 4634 self.__assistant(home, version=4) |
4634 elif hvType == 3: | 4635 elif hvType == 3: |
4635 self.__webBrowser(home) | 4636 self.__webBrowser(home) |
4636 else: | 4637 else: |
4637 self.__customViewer(home) | 4638 self.__customViewer(home) |
4638 | 4639 |
4674 | 4675 |
4675 hvType = Preferences.getHelp("HelpViewerType") | 4676 hvType = Preferences.getHelp("HelpViewerType") |
4676 if hvType == 1: | 4677 if hvType == 1: |
4677 self.launchHelpViewer(home) | 4678 self.launchHelpViewer(home) |
4678 elif hvType == 2: | 4679 elif hvType == 2: |
4679 self.__assistant(home, version = 4) | 4680 self.__assistant(home, version=4) |
4680 elif hvType == 3: | 4681 elif hvType == 3: |
4681 self.__webBrowser(home) | 4682 self.__webBrowser(home) |
4682 else: | 4683 else: |
4683 self.__customViewer(home) | 4684 self.__customViewer(home) |
4684 | 4685 |
4733 | 4734 |
4734 hvType = Preferences.getHelp("HelpViewerType") | 4735 hvType = Preferences.getHelp("HelpViewerType") |
4735 if hvType == 1: | 4736 if hvType == 1: |
4736 self.launchHelpViewer(home) | 4737 self.launchHelpViewer(home) |
4737 elif hvType == 2: | 4738 elif hvType == 2: |
4738 self.__assistant(home, version = 4) | 4739 self.__assistant(home, version=4) |
4739 elif hvType == 3: | 4740 elif hvType == 3: |
4740 self.__webBrowser(home) | 4741 self.__webBrowser(home) |
4741 else: | 4742 else: |
4742 self.__customViewer(home) | 4743 self.__customViewer(home) |
4743 | 4744 |
4765 | 4766 |
4766 hvType = Preferences.getHelp("HelpViewerType") | 4767 hvType = Preferences.getHelp("HelpViewerType") |
4767 if hvType == 1: | 4768 if hvType == 1: |
4768 self.launchHelpViewer(home) | 4769 self.launchHelpViewer(home) |
4769 elif hvType == 2: | 4770 elif hvType == 2: |
4770 self.__assistant(home, version = 4) | 4771 self.__assistant(home, version=4) |
4771 elif hvType == 3: | 4772 elif hvType == 3: |
4772 self.__webBrowser(home) | 4773 self.__webBrowser(home) |
4773 else: | 4774 else: |
4774 self.__customViewer(home) | 4775 self.__customViewer(home) |
4775 | 4776 |
4813 | 4814 |
4814 hvType = Preferences.getHelp("HelpViewerType") | 4815 hvType = Preferences.getHelp("HelpViewerType") |
4815 if hvType == 1: | 4816 if hvType == 1: |
4816 self.launchHelpViewer(home) | 4817 self.launchHelpViewer(home) |
4817 elif hvType == 2: | 4818 elif hvType == 2: |
4818 self.__assistant(home, version = 4) | 4819 self.__assistant(home, version=4) |
4819 elif hvType == 3: | 4820 elif hvType == 3: |
4820 self.__webBrowser(home) | 4821 self.__webBrowser(home) |
4821 else: | 4822 else: |
4822 self.__customViewer(home) | 4823 self.__customViewer(home) |
4823 | 4824 |
4824 def launchHelpViewer(self, home, searchWord = None): | 4825 def launchHelpViewer(self, home, searchWord=None): |
4825 """ | 4826 """ |
4826 Public slot to start the help viewer. | 4827 Public slot to start the help viewer. |
4827 | 4828 |
4828 @param home filename of file to be shown (string) | 4829 @param home filename of file to be shown (string) |
4829 @keyparam searchWord word to search for (string) | 4830 @keyparam searchWord word to search for (string) |
4831 if len(home) > 0: | 4832 if len(home) > 0: |
4832 homeUrl = QUrl(home) | 4833 homeUrl = QUrl(home) |
4833 if not homeUrl.scheme(): | 4834 if not homeUrl.scheme(): |
4834 home = QUrl.fromLocalFile(home).toString() | 4835 home = QUrl.fromLocalFile(home).toString() |
4835 if not Preferences.getHelp("SingleHelpWindow") or self.helpWindow is None: | 4836 if not Preferences.getHelp("SingleHelpWindow") or self.helpWindow is None: |
4836 help = HelpWindow(home, '.', None, 'help viewer', True, | 4837 help = HelpWindow(home, '.', None, 'help viewer', True, |
4837 searchWord = searchWord) | 4838 searchWord=searchWord) |
4838 | 4839 |
4839 if QApplication.desktop().width() > 400 and \ | 4840 if QApplication.desktop().width() > 400 and \ |
4840 QApplication.desktop().height() > 500: | 4841 QApplication.desktop().height() > 500: |
4841 help.show() | 4842 help.show() |
4842 else: | 4843 else: |
4867 """ | 4868 """ |
4868 searchWord = self.viewmanager.textForFind(False) | 4869 searchWord = self.viewmanager.textForFind(False) |
4869 if searchWord == "": | 4870 if searchWord == "": |
4870 searchWord = None | 4871 searchWord = None |
4871 | 4872 |
4872 self.launchHelpViewer("", searchWord = searchWord) | 4873 self.launchHelpViewer("", searchWord=searchWord) |
4873 | 4874 |
4874 def __webBrowser(self): | 4875 def __webBrowser(self): |
4875 """ | 4876 """ |
4876 Private slot to start the eric5 web browser. | 4877 Private slot to start the eric5 web browser. |
4877 """ | 4878 """ |
4878 self.launchHelpViewer("") | 4879 self.launchHelpViewer("") |
4879 | 4880 |
4880 def showPreferences(self, pageName = None): | 4881 def showPreferences(self, pageName=None): |
4881 """ | 4882 """ |
4882 Public slot to set the preferences. | 4883 Public slot to set the preferences. |
4883 | 4884 |
4884 @param pageName name of the configuration page to show (string) | 4885 @param pageName name of the configuration page to show (string) |
4885 """ | 4886 """ |
4928 self.SAServer = None | 4929 self.SAServer = None |
4929 | 4930 |
4930 self.maxEditorPathLen = Preferences.getUI("CaptionFilenameLength") | 4931 self.maxEditorPathLen = Preferences.getUI("CaptionFilenameLength") |
4931 self.captionShowsFilename = Preferences.getUI("CaptionShowsFilename") | 4932 self.captionShowsFilename = Preferences.getUI("CaptionShowsFilename") |
4932 if not self.captionShowsFilename: | 4933 if not self.captionShowsFilename: |
4933 self.__setWindowCaption(editor = "") | 4934 self.__setWindowCaption(editor="") |
4934 else: | 4935 else: |
4935 aw = self.viewmanager.activeWindow() | 4936 aw = self.viewmanager.activeWindow() |
4936 fn = aw and aw.getFileName() or None | 4937 fn = aw and aw.getFileName() or None |
4937 if fn: | 4938 if fn: |
4938 self.__setWindowCaption(editor = fn) | 4939 self.__setWindowCaption(editor=fn) |
4939 else: | 4940 else: |
4940 self.__setWindowCaption(editor = "") | 4941 self.__setWindowCaption(editor="") |
4941 | 4942 |
4942 self.__httpAlternatives = Preferences.getUI("VersionsUrls5") | 4943 self.__httpAlternatives = Preferences.getUI("VersionsUrls5") |
4943 self.performVersionCheck(False) | 4944 self.performVersionCheck(False) |
4944 | 4945 |
4945 self.__configureDockareaCornerUsage() | 4946 self.__configureDockareaCornerUsage() |
5028 | 5029 |
5029 def __newProject(self): | 5030 def __newProject(self): |
5030 """ | 5031 """ |
5031 Private slot to handle the NewProject signal. | 5032 Private slot to handle the NewProject signal. |
5032 """ | 5033 """ |
5033 self.__setWindowCaption(project = self.project.name) | 5034 self.__setWindowCaption(project=self.project.name) |
5034 | 5035 |
5035 def __projectOpened(self): | 5036 def __projectOpened(self): |
5036 """ | 5037 """ |
5037 Private slot to handle the projectOpened signal. | 5038 Private slot to handle the projectOpened signal. |
5038 """ | 5039 """ |
5039 self.__setWindowCaption(project = self.project.name) | 5040 self.__setWindowCaption(project=self.project.name) |
5040 cap = e5App().getObject("DebugServer")\ | 5041 cap = e5App().getObject("DebugServer")\ |
5041 .getClientCapabilities(self.project.pdata["PROGLANGUAGE"][0]) | 5042 .getClientCapabilities(self.project.pdata["PROGLANGUAGE"][0]) |
5042 self.utProjectAct.setEnabled(cap & HasUnittest) | 5043 self.utProjectAct.setEnabled(cap & HasUnittest) |
5043 self.utProjectOpen = cap & HasUnittest | 5044 self.utProjectOpen = cap & HasUnittest |
5044 | 5045 |
5045 def __projectClosed(self): | 5046 def __projectClosed(self): |
5046 """ | 5047 """ |
5047 Private slot to handle the projectClosed signal. | 5048 Private slot to handle the projectClosed signal. |
5048 """ | 5049 """ |
5049 self.__setWindowCaption(project = "") | 5050 self.__setWindowCaption(project="") |
5050 self.utProjectAct.setEnabled(False) | 5051 self.utProjectAct.setEnabled(False) |
5051 if not self.utEditorOpen: | 5052 if not self.utEditorOpen: |
5052 self.utRestartAct.setEnabled(False) | 5053 self.utRestartAct.setEnabled(False) |
5053 self.utProjectOpen = False | 5054 self.utProjectOpen = False |
5054 | 5055 |
5073 self.wizardsMenuAct.setEnabled(False) | 5074 self.wizardsMenuAct.setEnabled(False) |
5074 self.utScriptAct.setEnabled(False) | 5075 self.utScriptAct.setEnabled(False) |
5075 self.utEditorOpen = False | 5076 self.utEditorOpen = False |
5076 if not self.utProjectOpen: | 5077 if not self.utProjectOpen: |
5077 self.utRestartAct.setEnabled(False) | 5078 self.utRestartAct.setEnabled(False) |
5078 self.__setWindowCaption(editor = "") | 5079 self.__setWindowCaption(editor="") |
5079 | 5080 |
5080 def __editorOpened(self, fn): | 5081 def __editorOpened(self, fn): |
5081 """ | 5082 """ |
5082 Private slot to handle the editorOpened signal. | 5083 Private slot to handle the editorOpened signal. |
5083 | 5084 |
5152 fn = os.path.join(Utilities.getConfigDir(), "eric5tasks.e4t") | 5153 fn = os.path.join(Utilities.getConfigDir(), "eric5tasks.e4t") |
5153 if not os.path.exists(fn): | 5154 if not os.path.exists(fn): |
5154 return | 5155 return |
5155 f = QFile(fn) | 5156 f = QFile(fn) |
5156 if f.open(QIODevice.ReadOnly): | 5157 if f.open(QIODevice.ReadOnly): |
5157 reader = TasksReader(f, viewer = self.taskViewer) | 5158 reader = TasksReader(f, viewer=self.taskViewer) |
5158 reader.readXML() | 5159 reader.readXML() |
5159 f.close() | 5160 f.close() |
5160 else: | 5161 else: |
5161 E5MessageBox.critical(self, | 5162 E5MessageBox.critical(self, |
5162 self.trUtf8("Read tasks"), | 5163 self.trUtf8("Read tasks"), |
5232 Private slot to show the plugin info dialog. | 5233 Private slot to show the plugin info dialog. |
5233 """ | 5234 """ |
5234 self.__pluginInfoDialog = PluginInfoDialog(self.pluginManager, self) | 5235 self.__pluginInfoDialog = PluginInfoDialog(self.pluginManager, self) |
5235 self.__pluginInfoDialog.show() | 5236 self.__pluginInfoDialog.show() |
5236 | 5237 |
5237 def __installPlugins(self, pluginFileNames = []): | 5238 def __installPlugins(self, pluginFileNames=[]): |
5238 """ | 5239 """ |
5239 Private slot to show a dialog to install a new plugin. | 5240 Private slot to show a dialog to install a new plugin. |
5240 | 5241 |
5241 @param pluginFileNames list of plugin files suggested for | 5242 @param pluginFileNames list of plugin files suggested for |
5242 installation list of strings | 5243 installation list of strings |
5243 """ | 5244 """ |
5244 dlg = PluginInstallDialog(self.pluginManager, pluginFileNames, self) | 5245 dlg = PluginInstallDialog(self.pluginManager, pluginFileNames, self) |
5245 dlg.exec_() | 5246 dlg.exec_() |
5246 if dlg.restartNeeded(): | 5247 if dlg.restartNeeded(): |
5384 windows = { | 5385 windows = { |
5385 "ProjectBrowser": self.projectBrowser, | 5386 "ProjectBrowser": self.projectBrowser, |
5386 "DebugViewer": self.debugViewer, | 5387 "DebugViewer": self.debugViewer, |
5387 "LogViewer": self.logViewer, | 5388 "LogViewer": self.logViewer, |
5388 "Shell": self.shell, | 5389 "Shell": self.shell, |
5389 "FileBrowser" : self.browser, | 5390 "FileBrowser": self.browser, |
5390 "TaskViewer" : self.taskViewer, | 5391 "TaskViewer": self.taskViewer, |
5391 "TemplateViewer" : self.templateViewer, | 5392 "TemplateViewer": self.templateViewer, |
5392 "MultiProjectBrowser": self.multiProjectBrowser, | 5393 "MultiProjectBrowser": self.multiProjectBrowser, |
5393 } | 5394 } |
5394 if self.embeddedShell: | 5395 if self.embeddedShell: |
5395 del windows["Shell"] | 5396 del windows["Shell"] |
5396 if self.embeddedFileBrowser: | 5397 if self.embeddedFileBrowser: |
5415 | 5416 |
5416 def showAvailableVersionsInfo(self): | 5417 def showAvailableVersionsInfo(self): |
5417 """ | 5418 """ |
5418 Public method to show the eric5 versions available for download. | 5419 Public method to show the eric5 versions available for download. |
5419 """ | 5420 """ |
5420 self.performVersionCheck(manual = True, showVersions = True) | 5421 self.performVersionCheck(manual=True, showVersions=True) |
5421 | 5422 |
5422 def performVersionCheck(self, manual = True, alternative = 0, showVersions = False): | 5423 def performVersionCheck(self, manual=True, alternative=0, showVersions=False): |
5423 """ | 5424 """ |
5424 Public method to check the internet for an eric5 update. | 5425 Public method to check the internet for an eric5 update. |
5425 | 5426 |
5426 @param manual flag indicating an invocation via the menu (boolean) | 5427 @param manual flag indicating an invocation via the menu (boolean) |
5427 @param alternative index of server to download from (integer) | 5428 @param alternative index of server to download from (integer) |
5456 url = QUrl(self.__httpAlternatives[alternative]) | 5457 url = QUrl(self.__httpAlternatives[alternative]) |
5457 self.__versionCheckCanceled = False | 5458 self.__versionCheckCanceled = False |
5458 if manual: | 5459 if manual: |
5459 if self.__versionCheckProgress is None: | 5460 if self.__versionCheckProgress is None: |
5460 self.__versionCheckProgress = \ | 5461 self.__versionCheckProgress = \ |
5461 QProgressDialog("", self.trUtf8("&Cancel"), | 5462 QProgressDialog("", self.trUtf8("&Cancel"), |
5462 0, len(self.__httpAlternatives), self) | 5463 0, len(self.__httpAlternatives), self) |
5463 self.__versionCheckProgress.setMinimumDuration(0) | 5464 self.__versionCheckProgress.setMinimumDuration(0) |
5464 self.__versionCheckProgress.canceled.connect( | 5465 self.__versionCheckProgress.canceled.connect( |
5465 self.__versionsDownloadCanceled) | 5466 self.__versionsDownloadCanceled) |
5466 self.__versionCheckProgress.setLabelText( | 5467 self.__versionCheckProgress.setLabelText( |
5495 E5MessageBox.warning(self, | 5496 E5MessageBox.warning(self, |
5496 self.trUtf8("Error downloading versions file"), | 5497 self.trUtf8("Error downloading versions file"), |
5497 self.trUtf8("""Could not download the versions file.""")) | 5498 self.trUtf8("""Could not download the versions file.""")) |
5498 return | 5499 return |
5499 else: | 5500 else: |
5500 self.performVersionCheck(self.manualUpdatesCheck, self.httpAlternative, | 5501 self.performVersionCheck(self.manualUpdatesCheck, self.httpAlternative, |
5501 self.showAvailableVersions) | 5502 self.showAvailableVersions) |
5502 return | 5503 return |
5503 | 5504 |
5504 self.__inVersionCheck = False | 5505 self.__inVersionCheck = False |
5505 if self.__versionCheckProgress is not None: | 5506 if self.__versionCheckProgress is not None: |
5544 res = E5MessageBox.yesNo(self, | 5545 res = E5MessageBox.yesNo(self, |
5545 self.trUtf8("Update available"), | 5546 self.trUtf8("Update available"), |
5546 self.trUtf8("""The update to <b>{0}</b> of eric5 is available""" | 5547 self.trUtf8("""The update to <b>{0}</b> of eric5 is available""" |
5547 """ at <b>{1}</b>. Would you like to get it?""")\ | 5548 """ at <b>{1}</b>. Would you like to get it?""")\ |
5548 .format(versions[2], versions[3]), | 5549 .format(versions[2], versions[3]), |
5549 yesDefault = True) | 5550 yesDefault=True) |
5550 url = res and versions[3] or '' | 5551 url = res and versions[3] or '' |
5551 elif versions[0] > Version: | 5552 elif versions[0] > Version: |
5552 res = E5MessageBox.yesNo(self, | 5553 res = E5MessageBox.yesNo(self, |
5553 self.trUtf8("Update available"), | 5554 self.trUtf8("Update available"), |
5554 self.trUtf8("""The update to <b>{0}</b> of eric5 is available""" | 5555 self.trUtf8("""The update to <b>{0}</b> of eric5 is available""" |
5555 """ at <b>{1}</b>. Would you like to get it?""")\ | 5556 """ at <b>{1}</b>. Would you like to get it?""")\ |
5556 .format(versions[0], versions[1]), | 5557 .format(versions[0], versions[1]), |
5557 yesDefault = True) | 5558 yesDefault=True) |
5558 url = res and versions[1] or '' | 5559 url = res and versions[1] or '' |
5559 else: | 5560 else: |
5560 if self.manualUpdatesCheck: | 5561 if self.manualUpdatesCheck: |
5561 E5MessageBox.information(self, | 5562 E5MessageBox.information(self, |
5562 self.trUtf8("Eric5 is up to date"), | 5563 self.trUtf8("Eric5 is up to date"), |
5567 res = E5MessageBox.yesNo(self, | 5568 res = E5MessageBox.yesNo(self, |
5568 self.trUtf8("Update available"), | 5569 self.trUtf8("Update available"), |
5569 self.trUtf8("""The update to <b>{0}</b> of eric5 is available""" | 5570 self.trUtf8("""The update to <b>{0}</b> of eric5 is available""" |
5570 """ at <b>{1}</b>. Would you like to get it?""")\ | 5571 """ at <b>{1}</b>. Would you like to get it?""")\ |
5571 .format(versions[0], versions[1]), | 5572 .format(versions[0], versions[1]), |
5572 yesDefault = True) | 5573 yesDefault=True) |
5573 url = res and versions[1] or '' | 5574 url = res and versions[1] or '' |
5574 else: | 5575 else: |
5575 if self.manualUpdatesCheck: | 5576 if self.manualUpdatesCheck: |
5576 E5MessageBox.information(self, | 5577 E5MessageBox.information(self, |
5577 self.trUtf8("Eric5 is up to date"), | 5578 self.trUtf8("Eric5 is up to date"), |
5605 while line < len(versions): | 5606 while line < len(versions): |
5606 if versions[line] == "---": | 5607 if versions[line] == "---": |
5607 break | 5608 break |
5608 | 5609 |
5609 versionText += """<tr><td>{0}</td><td><a href="{1}">{2}</a></td></tr>"""\ | 5610 versionText += """<tr><td>{0}</td><td><a href="{1}">{2}</a></td></tr>"""\ |
5610 .format(versions[line], versions[line + 1], | 5611 .format(versions[line], versions[line + 1], |
5611 'sourceforge' in versions[line + 1] and \ | 5612 'sourceforge' in versions[line + 1] and \ |
5612 "SourceForge" or versions[line + 1]) | 5613 "SourceForge" or versions[line + 1]) |
5613 line += 2 | 5614 line += 2 |
5614 versionText += self.trUtf8("""</table>""") | 5615 versionText += self.trUtf8("""</table>""") |
5615 | 5616 |
5630 self.trUtf8("SSL Errors"), | 5631 self.trUtf8("SSL Errors"), |
5631 self.trUtf8("""<p>SSL Errors:</p>""" | 5632 self.trUtf8("""<p>SSL Errors:</p>""" |
5632 """<p>{0}</p>""" | 5633 """<p>{0}</p>""" |
5633 """<p>Do you want to ignore these errors?</p>""")\ | 5634 """<p>Do you want to ignore these errors?</p>""")\ |
5634 .format(errorString), | 5635 .format(errorString), |
5635 icon = E5MessageBox.Warning) | 5636 icon=E5MessageBox.Warning) |
5636 if ret: | 5637 if ret: |
5637 reply.ignoreSslErrors() | 5638 reply.ignoreSslErrors() |
5638 else: | 5639 else: |
5639 self.__downloadCancelled = True | 5640 self.__downloadCancelled = True |
5640 reply.abort() | 5641 reply.abort() |
5643 ## Below are methods for various checks | 5644 ## Below are methods for various checks |
5644 ####################################### | 5645 ####################################### |
5645 | 5646 |
5646 def checkConfigurationStatus(self): | 5647 def checkConfigurationStatus(self): |
5647 """ | 5648 """ |
5648 Public method to check, if eric5 has been configured. If it is not, | 5649 Public method to check, if eric5 has been configured. If it is not, |
5649 the configuration dialog is shown. | 5650 the configuration dialog is shown. |
5650 """ | 5651 """ |
5651 if not Preferences.isConfigured(): | 5652 if not Preferences.isConfigured(): |
5652 self.__initDebugToolbarsLayout() | 5653 self.__initDebugToolbarsLayout() |
5653 | 5654 |
5655 self.trUtf8("First time usage"), | 5656 self.trUtf8("First time usage"), |
5656 self.trUtf8("""eric5 has not been configured yet. """ | 5657 self.trUtf8("""eric5 has not been configured yet. """ |
5657 """The configuration dialog will be started.""")) | 5658 """The configuration dialog will be started.""")) |
5658 self.showPreferences() | 5659 self.showPreferences() |
5659 | 5660 |
5660 def versionIsNewer(self, required, snapshot = None): | 5661 def versionIsNewer(self, required, snapshot=None): |
5661 """ | 5662 """ |
5662 Public method to check, if the eric5 version is good compared to | 5663 Public method to check, if the eric5 version is good compared to |
5663 the required version. | 5664 the required version. |
5664 | 5665 |
5665 @param required required version (string) | 5666 @param required required version (string) |