예제 #1
0
 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()
예제 #2
0
    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