eric7/MicroPython/UnknownDevicesDialog.py

Sat, 15 May 2021 18:45:04 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 15 May 2021 18:45:04 +0200
branch
eric7
changeset 8312
800c432b34c8
parent 8218
eric6/MicroPython/UnknownDevicesDialog.py@7c09585bd960
child 8318
962bce857696
permissions
-rw-r--r--

Started to rename eric6 to eric7.

8080
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to manage the list of unknown devices.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt5.QtCore import pyqtSlot, Qt, QUrl, QUrlQuery
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt5.QtGui import QDesktopServices
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt5.QtWidgets import QDialog, QListWidgetItem
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from E5Gui import E5MessageBox
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from .Ui_UnknownDevicesDialog import Ui_UnknownDevicesDialog
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import Preferences
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from UI.Info import BugAddress
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 class UnknownDevicesDialog(QDialog, Ui_UnknownDevicesDialog):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Class implementing a dialog to manage the list of unknown devices.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8099
diff changeset
26 DeviceDataRole = Qt.ItemDataRole.UserRole
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8099
diff changeset
27 ModifiedRole = Qt.ItemDataRole.UserRole + 1
8080
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def __init__(self, parent=None):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param parent reference to the parent widget (defaults to None)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @type QWidget (optional)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
36 super().__init__(parent)
8080
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.setupUi(self)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__loadDevices()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 def __loadDevices(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 Private method to load the list of unknown devices.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.deviceList.clear()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 devices = Preferences.getMicroPython("ManualDevices")
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 for device in devices:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 itm = QListWidgetItem(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.tr("{0} (0x{1:04x}/0x{2:04x})", "description, VID, PID")
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 .format(device["description"], device["vid"], device["pid"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.deviceList)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 itm.setData(self.DeviceDataRole, device)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 itm.setData(self.ModifiedRole, False)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__initialDeviceCount = self.deviceList.count()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__checkButtons()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 def __isDirty(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Private method to check, if the dialog contains unsaved data.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @return flag indicating the presence of unsaved data
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @rtype bool
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 dirty = False
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 for row in range(self.deviceList.count()):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 dirty |= self.deviceList.item(row).data(self.ModifiedRole)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 dirty |= self.deviceList.count() != self.__initialDeviceCount
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 return dirty
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 def __editItem(self, item):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 Private method to edit the given item.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @param item reference to the item to be edited
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @type QListWidgetItem
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 if item is None:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 # play it safe
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 return
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 from .AddEditDevicesDialog import AddEditDevicesDialog
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 dlg = AddEditDevicesDialog(deviceData=item.data(self.DeviceDataRole))
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8099
diff changeset
86 if dlg.exec() == QDialog.DialogCode.Accepted:
8080
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 deviceDict = dlg.getDeviceDict()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 item.setData(self.DeviceDataRole, deviceDict)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 item.setData(self.ModifiedRole, True)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 item.setText(self.tr("{0} (*)", "list entry is modified")
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 .format(item.text()))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 def __saveDeviceData(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 Private method to save the device data.
8099
522946e53835 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8080
diff changeset
97
522946e53835 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8080
diff changeset
98 @return flag indicating a successful save
522946e53835 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8080
diff changeset
99 @rtype bool
8080
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 devices = []
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 for row in range(self.deviceList.count()):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 devices.append(self.deviceList.item(row).data(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.DeviceDataRole))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 Preferences.setMicroPython("ManualDevices", devices)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 return True
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 def __checkButtons(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 Private slot to set the enabled state of the buttons.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 selectedItemsCount = len(self.deviceList.selectedItems())
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.editButton.setEnabled(selectedItemsCount == 1)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.deleteButton.setEnabled(selectedItemsCount >= 1)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @pyqtSlot(QListWidgetItem)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def on_deviceList_itemActivated(self, item):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Private slot to edit the data of the activated item.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @param item reference to the activated item
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 @type QListWidgetItem
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.__editItem(item)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 def on_deviceList_itemSelectionChanged(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 Private slot to handle a change of selected items.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.__checkButtons()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 def on_editButton_clicked(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 Private slot to edit the selected item.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 itm = self.deviceList.selectedItems()[0]
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.__editItem(itm)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 def on_deleteButton_clicked(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 Private slot to delete the selected entries.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 unsaved = False
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 for itm in self.deviceList.selectedItems():
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 unsaved |= itm.data(self.ModifiedRole)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if unsaved:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 ok = E5MessageBox.yesNo(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self,
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.tr("Delete Unknown Devices"),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.tr("The selected entries contain some with modified"
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 " data. Shall they really be deleted?"))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 if not ok:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 return
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 for itm in self.deviceList.selectedItems():
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.deviceList.takeItem(self.deviceList.row(itm))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 del itm
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 def on_deleteAllButton_clicked(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Private slot to delete all devices.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 if self.__isDirty():
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 ok = E5MessageBox.yesNo(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 self,
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 self.tr("Delete Unknown Devices"),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.tr("The list contains some devices with modified"
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 " data. Shall they really be deleted?"))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 if not ok:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 return
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.deviceList.clear()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 def on_restoreButton_clicked(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 Private slot to restore the list of unknown devices.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 if self.__isDirty():
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 ok = E5MessageBox.yesNo(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self,
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.tr("Restore Unknown Devices"),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.tr("Restoring the list of unknown devices will overwrite"
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 " all changes made. Do you really want to restore the"
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 " list?"))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 if not ok:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 return
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.__loadDevices()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 def on_reportButton_clicked(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 Private slot to report the data of all boards to the eric-bugs email
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 address.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 if self.deviceList.count() > 0:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 bodyList = [
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 "These are my MicroPython devices not yet known by eric."
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 " Please add them.",
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 "",
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 ]
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 for row in range(self.deviceList.count()):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 deviceDict = self.deviceList.item(row).data(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 self.DeviceDataRole)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 bodyList += [
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 "Board #{0}:".format(row),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 " VID: {0}".format(deviceDict["vid"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 " PID: {0}".format(deviceDict["pid"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 " Description: {0}".format(deviceDict["description"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 " Device Type: {0}".format(deviceDict["type"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 " Data Volume: {0}".format(deviceDict["data_volume"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 " Flash Volume: {0}".format(deviceDict["flash_volume"]),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 ""
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 ]
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 urlQuery = QUrlQuery()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 urlQuery.addQueryItem("subject", "Unsupported MicroPython Devices")
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 urlQuery.addQueryItem("body", "\r\n".join(bodyList))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 url = QUrl("mailto:{0}".format(BugAddress))
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 url.setQuery(urlQuery)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 QDesktopServices.openUrl(url)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 def on_buttonBox_accepted(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 Private slot to handle the OK button press.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 This action saves the edited list to the preferences store.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 self.__saveDeviceData()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.accept()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 @pyqtSlot()
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 def on_buttonBox_rejected(self):
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 Private slot handling the cancellation of the dialog.
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 """
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 if self.__isDirty():
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 ok = E5MessageBox.okToClearData(
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 self,
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 self.tr("Unsaved Data"),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 self.tr("""The list of devices contains some with modified"""
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """ data."""),
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 self.__saveDeviceData)
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 if not ok:
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 return
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258
218ca8019eb8 Added the files forgotten in the last commit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.reject()

eric ide

mercurial