eric7/MicroPython/BoardDataDialog.py

branch
eric7
changeset 8928
d856023fbeb0
equal deleted inserted replaced
8927:e738a96f1e14 8928:d856023fbeb0
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to show information about a connected board.
8 """
9
10 import contextlib
11
12 from PyQt6.QtCore import QLocale
13 from PyQt6.QtWidgets import QDialog, QTreeWidgetItem
14
15 from .Ui_BoardDataDialog import Ui_BoardDataDialog
16
17
18 class BoardDataDialog(QDialog, Ui_BoardDataDialog):
19 """
20 Class implementing a dialog to show information about a connected board.
21 """
22 def __init__(self, data, parent=None):
23 """
24 Constructor
25
26 @param data dictionary containing the data to be shown
27 @type dict
28 @param parent reference to the parent widget (defaults to None)
29 @type QWidget (optional)
30 """
31 super().__init__(parent)
32 self.setupUi(self)
33
34 loc = QLocale()
35
36 self.dataTree.setColumnCount(2)
37
38 header = self.__createHeader(self.tr("General"))
39 QTreeWidgetItem(header, [
40 self.tr("Board ID"),
41 data["mc_id"]
42 ])
43 QTreeWidgetItem(header, [
44 self.tr("Board Frequency"),
45 self.tr("{0} MHz").format(
46 loc.toString(data["mc_frequency_mhz"], "f", 0))
47 ])
48 with contextlib.suppress(KeyError):
49 QTreeWidgetItem(header, [
50 self.tr("Board Temperature"),
51 self.tr("{0} °C").format(
52 loc.toString(data["mc_temp_c"], "f", 1))
53 ])
54
55 header = self.__createHeader(self.tr("Python"))
56 QTreeWidgetItem(header, [
57 self.tr("Python Version"),
58 data["py_version"]
59 ])
60 QTreeWidgetItem(header, [
61 self.tr("Platform"),
62 data["py_platform"]
63 ])
64 if data["mpy_name"] == "micropython":
65 mpyName = "MicroPython"
66 elif data["mpy_name"] == "circuitpython":
67 mpyName = "CircuitPython"
68 elif data["mpy_name"] == "unknown":
69 mpyName = self.tr("unknown")
70 else:
71 mpyName = data["name"]
72 QTreeWidgetItem(header, [
73 self.tr("Implementation"),
74 self.tr("{0} V. {1}").format(
75 mpyName,
76 self.tr("unknown")
77 if data["mpy_version"] == "unknown" else
78 data["mpy_version"]
79 )
80 ])
81
82 header = self.__createHeader(self.tr("System"))
83 QTreeWidgetItem(header, [
84 self.tr("System Name"),
85 data["sysname"]
86 ])
87 QTreeWidgetItem(header, [
88 self.tr("Node Name"),
89 data["nodename"]
90 ])
91 QTreeWidgetItem(header, [
92 self.tr("Release"),
93 data["release"]
94 ])
95 QTreeWidgetItem(header, [
96 self.tr("Version"),
97 data["version"]
98 ])
99 QTreeWidgetItem(header, [
100 self.tr("Machine"),
101 data["machine"]
102 ])
103
104 header = self.__createHeader(self.tr("Memory"))
105 QTreeWidgetItem(header, [
106 self.tr("total"),
107 self.tr("{0} KBytes").format(
108 loc.toString(data["mem_total_kb"], "f", 2))
109 ])
110 QTreeWidgetItem(header, [
111 self.tr("used"),
112 self.tr("{0} KBytes ({1}%)").format(
113 loc.toString(data["mem_used_kb"], "f", 2),
114 loc.toString(data["mem_used_pc"], "f", 2))
115 ])
116 QTreeWidgetItem(header, [
117 self.tr("free"),
118 self.tr("{0} KBytes ({1}%)").format(
119 loc.toString(data["mem_free_kb"], "f", 2),
120 loc.toString(data["mem_free_pc"], "f", 2))
121 ])
122
123 header = self.__createHeader(self.tr("Flash Memory"))
124 QTreeWidgetItem(header, [
125 self.tr("total"),
126 self.tr("{0} KBytes").format(
127 loc.toString(data["flash_total_kb"], "f", 0))
128 ])
129 QTreeWidgetItem(header, [
130 self.tr("used"),
131 self.tr("{0} KBytes ({1}%)").format(
132 loc.toString(data["flash_used_kb"], "f", 0),
133 loc.toString(data["flash_used_pc"], "f", 2))
134 ])
135 QTreeWidgetItem(header, [
136 self.tr("free"),
137 self.tr("{0} KBytes ({1}%)").format(
138 loc.toString(data["flash_free_kb"], "f", 0),
139 loc.toString(data["flash_free_pc"], "f", 2))
140 ])
141
142 header = self.__createHeader(self.tr("µLab"))
143 if data["ulab"] is not None:
144 QTreeWidgetItem(header, [
145 self.tr("Version"),
146 data["ulab"]
147 ])
148 else:
149 itm = QTreeWidgetItem(header, [
150 self.tr("µLab is not available")
151 ])
152 itm.setFirstColumnSpanned(True)
153
154 for col in range(self.dataTree.columnCount()):
155 self.dataTree.resizeColumnToContents(col)
156
157 def __createHeader(self, headerText):
158 """
159 Private method to create a header item.
160
161 @param headerText text for the header item
162 @type str
163 @return reference to the created header item
164 @rtype QTreeWidgetItem
165 """
166 headerItem = QTreeWidgetItem(self.dataTree, [headerText])
167 headerItem.setExpanded(True)
168 headerItem.setFirstColumnSpanned(True)
169
170 font = headerItem.font(0)
171 font.setBold(True)
172
173 headerItem.setFont(0, font)
174
175 return headerItem

eric ide

mercurial