def __init__(self, playlist_id): """ Init PlaylistView @parma playlist id as int """ View.__init__(self) self._playlist_id = playlist_id self._signal_id = Lp().playlists.connect('playlist-changed', self._update) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistView.ui') builder.get_object('title').set_label( Lp().playlists.get_name(playlist_id)) builder.connect_signals(self) self._edit_btn = builder.get_object('edit_btn') if playlist_id < 0 and playlist_id != Type.LOVED: self._edit_btn.hide() self._back_btn = builder.get_object('back_btn') self._title = builder.get_object('title') self._playlist_widget = PlaylistWidget(playlist_id) self._playlist_widget.show() self.add(builder.get_object('widget')) self._viewport.add(self._playlist_widget) self._scrolledWindow.set_property('expand', True) self.add(self._scrolledWindow)
def __init__(self, view_type): """ Init view @param view_type as ViewType """ View.__init__(self, StorageType.COLLECTION, view_type | ViewType.OVERLAY) self.__lyrics_timeout_id = None self.__downloads_running = 0 self.__lyrics_text = "" self._empty_message = _("No track playing") self._empty_icon_name = "view-dual-symbolic" self.__lyrics_label = LyricsLabel() self.__lyrics_label.show() self.__lyrics_label.set_property("halign", Gtk.Align.CENTER) self.__banner = LyricsBannerWidget(self.view_type) self.__banner.show() self.__banner.connect("translate", self.__on_translate) self.add_widget(self.__lyrics_label, self.__banner) self.__lyrics_helper = LyricsHelper() self.__update_lyrics_style() self.__information_store = InformationStore() return [(App().window.container.widget, "notify::folded", "_on_container_folded"), (App().player, "current-changed", "_on_current_changed")]
def __init__(self, playlist_id): """ Init PlaylistView @param playlist_id as int """ View.__init__(self, False) self.__playlist_id = playlist_id self.__size_group = Gtk.SizeGroup() self.__size_group.set_mode(Gtk.SizeGroupMode.BOTH) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/SmartPlaylistView.ui") builder.connect_signals(self) widget = builder.get_object("widget") self.connect("size-allocate", self.__on_size_allocate, widget) self._viewport.add(widget) self.__listbox = builder.get_object("listbox") self._scrolled.set_property("expand", True) self.__match_toggle = builder.get_object("match_toggle") self.__operand_combobox = builder.get_object("operand_combobox") self.__select_combobox = builder.get_object("select_combobox") self.__limit_spin = builder.get_object("limit_spin") self.__add_rule_button = builder.get_object("add_rule_button") self.__up_box = builder.get_object("up_box") self.__bottom_box = builder.get_object("bottom_box") if App().playlists.get_smart(playlist_id): self.__match_toggle.set_active(True) self.add(self._scrolled)
def __init__(self, artist_ids, genre_ids): """ Init ArtistView @param artist_id as int (Current if None) @param genre_id as int """ View.__init__(self) self._genre_ids = genre_ids self._artist_ids = artist_ids ArtistViewCommon.__init__(self) self._jump_button.hide() self.__overlay = Gtk.Overlay() self.__overlay.show() self.__overlay.add_overlay(self._banner) album_ids = App().albums.get_ids(artist_ids, genre_ids) self.__album_box = AlbumsBoxView( genre_ids, artist_ids, ViewType.MEDIUM | ViewType.SCROLLED | ViewType.NOT_ADAPTIVE) height = self._banner.default_height // 3 self._banner.set_height(height) self.__album_box.set_margin_top(height) self.__album_box.populate([Album(id) for id in album_ids]) self.__album_box.show() self.__overlay.add_overlay(self.__album_box) self.add(self.__overlay)
def __init__(self, artist_id, genre_id): """ Init ArtistView @param artist id as int @param genre id as int """ View.__init__(self) self._artist_id = artist_id self._genre_id = genre_id self._signal_id = None self._artist_name = Lp.artists.get_name(artist_id) if Lp.lastfm is not None: self._popover = InfosPopover(self._artist_name) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/ArtistView.ui') builder.connect_signals(self) self.attach(builder.get_object('ArtistView'), 0, 0, 1, 1) builder.get_object('artist').set_label(self._artist_name) self._pop_allowed = True self._albumbox = Gtk.Grid() self._albumbox.set_row_spacing(20) self._albumbox.set_property("orientation", Gtk.Orientation.VERTICAL) self._albumbox.show() self._scrolledWindow.set_property('expand', True) self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self.add(self._scrolledWindow)
def __init__(self, view_type=ViewType.DEFAULT): """ Init Popover @param view_type as ViewType """ View.__init__(self) self.__view_type = view_type self.__last_drag_id = None self.__stop = False self.connect("map", self.__on_map) self.connect("unmap", self.__on_unmap) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/QueuePopover.ui") builder.connect_signals(self) self.__clear_button = builder.get_object("clear-button") self.__view = Gtk.ListBox() self.__view.set_margin_start(MARGIN_SMALL) self.__view.set_margin_end(MARGIN) self.__view.get_style_context().add_class("trackswidget") self.__view.set_selection_mode(Gtk.SelectionMode.NONE) self.__view.set_activate_on_single_click(True) self.__view.connect("row-activated", self.__on_row_activated) self.__view.show() self.insert_row(0) self.attach(builder.get_object("widget"), 0, 0, 1, 1) self._viewport.add(self.__view) self._viewport.set_vexpand(True) self.add(self._scrolled)
def __init__(self, device, progress, width): """ Init view @param device as Device @param progress as Gtk.ProgressBar @param width as int """ View.__init__(self) self._device = device self._progress = progress builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/DeviceManagerView.ui") self._memory_combo = builder.get_object("memory_combo") self._syncing_btn = builder.get_object("sync_btn") self._syncing_btn.set_label(_("Synchronize %s") % device.name) builder.connect_signals(self) grid = builder.get_object("widget") self.add(grid) self._device_widget = DeviceManagerWidget(progress, self) self._device_widget.connect("sync-finished", self._on_sync_finished) self._device_widget.show() self._scrolledWindow.set_property("halign", Gtk.Align.CENTER) self._scrolledWindow.set_property("width-request", width) self._viewport.add(self._device_widget) self.add(self._scrolledWindow)
def __init__(self, navigation_id): View.__init__(self) self._signal = None self._context_album_id = None self._genre_id = navigation_id self._albumsongs = None self._context_widget = None self._albumbox = Gtk.FlowBox() self._albumbox.set_selection_mode(Gtk.SelectionMode.NONE) self._albumbox.connect("child-activated", self._on_album_activated) self._albumbox.set_max_children_per_line(100) self._albumbox.show() self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self._scrolledWindow.set_property('expand', True) self._context = ViewContainer(500) separator = Gtk.Separator() separator.show() self._paned = Gtk.Paned.new(Gtk.Orientation.VERTICAL) self._paned.pack1(self._scrolledWindow) self._paned.pack2(self._context, True, False) height = Objects.settings.get_value('paned-context-height').get_int32() # We set a stupid max value, safe as self._context is shrinked if height == -1: height = Objects.window.get_allocated_height() self._paned.set_position(height) self._paned.connect('notify::position', self._on_position_notify) self._paned.show() self.add(self._paned)
def __init__(self, playlist_ids, editable=True): """ Init PlaylistView @parma playlist ids as [int] @param editable as bool """ View.__init__(self) self.__tracks = [] self.__playlist_ids = playlist_ids self.__signal_id1 = Lp().playlists.connect('playlist-add', self.__on_playlist_add) self.__signal_id2 = Lp().playlists.connect('playlist-del', self.__on_playlist_del) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistView.ui') builder.connect_signals(self) builder.get_object('title').set_label( ", ".join(Lp().playlists.get_names(playlist_ids))) self.__edit_button = builder.get_object('edit-button') self.__jump_button = builder.get_object('jump-button') if len(playlist_ids) > 1 or ( playlist_ids[0] < 0 and playlist_ids[0] != Type.LOVED) or\ not editable: self.__edit_button.hide() self.__playlists_widget = PlaylistsWidget(playlist_ids) self.__playlists_widget.show() self.add(builder.get_object('widget')) self._viewport.add(self.__playlists_widget) self._scrolled.set_property('expand', True) self.add(self._scrolled)
def __init__(self): """ Init view """ View.__init__(self) InformationController.__init__( self, False, ArtBehaviour.BLUR_MAX | ArtBehaviour.CROP | ArtBehaviour.DARKER) self.__current_changed_id = None self.__size_allocate_timeout_id = None self.__lyrics_timeout_id = None self.__downloads_running = 0 self.__lyrics_text = "" self.__size = 0 self.__cancellable = Gio.Cancellable() builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/LyricsView.ui") builder.connect_signals(self) self._artwork = builder.get_object("cover") self.__lyrics_label = LyricsLabel() self.__lyrics_label.show() builder.get_object("viewport").add(self.__lyrics_label) self.__translate_button = builder.get_object("translate_button") # We do not use View scrolled window because it does not work with # an overlay self.add(builder.get_object("widget")) self.connect("size-allocate", self.__on_size_allocate) self.__sync_lyrics_helper = SyncLyricsHelper()
def __init__(self, playlist_ids, editable=True): """ Init PlaylistView @parma playlist ids as [int] @param editable as bool """ View.__init__(self) self._tracks = [] self._playlist_ids = playlist_ids self._signal_id1 = Lp().playlists.connect('playlist-add', self._on_playlist_add) self._signal_id2 = Lp().playlists.connect('playlist-del', self._on_playlist_del) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistView.ui') builder.connect_signals(self) builder.get_object('title').set_label( ", ".join(Lp().playlists.get_names(playlist_ids))) self._edit_button = builder.get_object('edit-button') self._jump_button = builder.get_object('jump-button') if len(playlist_ids) > 1 or ( playlist_ids[0] < 0 and playlist_ids[0] != Type.LOVED) or\ not editable: self._edit_button.hide() self._playlists_widget = PlaylistsWidget(playlist_ids) self._playlists_widget.show() self.add(builder.get_object('widget')) self._viewport.add(self._playlists_widget) self._scrolled.set_property('expand', True) self.add(self._scrolled)
def __init__(self, storage_type, view_type): """ Init view @param storage_type as StorageType @param view_type as ViewType """ View.__init__(self, storage_type, view_type | ViewType.OVERLAY) self.__grid = Gtk.Grid() self.__grid.get_style_context().add_class("padding") self.__grid.set_row_spacing(5) self.__grid.set_orientation(Gtk.Orientation.VERTICAL) self.__grid.show() if App().tracks.count() == 0: self.__welcome_screen() self.add_widget(self.__grid, None) else: album = TodayBannerWidget.get_today_album() if album is not None: self.__banner = TodayBannerWidget(album, self.view_type) self.__banner.show() else: self.__banner = None self.add_widget(self.__grid, self.__banner) return [ (App().settings, "changed::suggestions-mask", "_on_mask_changed"), ]
def __init__(self, device, progress, width): """ Init view @param device as Device @param progress as Gtk.ProgressBar @param width as int """ View.__init__(self) self._device = device self._progress = progress builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self._memory_combo = builder.get_object('memory_combo') self._syncing_btn = builder.get_object('sync_btn') self._syncing_btn.set_label(_("Synchronize %s") % device.name) builder.connect_signals(self) grid = builder.get_object('widget') self.add(grid) self._device_widget = DeviceManagerWidget(progress, self) self._device_widget.connect('sync-finished', self._on_sync_finished) self._device_widget.show() self._scrolledWindow.set_property('halign', Gtk.Align.CENTER) self._scrolledWindow.set_property('width-request', width) self._viewport.add(self._device_widget) self.add(self._scrolledWindow)
def __init__(self, artist_id, genre_id): """ Init ArtistView @param artist id as int @param genre id as int """ View.__init__(self) self._artist_id = artist_id self._genre_id = genre_id self._signal_id = None self._artist_name = Lp.artists.get_name(artist_id) if Lp.lastfm is not None or self.Wikipedia is not None: self._popover = InfosPopover(self._artist_name) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/ArtistView.ui') builder.connect_signals(self) self.attach(builder.get_object('ArtistView'), 0, 0, 1, 1) builder.get_object('artist').set_label(self._artist_name) self._pop_allowed = True self._albumbox = Gtk.Grid() self._albumbox.set_row_spacing(20) self._albumbox.set_property("orientation", Gtk.Orientation.VERTICAL) self._albumbox.show() self._scrolledWindow.set_property('expand', True) self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self.add(self._scrolledWindow)
def __init__(self): View.__init__(self) self._signal = None self._radios_manager = RadiosManager() self._radios_manager.connect('playlists-changed', self._on_radios_changed) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/RadiosView.ui') builder.connect_signals(self) widget = builder.get_object('widget') self._pop_tunein = TuneinPopover(self._radios_manager) self._pop_tunein.set_relative_to(builder.get_object('search_btn')) self._sizegroup = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.BOTH) self._radiobox = Gtk.FlowBox() self._radiobox.set_sort_func(self._sort_radios) self._radiobox.set_selection_mode(Gtk.SelectionMode.NONE) self._radiobox.connect("child-activated", self._on_album_activated) self._radiobox.set_property('column-spacing', 5) self._radiobox.set_property('row-spacing', 5) self._radiobox.set_homogeneous(True) self._radiobox.set_max_children_per_line(1000) self._radiobox.show() self._viewport.set_property("valign", Gtk.Align.START) self._viewport.set_property('margin', 5) self._viewport.add(self._radiobox) self._scrolledWindow.set_property('expand', True) self.add(widget) self.add(self._scrolledWindow)
def __init__(self, playlist_id, playlist_name, parent): """ Init PlaylistView @parma playlist id as int @param playlist name as str """ View.__init__(self) self._playlist_name = playlist_name self._signal_id = None builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistView.ui') builder.get_object('title').set_label(playlist_name) builder.connect_signals(self) self._edit_btn = builder.get_object('edit_btn') if playlist_id < 0 and playlist_id != Type.LOVED: self._edit_btn.hide() self._back_btn = builder.get_object('back_btn') self._title = builder.get_object('title') self._playlist_widget = PlaylistWidget(playlist_id, playlist_name) self._playlist_widget.show() self.add(builder.get_object('widget')) self._viewport.add(self._playlist_widget) self._scrolledWindow.set_property('expand', True) self.add(self._scrolledWindow)
def __init__(self, initial_search, view_type): """ Init Popover @param initial_search as str """ View.__init__( self, StorageType.COLLECTION | StorageType.SAVED | StorageType.SEARCH | StorageType.EPHEMERAL | StorageType.SPOTIFY_NEW_RELEASES | StorageType.SPOTIFY_SIMILARS, ViewType.SEARCH | ViewType.SCROLLED | ViewType.OVERLAY) Gtk.Bin.__init__(self) self.__timeout_id = None self.__current_search = "" self.__search = Search() self.__search.set_web_search( App().settings.get_value("web-search").get_string()) self.__cancellable = Gio.Cancellable() self._empty_message = _("Search for artists, albums and tracks") self._empty_icon_name = "edit-find-symbolic" self.__cancellable = Gio.Cancellable() self.__banner = SearchBannerWidget() self.__banner.show() self.__stack = SearchStack(self.storage_type) self.__stack.show() self.add_widget(self.__stack, self.__banner) self.__banner.entry.connect("changed", self._on_search_changed) self.show_placeholder(True, _("Search for artists, albums and tracks")) self.set_search(initial_search) return [(self.__search, "match-artist", "_on_match_artist"), (self.__search, "match-album", "_on_match_album"), (self.__search, "match-track", "_on_match_track"), (self.__search, "finished", "_on_search_finished"), (App().settings, "changed::web-search", "_on_web_search_changed")]
def __init__(self, view_type): """ Init view @param view_type as int """ View.__init__(self) self.__view_type = view_type if view_type == Type.SETTINGS_APPEARANCE: from lollypop.widgets_settings_appearance\ import AppearanceSettingsWidget widget = AppearanceSettingsWidget() elif view_type == Type.SETTINGS_BEHAVIOUR: from lollypop.widgets_settings_behaviour\ import BehaviourSettingsWidget widget = BehaviourSettingsWidget() elif view_type == Type.SETTINGS_COLLECTIONS: from lollypop.widgets_settings_collections\ import CollectionsSettingsWidget widget = CollectionsSettingsWidget() elif view_type == Type.SETTINGS_WEB: from lollypop.widgets_settings_web\ import WebSettingsWidget widget = WebSettingsWidget() elif view_type == Type.SETTINGS_DEVICES: from lollypop.widgets_settings_devices\ import DevicesSettingsWidget widget = DevicesSettingsWidget() child = widget.get_child() if isinstance(child, Gtk.Box): child.set_spacing(20) widget.show() self._viewport.add(widget) self._scrolled.set_property("expand", True) self.add(self._scrolled)
def __init__(self, navigation_id): View.__init__(self) self._signal = None self._context_album_id = None self._genre_id = navigation_id self._albumsongs = None self._context_widget = None self._albumbox = Gtk.FlowBox() self._albumbox.set_selection_mode(Gtk.SelectionMode.NONE) self._albumbox.connect("child-activated", self._on_album_activated) self._albumbox.set_max_children_per_line(100) self._albumbox.show() self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self._scrolledWindow.set_property('expand', True) self._context = ViewContainer(500) separator = Gtk.Separator() separator.show() self._paned = Gtk.Paned.new(Gtk.Orientation.VERTICAL) self._paned.pack1(self._scrolledWindow) self._paned.pack2(self._context, True, False) height = Objects.settings.get_value( 'paned-context-height').get_int32() # We set a stupid max value, safe as self._context is shrinked if height == -1: height = Objects.window.get_allocated_height() self._paned.set_position(height) self._paned.connect('notify::position', self._on_position_notify) self._paned.show() self.add(self._paned)
def __init__(self): """ Init view """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self.add(builder.get_object('nodevice'))
def __init__(self, widget): View.__init__(self) self._widget = widget self._viewport.add(widget) self._viewport.show() self._scrolledWindow.set_min_content_height(ArtSize.BIG + 35) self._scrolledWindow.show() self.add(self._scrolledWindow)
def __init__(self, widget): View.__init__(self) self._widget = widget self._viewport.add(widget) self._viewport.show() self._scrolledWindow.set_min_content_height(ArtSize.BIG+35) self._scrolledWindow.show() self.add(self._scrolledWindow)
def __init__(self): """ Init view """ View.__init__(self, StorageType.ALL, ViewType.SCROLLED) widget = EqualizerWidget() widget.show() self.add_widget(widget)
def __init__(self): """ Init view """ View.__init__(self) widget = EqualizerWidget() widget.show() self.add(widget)
def __init__(self, menu): """ Init view @param menu as Gtk.Widget """ View.__init__(self, StorageType.ALL, ViewType.SCROLLED) menu.get_style_context().add_class("adaptive-menu") menu.set_vexpand(True) self.add_widget(menu)
def __init__(self): """ Init view """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/FirstRunView.ui") builder.connect_signals(self) self.add(builder.get_object("widget"))
def __init__(self): """ Init view """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self.add(builder.get_object('message')) builder.get_object('label').set_text(_("Please unlock your device"))
def __init__(self): """ Init view """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self.add(builder.get_object('message')) builder.get_object('label').set_text( _("Lollypop sync changed due to limitations in some devices.\n" "Please remove Music/lollypop folder on your device..."))
def __init__(self, view_type, minimal=False): """ Init artist infos @param view_type as ViewType @param minimal as bool """ View.__init__(self, get_default_storage_type(), view_type) self.__information_store = InformationStore() self.__cancellable = Gio.Cancellable() self.__minimal = minimal self.__artist_name = ""
def __init__(self, widget): """ Init context @param main view widget """ View.__init__(self) self._widget = widget self._viewport.add(widget) self._viewport.show() self._scrolledWindow.set_min_content_height(ArtSize.BIG+35) self._scrolledWindow.show() self.add(self._scrolledWindow)
def __init__(self, storage_type, view_type): """ Init lazy loading @param storage_type as StorageType @param view_type as ViewType """ View.__init__(self, storage_type, view_type) self.__loading_state = LoadingState.NONE self.__lazy_queue = [] self.__priority_queue = [] self.__scroll_timeout_id = None self.__start_time = time()
def __init__(self, playlist_name, width): View.__init__(self) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistEditView.ui') builder.get_object('title').set_label(playlist_name) builder.connect_signals(self) grid = builder.get_object('widget') self.add(grid) self._edit_widget = PlaylistEditWidget(playlist_name) self._edit_widget.show() self._scrolledWindow.set_property('halign', Gtk.Align.CENTER) self._scrolledWindow.set_property('width-request', width) self._viewport.add(self._edit_widget) self.add(self._scrolledWindow)
def __init__(self, playlist_ids, editable=True): """ Init PlaylistView @parma playlist ids as [int] @param editable as bool """ View.__init__(self) self._tracks = [] self._playlist_ids = playlist_ids self._signal_id1 = Lp().playlists.connect('playlist-add', self._on_playlist_add) self._signal_id2 = Lp().playlists.connect('playlist-del', self._on_playlist_del) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistView.ui') builder.connect_signals(self) name = "" for playlist_id in playlist_ids: if playlist_id == Type.POPULARS: name += _("Popular tracks")+", " elif playlist_id == Type.RECENTS: name += _("Recently played")+", " elif playlist_id == Type.NEVER: name += _("Never played")+", " elif playlist_id == Type.RANDOMS: name += _("Random tracks")+", " elif playlist_id == Type.SEARCH: name += _("Search")+", " else: name += Lp().playlists.get_name(playlist_id)+", " builder.get_object('title').set_label(name[:-2]) self._edit_button = builder.get_object('edit-button') self._jump_button = builder.get_object('jump-button') if len(playlist_ids) > 1 or ( playlist_ids[0] < 0 and playlist_ids[0] != Type.LOVED) or\ not editable: self._edit_button.hide() self._title = builder.get_object('title') self._playlists_widget = PlaylistsWidget(playlist_ids) self._playlists_widget.connect('populated', self._on_populated) self._playlists_widget.show() self.add(builder.get_object('widget')) self._viewport.add(self._playlists_widget) self._scrolled.set_property('expand', True) self.add(self._scrolled)
def __init__(self, genre_id, is_compilation): """ Init album view @param genre id as int @param is compilation as bool """ View.__init__(self) self._signal = None self._context_album_id = None self._genre_id = genre_id self._is_compilation = is_compilation self._albumsongs = None self._context_widget = None self._press_rect = None self._lazy_queue = [] # Widgets not initialized self._scroll_value = 0 self._timeout_id = None self._albumbox = Gtk.FlowBox() self._albumbox.set_selection_mode(Gtk.SelectionMode.NONE) self._albumbox.connect('child-activated', self._on_album_activated) self._albumbox.connect('button-press-event', self._on_button_press) self._albumbox.set_property('column-spacing', 5) self._albumbox.set_property('row-spacing', 5) self._albumbox.set_homogeneous(True) self._albumbox.set_max_children_per_line(1000) self._albumbox.show() self._viewport.set_property('valign', Gtk.Align.START) self._viewport.set_property('margin', 5) self._scrolled.set_property('expand', True) self._scrolled.get_vadjustment().connect('value-changed', self._on_value_changed) self._context = ViewContainer(500) separator = Gtk.Separator() separator.show() self._paned = Gtk.Paned.new(Gtk.Orientation.VERTICAL) self._paned.pack1(self._scrolled, True, False) self._paned.pack2(self._context, False, False) height = Lp().settings.get_value('paned-context-height').get_int32() # We set a stupid max value, safe as self._context is shrinked if height == -1: height = Lp().window.get_allocated_height() self._paned.set_position(height) self._paned.connect('notify::position', self._on_position_notify) self._paned.show() self.add(self._paned)
def __init__(self, playlist_ids, editable=True): """ Init PlaylistView @parma playlist ids as [int] @param editable as bool """ View.__init__(self, True) self.__tracks = [] self.__playlist_ids = playlist_ids self.__signal_id1 = Lp().playlists.connect("playlist-add", self.__on_playlist_add) self.__signal_id2 = Lp().playlists.connect("playlist-del", self.__on_playlist_del) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/PlaylistView.ui") self.__duration_label = builder.get_object("duration") builder.get_object("title").set_label(", ".join( Lp().playlists.get_names(playlist_ids))) self.__edit_button = builder.get_object("edit-button") self.__jump_button = builder.get_object("jump-button") split_button = builder.get_object("split-button") if editable: split_button.set_active(not Lp().settings.get_value("split-view")) else: split_button.hide() if len(playlist_ids) > 1 or ( playlist_ids[0] < 0 and playlist_ids[0] not in [Type.LOVED, Type.NOPARTY]) or\ not editable: self.__edit_button.hide() self.__playlists_widget = PlaylistsWidget(playlist_ids) self.__playlists_widget.set_filter_func(self._filter_func) self.__playlists_widget.show() self.add(builder.get_object("widget")) self._viewport.add(self.__playlists_widget) self._scrolled.set_property("expand", True) self.add(self._scrolled) # Connect signals after ui init # "split-button" will emit a signal otherwise builder.connect_signals(self) # No duration for non user playlists # FIXME if playlist_ids[0] > 0: self.__set_duration()
def __init__(self, object_id, genre_id, is_album, width): View.__init__(self) builder = Gtk.Builder() builder.add_from_resource( '/org/gnome/Lollypop/PlaylistsManagerView.ui') if object_id != -1: builder.get_object('back_btn').show() builder.connect_signals(self) self._manage_widget = PlaylistsManagerWidget(object_id, genre_id, is_album) self._manage_widget.show() self._scrolledWindow.set_property('halign', Gtk.Align.CENTER) self._scrolledWindow.set_property('width-request', width) self._viewport.add(self._manage_widget) self.add(builder.get_object('widget')) self.add(self._scrolledWindow)
def __init__(self, playlist_name): """ Init view @param playlist name as str @param width as int """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistEditView.ui') builder.get_object('title').set_label(playlist_name) builder.connect_signals(self) grid = builder.get_object('widget') self.add(grid) self._edit_widget = PlaylistEditWidget(playlist_name) self._edit_widget.show() self._viewport.add(self._edit_widget) self.add(self._scrolledWindow)
def __init__(self, artist_id): View.__init__(self) self._artist_id = artist_id self._genre_id = Type.ALL self._signal_id = None self._pop_allowed = False self._albumbox = Gtk.Grid() self._albumbox.set_row_spacing(20) self._albumbox.set_property("orientation", Gtk.Orientation.VERTICAL) self._albumbox.show() self._scrolledWindow.set_property('expand', True) self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self.add(self._scrolledWindow)
def __init__(self): """ Init view """ View.__init__(self) self._signal = None self._radios_manager = RadiosManager() self._radios_manager.connect('playlists-changed', self._on_radios_changed) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/RadiosView.ui') builder.connect_signals(self) widget = builder.get_object('widget') self._empty = builder.get_object('empty') self._pop_tunein = TuneinPopover(self._radios_manager) self._pop_tunein.set_relative_to(builder.get_object('search_btn')) self._sizegroup = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.BOTH) self._radiobox = Gtk.FlowBox() self._radiobox.set_sort_func(self._sort_radios) self._radiobox.set_selection_mode(Gtk.SelectionMode.NONE) self._radiobox.connect("child-activated", self._on_album_activated) self._radiobox.set_property('column-spacing', 5) self._radiobox.set_property('row-spacing', 5) self._radiobox.set_homogeneous(True) self._radiobox.set_max_children_per_line(1000) self._radiobox.show() self._stack = Gtk.Stack() self._stack.set_transition_duration(500) self._stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) self._stack.add(self._scrolledWindow) self._stack.add(self._empty) self._stack.show() self._viewport.set_property("valign", Gtk.Align.START) self._viewport.set_property('margin', 5) self._viewport.add(self._radiobox) self._scrolledWindow.set_property('expand', True) self.add(widget) self.add(self._stack)
def __init__(self): """ Init view """ View.__init__(self) self._signal = Lp().art.connect('radio-artwork-changed', self._on_logo_changed) self._radios_manager = Radios() self._radios_manager.connect('radios-changed', self._on_radios_changed) builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/RadiosView.ui') builder.connect_signals(self) widget = builder.get_object('widget') self._empty = builder.get_object('empty') self._pop_tunein = TuneinPopover(self._radios_manager) self._pop_tunein.set_relative_to(builder.get_object('search_btn')) self._sizegroup = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.BOTH) self._radiobox = Gtk.FlowBox() self._radiobox.set_selection_mode(Gtk.SelectionMode.NONE) self._radiobox.connect("child-activated", self._on_album_activated) self._radiobox.set_property('column-spacing', 5) self._radiobox.set_property('row-spacing', 5) self._radiobox.set_homogeneous(True) self._radiobox.set_max_children_per_line(1000) self._radiobox.show() self._stack = Gtk.Stack() self._stack.set_transition_duration(500) self._stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE) self._stack.add(self._scrolled) self._stack.add(self._empty) self._stack.show() self._viewport.set_property("valign", Gtk.Align.START) self._viewport.set_property('margin', 5) self._viewport.add(self._radiobox) self._scrolled.set_property('expand', True) self.add(widget) self.add(self._stack)
def __init__(self, playlist_id): """ Init view @param playlist id as int @param playlist name as int @param width as int """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/PlaylistEditView.ui") builder.get_object("title").set_label(Lp().playlists.get_name(playlist_id)) builder.connect_signals(self) grid = builder.get_object("widget") self.add(grid) self._edit_widget = PlaylistEditWidget(playlist_id) self._edit_widget.show() self._viewport.add(self._edit_widget) self.add(self._scrolled)
def __init__(self, artist_ids, genre_ids): """ Init ArtistAlbumsView @param artist ids as [int] @param genre ids as [int] """ View.__init__(self) self._artist_ids = artist_ids self._genre_ids = genre_ids self._albumbox = Gtk.Grid() self._albumbox.set_row_spacing(20) self._albumbox.set_property("orientation", Gtk.Orientation.VERTICAL) self._albumbox.show() self._scrolled.set_property('expand', True) self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self.attach(self._scrolled, 0, 1, 1, 1)
def __init__(self, device, progress, width): View.__init__(self) self._device = device self._progress = progress builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self._memory_combo = builder.get_object('memory_combo') self._syncing_btn = builder.get_object('sync_btn') self._syncing_btn.set_label(_("Synchronize %s") % device.name) builder.connect_signals(self) grid = builder.get_object('widget') self.add(grid) self._device_widget = DeviceManagerWidget(progress, self) self._device_widget.connect('sync-finished', self._on_sync_finished) self._device_widget.show() self._scrolledWindow.set_property('halign', Gtk.Align.CENTER) self._scrolledWindow.set_property('width-request', width) self._viewport.add(self._device_widget) self.add(self._scrolledWindow)
def __init__(self, artist_id, genre_id): """ Init ArtistAlbumsView @param artist id as int (Current if None) @param genre id as int """ View.__init__(self) self._artist_id = artist_id self._genre_id = genre_id self._albumbox = Gtk.Grid() self._albumbox.set_row_spacing(20) self._albumbox.set_property("orientation", Gtk.Orientation.VERTICAL) self._albumbox.show() self._scrolledWindow.set_property('expand', True) self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self.attach(self._scrolledWindow, 0, 1, 1, 1)
def __init__(self, object_id, genre_ids, artist_ids, is_album): """ Init View @param object id as int @param genre ids as [int] @param artist ids as [int] @param is album as bool @param width as int """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource("/org/gnome/Lollypop/PlaylistsManagerView.ui") if object_id != Type.NONE: builder.get_object("back_btn").show() builder.connect_signals(self) self._manage_widget = PlaylistsManagerWidget(object_id, genre_ids, artist_ids, is_album) self._manage_widget.show() self._viewport.add(self._manage_widget) self.add(builder.get_object("widget")) self.add(self._scrolled)
def __init__(self, playlist_name, parent): View.__init__(self) self._playlist_name = playlist_name self._signal_id = None builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/PlaylistsView.ui') builder.get_object('title').set_label(playlist_name) builder.connect_signals(self) self._edit_btn = builder.get_object('edit_btn') self._back_btn = builder.get_object('back_btn') self._title = builder.get_object('title') self._playlist_widget = PlaylistWidget(playlist_name) self._playlist_widget.show() self.add(builder.get_object('widget')) self._viewport.add(self._playlist_widget) self._scrolledWindow.set_property('expand', True) self.add(self._scrolledWindow)
def __init__(self, object_id, genre_id, is_album): """ Init View @param object id as int @param genre id as int @param is album as bool @param width as int """ View.__init__(self) builder = Gtk.Builder() builder.add_from_resource( '/org/gnome/Lollypop/PlaylistsManagerView.ui') if object_id != -1: builder.get_object('back_btn').show() builder.connect_signals(self) self._manage_widget = PlaylistsManagerWidget(object_id, genre_id, is_album) self._manage_widget.show() self._viewport.add(self._manage_widget) self.add(builder.get_object('widget')) self.add(self._scrolledWindow)
def __init__(self, device): """ Init view @param device as Device """ View.__init__(self) self.__timeout_id = None self.__device = device builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self.__memory_combo = builder.get_object('memory_combo') self.__syncing_btn = builder.get_object('sync_btn') self.__syncing_btn.set_label(_("Synchronize %s") % device.name) builder.connect_signals(self) grid = builder.get_object('device') self.add(grid) self.__device_widget = DeviceManagerWidget(self) self.__device_widget.connect('sync-finished', self.__on_sync_finished) self.__device_widget.show() self._viewport.add(self.__device_widget) self.add(self._scrolled) self.__sanitize_non_mtp()
def __init__(self, device, progress): """ Init view @param device as Device @param progress as Gtk.ProgressBar """ View.__init__(self) self._timeout_id = None self._device = device self._progress = progress builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/DeviceManagerView.ui') self._memory_combo = builder.get_object('memory_combo') self._syncing_btn = builder.get_object('sync_btn') self._syncing_btn.set_label(_("Synchronize %s") % device.name) builder.connect_signals(self) grid = builder.get_object('widget') self.add(grid) self._device_widget = DeviceManagerWidget(progress, self) self._device_widget.connect('sync-finished', self._on_sync_finished) self._device_widget.show() self._viewport.add(self._device_widget) self.add(self._scrolledWindow)
def __init__(self, artist_id, show_artist_details): View.__init__(self) self._artist_id = artist_id self._signal_id = None if show_artist_details: builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Lollypop/ArtistView.ui') self.attach(builder.get_object('ArtistView'),0, 0, 1, 1) artist_name = Objects.artists.get_name(artist_id) artist_name = translate_artist_name(artist_name) builder.get_object('artist').set_label(artist_name) self._show_menu = show_artist_details self._albumbox = Gtk.Grid() self._albumbox.set_row_spacing(20) self._albumbox.set_property("orientation", Gtk.Orientation.VERTICAL) self._albumbox.show() self._scrolledWindow.set_property('expand', True) self._viewport.set_property("valign", Gtk.Align.START) self._viewport.add(self._albumbox) self.add(self._scrolledWindow)