def on_merge(self, effective_changes):
        changes = self.pending_changes(False)
        self.logger.debug("All inst changes: %s" % changes)

        if "button.other_device" in changes:
            details = self.widgets["installation.device.details"]
            details.text("")
            description = (("Please enter one or more disks to use " +
                            "for installing %s. Multiple devices can be " +
                            "separated by comma.") %
                           self.application.product.PRODUCT_SHORT)
            self._dialog = CustomDeviceDialog("installation.device.custom",
                                              "Installation devices.",
                                              description, self)
            self.widgets.add(self._dialog)
            return self._dialog

        if changes.contains_any(["installation.device.custom"]):
            # Check if any custom device was set
            cdevs = self._model.get("installation.device.custom", "").\
                split(",")
            # Update the installlation devices accordingly
            self._model.setdefault("installation.devices", []).extend(cdevs)

        if changes.contains_any(["dialog.device.custom.save"]):
            # Custom device dialog: <Save> has been hit
            self._dialog.close()
            self.application.ui.navigate.to_next_plugin()
        elif changes.contains_any(["button.back"]):
            self.application.ui.navigate.to_previous_plugin()
        elif changes.contains_any(["button.next"]):
            self.application.ui.navigate.to_next_plugin()
    def on_merge(self, effective_changes):
        changes = self.pending_changes(False)
        self.logger.debug("All inst changes: %s" % changes)

        if "button.other_device" in changes:
            details = self.widgets["installation.device.details"]
            details.text("")
            description = (("Please enter one or more disks to use " +
                            "for installing %s. Multiple devices can be " +
                            "separated by comma.") %
                           self.application.product.PRODUCT_SHORT)
            self._dialog = CustomDeviceDialog("installation.device.custom",
                                              "Installation devices.",
                                              description)
            self.widgets.add(self._dialog)
            return self._dialog

        elif changes.contains_any(
            ["installation.device.custom", "dialog.device.custom.save"]):
            self._dialog.close()
            return self.ui_content()

        if changes.contains_any(["button.back"]):
            self.application.ui.navigate.to_previous_plugin()
        elif changes.contains_any(["button.next"]):
            if "installation.device.custom" in self._model:
                cdev = self._model["installation.device.custom"]
                self._model["installation.devices"].append(cdev)
            self.application.ui.navigate.to_next_plugin()
 def on_change(self, changes):
     self.logger.debug("Installation device changes: %s" % changes)
     if changes.contains_any(["installation.device.current"]):
         highlighted_device = changes["installation.device.current"]
         details = self.widgets["installation.device.details"]
         if highlighted_device == "other":
             details.text("")
             self._dialog = CustomDeviceDialog("custom", "x", "y")
             return self._dialog
         elif highlighted_device:
             selected_devices = \
                 self.widgets["installation.device.current"].selection()
             self.logger.debug("selected devices: %s" % selected_devices)
             changes["installation.devices"] = selected_devices
             self._model.update(changes)
             details.set_device(highlighted_device)