def __init__(self, note_layout=None, *a, **k): raise note_layout is not None or AssertionError super(InstrumentScalesComponent, self).__init__(*a, **k) self._note_layout = note_layout self._key_center_buttons = [] self._encoder_touch_button_slots = self.register_slot_manager() self._encoder_touch_buttons = [] self._top_key_center_buttons = None self._bottom_key_center_buttons = None self._absolute_relative_button = None self._diatonic_chromatic_button = None self._info_sources = map(DisplayDataSource, ('Scale selection:', '', '')) self._line_sources = recursive_map(DisplayDataSource, (('', '', '', '', '', '', ''), ('', '', '', '', '', '', ''))) self._scale_sources = map( partial(DisplayDataSource, adjust_string_fn=adjust_string_crop), ('', '', '', '')) self._presets = self.register_component( InstrumentPresetsComponent(self._note_layout, is_enabled=False)) self._presets.selected_mode = 'scale_p4_vertical' self._scale_list = self.register_component( ListComponent(data_sources=self._scale_sources)) self._scale_list.scrollable_list.fixed_offset = 1 self._scale_list.scrollable_list.assign_items(SCALES) self._scale_list.scrollable_list.select_item_index_with_offset( list(SCALES).index(self._note_layout.scale), 1) self._on_selected_scale.subject = self._scale_list.scrollable_list self._update_data_sources()
def __init__(self, browser = None, make_browser_model = None, preferences = dict(), *a, **k): super(BrowserComponent, self).__init__(*a, **k) assert make_browser_model is not None self._browser = browser or self.application.browser self._browser_model = EmptyBrowserModel(browser=self._browser) self._make_browser_model = make_browser_model num_data_sources = self.NUM_COLUMNS * self.COLUMN_SIZE self._data_sources = map(DisplayDataSource, (u'',) * num_data_sources) self._last_loaded_item = None self._default_item_formatter = DefaultItemFormatter() self._list_components = [ ListComponent(parent=self) for _ in xrange(self.NUM_COLUMNS) ] for i, component in enumerate(self._list_components): component.do_trigger_action = lambda item: self._do_load_item(item) component.last_action_item = lambda : self._last_loaded_item component.item_formatter = partial(self._item_formatter, i) self._preferences = preferences self._select_buttons = [] self._state_buttons = [] self._encoder_controls = [] self._on_selected_item.replace_subjects(self._list_components) self._on_list_item_action.replace_subjects(self._list_components) self._on_hotswap_target_changed.subject = self._browser self._on_filter_type_changed.subject = self._browser self._on_browser_full_refresh.subject = self._browser self._scroll_offset = 0 self._max_scroll_offset = 0 self._max_hierarchy = 0 self._last_filter_type = None self._skip_next_preselection = False self._browser_model_dirty = True self._on_content_lists_changed() self.prehear_button.is_toggled = preferences.setdefault(u'browser_prehear', True) self._last_selected_item = None