9451:24c847222774 | 9549:67295777d9fe |
---|---|
5 | 5 |
6 """ | 6 """ |
7 Module implementing the main user interface. | 7 Module implementing the main user interface. |
8 """ | 8 """ |
9 | 9 |
10 import contextlib | |
11 import datetime | |
12 import functools | |
13 import getpass | |
14 import json | |
15 import logging | |
10 import os | 16 import os |
17 import pathlib | |
18 import shutil | |
11 import sys | 19 import sys |
12 import logging | 20 |
13 import shutil | 21 from PyQt6 import sip |
14 import json | 22 from PyQt6.Qsci import QSCINTILLA_VERSION_STR |
15 import datetime | |
16 import getpass | |
17 import functools | |
18 import contextlib | |
19 import pathlib | |
20 | |
21 from PyQt6.QtCore import ( | 23 from PyQt6.QtCore import ( |
22 pyqtSlot, | |
23 QTimer, | |
24 QFile, | |
25 pyqtSignal, | |
26 PYQT_VERSION_STR, | 24 PYQT_VERSION_STR, |
27 QDate, | 25 QDate, |
26 QFile, | |
28 QIODevice, | 27 QIODevice, |
29 qVersion, | 28 QObject, |
30 QProcess, | 29 QProcess, |
31 QSize, | 30 QSize, |
31 Qt, | |
32 QThread, | |
33 QTimer, | |
32 QUrl, | 34 QUrl, |
33 QObject, | 35 QUrlQuery, |
34 Qt, | |
35 QUuid, | 36 QUuid, |
36 QThread, | 37 pyqtSignal, |
37 QUrlQuery, | 38 pyqtSlot, |
39 qVersion, | |
38 ) | 40 ) |
39 from PyQt6.QtGui import QAction, QKeySequence, QDesktopServices, QSessionManager | 41 from PyQt6.QtGui import QAction, QDesktopServices, QKeySequence, QSessionManager |
42 from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkProxyFactory | |
40 from PyQt6.QtWidgets import ( | 43 from PyQt6.QtWidgets import ( |
41 QSizePolicy, | 44 QApplication, |
42 QWidget, | |
43 QWhatsThis, | |
44 QToolBar, | |
45 QDialog, | 45 QDialog, |
46 QSplitter, | |
47 QApplication, | |
48 QMenu, | |
49 QVBoxLayout, | |
50 QDockWidget, | 46 QDockWidget, |
51 QLabel, | 47 QLabel, |
48 QMenu, | |
49 QSizePolicy, | |
50 QSplitter, | |
51 QToolBar, | |
52 QVBoxLayout, | |
53 QWhatsThis, | |
54 QWidget, | |
52 ) | 55 ) |
53 from PyQt6.Qsci import QSCINTILLA_VERSION_STR | 56 |
54 from PyQt6.QtNetwork import QNetworkProxyFactory, QNetworkAccessManager | 57 from eric7 import Globals, Preferences, Testing, Utilities |
55 | 58 from eric7.CondaInterface.Conda import Conda |
56 from .Info import Version, VersionOnly, BugAddress, Program, FeatureAddress | 59 from eric7.Debugger.DebugServer import DebugServer |
57 from . import Config | 60 from eric7.Debugger.DebugUI import DebugUI |
58 from .NotificationWidget import NotificationTypes | 61 from eric7.EricGui import EricPixmapCache |
59 | |
60 from eric7.EricWidgets.EricSingleApplication import EricSingleApplicationServer | |
61 from eric7.EricGui.EricAction import EricAction, createActionGroup | 62 from eric7.EricGui.EricAction import EricAction, createActionGroup |
62 from eric7.EricWidgets.EricToolBarManager import EricToolBarManager | |
63 from eric7.EricWidgets import EricMessageBox, EricFileDialog, EricErrorMessage | |
64 from eric7.EricWidgets.EricApplication import ericApp | |
65 from eric7.EricWidgets.EricMainWindow import EricMainWindow | |
66 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget | |
67 from eric7.EricWidgets.EricClickableLabel import EricClickableLabel | |
68 | |
69 from eric7 import Globals, Preferences, Utilities | |
70 | |
71 from eric7.EricGui import EricPixmapCache | |
72 | |
73 from eric7.Sessions.SessionFile import SessionFile | |
74 | |
75 from eric7.Tasks.TasksFile import TasksFile | |
76 | |
77 from eric7.EricNetwork.EricNetworkIcon import EricNetworkIcon | 63 from eric7.EricNetwork.EricNetworkIcon import EricNetworkIcon |
78 from eric7.EricNetwork.EricNetworkProxyFactory import ( | 64 from eric7.EricNetwork.EricNetworkProxyFactory import ( |
79 EricNetworkProxyFactory, | 65 EricNetworkProxyFactory, |
80 proxyAuthenticationRequired, | 66 proxyAuthenticationRequired, |
81 ) | 67 ) |
68 from eric7.EricWidgets import EricErrorMessage, EricFileDialog, EricMessageBox | |
69 from eric7.EricWidgets.EricApplication import ericApp | |
70 from eric7.EricWidgets.EricClickableLabel import EricClickableLabel | |
71 from eric7.EricWidgets.EricMainWindow import EricMainWindow | |
72 from eric7.EricWidgets.EricSingleApplication import EricSingleApplicationServer | |
73 from eric7.EricWidgets.EricToolBarManager import EricToolBarManager | |
74 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget | |
75 from eric7.EricXML.SessionReader import SessionReader | |
76 from eric7.EricXML.TasksReader import TasksReader | |
77 from eric7.Globals import getConfig | |
78 from eric7.MultiProject.MultiProject import MultiProject | |
79 from eric7.PipInterface.Pip import Pip | |
80 from eric7.PluginManager.PluginManager import PluginManager | |
81 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryDownloadCleanup | |
82 from eric7.Preferences import Shortcuts | |
83 from eric7.Project.Project import Project | |
84 from eric7.QScintilla.SpellChecker import SpellChecker | |
85 from eric7.Sessions.SessionFile import SessionFile | |
86 from eric7.Tasks.TasksFile import TasksFile | |
87 from eric7.Testing.TestingWidget import clearSavedHistories | |
88 from eric7.Utilities.BackgroundService import BackgroundService | |
89 from eric7.VirtualEnv.VirtualenvManager import VirtualenvManager | |
90 | |
91 from . import Config | |
92 from .Info import BugAddress, FeatureAddress, Program, Version, VersionOnly | |
93 from .NotificationWidget import NotificationTypes | |
82 | 94 |
83 try: | 95 try: |
84 from eric7.EricNetwork.EricSslErrorHandler import ( | 96 from eric7.EricNetwork.EricSslErrorHandler import ( |
85 EricSslErrorHandler, | 97 EricSslErrorHandler, |
86 EricSslErrorState, | 98 EricSslErrorState, |
87 ) | 99 ) |
88 | 100 |
89 SSL_AVAILABLE = True | 101 SSL_AVAILABLE = True |
90 except ImportError: | 102 except ImportError: |
91 SSL_AVAILABLE = False | 103 SSL_AVAILABLE = False |
92 | |
93 from eric7.Globals import getConfig | |
94 | 104 |
95 | 105 |
96 class Redirector(QObject): | 106 class Redirector(QObject): |
97 """ | 107 """ |
98 Helper class used to redirect stdout and stderr to the log window. | 108 Helper class used to redirect stdout and stderr to the log window. |
285 | 295 |
286 splash.showMessage(self.tr("Initializing Basic Services...")) | 296 splash.showMessage(self.tr("Initializing Basic Services...")) |
287 | 297 |
288 # Generate the conda interface | 298 # Generate the conda interface |
289 logging.debug("Creating Conda Interface...") | 299 logging.debug("Creating Conda Interface...") |
290 from eric7.CondaInterface.Conda import Conda | |
291 | |
292 self.condaInterface = Conda(self) | 300 self.condaInterface = Conda(self) |
293 ericApp().registerObject("Conda", self.condaInterface) | 301 ericApp().registerObject("Conda", self.condaInterface) |
294 | 302 |
295 # Generate the pip interface | 303 # Generate the pip interface |
296 logging.debug("Creating Pip Interface...") | 304 logging.debug("Creating Pip Interface...") |
297 from eric7.PipInterface.Pip import Pip | |
298 | |
299 self.pipInterface = Pip(self) | 305 self.pipInterface = Pip(self) |
300 ericApp().registerObject("Pip", self.pipInterface) | 306 ericApp().registerObject("Pip", self.pipInterface) |
301 | 307 |
302 # Generate the virtual environment manager | 308 # Generate the virtual environment manager |
303 logging.debug("Creating Virtual Environments Manager...") | 309 logging.debug("Creating Virtual Environments Manager...") |
304 from eric7.VirtualEnv.VirtualenvManager import VirtualenvManager | |
305 | |
306 self.virtualenvManager = VirtualenvManager(self) | 310 self.virtualenvManager = VirtualenvManager(self) |
307 # register it early because it is needed very soon | 311 # register it early because it is needed very soon |
308 ericApp().registerObject("VirtualEnvManager", self.virtualenvManager) | 312 ericApp().registerObject("VirtualEnvManager", self.virtualenvManager) |
309 | 313 |
310 # Generate an empty project object and multi project object | 314 # Generate an empty project object and multi project object |
311 logging.debug("Creating Project Manager...") | 315 logging.debug("Creating Project Manager...") |
312 from eric7.Project.Project import Project | |
313 | |
314 self.project = Project(self) | 316 self.project = Project(self) |
315 ericApp().registerObject("Project", self.project) | 317 ericApp().registerObject("Project", self.project) |
316 | 318 |
317 from eric7.MultiProject.MultiProject import MultiProject | |
318 | |
319 logging.debug("Creating Multi-Project Manager...") | 319 logging.debug("Creating Multi-Project Manager...") |
320 self.multiProject = MultiProject(self.project, self) | 320 self.multiProject = MultiProject(self.project, self) |
321 | 321 |
322 # Generate the debug server object | 322 # Generate the debug server object |
323 logging.debug("Creating Debug Server...") | 323 logging.debug("Creating Debug Server...") |
324 from eric7.Debugger.DebugServer import DebugServer | |
325 | |
326 self.__debugServer = DebugServer( | 324 self.__debugServer = DebugServer( |
327 self.__originalPathString, project=self.project, parent=self | 325 self.__originalPathString, project=self.project, parent=self |
328 ) | 326 ) |
329 | 327 |
330 # Create the background service object | 328 # Create the background service object |
331 from eric7.Utilities.BackgroundService import BackgroundService | |
332 | |
333 self.backgroundService = BackgroundService(self) | 329 self.backgroundService = BackgroundService(self) |
334 | 330 |
335 splash.showMessage(self.tr("Initializing Plugin Manager...")) | 331 splash.showMessage(self.tr("Initializing Plugin Manager...")) |
336 | 332 |
337 # Initialize the Plugin Manager (Plugins are initialized later | 333 # Initialize the Plugin Manager (Plugins are initialized later |
338 from eric7.PluginManager.PluginManager import PluginManager | |
339 | |
340 self.pluginManager = PluginManager( | 334 self.pluginManager = PluginManager( |
341 self, self.__disabledPlugins, develPlugin=plugin | 335 self, self.__disabledPlugins, develPlugin=plugin |
342 ) | 336 ) |
343 | 337 |
344 splash.showMessage(self.tr("Generating Main User Interface...")) | 338 splash.showMessage(self.tr("Generating Main User Interface...")) |
346 self.__webBrowserProcess = None | 340 self.__webBrowserProcess = None |
347 self.__webBrowserClient = None | 341 self.__webBrowserClient = None |
348 self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1] | 342 self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1] |
349 | 343 |
350 # set spellchecker defaults | 344 # set spellchecker defaults |
351 from eric7.QScintilla.SpellChecker import SpellChecker | |
352 | |
353 SpellChecker.setDefaultLanguage( | 345 SpellChecker.setDefaultLanguage( |
354 Preferences.getEditor("SpellCheckingDefaultLanguage") | 346 Preferences.getEditor("SpellCheckingDefaultLanguage") |
355 ) | 347 ) |
356 | 348 |
357 with contextlib.suppress(ImportError, AttributeError): | 349 with contextlib.suppress(ImportError, AttributeError): |
358 from eric7.EricWidgets.EricSpellCheckedTextEdit import SpellCheckMixin | 350 from eric7.EricWidgets.EricSpellCheckedTextEdit import ( # __IGNORE_WARNING__ |
351 SpellCheckMixin, | |
352 ) | |
359 | 353 |
360 pwl = SpellChecker.getUserDictionaryPath(isException=False) | 354 pwl = SpellChecker.getUserDictionaryPath(isException=False) |
361 pel = SpellChecker.getUserDictionaryPath(isException=True) | 355 pel = SpellChecker.getUserDictionaryPath(isException=True) |
362 SpellCheckMixin.setDefaultLanguage( | 356 SpellCheckMixin.setDefaultLanguage( |
363 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel | 357 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel |
372 self.__currentRightWidget = None | 366 self.__currentRightWidget = None |
373 self.__currentBottomWidget = None | 367 self.__currentBottomWidget = None |
374 | 368 |
375 # Generate the debugger part of the ui | 369 # Generate the debugger part of the ui |
376 logging.debug("Creating Debugger UI...") | 370 logging.debug("Creating Debugger UI...") |
377 from eric7.Debugger.DebugUI import DebugUI | |
378 | |
379 self.debuggerUI = DebugUI( | 371 self.debuggerUI = DebugUI( |
380 self, self.viewmanager, self.__debugServer, self.debugViewer, self.project | 372 self, self.viewmanager, self.__debugServer, self.debugViewer, self.project |
381 ) | 373 ) |
382 self.debugViewer.setDebugger(self.debuggerUI) | 374 self.debugViewer.setDebugger(self.debuggerUI) |
383 self.shell.setDebuggerUI(self.debuggerUI) | 375 self.shell.setDebuggerUI(self.debuggerUI) |
409 | 401 |
410 self.debugViewer.sourceFile.connect(self.viewmanager.showDebugSource) | 402 self.debugViewer.sourceFile.connect(self.viewmanager.showDebugSource) |
411 | 403 |
412 self.taskViewer.displayFile.connect(self.viewmanager.openSourceFile) | 404 self.taskViewer.displayFile.connect(self.viewmanager.openSourceFile) |
413 | 405 |
414 self.projectBrowser.psBrowser.sourceFile[str].connect( | 406 self.projectBrowser.appendStderr.connect(self.appendToStderr) |
407 self.projectBrowser.appendStdout.connect(self.appendToStdout) | |
408 self.projectBrowser.sourceFile[str].connect(self.viewmanager.openSourceFile) | |
409 self.projectBrowser.sourceFile[str, int].connect( | |
415 self.viewmanager.openSourceFile | 410 self.viewmanager.openSourceFile |
416 ) | 411 ) |
417 self.projectBrowser.psBrowser.sourceFile[str, int].connect( | 412 self.projectBrowser.sourceFile[str, list].connect( |
418 self.viewmanager.openSourceFile | 413 self.viewmanager.openSourceFile |
419 ) | 414 ) |
420 self.projectBrowser.psBrowser.sourceFile[str, list].connect( | 415 self.projectBrowser.sourceFile[str, int, str].connect( |
421 self.viewmanager.openSourceFile | 416 self.viewmanager.openSourceFile |
422 ) | 417 ) |
423 self.projectBrowser.psBrowser.sourceFile[str, int, str].connect( | 418 self.projectBrowser.closeSourceWindow.connect(self.viewmanager.closeWindow) |
424 self.viewmanager.openSourceFile | 419 self.projectBrowser.testFile.connect(self.__startTestScript) |
425 ) | 420 self.projectBrowser.designerFile.connect(self.__designer) |
426 self.projectBrowser.psBrowser.closeSourceWindow.connect( | 421 self.projectBrowser.uipreview.connect(self.__UIPreviewer) |
427 self.viewmanager.closeWindow | 422 self.projectBrowser.trpreview[list].connect(self.__TRPreviewer) |
428 ) | 423 self.projectBrowser.trpreview[list, bool].connect(self.__TRPreviewer) |
429 self.projectBrowser.psBrowser.testFile.connect(self.__startTestScript) | 424 self.projectBrowser.linguistFile.connect(self.__linguist) |
430 | 425 self.projectBrowser.pixmapEditFile.connect(self.__editPixmap) |
431 self.projectBrowser.pfBrowser.designerFile.connect(self.__designer) | 426 self.projectBrowser.pixmapFile.connect(self.__showPixmap) |
432 self.projectBrowser.pfBrowser.sourceFile.connect( | 427 self.projectBrowser.svgFile.connect(self.__showSvg) |
433 self.viewmanager.openSourceFile | 428 self.projectBrowser.umlFile.connect(self.__showUml) |
434 ) | 429 self.projectBrowser.binaryFile.connect(self.__openHexEditor) |
435 self.projectBrowser.pfBrowser.uipreview.connect(self.__UIPreviewer) | |
436 self.projectBrowser.pfBrowser.trpreview.connect(self.__TRPreviewer) | |
437 self.projectBrowser.pfBrowser.closeSourceWindow.connect( | |
438 self.viewmanager.closeWindow | |
439 ) | |
440 self.projectBrowser.pfBrowser.appendStderr.connect(self.appendToStderr) | |
441 | |
442 self.projectBrowser.prBrowser.sourceFile.connect( | |
443 self.viewmanager.openSourceFile | |
444 ) | |
445 self.projectBrowser.prBrowser.closeSourceWindow.connect( | |
446 self.viewmanager.closeWindow | |
447 ) | |
448 self.projectBrowser.prBrowser.appendStderr.connect(self.appendToStderr) | |
449 | |
450 self.projectBrowser.ptBrowser.linguistFile.connect(self.__linguist) | |
451 self.projectBrowser.ptBrowser.sourceFile.connect( | |
452 self.viewmanager.openSourceFile | |
453 ) | |
454 self.projectBrowser.ptBrowser.trpreview[list].connect(self.__TRPreviewer) | |
455 self.projectBrowser.ptBrowser.trpreview[list, bool].connect(self.__TRPreviewer) | |
456 self.projectBrowser.ptBrowser.closeSourceWindow.connect( | |
457 self.viewmanager.closeWindow | |
458 ) | |
459 self.projectBrowser.ptBrowser.appendStdout.connect(self.appendToStdout) | |
460 self.projectBrowser.ptBrowser.appendStderr.connect(self.appendToStderr) | |
461 | |
462 self.projectBrowser.piBrowser.sourceFile[str].connect( | |
463 self.viewmanager.openSourceFile | |
464 ) | |
465 self.projectBrowser.piBrowser.sourceFile[str, int].connect( | |
466 self.viewmanager.openSourceFile | |
467 ) | |
468 self.projectBrowser.piBrowser.closeSourceWindow.connect( | |
469 self.viewmanager.closeWindow | |
470 ) | |
471 self.projectBrowser.piBrowser.appendStdout.connect(self.appendToStdout) | |
472 self.projectBrowser.piBrowser.appendStderr.connect(self.appendToStderr) | |
473 | |
474 self.projectBrowser.ppBrowser.sourceFile[str].connect( | |
475 self.viewmanager.openSourceFile | |
476 ) | |
477 self.projectBrowser.ppBrowser.sourceFile[str, int].connect( | |
478 self.viewmanager.openSourceFile | |
479 ) | |
480 self.projectBrowser.ppBrowser.closeSourceWindow.connect( | |
481 self.viewmanager.closeWindow | |
482 ) | |
483 self.projectBrowser.ppBrowser.appendStdout.connect(self.appendToStdout) | |
484 self.projectBrowser.ppBrowser.appendStderr.connect(self.appendToStderr) | |
485 | |
486 self.projectBrowser.poBrowser.sourceFile.connect( | |
487 self.viewmanager.openSourceFile | |
488 ) | |
489 self.projectBrowser.poBrowser.closeSourceWindow.connect( | |
490 self.viewmanager.closeWindow | |
491 ) | |
492 self.projectBrowser.poBrowser.pixmapEditFile.connect(self.__editPixmap) | |
493 self.projectBrowser.poBrowser.pixmapFile.connect(self.__showPixmap) | |
494 self.projectBrowser.poBrowser.svgFile.connect(self.__showSvg) | |
495 self.projectBrowser.poBrowser.umlFile.connect(self.__showUml) | |
496 self.projectBrowser.poBrowser.binaryFile.connect(self.__openHexEditor) | |
497 | 430 |
498 self.project.sourceFile.connect(self.viewmanager.openSourceFile) | 431 self.project.sourceFile.connect(self.viewmanager.openSourceFile) |
499 self.project.designerFile.connect(self.__designer) | 432 self.project.designerFile.connect(self.__designer) |
500 self.project.linguistFile.connect(self.__linguist) | 433 self.project.linguistFile.connect(self.__linguist) |
501 self.project.projectOpened.connect(self.viewmanager.projectOpened) | 434 self.project.projectOpened.connect(self.viewmanager.projectOpened) |
523 self.debuggerUI.resetUI.connect(self.viewmanager.handleResetUI) | 456 self.debuggerUI.resetUI.connect(self.viewmanager.handleResetUI) |
524 self.debuggerUI.resetUI.connect(self.debugViewer.handleResetUI) | 457 self.debuggerUI.resetUI.connect(self.debugViewer.handleResetUI) |
525 self.debuggerUI.resetUI.connect(self.__debuggingDone) | 458 self.debuggerUI.resetUI.connect(self.__debuggingDone) |
526 self.debuggerUI.debuggingStarted.connect(self.__programChange) | 459 self.debuggerUI.debuggingStarted.connect(self.__programChange) |
527 self.debuggerUI.debuggingStarted.connect(self.__debuggingStarted) | 460 self.debuggerUI.debuggingStarted.connect(self.__debuggingStarted) |
528 self.debuggerUI.compileForms.connect( | 461 self.debuggerUI.processChangedProjectFiles.connect( |
529 self.projectBrowser.pfBrowser.compileChangedForms | 462 self.projectBrowser.processChangedProjectFiles |
530 ) | 463 ) |
531 self.debuggerUI.compileResources.connect( | 464 self.debuggerUI.processChangedProjectFiles.connect( |
532 self.projectBrowser.prBrowser.compileChangedResources | 465 self.project.processChangedProjectFiles |
533 ) | 466 ) |
534 self.debuggerUI.executeMake.connect(self.project.executeMake) | |
535 self.debuggerUI.appendStdout.connect(self.appendToStdout) | 467 self.debuggerUI.appendStdout.connect(self.appendToStdout) |
536 | 468 |
537 self.__debugServer.clientDisassembly.connect( | 469 self.__debugServer.clientDisassembly.connect( |
538 self.debugViewer.disassemblyViewer.showDisassembly | 470 self.debugViewer.disassemblyViewer.showDisassembly |
539 ) | 471 ) |
550 self.appendStdout.connect(self.logViewer.appendToStdout) | 482 self.appendStdout.connect(self.logViewer.appendToStdout) |
551 self.appendStderr.connect(self.logViewer.appendToStderr) | 483 self.appendStderr.connect(self.logViewer.appendToStderr) |
552 self.preferencesChanged.connect(self.shell.handlePreferencesChanged) | 484 self.preferencesChanged.connect(self.shell.handlePreferencesChanged) |
553 self.preferencesChanged.connect(self.project.handlePreferencesChanged) | 485 self.preferencesChanged.connect(self.project.handlePreferencesChanged) |
554 self.preferencesChanged.connect(self.projectBrowser.handlePreferencesChanged) | 486 self.preferencesChanged.connect(self.projectBrowser.handlePreferencesChanged) |
555 self.preferencesChanged.connect( | |
556 self.projectBrowser.psBrowser.handlePreferencesChanged | |
557 ) | |
558 self.preferencesChanged.connect( | |
559 self.projectBrowser.pfBrowser.handlePreferencesChanged | |
560 ) | |
561 self.preferencesChanged.connect( | |
562 self.projectBrowser.prBrowser.handlePreferencesChanged | |
563 ) | |
564 self.preferencesChanged.connect( | |
565 self.projectBrowser.ptBrowser.handlePreferencesChanged | |
566 ) | |
567 self.preferencesChanged.connect( | |
568 self.projectBrowser.piBrowser.handlePreferencesChanged | |
569 ) | |
570 self.preferencesChanged.connect( | |
571 self.projectBrowser.ppBrowser.handlePreferencesChanged | |
572 ) | |
573 self.preferencesChanged.connect( | |
574 self.projectBrowser.poBrowser.handlePreferencesChanged | |
575 ) | |
576 self.preferencesChanged.connect(self.taskViewer.handlePreferencesChanged) | 487 self.preferencesChanged.connect(self.taskViewer.handlePreferencesChanged) |
577 self.preferencesChanged.connect(self.pluginManager.preferencesChanged) | 488 self.preferencesChanged.connect(self.pluginManager.preferencesChanged) |
578 self.preferencesChanged.connect(self.__debugServer.preferencesChanged) | 489 self.preferencesChanged.connect(self.__debugServer.preferencesChanged) |
579 self.preferencesChanged.connect(self.debugViewer.preferencesChanged) | 490 self.preferencesChanged.connect(self.debugViewer.preferencesChanged) |
580 self.preferencesChanged.connect( | 491 self.preferencesChanged.connect( |
750 self.pluginManager.activatePlugins() | 661 self.pluginManager.activatePlugins() |
751 splash.showMessage(self.tr("Generating Plugins Toolbars...")) | 662 splash.showMessage(self.tr("Generating Plugins Toolbars...")) |
752 self.pluginManager.initPluginToolbars(self.toolbarManager) | 663 self.pluginManager.initPluginToolbars(self.toolbarManager) |
753 if Preferences.getPluginManager("StartupCleanup"): | 664 if Preferences.getPluginManager("StartupCleanup"): |
754 splash.showMessage(self.tr("Cleaning Plugins Download Area...")) | 665 splash.showMessage(self.tr("Cleaning Plugins Download Area...")) |
755 from eric7.PluginManager.PluginRepositoryDialog import ( | |
756 PluginRepositoryDownloadCleanup, | |
757 ) | |
758 | |
759 PluginRepositoryDownloadCleanup(quiet=True) | 666 PluginRepositoryDownloadCleanup(quiet=True) |
760 | 667 |
761 # now read the keyboard shortcuts for all the actions | 668 # now read the keyboard shortcuts for all the actions |
762 from eric7.Preferences import Shortcuts | |
763 | |
764 Shortcuts.readShortcuts() | 669 Shortcuts.readShortcuts() |
765 | 670 |
766 # restore toolbar manager state | 671 # restore toolbar manager state |
767 splash.showMessage(self.tr("Restoring Toolbarmanager...")) | 672 splash.showMessage(self.tr("Restoring Toolbarmanager...")) |
768 self.toolbarManager.restoreState(Preferences.getUI("ToolbarManagerState")) | 673 self.toolbarManager.restoreState(Preferences.getUI("ToolbarManagerState")) |
795 | 700 |
796 # now start the debug client with the most recently used virtual | 701 # now start the debug client with the most recently used virtual |
797 # environment | 702 # environment |
798 splash.showMessage(self.tr("Starting Debugger...")) | 703 splash.showMessage(self.tr("Starting Debugger...")) |
799 if Preferences.getShell("StartWithMostRecentlyUsedEnvironment"): | 704 if Preferences.getShell("StartWithMostRecentlyUsedEnvironment"): |
800 self.__debugServer.startClient( | 705 venvName=Preferences.getShell("LastVirtualEnvironment") |
801 False, venvName=Preferences.getShell("LastVirtualEnvironment") | 706 if venvName == "embedded environment": |
802 ) | 707 venvName = "" |
708 self.__debugServer.startClient(False, venvName=venvName) | |
803 else: | 709 else: |
804 self.__debugServer.startClient(False) | 710 self.__debugServer.startClient(False) |
805 | 711 |
806 # attributes for the network objects | 712 # attributes for the network objects |
807 self.__networkManager = QNetworkAccessManager(self) | 713 self.__networkManager = QNetworkAccessManager(self) |
839 | 745 |
840 def __createObjects(self): | 746 def __createObjects(self): |
841 """ | 747 """ |
842 Private method to create the various application objects. | 748 Private method to create the various application objects. |
843 """ | 749 """ |
750 from eric7 import ViewManager | |
751 from eric7.Debugger.DebugViewer import DebugViewer | |
752 from eric7.JediInterface.AssistantJedi import AssistantJedi | |
753 from eric7.MultiProject.MultiProjectBrowser import MultiProjectBrowser | |
754 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryWidget | |
755 from eric7.Project.ProjectBrowser import ProjectBrowser | |
756 from eric7.QScintilla.Shell import ShellAssembly | |
757 from eric7.Tasks.TaskViewer import TaskViewer | |
758 from eric7.VCS.StatusWidget import StatusWidget | |
759 from eric7.VirtualEnv.VirtualenvManagerWidgets import VirtualenvManagerWidget | |
760 | |
761 from .LogView import LogViewer | |
762 from .Previewer import Previewer | |
763 from .PythonAstViewer import PythonAstViewer | |
764 from .PythonDisViewer import PythonDisViewer | |
765 | |
844 # Create the view manager depending on the configuration setting | 766 # Create the view manager depending on the configuration setting |
845 logging.debug("Creating Viewmanager...") | 767 logging.debug("Creating Viewmanager...") |
846 from eric7 import ViewManager | |
847 | |
848 self.viewmanager = ViewManager.factory( | 768 self.viewmanager = ViewManager.factory( |
849 self, self, self.__debugServer, self.pluginManager | 769 self, self, self.__debugServer, self.pluginManager |
850 ) | 770 ) |
851 | 771 |
852 # Create previewer | 772 # Create previewer |
853 logging.debug("Creating Previewer...") | 773 logging.debug("Creating Previewer...") |
854 from .Previewer import Previewer | |
855 | |
856 self.__previewer = Previewer(self.viewmanager) | 774 self.__previewer = Previewer(self.viewmanager) |
857 | 775 |
858 # Create AST viewer | 776 # Create AST viewer |
859 logging.debug("Creating Python AST Viewer") | 777 logging.debug("Creating Python AST Viewer") |
860 from .PythonAstViewer import PythonAstViewer | |
861 | |
862 self.__astViewer = PythonAstViewer(self.viewmanager) | 778 self.__astViewer = PythonAstViewer(self.viewmanager) |
863 | 779 |
864 # Create DIS viewer | 780 # Create DIS viewer |
865 logging.debug("Creating Python Disassembly Viewer") | 781 logging.debug("Creating Python Disassembly Viewer") |
866 from .PythonDisViewer import PythonDisViewer | |
867 | |
868 self.__disViewer = PythonDisViewer(self.viewmanager) | 782 self.__disViewer = PythonDisViewer(self.viewmanager) |
869 | 783 |
870 # Create the project browser | 784 # Create the project browser |
871 logging.debug("Creating Project Browser...") | 785 logging.debug("Creating Project Browser...") |
872 from eric7.Project.ProjectBrowser import ProjectBrowser | |
873 | |
874 self.projectBrowser = ProjectBrowser(self.project) | 786 self.projectBrowser = ProjectBrowser(self.project) |
875 | 787 |
876 # Create the multi project browser | 788 # Create the multi project browser |
877 logging.debug("Creating Multiproject Browser...") | 789 logging.debug("Creating Multiproject Browser...") |
878 from eric7.MultiProject.MultiProjectBrowser import MultiProjectBrowser | |
879 | |
880 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, self.project) | 790 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, self.project) |
881 | 791 |
882 # Create the task viewer part of the user interface | 792 # Create the task viewer part of the user interface |
883 logging.debug("Creating Task Viewer...") | 793 logging.debug("Creating Task Viewer...") |
884 from eric7.Tasks.TaskViewer import TaskViewer | |
885 | |
886 self.taskViewer = TaskViewer(None, self.project) | 794 self.taskViewer = TaskViewer(None, self.project) |
887 | 795 |
888 # Create the log viewer part of the user interface | 796 # Create the log viewer part of the user interface |
889 logging.debug("Creating Log Viewer...") | 797 logging.debug("Creating Log Viewer...") |
890 from .LogView import LogViewer | |
891 | |
892 self.logViewer = LogViewer(self) | 798 self.logViewer = LogViewer(self) |
893 | 799 |
894 # Create the debug viewer | 800 # Create the debug viewer |
895 logging.debug("Creating Debug Viewer...") | 801 logging.debug("Creating Debug Viewer...") |
896 from eric7.Debugger.DebugViewer import DebugViewer | |
897 | |
898 self.debugViewer = DebugViewer(self.__debugServer) | 802 self.debugViewer = DebugViewer(self.__debugServer) |
899 | 803 |
900 # Create the shell | 804 # Create the shell |
901 logging.debug("Creating Shell...") | 805 logging.debug("Creating Shell...") |
902 from eric7.QScintilla.Shell import ShellAssembly | |
903 | |
904 self.shellAssembly = ShellAssembly( | 806 self.shellAssembly = ShellAssembly( |
905 self.__debugServer, self.viewmanager, self.project, True | 807 self.__debugServer, self.viewmanager, self.project, True |
906 ) | 808 ) |
907 self.shell = self.shellAssembly.shell() | 809 self.shell = self.shellAssembly.shell() |
908 | 810 |
909 if Preferences.getUI("ShowTemplateViewer"): | 811 if Preferences.getUI("ShowTemplateViewer"): |
910 # Create the template viewer part of the user interface | 812 # Create the template viewer part of the user interface |
911 logging.debug("Creating Template Viewer...") | 813 logging.debug("Creating Template Viewer...") |
912 from eric7.Templates.TemplateViewer import TemplateViewer | 814 from eric7.Templates.TemplateViewer import ( # __IGNORE_WARNING_I101__ |
815 TemplateViewer, | |
816 ) | |
913 | 817 |
914 self.templateViewer = TemplateViewer(None, self.viewmanager) | 818 self.templateViewer = TemplateViewer(None, self.viewmanager) |
915 else: | 819 else: |
916 logging.debug("Template Viewer disabled") | 820 logging.debug("Template Viewer disabled") |
917 self.templateViewer = None | 821 self.templateViewer = None |
918 | 822 |
919 if Preferences.getUI("ShowFileBrowser"): | 823 if Preferences.getUI("ShowFileBrowser"): |
920 # Create the file browser | 824 # Create the file browser |
921 logging.debug("Creating File Browser...") | 825 logging.debug("Creating File Browser...") |
922 from .Browser import Browser | 826 from .Browser import Browser # __IGNORE_WARNING_I101__ |
923 | 827 |
924 self.browser = Browser() | 828 self.browser = Browser() |
925 else: | 829 else: |
926 logging.debug("File Browser disabled") | 830 logging.debug("File Browser disabled") |
927 self.browser = None | 831 self.browser = None |
928 | 832 |
929 if Preferences.getUI("ShowSymbolsViewer"): | 833 if Preferences.getUI("ShowSymbolsViewer"): |
930 # Create the symbols viewer | 834 # Create the symbols viewer |
931 logging.debug("Creating Symbols Viewer...") | 835 logging.debug("Creating Symbols Viewer...") |
932 from .SymbolsWidget import SymbolsWidget | 836 from .SymbolsWidget import SymbolsWidget # __IGNORE_WARNING_I101__ |
933 | 837 |
934 self.symbolsViewer = SymbolsWidget() | 838 self.symbolsViewer = SymbolsWidget() |
935 else: | 839 else: |
936 logging.debug("Symbols Viewer disabled") | 840 logging.debug("Symbols Viewer disabled") |
937 self.symbolsViewer = None | 841 self.symbolsViewer = None |
938 | 842 |
939 if Preferences.getUI("ShowCodeDocumentationViewer"): | 843 if Preferences.getUI("ShowCodeDocumentationViewer"): |
940 # Create the code documentation viewer | 844 # Create the code documentation viewer |
941 logging.debug("Creating Code Documentation Viewer...") | 845 logging.debug("Creating Code Documentation Viewer...") |
942 from .CodeDocumentationViewer import CodeDocumentationViewer | 846 from .CodeDocumentationViewer import ( # __IGNORE_WARNING_I101__ |
847 CodeDocumentationViewer, | |
848 ) | |
943 | 849 |
944 self.codeDocumentationViewer = CodeDocumentationViewer(self) | 850 self.codeDocumentationViewer = CodeDocumentationViewer(self) |
945 else: | 851 else: |
946 logging.debug("Code Documentation Viewer disabled") | 852 logging.debug("Code Documentation Viewer disabled") |
947 self.codeDocumentationViewer = None | 853 self.codeDocumentationViewer = None |
948 | 854 |
949 if Preferences.getUI("ShowPyPIPackageManager"): | 855 if Preferences.getUI("ShowPyPIPackageManager"): |
950 # Create the PyPI package manager | 856 # Create the PyPI package manager |
951 logging.debug("Creating PyPI Package Manager...") | 857 logging.debug("Creating PyPI Package Manager...") |
952 from eric7.PipInterface.PipPackagesWidget import PipPackagesWidget | 858 from eric7.PipInterface.PipPackagesWidget import ( # __IGNORE_WARNING__ |
859 PipPackagesWidget, | |
860 ) | |
953 | 861 |
954 self.pipWidget = PipPackagesWidget(self.pipInterface) | 862 self.pipWidget = PipPackagesWidget(self.pipInterface) |
955 else: | 863 else: |
956 logging.debug("PyPI Package Manager disabled") | 864 logging.debug("PyPI Package Manager disabled") |
957 self.pipWidget = None | 865 self.pipWidget = None |
958 | 866 |
959 if Preferences.getUI("ShowCondaPackageManager"): | 867 if Preferences.getUI("ShowCondaPackageManager"): |
960 # Create the conda package manager | 868 # Create the conda package manager |
961 logging.debug("Creating Conda Package Manager...") | 869 logging.debug("Creating Conda Package Manager...") |
962 from eric7.CondaInterface.CondaPackagesWidget import CondaPackagesWidget | 870 from eric7.CondaInterface.CondaPackagesWidget import ( # __IGNORE_WARNING__ |
871 CondaPackagesWidget, | |
872 ) | |
963 | 873 |
964 self.condaWidget = CondaPackagesWidget(self.condaInterface) | 874 self.condaWidget = CondaPackagesWidget(self.condaInterface) |
965 else: | 875 else: |
966 logging.debug("Conda Package Manager disabled") | 876 logging.debug("Conda Package Manager disabled") |
967 self.condaWidget = None | 877 self.condaWidget = None |
968 | 878 |
969 if Preferences.getUI("ShowCooperation"): | 879 if Preferences.getUI("ShowCooperation"): |
970 # Create the chat part of the user interface | 880 # Create the chat part of the user interface |
971 logging.debug("Creating Chat Widget...") | 881 logging.debug("Creating Chat Widget...") |
972 from eric7.Cooperation.ChatWidget import ChatWidget | 882 from eric7.Cooperation.ChatWidget import ( # __IGNORE_WARNING_I101__ |
883 ChatWidget, | |
884 ) | |
973 | 885 |
974 self.cooperation = ChatWidget(self) | 886 self.cooperation = ChatWidget(self) |
975 else: | 887 else: |
976 logging.debug("Chat Widget disabled") | 888 logging.debug("Chat Widget disabled") |
977 self.cooperation = None | 889 self.cooperation = None |
978 | 890 |
979 if Preferences.getUI("ShowIrc"): | 891 if Preferences.getUI("ShowIrc"): |
980 # Create the IRC part of the user interface | 892 # Create the IRC part of the user interface |
981 logging.debug("Creating IRC Widget...") | 893 logging.debug("Creating IRC Widget...") |
982 from eric7.Network.IRC.IrcWidget import IrcWidget | 894 from eric7.Network.IRC.IrcWidget import IrcWidget # __IGNORE_WARNING_I101__ |
983 | 895 |
984 self.irc = IrcWidget(self) | 896 self.irc = IrcWidget(self) |
985 else: | 897 else: |
986 logging.debug("IRC Widget disabled") | 898 logging.debug("IRC Widget disabled") |
987 self.irc = None | 899 self.irc = None |
988 | 900 |
989 if Preferences.getUI("ShowMicroPython"): | 901 if Preferences.getUI("ShowMicroPython"): |
990 # Create the MicroPython part of the user interface | 902 # Create the MicroPython part of the user interface |
991 logging.debug("Creating MicroPython Widget...") | 903 logging.debug("Creating MicroPython Widget...") |
992 from eric7.MicroPython.MicroPythonWidget import MicroPythonWidget | 904 from eric7.MicroPython.MicroPythonWidget import ( # __IGNORE_WARNING_I101__ |
905 MicroPythonWidget, | |
906 ) | |
993 | 907 |
994 self.microPythonWidget = MicroPythonWidget(self) | 908 self.microPythonWidget = MicroPythonWidget(self) |
995 else: | 909 else: |
996 logging.debug("MicroPython Widget disabled") | 910 logging.debug("MicroPython Widget disabled") |
997 self.microPythonWidget = None | 911 self.microPythonWidget = None |
998 | 912 |
999 if Preferences.getUI("ShowNumbersViewer"): | 913 if Preferences.getUI("ShowNumbersViewer"): |
1000 # Create the numbers viewer | 914 # Create the numbers viewer |
1001 logging.debug("Creating Numbers Viewer...") | 915 logging.debug("Creating Numbers Viewer...") |
1002 from .NumbersWidget import NumbersWidget | 916 from .NumbersWidget import NumbersWidget # __IGNORE_WARNING_I101__ |
1003 | 917 |
1004 self.numbersViewer = NumbersWidget() | 918 self.numbersViewer = NumbersWidget() |
1005 else: | 919 else: |
1006 logging.debug("Numbers Viewer disabled") | 920 logging.debug("Numbers Viewer disabled") |
1007 self.numbersViewer = None | 921 self.numbersViewer = None |
1008 | 922 |
1009 # Create the Jedi Assistant | 923 # Create the Jedi Assistant |
1010 logging.debug("Creating Jedi Assistant...") | 924 logging.debug("Creating Jedi Assistant...") |
1011 from eric7.JediInterface.AssistantJedi import AssistantJedi | |
1012 | |
1013 self.jediAssistant = AssistantJedi(self, self.viewmanager, self.project) | 925 self.jediAssistant = AssistantJedi(self, self.viewmanager, self.project) |
1014 | 926 |
1015 # Create the plug-ins repository viewer | 927 # Create the plug-ins repository viewer |
1016 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryWidget | |
1017 | |
1018 self.pluginRepositoryViewer = PluginRepositoryWidget( | 928 self.pluginRepositoryViewer = PluginRepositoryWidget( |
1019 self.pluginManager, integrated=True, parent=self | 929 self.pluginManager, integrated=True, parent=self |
1020 ) | 930 ) |
1021 self.pluginRepositoryViewer.closeAndInstall.connect( | 931 self.pluginRepositoryViewer.closeAndInstall.connect( |
1022 self.__installDownloadedPlugins | 932 self.__installDownloadedPlugins |
1023 ) | 933 ) |
1024 | 934 |
1025 # Create the virtual environments management widget | 935 # Create the virtual environments management widget |
1026 from eric7.VirtualEnv.VirtualenvManagerWidgets import VirtualenvManagerWidget | |
1027 | |
1028 self.__virtualenvManagerWidget = VirtualenvManagerWidget( | 936 self.__virtualenvManagerWidget = VirtualenvManagerWidget( |
1029 self.virtualenvManager, self | 937 self.virtualenvManager, self |
1030 ) | 938 ) |
1031 | 939 |
1032 self.__findFileDialog = None | 940 self.__findFileDialog = None |
1033 self.__replaceFileDialog = None | 941 self.__replaceFileDialog = None |
1034 if Preferences.getUI("ShowFindFileWidget"): | 942 if Preferences.getUI("ShowFindFileWidget"): |
1035 # Create the find in files widget | 943 # Create the find in files widget |
1036 from .FindFileWidget import FindFileWidget | 944 from .FindFileWidget import FindFileWidget # __IGNORE_WARNING_I101__ |
1037 | 945 |
1038 self.__findFileWidget = FindFileWidget(self.project, self) | 946 self.__findFileWidget = FindFileWidget(self.project, self) |
1039 self.__findFileWidget.sourceFile.connect(self.viewmanager.openSourceFile) | 947 self.__findFileWidget.sourceFile.connect(self.viewmanager.openSourceFile) |
1040 self.__findFileWidget.designerFile.connect(self.__designer) | 948 self.__findFileWidget.designerFile.connect(self.__designer) |
1041 self.__findFileWidget.linguistFile.connect(self.__linguist) | 949 self.__findFileWidget.linguistFile.connect(self.__linguist) |
1047 self.__findFileWidget = None | 955 self.__findFileWidget = None |
1048 | 956 |
1049 self.__findLocationDialog = None | 957 self.__findLocationDialog = None |
1050 if Preferences.getUI("ShowFindLocationWidget"): | 958 if Preferences.getUI("ShowFindLocationWidget"): |
1051 # Create the find location (file) widget | 959 # Create the find location (file) widget |
1052 from .FindLocationWidget import FindLocationWidget | 960 from .FindLocationWidget import ( # __IGNORE_WARNING_I101__ |
961 FindLocationWidget, | |
962 ) | |
1053 | 963 |
1054 self.__findLocationWidget = FindLocationWidget(self.project, self) | 964 self.__findLocationWidget = FindLocationWidget(self.project, self) |
1055 self.__findLocationWidget.sourceFile.connect( | 965 self.__findLocationWidget.sourceFile.connect( |
1056 self.viewmanager.openSourceFile | 966 self.viewmanager.openSourceFile |
1057 ) | 967 ) |
1063 self.__findLocationWidget.umlFile.connect(self.__showUml) | 973 self.__findLocationWidget.umlFile.connect(self.__showUml) |
1064 else: | 974 else: |
1065 self.__findLocationWidget = None | 975 self.__findLocationWidget = None |
1066 | 976 |
1067 # Create the VCS Status widget | 977 # Create the VCS Status widget |
1068 from eric7.VCS.StatusWidget import StatusWidget | |
1069 | |
1070 self.__vcsStatusWidget = StatusWidget(self.project, self.viewmanager, self) | 978 self.__vcsStatusWidget = StatusWidget(self.project, self.viewmanager, self) |
1071 | 979 |
1072 if ( | 980 if ( |
1073 Preferences.getUI("ShowInternalHelpViewer") | 981 Preferences.getUI("ShowInternalHelpViewer") |
1074 or Preferences.getHelp("HelpViewerType") == 0 | 982 or Preferences.getHelp("HelpViewerType") == 0 |
1075 ): | 983 ): |
1076 # Create the embedded help viewer | 984 # Create the embedded help viewer |
1077 logging.debug("Creating Internal Help Viewer...") | 985 logging.debug("Creating Internal Help Viewer...") |
1078 from eric7.HelpViewer.HelpViewerWidget import HelpViewerWidget | 986 from eric7.HelpViewer.HelpViewerWidget import ( # __IGNORE_WARNING_I101__ |
987 HelpViewerWidget, | |
988 ) | |
1079 | 989 |
1080 self.__helpViewerWidget = HelpViewerWidget(self) | 990 self.__helpViewerWidget = HelpViewerWidget(self) |
1081 else: | 991 else: |
1082 logging.debug("Internal Help Viewer disabled...") | 992 logging.debug("Internal Help Viewer disabled...") |
1083 self.__helpViewerWidget = None | 993 self.__helpViewerWidget = None |
1138 def __createToolboxesLayout(self): | 1048 def __createToolboxesLayout(self): |
1139 """ | 1049 """ |
1140 Private method to create the Toolboxes layout. | 1050 Private method to create the Toolboxes layout. |
1141 """ | 1051 """ |
1142 from eric7.EricWidgets.EricToolBox import ( | 1052 from eric7.EricWidgets.EricToolBox import ( |
1053 EricHorizontalToolBox, | |
1143 EricVerticalToolBox, | 1054 EricVerticalToolBox, |
1144 EricHorizontalToolBox, | |
1145 ) | 1055 ) |
1146 | 1056 |
1147 logging.debug("Creating Toolboxes Layout...") | 1057 logging.debug("Creating Toolboxes Layout...") |
1148 | 1058 |
1149 # Create the left toolbox | 1059 # Create the left toolbox |
4363 | 4273 |
4364 def __initStatusbar(self): | 4274 def __initStatusbar(self): |
4365 """ | 4275 """ |
4366 Private slot to set up the status bar. | 4276 Private slot to set up the status bar. |
4367 """ | 4277 """ |
4278 from eric7.VCS.StatusMonitorLed import StatusMonitorLedWidget | |
4279 | |
4368 self.__statusBar = self.statusBar() | 4280 self.__statusBar = self.statusBar() |
4369 self.__statusBar.setSizeGripEnabled(True) | 4281 self.__statusBar.setSizeGripEnabled(True) |
4370 | 4282 |
4371 self.sbLanguage = EricClickableLabel(self.__statusBar) | 4283 self.sbLanguage = EricClickableLabel(self.__statusBar) |
4372 self.__statusBar.addPermanentWidget(self.sbLanguage) | 4284 self.__statusBar.addPermanentWidget(self.sbLanguage) |
4443 self.sbEncoding, | 4355 self.sbEncoding, |
4444 self.sbLanguage, | 4356 self.sbLanguage, |
4445 self.sbEol, | 4357 self.sbEol, |
4446 self.sbZoom, | 4358 self.sbZoom, |
4447 ) | 4359 ) |
4448 | |
4449 from eric7.VCS.StatusMonitorLed import StatusMonitorLedWidget | |
4450 | 4360 |
4451 self.sbVcsMonitorLed = StatusMonitorLedWidget(self.project, self.__statusBar) | 4361 self.sbVcsMonitorLed = StatusMonitorLedWidget(self.project, self.__statusBar) |
4452 self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed) | 4362 self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed) |
4453 | 4363 |
4454 self.networkIcon = EricNetworkIcon(self.__statusBar) | 4364 self.networkIcon = EricNetworkIcon(self.__statusBar) |
4603 Private slot to handle the Versions dialog. | 4513 Private slot to handle the Versions dialog. |
4604 """ | 4514 """ |
4605 from .VersionsDialog import VersionsDialog | 4515 from .VersionsDialog import VersionsDialog |
4606 | 4516 |
4607 try: | 4517 try: |
4608 try: | |
4609 from PyQt6 import sip | |
4610 except ImportError: | |
4611 import sip | |
4612 sip_version_str = sip.SIP_VERSION_STR | 4518 sip_version_str = sip.SIP_VERSION_STR |
4613 except (ImportError, AttributeError): | 4519 except AttributeError: |
4614 sip_version_str = "sip version not available" | 4520 sip_version_str = "sip version not available" |
4615 | 4521 |
4616 sizeStr = "64-Bit" if sys.maxsize > 2**32 else "32-Bit" | 4522 sizeStr = "64-Bit" if sys.maxsize > 2**32 else "32-Bit" |
4617 | 4523 |
4618 versionText = self.tr("""<h2>Version Numbers</h2>""" """<table>""") | 4524 versionText = self.tr("""<h2>Version Numbers</h2>""" """<table>""") |
4630 # PyQt versions | 4536 # PyQt versions |
4631 versionText += ("""<tr><td><b>PyQt6</b></td><td>{0}</td></tr>""").format( | 4537 versionText += ("""<tr><td><b>PyQt6</b></td><td>{0}</td></tr>""").format( |
4632 PYQT_VERSION_STR | 4538 PYQT_VERSION_STR |
4633 ) | 4539 ) |
4634 with contextlib.suppress(ImportError, AttributeError): | 4540 with contextlib.suppress(ImportError, AttributeError): |
4635 from PyQt6 import QtCharts | 4541 from PyQt6 import QtCharts # __IGNORE_WARNING_I10__ |
4636 | 4542 |
4637 versionText += ( | 4543 versionText += ( |
4638 """<tr><td><b>PyQt6-Charts</b></td><td>{0}</td></tr>""" | 4544 """<tr><td><b>PyQt6-Charts</b></td><td>{0}</td></tr>""" |
4639 ).format(QtCharts.PYQT_CHART_VERSION_STR) | 4545 ).format(QtCharts.PYQT_CHART_VERSION_STR) |
4640 with contextlib.suppress(ImportError, AttributeError): | 4546 with contextlib.suppress(ImportError, AttributeError): |
4641 from PyQt6 import QtWebEngineCore | 4547 from PyQt6 import QtWebEngineCore # __IGNORE_WARNING_I10__ |
4642 | 4548 |
4643 versionText += ( | 4549 versionText += ( |
4644 """<tr><td><b>PyQt6-WebEngine</b></td><td>{0}</td></tr>""" | 4550 """<tr><td><b>PyQt6-WebEngine</b></td><td>{0}</td></tr>""" |
4645 ).format(QtWebEngineCore.PYQT_WEBENGINE_VERSION_STR) | 4551 ).format(QtWebEngineCore.PYQT_WEBENGINE_VERSION_STR) |
4646 versionText += ( | 4552 versionText += ( |
4650 sip_version_str | 4556 sip_version_str |
4651 ) | 4557 ) |
4652 | 4558 |
4653 # webengine (chromium) version | 4559 # webengine (chromium) version |
4654 with contextlib.suppress(ImportError): | 4560 with contextlib.suppress(ImportError): |
4655 from eric7.WebBrowser.Tools import WebBrowserTools | 4561 from eric7.WebBrowser.Tools import ( # __IGNORE_WARNING_I101__ |
4562 WebBrowserTools, | |
4563 ) | |
4656 | 4564 |
4657 ( | 4565 ( |
4658 chromiumVersion, | 4566 chromiumVersion, |
4659 chromiumSecurityVersion, | 4567 chromiumSecurityVersion, |
4660 ) = WebBrowserTools.getWebEngineVersions()[0:2] | 4568 ) = WebBrowserTools.getWebEngineVersions()[0:2] |
4709 @param mode mode of the email dialog (string, "bug" or "feature") | 4617 @param mode mode of the email dialog (string, "bug" or "feature") |
4710 @param attachFile name of a file to attach to the email (string) | 4618 @param attachFile name of a file to attach to the email (string) |
4711 @param deleteAttachFile flag indicating to delete the attached file | 4619 @param deleteAttachFile flag indicating to delete the attached file |
4712 after it has been sent (boolean) | 4620 after it has been sent (boolean) |
4713 """ | 4621 """ |
4622 from .EmailDialog import EmailDialog | |
4623 | |
4714 if Preferences.getUser("UseSystemEmailClient"): | 4624 if Preferences.getUser("UseSystemEmailClient"): |
4715 self.__showSystemEmailClient(mode, attachFile, deleteAttachFile) | 4625 self.__showSystemEmailClient(mode, attachFile, deleteAttachFile) |
4716 else: | 4626 else: |
4717 if not Preferences.getUser("UseGoogleMailOAuth2") and ( | 4627 if not Preferences.getUser("UseGoogleMailOAuth2") and ( |
4718 Preferences.getUser("Email") == "" | 4628 Preferences.getUser("Email") == "" |
4728 ), | 4638 ), |
4729 ) | 4639 ) |
4730 self.showPreferences("emailPage") | 4640 self.showPreferences("emailPage") |
4731 return | 4641 return |
4732 | 4642 |
4733 from .EmailDialog import EmailDialog | |
4734 | |
4735 self.dlg = EmailDialog(mode=mode) | 4643 self.dlg = EmailDialog(mode=mode) |
4736 if attachFile is not None: | 4644 if attachFile is not None: |
4737 self.dlg.attachFile(attachFile, deleteAttachFile) | 4645 self.dlg.attachFile(attachFile, deleteAttachFile) |
4738 self.dlg.show() | 4646 self.dlg.show() |
4739 | 4647 |
4771 def checkForErrorLog(self): | 4679 def checkForErrorLog(self): |
4772 """ | 4680 """ |
4773 Public method to check for the presence of an error log and ask the | 4681 Public method to check for the presence of an error log and ask the |
4774 user, what to do with it. | 4682 user, what to do with it. |
4775 """ | 4683 """ |
4684 from .ErrorLogDialog import ErrorLogDialog | |
4685 | |
4776 if Preferences.getUI("CheckErrorLog"): | 4686 if Preferences.getUI("CheckErrorLog"): |
4777 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName) | 4687 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName) |
4778 if os.path.exists(logFile): | 4688 if os.path.exists(logFile): |
4779 from .ErrorLogDialog import ErrorLogDialog | |
4780 | |
4781 dlg = ErrorLogDialog(logFile, False, self) | 4689 dlg = ErrorLogDialog(logFile, False, self) |
4782 dlg.exec() | 4690 dlg.exec() |
4783 | 4691 |
4784 def __hasErrorLog(self): | 4692 def __hasErrorLog(self): |
4785 """ | 4693 """ |
4792 | 4700 |
4793 def __showErrorLog(self): | 4701 def __showErrorLog(self): |
4794 """ | 4702 """ |
4795 Private slot to show the most recent error log message. | 4703 Private slot to show the most recent error log message. |
4796 """ | 4704 """ |
4705 from .ErrorLogDialog import ErrorLogDialog | |
4706 | |
4797 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName) | 4707 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName) |
4798 if os.path.exists(logFile): | 4708 if os.path.exists(logFile): |
4799 from .ErrorLogDialog import ErrorLogDialog | |
4800 | |
4801 dlg = ErrorLogDialog(logFile, True, self) | 4709 dlg = ErrorLogDialog(logFile, True, self) |
4802 dlg.show() | 4710 dlg.show() |
4803 | 4711 |
4804 def __showInstallInfo(self): | 4712 def __showInstallInfo(self): |
4805 """ | 4713 """ |
4814 | 4722 |
4815 def __compareFiles(self): | 4723 def __compareFiles(self): |
4816 """ | 4724 """ |
4817 Private slot to handle the Compare Files dialog. | 4725 Private slot to handle the Compare Files dialog. |
4818 """ | 4726 """ |
4727 from .DiffDialog import DiffDialog | |
4728 | |
4819 aw = self.viewmanager.activeWindow() | 4729 aw = self.viewmanager.activeWindow() |
4820 fn = aw and aw.getFileName() or None | 4730 fn = aw and aw.getFileName() or None |
4821 if self.diffDlg is None: | 4731 if self.diffDlg is None: |
4822 from .DiffDialog import DiffDialog | |
4823 | |
4824 self.diffDlg = DiffDialog() | 4732 self.diffDlg = DiffDialog() |
4825 self.diffDlg.show(fn) | 4733 self.diffDlg.show(fn) |
4826 | 4734 |
4827 def __compareFilesSbs(self): | 4735 def __compareFilesSbs(self): |
4828 """ | 4736 """ |
4829 Private slot to handle the Compare Files dialog. | 4737 Private slot to handle the Compare Files dialog. |
4830 """ | 4738 """ |
4739 from .CompareDialog import CompareDialog | |
4740 | |
4831 aw = self.viewmanager.activeWindow() | 4741 aw = self.viewmanager.activeWindow() |
4832 fn = aw and aw.getFileName() or None | 4742 fn = aw and aw.getFileName() or None |
4833 if self.compareDlg is None: | 4743 if self.compareDlg is None: |
4834 from .CompareDialog import CompareDialog | |
4835 | |
4836 self.compareDlg = CompareDialog() | 4744 self.compareDlg = CompareDialog() |
4837 self.compareDlg.show(fn) | 4745 self.compareDlg.show(fn) |
4838 | 4746 |
4839 def __openMiniEditor(self): | 4747 def __openMiniEditor(self): |
4840 """ | 4748 """ |
5671 def __activateShell(self): | 5579 def __activateShell(self): |
5672 """ | 5580 """ |
5673 Private slot to handle the activation of the Shell window. | 5581 Private slot to handle the activation of the Shell window. |
5674 """ | 5582 """ |
5675 if self.__layoutType == "Toolboxes": | 5583 if self.__layoutType == "Toolboxes": |
5676 self.__shellParent.show() | 5584 self.hToolboxDock.show() |
5677 self.__shellParent.widget().setCurrentWidget(self.shellAssembly) | 5585 self.hToolboxDock.setCurrentWidget(self.shellAssembly) |
5678 elif self.__layoutType == "Sidebars": | 5586 elif self.__layoutType == "Sidebars": |
5679 self.__shellParent.show() | 5587 self.bottomSidebar.show() |
5680 self.__shellParent.setCurrentWidget(self.shellAssembly) | 5588 self.bottomSidebar.setCurrentWidget(self.shellAssembly) |
5681 self.shell.setFocus(Qt.FocusReason.ActiveWindowFocusReason) | 5589 self.shell.setFocus(Qt.FocusReason.ActiveWindowFocusReason) |
5682 | 5590 |
5683 def __activateLogViewer(self): | 5591 def __activateLogViewer(self): |
5684 """ | 5592 """ |
5685 Private slot to handle the activation of the Log Viewer. | 5593 Private slot to handle the activation of the Log Viewer. |
5965 | 5873 |
5966 def __createTestingDialog(self): | 5874 def __createTestingDialog(self): |
5967 """ | 5875 """ |
5968 Private slot to generate the testing dialog on demand. | 5876 Private slot to generate the testing dialog on demand. |
5969 """ | 5877 """ |
5878 from eric7.Testing.TestingWidget import TestingWidget | |
5879 | |
5970 if self.__testingWidget is None: | 5880 if self.__testingWidget is None: |
5971 from eric7.Testing.TestingWidget import TestingWidget | |
5972 | |
5973 self.__testingWidget = TestingWidget() | 5881 self.__testingWidget = TestingWidget() |
5974 self.__testingWidget.testFile.connect(self.viewmanager.setFileLine) | 5882 self.__testingWidget.testFile.connect(self.viewmanager.setFileLine) |
5975 self.__testingWidget.testRunStopped.connect(self.__testingStopped) | 5883 self.__testingWidget.testRunStopped.connect(self.__testingStopped) |
5976 | 5884 |
5977 def __testingStopped(self): | 5885 def __testingStopped(self): |
7162 """ | 7070 """ |
7163 Public slot to set the preferences. | 7071 Public slot to set the preferences. |
7164 | 7072 |
7165 @param pageName name of the configuration page to show (string) | 7073 @param pageName name of the configuration page to show (string) |
7166 """ | 7074 """ |
7075 from eric7.Preferences.ConfigurationDialog import ConfigurationDialog | |
7076 | |
7167 if self.__configurationDialog is None: | 7077 if self.__configurationDialog is None: |
7168 # only one invocation at a time is allowed | 7078 # only one invocation at a time is allowed |
7169 from eric7.Preferences.ConfigurationDialog import ConfigurationDialog | |
7170 | |
7171 self.__configurationDialog = ConfigurationDialog( | 7079 self.__configurationDialog = ConfigurationDialog( |
7172 self, | 7080 self, |
7173 "Configuration", | 7081 "Configuration", |
7174 expandedEntries=self.__expandedConfigurationEntries, | 7082 expandedEntries=self.__expandedConfigurationEntries, |
7175 ) | 7083 ) |
7241 @pyqtSlot() | 7149 @pyqtSlot() |
7242 def __preferencesChanged(self): | 7150 def __preferencesChanged(self): |
7243 """ | 7151 """ |
7244 Private slot to handle a change of the preferences. | 7152 Private slot to handle a change of the preferences. |
7245 """ | 7153 """ |
7154 from eric7.HexEdit.HexEditMainWindow import HexEditMainWindow | |
7155 | |
7246 self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet")) | 7156 self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet")) |
7247 | 7157 |
7248 if Preferences.getUI("SingleApplicationMode"): | 7158 if Preferences.getUI("SingleApplicationMode"): |
7249 if self.SAServer is None: | 7159 if self.SAServer is None: |
7250 self.SAServer = EricSingleApplicationServer() | 7160 self.SAServer = EricSingleApplicationServer() |
7277 else: | 7187 else: |
7278 self.__setWindowCaption(editor="") | 7188 self.__setWindowCaption(editor="") |
7279 | 7189 |
7280 self.performVersionCheck() | 7190 self.performVersionCheck() |
7281 | 7191 |
7282 from eric7.QScintilla.SpellChecker import SpellChecker | |
7283 | |
7284 SpellChecker.setDefaultLanguage( | 7192 SpellChecker.setDefaultLanguage( |
7285 Preferences.getEditor("SpellCheckingDefaultLanguage") | 7193 Preferences.getEditor("SpellCheckingDefaultLanguage") |
7286 ) | 7194 ) |
7287 | 7195 |
7288 with contextlib.suppress(ImportError, AttributeError): | 7196 with contextlib.suppress(ImportError, AttributeError): |
7289 from eric7.EricWidgets.EricSpellCheckedTextEdit import SpellCheckMixin | 7197 from eric7.EricWidgets.EricSpellCheckedTextEdit import ( # __IGNORE_WARNING__ |
7198 SpellCheckMixin, | |
7199 ) | |
7290 | 7200 |
7291 pwl = SpellChecker.getUserDictionaryPath(isException=False) | 7201 pwl = SpellChecker.getUserDictionaryPath(isException=False) |
7292 pel = SpellChecker.getUserDictionaryPath(isException=True) | 7202 pel = SpellChecker.getUserDictionaryPath(isException=True) |
7293 SpellCheckMixin.setDefaultLanguage( | 7203 SpellCheckMixin.setDefaultLanguage( |
7294 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel | 7204 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel |
7299 else: | 7209 else: |
7300 self.__proxyFactory = EricNetworkProxyFactory() | 7210 self.__proxyFactory = EricNetworkProxyFactory() |
7301 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory) | 7211 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory) |
7302 QNetworkProxyFactory.setUseSystemConfiguration(False) | 7212 QNetworkProxyFactory.setUseSystemConfiguration(False) |
7303 | 7213 |
7304 from eric7.HexEdit.HexEditMainWindow import HexEditMainWindow | |
7305 | |
7306 for hexEditor in HexEditMainWindow.windows: | 7214 for hexEditor in HexEditMainWindow.windows: |
7307 hexEditor.preferencesChanged() | 7215 hexEditor.preferencesChanged() |
7308 | 7216 |
7309 # set the keyboard input interval | 7217 # set the keyboard input interval |
7310 interval = Preferences.getUI("KeyboardInputInterval") | 7218 interval = Preferences.getUI("KeyboardInputInterval") |
7332 | 7240 |
7333 self.masterPasswordChanged.emit(oldPassword, newPassword) | 7241 self.masterPasswordChanged.emit(oldPassword, newPassword) |
7334 Preferences.convertPasswords(oldPassword, newPassword) | 7242 Preferences.convertPasswords(oldPassword, newPassword) |
7335 variant = Globals.getWebBrowserSupport() | 7243 variant = Globals.getWebBrowserSupport() |
7336 if variant == "QtWebEngine": | 7244 if variant == "QtWebEngine": |
7337 from eric7.WebBrowser.Passwords.PasswordManager import PasswordManager | 7245 from eric7.WebBrowser.Passwords.PasswordManager import ( # __IGNORE_WARNING__ |
7246 PasswordManager, | |
7247 ) | |
7338 | 7248 |
7339 pwManager = PasswordManager() | 7249 pwManager = PasswordManager() |
7340 pwManager.masterPasswordChanged(oldPassword, newPassword) | 7250 pwManager.masterPasswordChanged(oldPassword, newPassword) |
7341 Utilities.crypto.changeRememberedMaster(newPassword) | 7251 Utilities.crypto.changeRememberedMaster(newPassword) |
7342 | 7252 |
7349 def __showExternalTools(self): | 7259 def __showExternalTools(self): |
7350 """ | 7260 """ |
7351 Private slot to display a dialog show a list of external tools used | 7261 Private slot to display a dialog show a list of external tools used |
7352 by eric. | 7262 by eric. |
7353 """ | 7263 """ |
7264 from eric7.Preferences.ProgramsDialog import ProgramsDialog | |
7265 | |
7354 if self.programsDialog is None: | 7266 if self.programsDialog is None: |
7355 from eric7.Preferences.ProgramsDialog import ProgramsDialog | |
7356 | |
7357 self.programsDialog = ProgramsDialog(self) | 7267 self.programsDialog = ProgramsDialog(self) |
7358 self.programsDialog.show() | 7268 self.programsDialog.show() |
7359 | 7269 |
7360 def __configViewProfiles(self): | 7270 def __configViewProfiles(self): |
7361 """ | 7271 """ |
7388 | 7298 |
7389 def __configShortcuts(self): | 7299 def __configShortcuts(self): |
7390 """ | 7300 """ |
7391 Private slot to configure the keyboard shortcuts. | 7301 Private slot to configure the keyboard shortcuts. |
7392 """ | 7302 """ |
7303 from eric7.Preferences.ShortcutsDialog import ShortcutsDialog | |
7304 | |
7393 if self.shortcutsDialog is None: | 7305 if self.shortcutsDialog is None: |
7394 from eric7.Preferences.ShortcutsDialog import ShortcutsDialog | |
7395 | |
7396 self.shortcutsDialog = ShortcutsDialog(self) | 7306 self.shortcutsDialog = ShortcutsDialog(self) |
7397 self.shortcutsDialog.populate() | 7307 self.shortcutsDialog.populate() |
7398 self.shortcutsDialog.show() | 7308 self.shortcutsDialog.show() |
7399 | 7309 |
7400 def __exportShortcuts(self): | 7310 def __exportShortcuts(self): |
7431 if fpath.exists() | 7341 if fpath.exists() |
7432 else True | 7342 else True |
7433 ) | 7343 ) |
7434 | 7344 |
7435 if ok: | 7345 if ok: |
7436 from eric7.Preferences import Shortcuts | |
7437 | |
7438 Shortcuts.exportShortcuts(str(fpath)) | 7346 Shortcuts.exportShortcuts(str(fpath)) |
7439 | 7347 |
7440 def __importShortcuts(self): | 7348 def __importShortcuts(self): |
7441 """ | 7349 """ |
7442 Private slot to import the keyboard shortcuts. | 7350 Private slot to import the keyboard shortcuts. |
7449 "Keyboard Shortcuts File (*.ekj);;" "XML Keyboard shortcut file (*.e4k)" | 7357 "Keyboard Shortcuts File (*.ekj);;" "XML Keyboard shortcut file (*.e4k)" |
7450 ), | 7358 ), |
7451 ) | 7359 ) |
7452 | 7360 |
7453 if fn: | 7361 if fn: |
7454 from eric7.Preferences import Shortcuts | |
7455 | |
7456 Shortcuts.importShortcuts(fn) | 7362 Shortcuts.importShortcuts(fn) |
7457 | 7363 |
7458 def __showCertificatesDialog(self): | 7364 def __showCertificatesDialog(self): |
7459 """ | 7365 """ |
7460 Private slot to show the certificates management dialog. | 7366 Private slot to show the certificates management dialog. |
7502 # clear the shell histories | 7408 # clear the shell histories |
7503 self.shell.clearAllHistories() | 7409 self.shell.clearAllHistories() |
7504 if testing: | 7410 if testing: |
7505 # clear the unit test histories | 7411 # clear the unit test histories |
7506 if self.__testingWidget is None: | 7412 if self.__testingWidget is None: |
7507 from eric7.Testing.TestingWidget import clearSavedHistories | |
7508 | |
7509 clearSavedHistories() | 7413 clearSavedHistories() |
7510 else: | 7414 else: |
7511 self.__testingWidget.clearRecent() | 7415 self.__testingWidget.clearRecent() |
7512 if vcs: | 7416 if vcs: |
7513 # clear the VCS related histories | 7417 # clear the VCS related histories |
7578 | 7482 |
7579 @param fn filename of the opened editor (string) | 7483 @param fn filename of the opened editor (string) |
7580 """ | 7484 """ |
7581 self.wizardsMenuAct.setEnabled(len(self.__menus["wizards"].actions()) > 0) | 7485 self.wizardsMenuAct.setEnabled(len(self.__menus["wizards"].actions()) > 0) |
7582 | 7486 |
7583 if fn and str(fn) != "None": | 7487 if ( |
7584 from eric7 import Testing | 7488 fn |
7585 | 7489 and str(fn) != "None" |
7586 if Testing.isLanguageSupported( | 7490 and Testing.isLanguageSupported( |
7587 self.viewmanager.getOpenEditor(fn).getFileType() | 7491 self.viewmanager.getOpenEditor(fn).getFileType() |
7588 ): | 7492 ) |
7589 self.testScriptAct.setEnabled(True) | 7493 ): |
7590 self.__testingEditorOpen = True | 7494 self.testScriptAct.setEnabled(True) |
7495 self.__testingEditorOpen = True | |
7591 | 7496 |
7592 def __checkActions(self, editor): | 7497 def __checkActions(self, editor): |
7593 """ | 7498 """ |
7594 Private slot to check some actions for their enable/disable status. | 7499 Private slot to check some actions for their enable/disable status. |
7595 | 7500 |
7596 @param editor editor window | 7501 @param editor editor window |
7597 """ | 7502 """ |
7598 fn = editor.getFileName() if editor else None | 7503 fn = editor.getFileName() if editor else None |
7599 | 7504 |
7600 if fn: | 7505 if fn and Testing.isLanguageSupported(editor.getFileType()): |
7601 from eric7 import Testing | 7506 self.testScriptAct.setEnabled(True) |
7602 | 7507 self.__testingEditorOpen = True |
7603 if Testing.isLanguageSupported(editor.getFileType()): | 7508 return |
7604 self.testScriptAct.setEnabled(True) | |
7605 self.__testingEditorOpen = True | |
7606 return | |
7607 | 7509 |
7608 self.testScriptAct.setEnabled(False) | 7510 self.testScriptAct.setEnabled(False) |
7609 | 7511 |
7610 def __writeTasks(self): | 7512 def __writeTasks(self): |
7611 """ | 7513 """ |
7626 # try old style XML file second | 7528 # try old style XML file second |
7627 fn = os.path.join(Utilities.getConfigDir(), "eric7tasks.e6t") | 7529 fn = os.path.join(Utilities.getConfigDir(), "eric7tasks.e6t") |
7628 if os.path.exists(fn): | 7530 if os.path.exists(fn): |
7629 f = QFile(fn) | 7531 f = QFile(fn) |
7630 if f.open(QIODevice.OpenModeFlag.ReadOnly): | 7532 if f.open(QIODevice.OpenModeFlag.ReadOnly): |
7631 from eric7.EricXML.TasksReader import TasksReader | |
7632 | |
7633 reader = TasksReader(f, viewer=self.taskViewer) | 7533 reader = TasksReader(f, viewer=self.taskViewer) |
7634 reader.readXML() | 7534 reader.readXML() |
7635 f.close() | 7535 f.close() |
7636 else: | 7536 else: |
7637 EricMessageBox.critical( | 7537 EricMessageBox.critical( |
7696 self.__readingSession = False | 7596 self.__readingSession = False |
7697 else: | 7597 else: |
7698 # old XML based format | 7598 # old XML based format |
7699 f = QFile(fn) | 7599 f = QFile(fn) |
7700 if f.open(QIODevice.OpenModeFlag.ReadOnly): | 7600 if f.open(QIODevice.OpenModeFlag.ReadOnly): |
7701 from eric7.EricXML.SessionReader import SessionReader | |
7702 | |
7703 self.__readingSession = True | 7601 self.__readingSession = True |
7704 reader = SessionReader(f, True) | 7602 reader = SessionReader(f, True) |
7705 reader.readXML() | 7603 reader.readXML() |
7706 self.__readingSession = False | 7604 self.__readingSession = False |
7707 f.close() | 7605 f.close() |
7810 | 7708 |
7811 def showFindFileByNameDialog(self): | 7709 def showFindFileByNameDialog(self): |
7812 """ | 7710 """ |
7813 Public slot to show the Find File by Name dialog. | 7711 Public slot to show the Find File by Name dialog. |
7814 """ | 7712 """ |
7713 from .FindFileNameDialog import FindFileNameDialog | |
7714 | |
7815 if self.findFileNameDialog is None: | 7715 if self.findFileNameDialog is None: |
7816 from .FindFileNameDialog import FindFileNameDialog | |
7817 | |
7818 self.findFileNameDialog = FindFileNameDialog(self.project) | 7716 self.findFileNameDialog = FindFileNameDialog(self.project) |
7819 self.findFileNameDialog.sourceFile.connect(self.viewmanager.openSourceFile) | 7717 self.findFileNameDialog.sourceFile.connect(self.viewmanager.openSourceFile) |
7820 self.findFileNameDialog.designerFile.connect(self.__designer) | 7718 self.findFileNameDialog.designerFile.connect(self.__designer) |
7821 self.findFileNameDialog.show() | 7719 self.findFileNameDialog.show() |
7822 self.findFileNameDialog.raise_() | 7720 self.findFileNameDialog.raise_() |
7832 @type str (optional) | 7730 @type str (optional) |
7833 @param openFiles flag indicating to operate on open files only | 7731 @param openFiles flag indicating to operate on open files only |
7834 (defaults to False) | 7732 (defaults to False) |
7835 @type bool (optional) | 7733 @type bool (optional) |
7836 """ | 7734 """ |
7735 from .FindFileWidget import FindFileDialog | |
7736 | |
7837 if Preferences.getUI("ShowFindFileWidget"): | 7737 if Preferences.getUI("ShowFindFileWidget"): |
7838 # embedded tool | 7738 # embedded tool |
7839 self.__activateFindFileWidget() | 7739 self.__activateFindFileWidget() |
7840 self.__findFileWidget.activate( | 7740 self.__findFileWidget.activate( |
7841 replaceMode=False, txt=txt, searchDir=searchDir, openFiles=openFiles | 7741 replaceMode=False, txt=txt, searchDir=searchDir, openFiles=openFiles |
7842 ) | 7742 ) |
7843 else: | 7743 else: |
7844 # external dialog | 7744 # external dialog |
7845 if self.__findFileDialog is None: | 7745 if self.__findFileDialog is None: |
7846 from .FindFileWidget import FindFileDialog | |
7847 | |
7848 self.__findFileDialog = FindFileDialog(self.project, self) | 7746 self.__findFileDialog = FindFileDialog(self.project, self) |
7849 self.__findFileDialog.sourceFile.connect( | 7747 self.__findFileDialog.sourceFile.connect( |
7850 self.viewmanager.openSourceFile | 7748 self.viewmanager.openSourceFile |
7851 ) | 7749 ) |
7852 self.__findFileDialog.designerFile.connect(self.__designer) | 7750 self.__findFileDialog.designerFile.connect(self.__designer) |
7869 @type str (optional) | 7767 @type str (optional) |
7870 @param openFiles flag indicating to operate on open files only | 7768 @param openFiles flag indicating to operate on open files only |
7871 (defaults to False) | 7769 (defaults to False) |
7872 @type bool (optional) | 7770 @type bool (optional) |
7873 """ | 7771 """ |
7772 from .FindFileWidget import FindFileDialog | |
7773 | |
7874 if Preferences.getUI("ShowFindFileWidget"): | 7774 if Preferences.getUI("ShowFindFileWidget"): |
7875 # embedded tool | 7775 # embedded tool |
7876 self.__activateFindFileWidget() | 7776 self.__activateFindFileWidget() |
7877 self.__findFileWidget.activate( | 7777 self.__findFileWidget.activate( |
7878 replaceMode=True, txt=txt, searchDir=searchDir, openFiles=openFiles | 7778 replaceMode=True, txt=txt, searchDir=searchDir, openFiles=openFiles |
7879 ) | 7779 ) |
7880 else: | 7780 else: |
7881 # external dialog | 7781 # external dialog |
7882 if self.__replaceFileDialog is None: | 7782 if self.__replaceFileDialog is None: |
7883 from .FindFileWidget import FindFileDialog | |
7884 | |
7885 self.__replaceFileDialog = FindFileDialog(self.project, self) | 7783 self.__replaceFileDialog = FindFileDialog(self.project, self) |
7886 self.__replaceFileDialog.sourceFile.connect( | 7784 self.__replaceFileDialog.sourceFile.connect( |
7887 self.viewmanager.openSourceFile | 7785 self.viewmanager.openSourceFile |
7888 ) | 7786 ) |
7889 self.__replaceFileDialog.designerFile.connect(self.__designer) | 7787 self.__replaceFileDialog.designerFile.connect(self.__designer) |
7912 | 7810 |
7913 def showFindLocationWidget(self): | 7811 def showFindLocationWidget(self): |
7914 """ | 7812 """ |
7915 Public method to show the Find File widget. | 7813 Public method to show the Find File widget. |
7916 """ | 7814 """ |
7815 from .FindLocationWidget import FindLocationDialog | |
7816 | |
7917 if Preferences.getUI("ShowFindLocationWidget"): | 7817 if Preferences.getUI("ShowFindLocationWidget"): |
7918 # embedded tool | 7818 # embedded tool |
7919 self.__activateFindLocationWidget() | 7819 self.__activateFindLocationWidget() |
7920 else: | 7820 else: |
7921 # external dialog | 7821 # external dialog |
7922 if self.__findLocationDialog is None: | 7822 if self.__findLocationDialog is None: |
7923 from .FindLocationWidget import FindLocationDialog | |
7924 | |
7925 self.__findLocationDialog = FindLocationDialog(self.project, self) | 7823 self.__findLocationDialog = FindLocationDialog(self.project, self) |
7926 self.__findLocationDialog.sourceFile.connect( | 7824 self.__findLocationDialog.sourceFile.connect( |
7927 self.viewmanager.openSourceFile | 7825 self.viewmanager.openSourceFile |
7928 ) | 7826 ) |
7929 self.__findLocationDialog.designerFile.connect(self.__designer) | 7827 self.__findLocationDialog.designerFile.connect(self.__designer) |
8189 def __shutdown(self): | 8087 def __shutdown(self): |
8190 """ | 8088 """ |
8191 Private method to perform all necessary steps to close down the IDE. | 8089 Private method to perform all necessary steps to close down the IDE. |
8192 | 8090 |
8193 @return flag indicating success | 8091 @return flag indicating success |
8092 @rtype bool | |
8194 """ | 8093 """ |
8195 if self.shutdownCalled: | 8094 if self.shutdownCalled: |
8196 return True | 8095 return True |
8096 | |
8097 if not self.viewmanager.checkAllDirty(): | |
8098 return False | |
8197 | 8099 |
8198 if self.__webBrowserProcess is not None: | 8100 if self.__webBrowserProcess is not None: |
8199 self.__webBrowserShutdown() | 8101 self.__webBrowserShutdown() |
8200 | 8102 |
8201 if self.irc is not None and not self.irc.shutdown(): | 8103 if self.irc is not None and not self.irc.shutdown(): |
8532 @type NotificationTypes | 8434 @type NotificationTypes |
8533 @param timeout time in seconds the notification should be shown | 8435 @param timeout time in seconds the notification should be shown |
8534 (None = use configured timeout, 0 = indefinitely) | 8436 (None = use configured timeout, 0 = indefinitely) |
8535 @type int | 8437 @type int |
8536 """ | 8438 """ |
8439 from .NotificationWidget import NotificationWidget | |
8440 | |
8537 if self.__notification is None: | 8441 if self.__notification is None: |
8538 from .NotificationWidget import NotificationWidget | |
8539 | |
8540 self.__notification = NotificationWidget(parent=self) | 8442 self.__notification = NotificationWidget(parent=self) |
8541 if timeout is None: | 8443 if timeout is None: |
8542 timeout = Preferences.getUI("NotificationTimeout") | 8444 timeout = Preferences.getUI("NotificationTimeout") |
8543 self.__notification.showNotification( | 8445 self.__notification.showNotification( |
8544 icon, heading, text, kind=kind, timeout=timeout | 8446 icon, heading, text, kind=kind, timeout=timeout |