Example #1
0
 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
Example #2
0
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))