Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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)