Added code to the CircuitPython interface to show the installed firmware version even if the drive is not mounted but the device is connected via the serial console.
9740
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1
|
# -*- coding: utf-8 -*- |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3
|
# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4
|
# |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7
|
Module implementing a dialog showing the available bundles and their modules. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10
|
import circup |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12
|
from PyQt6.QtCore import Qt |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13
|
from PyQt6.QtWidgets import QDialog, QTreeWidgetItem |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15
|
from .Ui_ShowBundlesDialog import Ui_ShowBundlesDialog |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18
|
class ShowBundlesDialog(QDialog, Ui_ShowBundlesDialog): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20
|
Class implementing a dialog showing the available bundles and their modules. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23
|
def __init__(self, withModules, parent=None): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25
|
Constructor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27
|
@param withModules flag indicating to list the modules and their version |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28
|
@type bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29
|
@param parent reference to the parent widget (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32
|
super().__init__(parent) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33
|
self.setupUi(self) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35
|
self.header.setText( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36
|
self.tr("Available Bundles and Modules") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37
|
if withModules |
9741
|
38
|
else self.tr("Available Bundles") |
9740
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40
|
self.bundlesWidget.setColumnCount(2) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42
|
localBundles = circup.get_bundles_local_dict().values() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43
|
bundles = circup.get_bundles_list() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44
|
availableModules = circup.get_bundle_versions(bundles) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46
|
for bundle in bundles: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47
|
topItm = QTreeWidgetItem( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48
|
self.bundlesWidget, [bundle.key, bundle.current_tag] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50
|
topItm.setExpanded(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51
|
if bundle.key in localBundles: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52
|
font = topItm.font(0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53
|
font.setUnderline(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54
|
topItm.setFont(0, font) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55
|
itm = QTreeWidgetItem(topItm, [bundle.url]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56
|
itm.setFirstColumnSpanned(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58
|
if withModules: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59
|
modulesHeader = QTreeWidgetItem(topItm, [self.tr("Modules")]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60
|
modulesHeader.setExpanded(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61
|
for name, mod in sorted(availableModules.items()): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62
|
if mod["bundle"] == bundle: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63
|
QTreeWidgetItem( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64
|
modulesHeader, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65
|
[name, mod.get("__version__", self.tr("unknown"))], |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68
|
self.bundlesWidget.resizeColumnToContents(0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69
|
self.bundlesWidget.resizeColumnToContents(1) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70
|
self.bundlesWidget.sortItems(0, Qt.SortOrder.AscendingOrder) |