def __init__(self, playlist_name): Gtk.Bin.__init__(self) self._playlist_name = playlist_name self._tracks = [] self._main_widget = Gtk.Grid() self._main_widget.show() self._tracks_widget1 = TracksWidget(False) self._tracks_widget2 = TracksWidget(False) self._tracks_widget1.connect('activated', self._on_activated, playlist_name) self._tracks_widget2.connect('activated', self._on_activated, playlist_name) self._tracks_widget1.show() self._tracks_widget2.show() size_group = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL) size_group.add_widget(self._tracks_widget1) size_group.add_widget(self._tracks_widget2) self._main_widget.add(self._tracks_widget1) self._main_widget.add(self._tracks_widget2) self.add(self._main_widget)
def __init__(self, playlist_ids): """ Init playlist Widget @param playlist ids as [int] """ Gtk.Bin.__init__(self) self._playlist_ids = playlist_ids self._tracks1 = [] self._tracks2 = [] self._width = None self._orientation = None self._stop = False # Used to block widget2 populate while showing one column self._locked_widget2 = True self._box = Gtk.Grid() self._box.set_column_homogeneous(True) self._box.set_property('valign', Gtk.Align.START) self._box.show() self.connect('size-allocate', self._on_size_allocate) self._tracks_widget_left = TracksWidget() self._tracks_widget_right = TracksWidget() self._tracks_widget_left.connect('activated', self._on_activated) self._tracks_widget_right.connect('activated', self._on_activated) self._tracks_widget_left.show() self._tracks_widget_right.show() self.add(self._box)
def __init__(self, playlist_id): """ Init playlist Widget @param playlist id as int @param playlist name as str """ Gtk.Bin.__init__(self) self._playlist_id = playlist_id self._tracks1 = [] self._tracks2 = [] self._stop = False main_widget = Gtk.Grid() main_widget.set_property('margin', 10) main_widget.set_property('column-spacing', 10) main_widget.show() loved = playlist_id != Type.LOVED self._tracks_widget1 = TracksWidget(False, loved) self._tracks_widget2 = TracksWidget(False, loved) self._tracks_widget1.connect('activated', self._on_activated) self._tracks_widget2.connect('activated', self._on_activated) self._tracks_widget1.show() self._tracks_widget2.show() size_group = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL) size_group.add_widget(self._tracks_widget1) size_group.add_widget(self._tracks_widget2) main_widget.add(self._tracks_widget1) main_widget.add(self._tracks_widget2) self.add(main_widget)
def __add_disc_container(self, disc_number): """ Add disc container to box @param disc_number as int """ self._tracks_left[disc_number] = TracksWidget() self._tracks_right[disc_number] = TracksWidget() self._tracks_left[disc_number].connect("activated", self.__on_activated) self._tracks_right[disc_number].connect("activated", self.__on_activated) self._tracks_left[disc_number].show() self._tracks_right[disc_number].show()
def _add_disc_container(self, disc_number): """ Add disc container to box @param disc_number as int """ self._tracks_left[disc_number] = TracksWidget() self._tracks_right[disc_number] = TracksWidget() self._tracks_left[disc_number].connect('activated', self._on_activated) self._tracks_left[disc_number].connect('button-press-event', self._on_button_press_event) self._tracks_right[disc_number].connect('activated', self._on_activated) self._tracks_right[disc_number].connect('button-press-event', self._on_button_press_event) self._tracks_left[disc_number].show() self._tracks_right[disc_number].show()
def __init__(self, playlist_id, playlist_name): """ Init playlist Widget @param playlist id as int @param playlist name as str """ Gtk.Bin.__init__(self) self._playlist_id = playlist_id self._playlist_name = playlist_name self._tracks1 = [] self._tracks2 = [] self._stop = False self._main_widget = Gtk.Grid() self._main_widget.set_property('margin', 10) self._main_widget.set_property('column-spacing', 10) self._main_widget.show() self._tracks_widget1 = TracksWidget(False) self._tracks_widget2 = TracksWidget(False) self._tracks_widget1.connect('activated', self._on_activated, playlist_name) self._tracks_widget2.connect('activated', self._on_activated, playlist_name) self._tracks_widget1.show() self._tracks_widget2.show() size_group = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL) size_group.add_widget(self._tracks_widget1) size_group.add_widget(self._tracks_widget2) self._main_widget.add(self._tracks_widget1) self._main_widget.add(self._tracks_widget2) self._stack = Gtk.Stack() self._stack.set_transition_duration(250) self._stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) self._stack.show() spinner = Gtk.Spinner() spinner.start() spinner.show() self._stack.add(spinner) self._stack.add(self._main_widget) self._stack.set_visible_child(spinner) self.add(self._stack)
def __init__(self, playlist_ids): """ Init playlist Widget @param playlist ids as [int] """ Gtk.Grid.__init__(self) self.set_row_spacing(5) self.set_orientation(Gtk.Orientation.VERTICAL) self.__playlist_ids = playlist_ids self.__tracks_left = [] self.__tracks_right = [] self.__width = None self.__orientation = None self.__loading = Loading.NONE # Used to block widget2 populate while showing one column self.__locked_widget_right = True self.__grid = Gtk.Grid() self.__grid.set_vexpand(True) self.__grid.set_column_homogeneous(True) self.__grid.show() self.connect("size-allocate", self.__on_size_allocate) self.__tracks_widget_left = TracksWidget(True) self.__tracks_widget_left.set_vexpand(True) self.__tracks_widget_right = TracksWidget(True) self.__tracks_widget_right.set_vexpand(True) self.__tracks_widget_left.connect("activated", self.__on_activated) self.__tracks_widget_right.connect("activated", self.__on_activated) self.__tracks_widget_left.show() self.__tracks_widget_right.show() self.drag_dest_set(Gtk.DestDefaults.DROP | Gtk.DestDefaults.MOTION, [], Gdk.DragAction.MOVE) self.drag_dest_add_text_targets() self.connect("drag-data-received", self.__on_drag_data_received) self.add(self.__grid)
def __init__(self, album_id, genre_ids, artist_ids, popover, size_group): """ Init detailed album widget @param album id as int @param genre ids as [int] @param artist ids as [int] @param popover as bool @param size group as Gtk.SizeGroup """ Gtk.Bin.__init__(self) AlbumWidget.__init__(self, album_id, genre_ids) self._artist_ids = artist_ids self._pop_allowed = not popover or Gtk.get_minor_version() > 16 builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/%s.ui' % type(self).__name__) self._color = builder.get_object('color') rating = RatingWidget(self._album) rating.show() builder.get_object('coverbox').add(rating) builder.connect_signals(self) self._artist_label = builder.get_object('artist') if len(artist_ids) > 1: self._artist_label.set_text(self._album.artist_name) self._artist_label.show() label = builder.get_object('duration') duration = Lp().albums.get_duration(album_id, genre_ids) hours = int(duration / 3600) mins = int(duration / 60) if hours > 0: mins -= hours * 60 if mins > 0: label.set_text(_("%s h %s m") % (hours, mins)) else: label.set_text(_("%s h") % hours) else: label.set_text(_("%s m") % mins) grid = builder.get_object('tracks') self._discs = self._album.discs self._tracks_left = {} self._tracks_right = {} show_label = len(self._discs) > 1 i = 0 for disc in self._discs: index = disc.number if show_label: label = Gtk.Label() label.set_text(_("Disc %s") % index) label.set_property('halign', Gtk.Align.START) label.get_style_context().add_class('dim-label') if i: label.set_property('margin-top', 30) label.show() grid.attach(label, 0, i, 2, 1) i += 1 self._tracks_left[index] = TracksWidget(self._pop_allowed, True) self._tracks_right[index] = TracksWidget(self._pop_allowed, True) grid.attach(self._tracks_left[index], 0, i, 1, 1) grid.attach(self._tracks_right[index], 1, i, 1, 1) size_group.add_widget(self._tracks_left[index]) size_group.add_widget(self._tracks_right[index]) self._tracks_left[index].connect('activated', self._on_activated) self._tracks_left[index].connect('button-press-event', self._on_button_press_event) self._tracks_right[index].connect('activated', self._on_activated) self._tracks_right[index].connect('button-press-event', self._on_button_press_event) self._tracks_left[index].show() self._tracks_right[index].show() i += 1 self._cover = builder.get_object('cover') self.set_cover() self.update_state() builder.get_object('title').set_label(self._album.name) if self._album.year: year = builder.get_object('year') year.set_label(self._album.year) year.show() self.add(builder.get_object('widget')) # TODO: Remove this test later if self._pop_allowed: self._menu = builder.get_object('menu') self._menu.connect('clicked', self._pop_menu) self._menu.show()
def __init__(self, album_id, genre_id, show_menu, scrolled, size_group): AlbumWidget.__init__(self, album_id) self._artist_id = Objects.albums.get_artist_id(album_id) self._album_id = album_id self._genre_id = genre_id builder = Gtk.Builder() if scrolled: builder.add_from_resource( '/org/gnome/Lollypop/AlbumContextWidget.ui') else: builder.add_from_resource( '/org/gnome/Lollypop/AlbumDetailedWidget.ui') builder.connect_signals(self) self._stars = [] self._stars.append(builder.get_object('star0')) self._stars.append(builder.get_object('star1')) self._stars.append(builder.get_object('star2')) self._stars.append(builder.get_object('star3')) self._stars.append(builder.get_object('star4')) self._on_leave_notify(None, None) grid = builder.get_object('tracks') self._discs = Objects.albums.get_discs(album_id, genre_id) self._tracks_left = {} self._tracks_right = {} show_label = len(self._discs) > 1 i = 0 for disc in self._discs: if show_label: label = Gtk.Label() label.set_text(_("Disc %s") % disc) label.set_property('halign', Gtk.Align.START) label.get_style_context().add_class('dim-label') if i: label.set_property('margin-top', 30) label.show() grid.attach(label, 0, i, 2, 1) i += 1 sep = Gtk.Separator() sep.show() grid.attach(sep, 0, i ,2 ,1) i += 1 self._tracks_left[disc] = TracksWidget(show_menu) self._tracks_right[disc] = TracksWidget(show_menu) grid.attach(self._tracks_left[disc], 0, i, 1, 1) grid.attach(self._tracks_right[disc], 1, i, 1, 1) size_group.add_widget(self._tracks_left[disc]) size_group.add_widget(self._tracks_right[disc]) self._tracks_left[disc].connect('activated', self._on_activated) self._tracks_left[disc].connect('button-press-event', self._on_button_press_event) self._tracks_right[disc].connect('activated', self._on_activated) self._tracks_right[disc].connect('button-press-event', self._on_button_press_event) self._tracks_left[disc].show() self._tracks_right[disc].show() i += 1 self._cover = builder.get_object('cover') self.set_cover() builder.get_object('title').set_label( Objects.albums.get_name(album_id)) builder.get_object('year').set_label( Objects.albums.get_year(album_id)) self.add(builder.get_object('AlbumDetailedWidget')) if show_menu: self._menu = builder.get_object('menu') self._eventbox = builder.get_object('eventbox') self._eventbox.connect('realize', self._on_eventbox_realize) self._eventbox.connect("button-press-event", self._show_web_art) self._menu.connect('clicked', self._pop_menu) self._menu.show() else: self._eventbox = None
def __init__(self, album_id, genre_id, pop_allowed, scrolled, size_group): """ Init detailed album widget @param album id as int @param genre id as int @param parent width as int @param pop_allowed as bool if widget can show popovers @param scrolled as bool @param size group as Gtk.SizeGroup """ AlbumWidget.__init__(self, album_id, genre_id=genre_id) builder = Gtk.Builder() if scrolled: builder.add_from_resource( '/org/gnome/Lollypop/AlbumContextWidget.ui') else: builder.add_from_resource( '/org/gnome/Lollypop/AlbumDetailedWidget.ui') rating = RatingWidget(self._album) rating.show() builder.get_object('coverbox').add(rating) builder.connect_signals(self) if scrolled: builder.get_object('artist').set_text(self._album.artist_name) builder.get_object('artist').show() grid = builder.get_object('tracks') self._discs = self._album.discs self._tracks_left = {} self._tracks_right = {} show_label = len(self._discs) > 1 i = 0 for disc in self._discs: index = disc.number if show_label: label = Gtk.Label() label.set_text(_("Disc %s") % index) label.set_property('halign', Gtk.Align.START) label.get_style_context().add_class('dim-label') if i: label.set_property('margin-top', 30) label.show() grid.attach(label, 0, i, 2, 1) i += 1 sep = Gtk.Separator() sep.set_property('margin-bottom', 2) sep.show() grid.attach(sep, 0, i, 2, 1) i += 1 self._tracks_left[index] = TracksWidget(pop_allowed) self._tracks_right[index] = TracksWidget(pop_allowed) grid.attach(self._tracks_left[index], 0, i, 1, 1) grid.attach(self._tracks_right[index], 1, i, 1, 1) size_group.add_widget(self._tracks_left[index]) size_group.add_widget(self._tracks_right[index]) self._tracks_left[index].connect('activated', self._on_activated) self._tracks_left[index].connect('button-press-event', self._on_button_press_event) self._tracks_right[index].connect('activated', self._on_activated) self._tracks_right[index].connect('button-press-event', self._on_button_press_event) self._tracks_left[index].show() self._tracks_right[index].show() i += 1 self._cover = builder.get_object('cover') self.set_cover() builder.get_object('title').set_label(self._album.name) builder.get_object('year').set_label(self._album.year) self.add(builder.get_object('AlbumDetailedWidget')) if pop_allowed: self._menu = builder.get_object('menu') self._eventbox = builder.get_object('eventbox') self._eventbox.connect('realize', self._on_eventbox_realize) self._eventbox.connect("button-press-event", self._on_cover_press_event) self._menu.connect('clicked', self._pop_menu) self._menu.show() else: self._eventbox = None