예제 #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)
예제 #2
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)
예제 #3
0
 def __init__(self, mode):
     """
         Init Selection list ui
         @param mode as SelectionMode
     """
     Gtk.ScrolledWindow.__init__(self)
     self.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
     self.__mode = mode
     self.__last_motion_event = None
     self.__previous_motion_y = 0.0
     self.__timeout = None
     self.__to_select_ids = []
     self.__modifier = False
     self.__updating = False  # Sort disabled if False
     self.__is_artists = False
     self.__popover = SelectionPopover()
     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')
     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.add(self.__view)
     self.connect('motion_notify_event', self.__on_motion_notify)
     self.get_vadjustment().connect('value_changed', self.__on_scroll)
     self.connect('enter-notify-event', self.__on_enter_notify)
     self.connect('leave-notify-event', self.__on_leave_notify)
     Lp().art.connect('artist-artwork-changed',
                      self.__on_artist_artwork_changed)
예제 #4
0
    def __init__(self, fast_scroll):
        """
            Init Selection list ui
            @param fast scroll as bool
        """
        Gtk.Bin.__init__(self)
        self.__last_motion_event = None
        self.__previous_motion_y = 0.0
        self.__timeout = None
        self.__to_select_ids = []
        self.__modifier = False
        self.__populating = False
        self.__updating = False  # Sort disabled if False
        self.__is_artists = False
        self.__fast_scroll = fast_scroll  # Show button to scroll to top
        self.__popover = SelectionPopover()
        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')
        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()
        if self.__fast_scroll:
            self.__scrolled.set_vexpand(True)
            self.__scrolled.set_hexpand(True)
            grid = Gtk.Grid()
            grid.set_orientation(Gtk.Orientation.VERTICAL)
            grid.show()
            self.__button = Gtk.Button.new_from_icon_name(
                'go-up-symbolic', Gtk.IconSize.MENU)
            self.__button.get_style_context().add_class('fast-scroll-button')
            self.__button.connect('clicked', self.__on_button_clicked)
            grid.add(self.__scrolled)
            grid.add(self.__button)
            self.add(grid)
        else:
            self.add(self.__scrolled)
        self.connect('motion_notify_event', self.__on_motion_notify)
        self.__scrolled.get_vadjustment().connect('value_changed',
                                                  self.__on_scroll)
        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)