src/eric7/MicroPython/MicroPythonWindow.py

Fri, 25 Apr 2025 16:23:02 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 25 Apr 2025 16:23:02 +0200
branch
eric7
changeset 11236
75c26fe1d1c7
parent 11215
d07c71a34adf
permissions
-rw-r--r--

MicroPython
- Extended the handling of Access Point security/authmode settings to be more dynamic.

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

eric ide

mercurial