src/eric7/MicroPython/WifiDialogs/WifiConnectionDialog.py

Thu, 03 Aug 2023 17:33:07 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 03 Aug 2023 17:33:07 +0200
branch
eric7
changeset 10153
ffe7432f716b
parent 9870
0399d3607829
child 10439
21c28b0f9e41
permissions
-rw-r--r--

MicroPython
- Added support to set the host name of the device (WiFi and Ethernet).
- Added support to set the WiFi country code (where supported by the device and the installed firmware).

9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
3 # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
4 #
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
5
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
7 Module implementing a dialog to enter the parameters needed to connect to a WiFi
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
8 network.
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtCore import pyqtSlot
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QLineEdit
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from eric7 import Preferences
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from eric7.EricGui import EricPixmapCache
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from .Ui_WifiConnectionDialog import Ui_WifiConnectionDialog
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 class WifiConnectionDialog(QDialog, Ui_WifiConnectionDialog):
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
22 Class implementing a dialog to enter the parameters needed to connect to a WiFi
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
23 network.
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
26 def __init__(self, withCountry=False, parent=None):
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Constructor
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
30 @param withCountry flag indicating to show the country entry (defaults to False)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
31 @type bool
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param parent reference to the parent widget (defaults to None)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type QWidget (optional)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 super().__init__(parent)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.setupUi(self)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.showPasswordButton.setIcon(EricPixmapCache.getIcon("showPassword"))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
40 self.countryLabel.setVisible(withCountry)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
41 self.countryEdit.setVisible(withCountry)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
42
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(False)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 # populate the field with data saved to the preferences
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.ssidEdit.setText(Preferences.getMicroPython("WifiName"))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.passwordEdit.setText(Preferences.getMicroPython("WifiPassword"))
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
48 self.hostnameEdit.setText(Preferences.getMicroPython("WifiHostname"))
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
49 if withCountry:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
50 self.countryEdit.setText(Preferences.getMicroPython("WifiCountry").upper())
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 msh = self.minimumSizeHint()
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.resize(max(self.width(), msh.width()), msh.height())
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @pyqtSlot(str)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 def on_ssidEdit_textChanged(self, ssid):
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
58 Private slot handling a change of the SSID.
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @param ssid entered SSID
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @type str
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(bool(ssid))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @pyqtSlot(bool)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 def on_showPasswordButton_clicked(self, checked):
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 Private slot to show or hide the password.
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @param checked state of the button
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @type bool
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 if checked:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Normal)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 self.showPasswordButton.setIcon(EricPixmapCache.getIcon("hidePassword"))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.showPasswordButton.setToolTip(self.tr("Press to hide the password"))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 else:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Password)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.showPasswordButton.setIcon(EricPixmapCache.getIcon("showPassword"))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.showPasswordButton.setToolTip(self.tr("Press to show the password"))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
82 @pyqtSlot()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
83 def accept(self):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
84 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
85 Public slot accepting the dialog.
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
86 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
87 if self.rememberCheckBox.isChecked():
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
88 Preferences.setMicroPython("WifiName", self.ssidEdit.text())
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
89 Preferences.setMicroPython("WifiPassword", self.passwordEdit.text())
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
90 Preferences.setMicroPython("WifiHostname", self.hostnameEdit.text())
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
91 if self.countryEdit.isVisible():
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
92 Preferences.setMicroPython(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
93 "WifiCountry", self.countryEdit.text().upper()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
94 )
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
95
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
96 super().accept()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9789
diff changeset
97
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 def getConnectionParameters(self):
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 Public method to get the entered connection parameters.
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
102 @return tuple containing the SSID, the password and the host name
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
103 @rtype tuple of (str, str, str)
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 return (
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.ssidEdit.text(),
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.passwordEdit.text(),
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
108 self.hostnameEdit.text(),
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 )
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
110
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
111 def getCountryCode(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
112 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
113 Public method to get the entered country code.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
114
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
115 @return DESCRIPTION
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
116 @rtype TYPE
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
117 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
118 return self.countryEdit.text().upper()

eric ide

mercurial