src/eric7/MicroPython/BluetoothDialogs/BluetoothStatusDialog.py

Sun, 09 Mar 2025 14:16:35 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 09 Mar 2025 14:16:35 +0100
branch
eric7
changeset 11166
fd914f897dcf
parent 11090
f5f5f5803935
permissions
-rw-r--r--

MicroPython Interface
- Changed the WiFi and Bluetooth status dialogs to non-modal windows with a 'Refresh' button.

9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
4 #
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
5
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
7 Module implementing a dialog to show Bluetooth related status information.
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
10 from PyQt6.QtCore import Qt, pyqtSlot
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
13 from eric7.EricGui import EricPixmapCache
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
14
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from .Ui_BluetoothStatusDialog import Ui_BluetoothStatusDialog
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class BluetoothStatusDialog(QDialog, Ui_BluetoothStatusDialog):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
20 Class implementing a dialog to show Bluetooth related status information.
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
23 def __init__(self, microPython, parent=None):
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Constructor
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
27 @param microPython reference to the MicroPython widget
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
28 @type MicroPythonWidget
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @param parent reference to the parent widget (defaults to None)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @type QWidget (optional)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 super().__init__(parent)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 self.setupUi(self)
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
34 self.setWindowFlags(Qt.WindowType.Window)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.statusTree.setColumnCount(2)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
38 self.refreshButton.setIcon(EricPixmapCache.getIcon("reload"))
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
39 self.refreshButton.clicked.connect(self.__showStatus)
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
40
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
41 self.__mpy = microPython
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
42
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
43 self.__showStatus()
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
44
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
45 @pyqtSlot()
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
46 def __showStatus(self):
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
47 """
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
48 Private slot to show the current WiFi status.
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
49 """
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
50 self.statusTree.clear()
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
51
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
52 try:
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
53 status = self.__mpy.getDevice().getBluetoothStatus()
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
54 # status is a list of user labels and associated values
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
55 except Exception as exc:
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
56 self.__mpy.showError("getBluetoothStatus()", str(exc))
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
57 return
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
58
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 for topic, value in status:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 QTreeWidgetItem(self.statusTree, [topic, str(value)])
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 for col in range(self.statusTree.columnCount()):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.statusTree.resizeColumnToContents(col)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.buttonBox.setFocus(Qt.FocusReason.OtherFocusReason)

eric ide

mercurial