src/eric7/MicroPython/BoardDataDialog.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8928
d856023fbeb0
child 9221
bf71ee032bb4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/MicroPython/BoardDataDialog.py	Thu Jul 07 11:23:56 2022 +0200
@@ -0,0 +1,175 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to show information about a connected board.
+"""
+
+import contextlib
+
+from PyQt6.QtCore import QLocale
+from PyQt6.QtWidgets import QDialog, QTreeWidgetItem
+
+from .Ui_BoardDataDialog import Ui_BoardDataDialog
+
+
+class BoardDataDialog(QDialog, Ui_BoardDataDialog):
+    """
+    Class implementing a dialog to show information about a connected board.
+    """
+    def __init__(self, data, parent=None):
+        """
+        Constructor
+        
+        @param data dictionary containing the data to be shown
+        @type dict
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        loc = QLocale()
+        
+        self.dataTree.setColumnCount(2)
+        
+        header = self.__createHeader(self.tr("General"))
+        QTreeWidgetItem(header, [
+            self.tr("Board ID"),
+            data["mc_id"]
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("Board Frequency"),
+            self.tr("{0} MHz").format(
+                loc.toString(data["mc_frequency_mhz"], "f", 0))
+        ])
+        with contextlib.suppress(KeyError):
+            QTreeWidgetItem(header, [
+                self.tr("Board Temperature"),
+                self.tr("{0} °C").format(
+                    loc.toString(data["mc_temp_c"], "f", 1))
+            ])
+        
+        header = self.__createHeader(self.tr("Python"))
+        QTreeWidgetItem(header, [
+            self.tr("Python Version"),
+            data["py_version"]
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("Platform"),
+            data["py_platform"]
+        ])
+        if data["mpy_name"] == "micropython":
+            mpyName = "MicroPython"
+        elif data["mpy_name"] == "circuitpython":
+            mpyName = "CircuitPython"
+        elif data["mpy_name"] == "unknown":
+            mpyName = self.tr("unknown")
+        else:
+            mpyName = data["name"]
+        QTreeWidgetItem(header, [
+            self.tr("Implementation"),
+            self.tr("{0} V. {1}").format(
+                mpyName,
+                self.tr("unknown")
+                if data["mpy_version"] == "unknown" else
+                data["mpy_version"]
+            )
+        ])
+        
+        header = self.__createHeader(self.tr("System"))
+        QTreeWidgetItem(header, [
+            self.tr("System Name"),
+            data["sysname"]
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("Node Name"),
+            data["nodename"]
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("Release"),
+            data["release"]
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("Version"),
+            data["version"]
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("Machine"),
+            data["machine"]
+        ])
+        
+        header = self.__createHeader(self.tr("Memory"))
+        QTreeWidgetItem(header, [
+            self.tr("total"),
+            self.tr("{0} KBytes").format(
+                loc.toString(data["mem_total_kb"], "f", 2))
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("used"),
+            self.tr("{0} KBytes ({1}%)").format(
+                loc.toString(data["mem_used_kb"], "f", 2),
+                loc.toString(data["mem_used_pc"], "f", 2))
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("free"),
+            self.tr("{0} KBytes ({1}%)").format(
+                loc.toString(data["mem_free_kb"], "f", 2),
+                loc.toString(data["mem_free_pc"], "f", 2))
+        ])
+        
+        header = self.__createHeader(self.tr("Flash Memory"))
+        QTreeWidgetItem(header, [
+            self.tr("total"),
+            self.tr("{0} KBytes").format(
+                loc.toString(data["flash_total_kb"], "f", 0))
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("used"),
+            self.tr("{0} KBytes ({1}%)").format(
+                loc.toString(data["flash_used_kb"], "f", 0),
+                loc.toString(data["flash_used_pc"], "f", 2))
+        ])
+        QTreeWidgetItem(header, [
+            self.tr("free"),
+            self.tr("{0} KBytes ({1}%)").format(
+                loc.toString(data["flash_free_kb"], "f", 0),
+                loc.toString(data["flash_free_pc"], "f", 2))
+        ])
+        
+        header = self.__createHeader(self.tr("µLab"))
+        if data["ulab"] is not None:
+            QTreeWidgetItem(header, [
+                self.tr("Version"),
+                data["ulab"]
+            ])
+        else:
+            itm = QTreeWidgetItem(header, [
+                self.tr("µLab is not available")
+            ])
+            itm.setFirstColumnSpanned(True)
+        
+        for col in range(self.dataTree.columnCount()):
+            self.dataTree.resizeColumnToContents(col)
+    
+    def __createHeader(self, headerText):
+        """
+        Private method to create a header item.
+        
+        @param headerText text for the header item
+        @type str
+        @return reference to the created header item
+        @rtype QTreeWidgetItem
+        """
+        headerItem = QTreeWidgetItem(self.dataTree, [headerText])
+        headerItem.setExpanded(True)
+        headerItem.setFirstColumnSpanned(True)
+        
+        font = headerItem.font(0)
+        font.setBold(True)
+        
+        headerItem.setFont(0, font)
+        
+        return headerItem

eric ide

mercurial