def removeDevice(device, *args, **kwargs): from src.rw.jsonio import JsonIO Json = JsonIO('devices.json') Json.removeSingleEntry('known_devices', device) # Clear device selection if forgetting currently selected device try: Json.removeSingleEntry('selected_device', device) Json.clearLayout('selected_devices', 'strips') except: pass
class DeviceDiscovery(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Setup UI self.ui = Ui_Form() self.ui.setupUi(self) # Block inputs to application while dialogue active self.setWindowModality(Qt.ApplicationModal) # Set style sheet with open(getPath('main_ld.qss'), 'r') as style_file: self.setStyleSheet(style_file.read()) # Get devices and save to JSON self.findDevices() # Add devices to menu self.addDevices() def findDevices(self): # Clear cache JsonIO('devices.json').clearLayout('discovered_devices', 'devices') # Repopulate cache SerialFinder() # Remove added devices self.json = JsonIO('devices.json') self.discovered_devices = list(self.json.readEntry( 'discovered_devices')['devices'].keys()) self.known_devices = self.json.readEntry('known_devices')['devices'] for device in self.known_devices.values(): self.port = device['command']['payload'] if self.port in self.discovered_devices: self.json.removeSingleEntry('discovered_devices', self.port) def addDevices(self): # Imports done here to prevent circular imports from src.ui.generate_buttons import GenerateButtons GenerateButtons('devices.json', 'discovered_devices').generateGenericButtons( self.ui.discovery_button_layout, self.ui.discovery_scroll_region, 'primary', spacer=True) # Additional spacer below buttons for better separation between border and bottom button self.ui.discovery_button_layout.addItem(QSpacerItem( 20, 40, QSizePolicy.Minimum, QSizePolicy.Fixed))