src/eric7/MicroPython/MicroPythonWindow.py

Fri, 21 Mar 2025 16:29:08 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 21 Mar 2025 16:29:08 +0100
branch
eric7
changeset 11181
52e30cc024aa
parent 11090
f5f5f5803935
child 11215
d07c71a34adf
permissions
-rw-r--r--

Corrected the usage of the MiniEditor class.

10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the standalone MicroPython window.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import contextlib
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import QSize, Qt, QUrl, pyqtSignal, pyqtSlot
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtGui import QDesktopServices
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkProxyFactory
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from PyQt6.QtWidgets import QDialog, QSplitter, QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from eric7 import Preferences
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
18 from eric7.EricCore import EricPreferences
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from eric7.EricNetwork.EricNetworkProxyFactory import (
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 EricNetworkProxyFactory,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 proxyAuthenticationRequired,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from eric7.EricWidgets import EricMessageBox
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 from eric7.EricWidgets.EricApplication import ericApp
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 from eric7.EricWidgets.EricMainWindow import EricMainWindow
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 from eric7.EricWidgets.EricSideBar import EricSideBar, EricSideBarSide
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from eric7.MicroPython.MicroPythonWidget import MicroPythonWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 from eric7.PipInterface.Pip import Pip
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 from eric7.QScintilla.MiniEditor import MiniEditor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 from eric7.SystemUtilities import FileSystemUtilities
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 try:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 from eric7.EricNetwork.EricSslErrorHandler import (
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 EricSslErrorHandler,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 EricSslErrorState,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 SSL_AVAILABLE = True
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 except ImportError:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 SSL_AVAILABLE = False
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 class MicroPythonWindow(EricMainWindow):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Class implementing the standalone MicroPython window.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
47 @signal editorCountChanged(count) emitted whenever the count of open editors
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
48 changed
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @signal preferencesChanged() emitted after the preferences were changed
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
52 editorCountChanged = pyqtSignal(int)
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 preferencesChanged = pyqtSignal()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 def __init__(self, parent=None):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Constructor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @param parent reference to the parent widget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @type QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 super().__init__(parent)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__pip = Pip(self)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 # create the window layout
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.__mpyWidget = MicroPythonWidget(parent=self, forMPyWindow=True)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__mpyWidget.aboutToDisconnect.connect(self.__deviceDisconnect)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__bottomSidebar = EricSideBar(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 EricSideBarSide.SOUTH, Preferences.getUI("IconBarSize")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__bottomSidebar.setIconBarColor(Preferences.getUI("IconBarColor"))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.__verticalSplitter = QSplitter(Qt.Orientation.Vertical)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__verticalSplitter.setChildrenCollapsible(False)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.__verticalSplitter.addWidget(self.__mpyWidget)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.__verticalSplitter.addWidget(self.__bottomSidebar)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.setCentralWidget(self.__verticalSplitter)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.setWindowTitle(self.tr("MicroPython / CircuitPython Devices"))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 g = Preferences.getGeometry("MPyWindowGeometry")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 if g.isEmpty():
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 s = QSize(800, 1000)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.resize(s)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 else:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.restoreGeometry(g)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.__verticalSplitter.setSizes(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 Preferences.getMicroPython("MPyWindowSplitterSizes")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 # register the objects
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 ericApp().registerObject("UserInterface", self)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 ericApp().registerObject("ViewManager", self)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 ericApp().registerObject("Pip", self.__pip)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 ericApp().registerObject("MicroPython", self.__mpyWidget)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 # attributes to manage the open editors
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.__editors = []
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.__activeEditor = None
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 ericApp().focusChanged.connect(self.__appFocusChanged)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 # network related setup
10960
8b23bcae1f81 Fixed an issue in the MicroPython window class preventing the standalone MPy application to start.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
106 if EricPreferences.getNetworkProxy("UseSystemProxy"):
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 QNetworkProxyFactory.setUseSystemConfiguration(True)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 else:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.__proxyFactory = EricNetworkProxyFactory()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 QNetworkProxyFactory.setUseSystemConfiguration(False)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.__networkManager = QNetworkAccessManager(self)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.__networkManager.proxyAuthenticationRequired.connect(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 proxyAuthenticationRequired
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if SSL_AVAILABLE:
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
118 self.__sslErrorHandler = EricSslErrorHandler(
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
119 Preferences.getSettings(), self
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
120 )
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__networkManager.sslErrors.connect(self.__sslErrors)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 self.__replies = []
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.__bottomSidebar.setVisible(False)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 def closeEvent(self, evt):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 Protected event handler for the close event.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 @param evt reference to the close event
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 <br />This event is simply accepted after the history has been
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 saved and all window references have been deleted.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @type QCloseEvent
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 Preferences.setGeometry("MPyWindowGeometry", self.saveGeometry())
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 Preferences.setMicroPython(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 "MPyWindowSplitterSizes", self.__verticalSplitter.sizes()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 for editor in self.__editors[:]:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 with contextlib.suppress(RuntimeError):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 editor.close()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 evt.accept()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 def __sslErrors(self, reply, errors):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 Private slot to handle SSL errors.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 @param reply reference to the reply object
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 @type QNetworkReply
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 @param errors list of SSL errors
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @type list of QSslError
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if ignored == EricSslErrorState.NOT_IGNORED:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.__downloadCancelled = True
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 #######################################################################
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 ## Methods below implement user interface methods needed by the
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 ## MicroPython widget.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 #######################################################################
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def addSideWidget(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 self,
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
166 _side,
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 widget,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 icon,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 label,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 ):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 Public method to add a widget to the sides.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
174 @param _side side to add the widget to (unused)
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @type UserInterfaceSide
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 @param widget reference to the widget to add
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 @type QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 @param icon icon to be used
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @type QIcon
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @param label label text to be shown
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @type str
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.__bottomSidebar.addTab(widget, icon, label)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.__bottomSidebar.setVisible(True)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 def showSideWidget(self, widget):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 Public method to show a specific widget placed in the side widgets.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 @param widget reference to the widget to be shown
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 @type QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 index = self.__bottomSidebar.indexOf(widget)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 if index != -1:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self.__bottomSidebar.show()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.__bottomSidebar.setCurrentIndex(index)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self.__bottomSidebar.raise_()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 def removeSideWidget(self, widget):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 Public method to remove a widget added using addSideWidget().
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 @param widget reference to the widget to remove
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 @type QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 index = self.__bottomSidebar.indexOf(widget)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 if index != -1:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.__bottomSidebar.removeTab(index)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.__bottomSidebar.setVisible(self.__bottomSidebar.count() > 0)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 def networkAccessManager(self):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 Public method to get a reference to the network access manager object.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 @return reference to the network access manager object
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 @rtype QNetworkAccessManager
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 return self.__networkManager
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 def launchHelpViewer(self, url):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 Public slot to start the help viewer/web browser.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 @param url URL to be opened
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 @type str or QUrl
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 started = QDesktopServices.openUrl(QUrl(url))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 if not started:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 EricMessageBox.critical(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 self, self.tr("Open Browser"), self.tr("Could not start a web browser")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @pyqtSlot()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 @pyqtSlot(str)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 def showPreferences(self, pageName=None):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 Public slot to set the preferences.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 @param pageName name of the configuration page to show
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 @type str
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 from eric7.Preferences.ConfigurationDialog import (
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 ConfigurationDialog,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 ConfigurationMode,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 dlg = ConfigurationDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10960
diff changeset
249 parent=self,
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10960
diff changeset
250 name="Configuration",
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10960
diff changeset
251 modal=True,
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 fromEric=True,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 displayMode=ConfigurationMode.MICROPYTHONMODE,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 dlg.show()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 if pageName is not None:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 dlg.showConfigurationPageByName(pageName)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 else:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 dlg.showConfigurationPageByName("empty")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 dlg.exec()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 if dlg.result() == QDialog.DialogCode.Accepted:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 dlg.setPreferences()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 Preferences.syncPreferences()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 self.__preferencesChanged()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 @pyqtSlot()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 def __preferencesChanged(self):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 Private slot to handle a change of the preferences.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 self.__bottomSidebar.setIconBarColor(Preferences.getUI("IconBarColor"))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 self.__bottomSidebar.setIconBarSize(Preferences.getUI("IconBarSize"))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
274 if EricPreferences.getNetworkProxy("UseSystemProxy"):
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 QNetworkProxyFactory.setUseSystemConfiguration(True)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 else:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 self.__proxyFactory = EricNetworkProxyFactory()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 QNetworkProxyFactory.setUseSystemConfiguration(False)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 self.preferencesChanged.emit()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 #######################################################################
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 ## Methods below implement view manager methods needed by the
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 ## MicroPython widget.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 #######################################################################
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 def activeWindow(self):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 Public method to get a reference to the active editor.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @return reference to the active editor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @rtype MiniEditor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 return self.__activeEditor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 def getEditor(self, fn):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 Public method to return the editor displaying the given file.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 @param fn filename to look for
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 @type str
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 for editor in self.__editors:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 if editor.getFileName() == fn:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 editor.raise_()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 break
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 else:
11181
52e30cc024aa Corrected the usage of the MiniEditor class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
309 editor = MiniEditor(filename=fn)
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 editor.closing.connect(lambda: self.__editorClosing(editor))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 editor.show()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 self.__editors.append(editor)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
314 self.editorCountChanged.emit(len(self.__editors))
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 def newEditorWithText(self, text, language="", fileName=""):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 Public method to generate a new editor with a given text and associated file
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 name.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 @param text text for the editor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 @type str
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 @param language source language (defaults to "")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 @type str (optional)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 @param fileName associated file name (defaults to "")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 @type str (optional)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 """
11181
52e30cc024aa Corrected the usage of the MiniEditor class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
328 editor = MiniEditor(filename=fileName)
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 editor.closing.connect(lambda: self.__editorClosing(editor))
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 editor.setText(text, filetype=language)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 editor.setLanguage(fileName)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 editor.show()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 self.__editors.append(editor)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
335 self.editorCountChanged.emit(len(self.__editors))
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 def __editorClosing(self, editor):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 Private method called, when an editor is closing.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 @param editor reference to the closing editor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 @type MiniEditor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 with contextlib.suppress(ValueError):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 self.__editors.remove(editor)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 del editor
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
347 self.editorCountChanged.emit(len(self.__editors))
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 if self.__editors:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 # make the last one (i.e. most recently opened one) the active editor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 self.__activeEditor = self.__editors[-1]
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 else:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 self.__activeEditor = None
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
355 def getOpenEditorsCount(self):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
356 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
357 Public method to get the number of open editors.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
358
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
359 @return number of open editors
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
360 @rtype int
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
361 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
362 return len(self.__editors)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
363
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 @pyqtSlot(QWidget, QWidget)
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
365 def __appFocusChanged(self, _old, now):
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 Private slot to track the application focus.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
369 @param _old reference to the widget loosing focus (unused)
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 @type QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 @param now reference to the widget gaining focus
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 @type QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 if now is None:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 return
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 for editor in self.__editors:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 if now in editor.findChildren(QWidget):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 self.__activeEditor = editor
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 break
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 @pyqtSlot()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 def __deviceDisconnect(self):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 Private slot handling the device being disconnected.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 This closes all editors directly connected to the device about to
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 be disconnected.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 for editor in self.__editors[:]:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 if FileSystemUtilities.isDeviceFileName(editor.getFileName()):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 editor.close()

eric ide

mercurial