def __init__(self, sidebar=True): """ Init Selection list ui @param sidebar as bool """ Gtk.Overlay.__init__(self) self.__was_visible = False self.__timeout = None self.__to_select_ids = [] self.__modifier = False self.__populating = False self.__updating = False # Sort disabled if False self.__is_artists = False builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/SelectionList.ui') builder.connect_signals(self) self.__selection = builder.get_object('selection') self.__selection.set_select_function(self.__selection_validation) self.__model = builder.get_object('model') self.__model.set_sort_column_id(0, Gtk.SortType.ASCENDING) self.__model.set_sort_func(0, self.__sort_items) self.__view = builder.get_object('view') if sidebar: self.__view.get_style_context().add_class('sidebar') self.__view.set_row_separator_func(self.__row_separator_func) self.__renderer0 = CellRendererArtist() self.__renderer0.set_property('ellipsize-set', True) self.__renderer0.set_property('ellipsize', Pango.EllipsizeMode.END) self.__renderer1 = Gtk.CellRendererPixbuf() # 16px for Gtk.IconSize.MENU self.__renderer1.set_fixed_size(16, -1) column = Gtk.TreeViewColumn('') column.set_expand(True) column.pack_start(self.__renderer0, True) column.add_attribute(self.__renderer0, 'text', 1) column.add_attribute(self.__renderer0, 'artist', 1) column.add_attribute(self.__renderer0, 'rowid', 0) column.pack_start(self.__renderer1, False) column.add_attribute(self.__renderer1, 'icon-name', 2) self.__view.append_column(column) self.__view.set_property('has_tooltip', True) self.__scrolled = Gtk.ScrolledWindow() self.__scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self.__scrolled.add(self.__view) self.__scrolled.show() self.add(self.__scrolled) if Gtk.get_minor_version() > 14: self.__fast_scroll = FastScroll(self.__view, self.__model, self.__scrolled) self.add_overlay(self.__fast_scroll) else: self.__fast_scroll = None self.__scrolled.connect('enter-notify-event', self.__on_enter_notify) self.__scrolled.connect('leave-notify-event', self.__on_leave_notify) Lp().art.connect('artist-artwork-changed', self.__on_artist_artwork_changed)
def __init__(self, base_mask): """ Init Selection list ui @param base_mask as SelectionListMask """ LazyLoadingView.__init__(self, StorageType.ALL, ViewType.DEFAULT) self.__selection_pending_ids = [] self.__base_mask = base_mask self.__mask = SelectionListMask.NONE self.__animation_timeout_id = None self.__height = SelectionListRow.get_best_height(self) self._box = Gtk.ListBox() self._box.set_selection_mode(Gtk.SelectionMode.MULTIPLE) self._box.show() GesturesHelper.__init__(self, self._box) self.__scrolled = Gtk.ScrolledWindow() self.__scrolled.show() self.__scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self.__viewport = Gtk.Viewport() self.__scrolled.add(self.__viewport) self.__viewport.show() self.__viewport.add(self._box) self.connect("initialized", self.__on_initialized) self.get_style_context().add_class("sidebar") self.__scrolled.set_vexpand(True) if base_mask & SelectionListMask.FASTSCROLL: self.__overlay = Gtk.Overlay.new() self.__overlay.show() self.__overlay.add(self.__scrolled) self.__fastscroll = FastScroll(self._box, self.__scrolled) self.__overlay.add_overlay(self.__fastscroll) self.add(self.__overlay) App().settings.connect("changed::artist-artwork", self.__on_artist_artwork_changed) App().art.connect("artist-artwork-changed", self.__on_artist_artwork_changed) else: self.__overlay = None App().settings.connect("changed::show-sidebar-labels", self.__on_show_sidebar_labels_changed) self.add(self.__scrolled) self.__menu_button = Gtk.Button.new_from_icon_name( "view-more-horizontal-symbolic", Gtk.IconSize.BUTTON) self.__menu_button.set_property("halign", Gtk.Align.CENTER) self.__menu_button.get_style_context().add_class("no-border") self.__menu_button.connect("clicked", lambda x: self.__popup_menu(None, x)) self.__menu_button.show() self.add(self.__menu_button) if base_mask & SelectionListMask.SIDEBAR: App().window.container.widget.connect("notify::folded", self.__on_container_folded) self.__on_container_folded(None, App().window.folded) else: self.__base_mask |= SelectionListMask.LABEL self.__base_mask |= SelectionListMask.ELLIPSIZE self.__set_rows_mask(self.__base_mask | self.__mask)
def __init__(self, base_type): """ Init Selection list ui @param base_type as SelectionListMask """ Gtk.Overlay.__init__(self) BaseView.__init__(self) self.__base_type = base_type self.__timeout = None self.__modifier = False self.__populating = False self.__mask = 0 builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/SelectionList.ui") builder.connect_signals(self) self.__selection = builder.get_object("selection") self.__selection.set_select_function(self.__selection_validation) self.__selection.connect("changed", self.__on_selection_changed) self.__model = Gtk.ListStore(int, str, str, str) self.__model.set_sort_column_id(0, Gtk.SortType.ASCENDING) self.__model.set_sort_func(0, self.__sort_items) self.__view = builder.get_object("view") self.__view.set_model(self.__model) if base_type in [ SelectionListMask.LIST_ONE, SelectionListMask.LIST_TWO ]: self.__view.get_style_context().add_class("sidebar") self.__view.set_row_separator_func(self.__row_separator_func) self.__renderer0 = CellRendererArtist() self.__renderer0.set_property("ellipsize-set", True) self.__renderer0.set_property("ellipsize", Pango.EllipsizeMode.END) self.__renderer1 = Gtk.CellRendererPixbuf() # 16px for Gtk.IconSize.MENU self.__renderer1.set_fixed_size(16, -1) column = Gtk.TreeViewColumn("") column.set_expand(True) column.pack_start(self.__renderer0, True) column.add_attribute(self.__renderer0, "text", 1) column.add_attribute(self.__renderer0, "artist", 1) column.add_attribute(self.__renderer0, "rowid", 0) column.pack_start(self.__renderer1, False) column.add_attribute(self.__renderer1, "icon-name", 2) self.__view.append_column(column) self.__view.set_property("has_tooltip", True) self.__scrolled = Gtk.ScrolledWindow() self.__scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self.__scrolled.add(self.__view) self.__scrolled.show() self.add(self.__scrolled) self.__fast_scroll = FastScroll(self.__view, self.__model, self.__scrolled) self.add_overlay(self.__fast_scroll) self.__scrolled.connect("enter-notify-event", self.__on_enter_notify) self.__scrolled.connect("leave-notify-event", self.__on_leave_notify) App().art.connect("artist-artwork-changed", self.__on_artist_artwork_changed)
def __init__(self, base_type): """ Init Selection list ui @param base_type as SelectionListMask """ LazyLoadingView.__init__(self, ViewType.NOT_ADAPTIVE) self.__base_type = base_type self.__sort = False self.__mask = 0 self.__height = SelectionListRow.get_best_height(self) self._listbox = Gtk.ListBox() self._listbox.connect("button-release-event", self.__on_button_release_event) self._listbox.connect("key-press-event", self.__on_key_press_event) self._listbox.set_sort_func(self.__sort_func) self._listbox.set_selection_mode(Gtk.SelectionMode.MULTIPLE) self._listbox.set_filter_func(self._filter_func) self._listbox.show() self._viewport.add(self._listbox) overlay = Gtk.Overlay.new() overlay.set_hexpand(True) overlay.set_vexpand(True) overlay.show() overlay.add(self._scrolled) self.__fastscroll = FastScroll(self._listbox, self._scrolled) overlay.add_overlay(self.__fastscroll) self.add(overlay) self.get_style_context().add_class("sidebar") App().art.connect("artist-artwork-changed", self.__on_artist_artwork_changed) self.__type_ahead_popover = TypeAheadPopover() self.__type_ahead_popover.set_relative_to(self._scrolled) self.__type_ahead_popover.entry.connect("activate", self.__on_type_ahead_activate) self.__type_ahead_popover.entry.connect("changed", self.__on_type_ahead_changed)