def __init__(self,
              selection=None,
              browser_component=None,
              browser_mode=None,
              browser_hotswap_mode=None,
              insert_left=False,
              *a,
              **k):
     super(CreateDeviceComponent, self).__init__(*a, **k)
     self._selection = selection
     self._add_effect_mode = BrowserAddEffectMode(
         selection=selection,
         browser=self.application().browser,
         application_view=self.application().view,
         insert_left=insert_left)
     self._create_device_modes = self.register_component(ModesComponent())
     self._create_device_modes.add_mode('create', [
         SetAttributeMode(browser_component, 'do_load_item',
                          self._do_browser_load_item),
         self._add_effect_mode, browser_mode,
         browser_component.reset_load_memory
     ])
     self._create_device_modes.add_mode(
         'hotswap', [browser_hotswap_mode, browser_mode])
     self._go_to_hotswap_task = self._tasks.add(
         Task.sequence(Task.delay(1), Task.run(self._go_to_hotswap)))
     self._go_to_hotswap_task.kill()
class CreateDeviceComponent(CompoundComponent):

    @depends(selection=None)
    def __init__(self, selection = None, browser_component = None, browser_mode = None, browser_hotswap_mode = None, insert_left = False, *a, **k):
        super(CreateDeviceComponent, self).__init__(*a, **k)
        self._selection = selection
        self._add_effect_mode = BrowserAddEffectMode(selection=selection, browser=self.application().browser, application_view=self.application().view, insert_left=insert_left)
        self._create_device_modes = self.register_component(ModesComponent())
        self._create_device_modes.add_mode('create', [SetAttributeMode(browser_component, 'do_load_item', self._do_browser_load_item),
         self._add_effect_mode,
         browser_mode,
         browser_component.reset_load_memory])
        self._create_device_modes.add_mode('hotswap', [browser_hotswap_mode, browser_mode])
        self._go_to_hotswap_task = self._tasks.add(Task.sequence(Task.delay(1), Task.run(self._go_to_hotswap)))
        self._go_to_hotswap_task.kill()

    def on_enabled_changed(self):
        self._go_to_hotswap_task.kill()
        if self.is_enabled():
            selected = self._selection.selected_object
            if isinstance(selected, Live.DrumPad.DrumPad) and (not selected.chains or not selected.chains[0].devices):
                self._create_device_modes.selected_mode = 'hotswap'
            else:
                self._create_device_modes.selected_mode = 'create'

    def _go_to_hotswap(self):
        self._create_device_modes.selected_mode = 'hotswap'

    def _do_browser_load_item(self, item):
        selection = self._add_effect_mode.get_selection_for_insert()
        if selection:
            self._selection.selected_object = selection
        item.action()
        self._go_to_hotswap_task.restart()
 def __init__(self,
              selection=None,
              browser_component=None,
              browser_mode=None,
              browser_hotswap_mode=None,
              insert_left=False,
              *a,
              **k):
     super(CreateDeviceComponent, self).__init__(*a, **k)
     self._selection = selection
     self._add_effect_mode = BrowserAddEffectMode(
         selection=selection,
         browser=self.application().browser,
         application_view=self.application().view,
         insert_left=insert_left)
     self._create_device_modes = self.register_component(ModesComponent())
     self._create_device_modes.add_mode('create', [
         SetAttributeMode(browser_component, 'do_load_item',
                          self._do_browser_load_item),
         self._add_effect_mode, browser_mode,
         browser_component.reset_load_memory
     ])
     self._create_device_modes.add_mode(
         'hotswap', [browser_hotswap_mode, browser_mode])
     self._go_to_hotswap_task = self._tasks.add(
         Task.sequence(Task.delay(1), Task.run(self._go_to_hotswap)))
     self._go_to_hotswap_task.kill()