def _on_new_clicked(self, widget): """ Show popover for adding a new radio @param widget as Gtk.Widget """ popover = RadioPopover('', self._radios_manager) popover.set_relative_to(widget) popover.show()
def _on_edit_press_event(self, widget, event): """ Edit radio @param: widget as Gtk.EventBox @param: event as Gdk.Event """ popover = RadioPopover(self.__name, self.__radios_manager) popover.set_relative_to(widget) popover.connect('closed', self._on_pop_cover_closed) self._lock_overlay = True popover.show()
def _on_edit_press_event(self, widget, event): """ Edit radio @param: widget as Gtk.EventBox @param: event as Gdk.Event """ popover = RadioPopover(self._name, self._radios_manager) popover.set_relative_to(widget) popover.connect('closed', self._on_pop_cover_closed) self._lock_overlay = True popover.show()
class RadioWidget(Gtk.Bin, AlbumWidget): """ Widget with radio cover and title """ def __init__(self, name, radios_manager): """ Init radio widget @param name as string @param radios_manager as RadiosManager """ Gtk.Bin.__init__(self) AlbumWidget.__init__(self, None) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/RadioWidget.ui') builder.connect_signals(self) self._cover = builder.get_object('cover') self._color = builder.get_object('color') self._name = name self._radios_manager = radios_manager self._popover = None self._title = builder.get_object('title') self._title.set_label(name) self.update_state() self.add(builder.get_object('widget')) self.set_cover() self.set_property('halign', Gtk.Align.START) def set_sensitive(self, b): """ Ignore set sensitive """ pass def get_id(self): """ Return widget id (same value for all radio widgets) """ return Type.RADIOS def do_get_preferred_width(self): """ Set maximum width """ widths = self._cover.get_preferred_width() return (widths[0] + 8, widths[1] + 8) def set_name(self, name): """ Set radio name @param name as string """ self._name = name self._title.set_label(name) def get_name(self): """ Return radio name @return name as string """ return self._name def set_cover(self): """ Set cover for album if state changed """ if self._cover is None: return surface = Lp().art.get_radio_artwork( self._name, ArtSize.BIG*self._cover.get_scale_factor()) self._cover.set_from_surface(surface) del surface def update_cover(self): """ Update cover for radio """ if self._cover is None: return surface = Lp().art.get_radio_artwork( self._name, ArtSize.BIG*self._cover.get_scale_factor()) self._cover.set_from_surface(surface) del surface def update_state(self): """ Update widget state """ selected = Lp().player.current_track.id == Type.RADIOS and\ self._name == Lp().player.current_track.album_artist if selected: self._color.get_style_context().add_class( 'cover-frame-selected') else: self._color.get_style_context().remove_class( 'cover-frame-selected') def edit(self, widget): """ Edit radio @param widget as Gtk.Widget """ self._popover = RadioPopover(self._name, self._radios_manager) self._popover.set_relative_to(widget) self._popover.show() ####################### # PRIVATE # ####################### def _on_title_press(self, widget, event): """ Edit radio @param widget as Gtk.Widget @param event as Gdk.Event """ self.edit(widget) def _on_cover_press(self, widget, event): """ Edit radio on right click @param widget as Gtk.Widget @param event as Gdk.Event """ if event.button != 1: self.edit(widget) def _on_eventbox_realize1(self, eventbox): """ Change cursor over cover eventbox @param eventbox as Gdk.Eventbox """ eventbox.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.HAND1)) def _on_eventbox_realize2(self, eventbox): """ Change cursor over title eventbox @param eventbox as Gdk.Eventbox """ eventbox.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.PENCIL))
def _on_new_clicked(self, widget): popover = RadioPopover('', self._radios_manager) popover.set_relative_to(widget) popover.show()
class RadioWidget(AlbumWidget): """ Init radio widget @param name as string @param radios_manager as RadiosManager """ def __init__(self, name, radios_manager): AlbumWidget.__init__(self, None) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/RadioWidget.ui') builder.connect_signals(self) self._cover = builder.get_object('cover') self._name = name self._radios_manager = radios_manager self._popover = None self._title = builder.get_object('title') self._title.set_label(name) self.add(builder.get_object('widget')) self.set_cover() self.set_property('halign', Gtk.Align.START) # Set minimum width self.set_property('width-request', ArtSize.BIG+ArtSize.BORDER*2) """ Ignore set sensitive """ def set_sensitive(self, b): pass """ Return widget id (same value for all radio widgets) """ def get_id(self): return Type.RADIOS """ Set maximum width """ def do_get_preferred_width(self): return (ArtSize.BIG+ArtSize.BORDER*2, ArtSize.BIG+ArtSize.BORDER*2) """ Set radio name @param name as string """ def set_name(self, name): self._name = name self._title.set_label(name) """ Return radio name @return name as string """ def get_name(self): return self._name """ Set cover for album if state changed @param force as bool """ def set_cover(self, force=False): selected = Lp.player.current_track.id == Type.RADIOS and\ self._name == Lp.player.current_track.artist if self._cover is not None and (selected != self._selected or force): self._selected = selected pixbuf = Lp.art.get_radio(self._name, ArtSize.BIG, selected) self._cover.set_from_pixbuf(pixbuf) del pixbuf """ Update cover for album id id needed """ def update_cover(self): if self._cover is not None: self._selected = Lp.player.current_track.id == Type.RADIOS\ and self._name == Lp.player.current_track.artist pixbuf = Lp.art.get_radio(self._name, ArtSize.BIG, self._selected) self._cover.set_from_pixbuf(pixbuf) del pixbuf ####################### # PRIVATE # ####################### """ Edit radio @param widget as Gtk.Widget @param event as Gdk.Event """ def _on_button_press(self, widget, event): self._popover = RadioPopover(self._name, self._radios_manager) self._popover.set_relative_to(widget) self._popover.show() """ Change cursor over cover eventbox @param eventbox as Gdk.Eventbox """ def _on_eventbox_realize1(self, eventbox): eventbox.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.HAND1)) """ Change cursor over title eventbox @param eventbox as Gdk.Eventbox """ def _on_eventbox_realize2(self, eventbox): eventbox.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.PENCIL))
class RadioWidget(AlbumWidget): """ Widget with radio cover and title """ def __init__(self, name, radios_manager): """ Init radio widget @param name as string @param radios_manager as RadiosManager """ AlbumWidget.__init__(self, None) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/RadioWidget.ui") builder.connect_signals(self) self._cover = builder.get_object("cover") self._name = name self._radios_manager = radios_manager self._popover = None self._title = builder.get_object("title") self._title.set_label(name) self.add(builder.get_object("widget")) self.set_cover() self.set_property("halign", Gtk.Align.START) def set_sensitive(self, b): """ Ignore set sensitive """ pass def get_id(self): """ Return widget id (same value for all radio widgets) """ return Type.RADIOS def do_get_preferred_width(self): """ Set maximum width """ return self._cover.get_preferred_width() def set_name(self, name): """ Set radio name @param name as string """ self._name = name self._title.set_label(name) def get_name(self): """ Return radio name @return name as string """ return self._name def set_cover(self, force=False): """ Set cover for album if state changed @param force as bool """ selected = Lp.player.current_track.id == Type.RADIOS and self._name == Lp.player.current_track.artist if self._cover is not None and (selected != self._selected or force): self._selected = selected surface = Lp.art.get_radio(self._name, ArtSize.BIG * self._cover.get_scale_factor(), selected) self._cover.set_from_surface(surface) del surface def update_cover(self): """ Update cover for album id id needed """ if self._cover is not None: self._selected = Lp.player.current_track.id == Type.RADIOS and self._name == Lp.player.current_track.artist surface = Lp.art.get_radio(self._name, ArtSize.BIG * self._cover.get_scale_factor(), self._selected) self._cover.set_from_surface(surface) del surface def edit(self, widget): """ Edit radio @param widget as Gtk.Widget """ self._popover = RadioPopover(self._name, self._radios_manager) self._popover.set_relative_to(widget) self._popover.show() ####################### # PRIVATE # ####################### def _on_title_press(self, widget, event): """ Edit radio @param widget as Gtk.Widget @param event as Gdk.Event """ self.edit(widget) def _on_cover_press(self, widget, event): """ Edit radio on right click @param widget as Gtk.Widget @param event as Gdk.Event """ if event.button != 1: self.edit(widget) def _on_eventbox_realize1(self, eventbox): """ Change cursor over cover eventbox @param eventbox as Gdk.Eventbox """ eventbox.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.HAND1)) def _on_eventbox_realize2(self, eventbox): """ Change cursor over title eventbox @param eventbox as Gdk.Eventbox """ eventbox.get_window().set_cursor(Gdk.Cursor(Gdk.CursorType.PENCIL))