def _on_artist_activated(self, widget, child, user_data=None): coreartist = child.props.coreartist if self.props.selection_mode: return artist_albums_widget = ArtistAlbumsWidget(coreartist, self._application) # FIXME: Recreating a view here. Alternate solution is used # in AlbumsView: one view created and an update function. # Settle on one design. self._scrolled_artist_window = Gtk.ScrolledWindow() self._scrolled_artist_window.add(artist_albums_widget) self._scrolled_artist_window.props.visible = True self.add(self._scrolled_artist_window) artist_albums_widget.show() self.bind_property("selection-mode", artist_albums_widget, "selection-mode", GObject.BindingFlags.BIDIRECTIONAL) self.props.state = SearchView.State.ARTIST self._headerbar.props.state = HeaderBar.State.SEARCH self._headerbar.props.title = coreartist.props.artist self._headerbar.props.subtitle = None self.set_visible_child(self._scrolled_artist_window) self.props.search_mode_active = False
def _on_artist_activated(self, sidebar, row, data=None): """Initializes new artist album widgets""" artist_tile = row.get_child() if self.props.selection_mode: artist_tile.props.selected = not artist_tile.props.selected return # Prepare a new artist_albums_widget here coreartist = artist_tile.props.coreartist if coreartist.props.artist in self._loaded_artists: scroll_vadjustment = self._view_container.props.vadjustment scroll_vadjustment.props.value = 0. self._view.set_visible_child_name(coreartist.props.artist) return if self._loading_id > 0: self._artist_albums.disconnect(self._loading_id) self._loading_id = 0 self._artist_albums = ArtistAlbumsWidget(coreartist, self.player, self._window, False) self._loading_id = self._artist_albums.connect( "ready", self._on_artist_albums_ready, coreartist.props.artist) self._view.set_visible_child_name("empty-frame") self._window.notifications_popup.push_loading() return
def _on_artist_activated(self, sidebar, row, data=None): """Initializes new artist album widgets""" artist_tile = row.get_child() if self.props.selection_mode: artist_tile.props.selected = not artist_tile.props.selected return # Prepare a new artist_albums_widget here coreartist = artist_tile.props.coreartist if coreartist.props.artist in self._loaded_artists: scroll_vadjustment = self._view_container.props.vadjustment scroll_vadjustment.props.value = 0. self._view.set_visible_child_name(coreartist.props.artist) return self._artist_albums = ArtistAlbumsWidget(coreartist, self._application, False) artist_albums_frame = Gtk.Frame(shadow_type=Gtk.ShadowType.NONE, hexpand=True) artist_albums_frame.add(self._artist_albums) artist_albums_frame.show() self._view.add_named(artist_albums_frame, coreartist.props.artist) scroll_vadjustment = self._view_container.props.vadjustment scroll_vadjustment.props.value = 0. self._view.set_visible_child(artist_albums_frame) self._loaded_artists.append(coreartist.props.artist)
def _artist_activated(self, widget, event): coreartist = widget.coreartist mod_mask = Gtk.accelerator_get_default_mod_mask() if ((event.get_state() & mod_mask) == Gdk.ModifierType.CONTROL_MASK and not self.props.selection_mode): self.props.selection_mode = True return (_, button) = event.get_button() if (button == Gdk.BUTTON_PRIMARY and not self.props.selection_mode): # self.emit('song-activated', widget) self._artist_albums_widget = ArtistAlbumsWidget( coreartist, self.player, self._window, False) self.add(self._artist_albums_widget) self._artist_albums_widget.show() self.bind_property('selection-mode', self._artist_albums_widget, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL) self._headerbar.props.state = HeaderBar.State.SEARCH self._headerbar.props.title = coreartist.artist self._headerbar.props.subtitle = None self.set_visible_child(self._artist_albums_widget) self.props.search_mode_active = False # FIXME: Need to ignore the event from the checkbox. # if self.props.selection_mode: # widget.props.selected = not widget.props.selected return True
def _on_item_activated(self, treeview, path, column): if self._star_handler.star_renderer_click: self._star_handler.star_renderer_click = False return if self.props.selection_mode: return try: child_path = self._filter_model.convert_path_to_child_path(path) except TypeError: return _iter = self.model.get_iter(child_path) if self.model[_iter][12] == 'album': title = self.model[_iter][2] artist = self.model[_iter][3] item = self.model[_iter][5] self._album_widget.update(item) self._headerbar.props.state = HeaderBar.State.SEARCH self._headerbar.props.title = title self._headerbar.props.subtitle = artist self.set_visible_child(self._album_widget) self.props.search_state = Search.State.NONE elif self.model[_iter][12] == 'artist': artist = self.model[_iter][2] albums = self._artists[artist.casefold()]['albums'] self._artist_albums_widget = ArtistAlbumsWidget( artist, albums, self.player, self._window, True) self.add(self._artist_albums_widget) self._artist_albums_widget.show() self._artist_albums_widget.bind_property( 'selected-items-count', self, 'selected-items-count') self.bind_property( 'selection-mode', self._artist_albums_widget, 'selection-mode', GObject.BindingFlags.BIDIRECTIONAL) self._headerbar.props.state = HeaderBar.State.SEARCH self._headerbar.props.title = artist self._headerbar.props.subtitle = None self.set_visible_child(self._artist_albums_widget) self.props.search_state = Search.State.NONE elif self.model[_iter][12] == 'song': if self.model[_iter][11] != ValidationStatus.FAILED: c_iter = self._songs_model.convert_child_iter_to_iter(_iter)[1] self.player.set_playlist( PlayerPlaylist.Type.SEARCH_RESULT, None, self._songs_model, c_iter) self.player.play() else: # Headers if self._view.row_expanded(path): self._view.collapse_row(path) else: self._view.expand_row(path, False)
def _on_item_activated(self, treeview, path, column): if self._star_handler.star_renderer_click: self._star_handler.star_renderer_click = False return if self.props.selection_mode: return try: child_path = self._filter_model.convert_path_to_child_path(path) except TypeError: return _iter = self.model.get_iter(child_path) if self.model[_iter][12] == 'album': title = self.model[_iter][2] artist = self.model[_iter][3] item = self.model[_iter][5] self._album_widget.update(item) self._header_bar.props.state = HeaderBar.State.SEARCH self._header_bar.props.title = title self._header_bar.props.subtitle = artist self.set_visible_child(self._album_widget) self._header_bar.searchbar.reveal(False) elif self.model[_iter][12] == 'artist': artist = self.model[_iter][2] albums = self._artists[artist.casefold()]['albums'] self._artist_albums_widget = ArtistAlbumsWidget( artist, albums, self.player, self._header_bar, self._selection_toolbar, self._window, True) self.add(self._artist_albums_widget) self._artist_albums_widget.show() self._header_bar.props.state = HeaderBar.State.SEARCH self._header_bar.props.title = artist self.set_visible_child(self._artist_albums_widget) self._header_bar.searchbar.reveal(False) elif self.model[_iter][12] == 'song': if self.model[_iter][11] != DiscoveryStatus.FAILED: c_iter = self._songs_model.convert_child_iter_to_iter(_iter)[1] self.player.set_playlist('Search Results', None, self._songs_model, c_iter) self.player.play() else: # Headers if self._view.row_expanded(path): self._view.collapse_row(path) else: self._view.expand_row(path, False)
def _on_item_activated(self, widget, id, path): if self._star_handler.star_renderer_click: self._star_handler.star_renderer_click = False return try: child_path = self._filter_model.convert_path_to_child_path(path) except TypeError: return _iter = self.model.get_iter(child_path) if self.model[_iter][11] == 'album': title = self.model[_iter][2] artist = self.model[_iter][3] item = self.model[_iter][5] self._album_widget.update( artist, title, item, self._header_bar, self._selection_toolbar) self._header_bar.set_state(ToolbarState.SEARCH_VIEW) self._header_bar.header_bar.set_title(title) self._header_bar.header_bar.sub_title = artist self.set_visible_child(self._album_widget) self._header_bar.searchbar.reveal(False) elif self.model[_iter][11] == 'artist': artist = self.model[_iter][2] albums = self._artists[artist.casefold()]['albums'] self._artist_albums_widget = ArtistAlbumsWidget( artist, albums, self.player, self._header_bar, self._selection_toolbar, self._window, True) self.add(self._artist_albums_widget) self._artist_albums_widget.show() self._header_bar.set_state(ToolbarState.SEARCH_VIEW) self._header_bar.header_bar.set_title(artist) self.set_visible_child(self._artist_albums_widget) self._header_bar.searchbar.reveal(False) elif self.model[_iter][11] == 'song': if self.model[_iter][12] != DiscoveryStatus.FAILED: c_iter = self._songs_model.convert_child_iter_to_iter(_iter)[1] self.player.set_playlist( 'Search Results', None, self._songs_model, c_iter, 5, 12) self.player.set_playing(True) else: # Headers if self._view.get_generic_view().row_expanded(path): self._view.get_generic_view().collapse_row(path) else: self._view.get_generic_view().expand_row(path, False)
def _on_item_activated(self, widget, item_id, path): """Initializes new artist album widgets""" try: itr = self.model.get_iter(path) except ValueError as err: logger.warning("Error: {}, {}".format(err.__class__, err)) return self._last_selection = itr artist = self.model[itr][2] albums = self._artists[artist.casefold()]['albums'] widget = self._artists[artist.casefold()]['widget'] if widget: artist_widget_model = self.player.running_playlist( 'Artist', widget.artist) artist_stack = self._artist_albums_stack # FIXME: calling to private model if widget._model == artist_widget_model: self._artist_albums_widget = widget.get_parent() GLib.idle_add(self._artist_albums_stack.set_visible_child, self._artist_albums_widget) return elif widget.get_parent() == artist_stack: return else: widget.get_parent().destroy() # Prepare a new artist_albums_widget here new_artist_albums_widget = Gtk.Frame(shadow_type=Gtk.ShadowType.NONE, hexpand=True) self._artist_albums_stack.add(new_artist_albums_widget) artist_albums = ArtistAlbumsWidget(artist, albums, self.player, self._header_bar, self._selection_toolbar, self._window) self._artists[artist.casefold()]['widget'] = artist_albums new_artist_albums_widget.add(artist_albums) new_artist_albums_widget.show() # Replace previous widget self._artist_albums_widget = new_artist_albums_widget GLib.idle_add(self._artist_albums_stack.set_visible_child, new_artist_albums_widget)
def _on_item_activated(self, widget, item_id, path): if self.star_handler.star_renderer_click: self.star_handler.star_renderer_click = False return try: _iter = self.model.get_iter(path) except TypeError: return self._last_selection = _iter artist = self.model.get_value(_iter, 2) albums = self._artists[artist.casefold()]['albums'] widget = self._artists[artist.casefold()]['widget'] if widget: if widget.model == self.player.running_playlist('Artist', widget.artist): self._artistAlbumsWidget = widget.get_parent() GLib.idle_add(self.artistAlbumsStack.set_visible_child, self._artistAlbumsWidget) return elif widget.get_parent() == self._artistAlbumsWidget: return else: widget.get_parent().destroy() # Prepare a new artistAlbumsWidget here new_artistAlbumsWidget = Gtk.Frame( shadow_type=Gtk.ShadowType.NONE, hexpand=True ) self.artistAlbumsStack.add(new_artistAlbumsWidget) artistAlbums = None artistAlbums = ArtistAlbumsWidget( artist, albums, self.player, self.header_bar, self.selection_toolbar, self.window ) self._artists[artist.casefold()]['widget'] = artistAlbums new_artistAlbumsWidget.add(artistAlbums) new_artistAlbumsWidget.show() # Replace previous widget self._artistAlbumsWidget = new_artistAlbumsWidget GLib.idle_add(self.artistAlbumsStack.set_visible_child, new_artistAlbumsWidget)
def _on_artist_activated(self, sidebar, row, data=None, untouched=False): """Initializes new artist album widgets""" # On application start the first row of ArtistView is activated # to show an intial artist. When this happens while any of the # views are in selection mode, this artist will be incorrectly # selected. # When selecting items check that the current visible view is # ArtistsView, to circumvent this issue. if (self.props.selection_mode and self._window.props.active_view is self): return if untouched is False: self._untouched_list = False selected_row = self._sidebar.get_selected_row() self._selected_artist = selected_row.props.coreartist # Prepare a new artist_albums_widget here coreartist = row.props.coreartist if coreartist.props.artist in self._loaded_artists: scroll_vadjustment = self._artist_container.props.vadjustment scroll_vadjustment.props.value = 0. self._artist_view.set_visible_child_name(coreartist.props.artist) return artist_albums = ArtistAlbumsWidget(coreartist, self._application) self.bind_property( "selection-mode", artist_albums, "selection-mode", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL) self._artist_view.add_named(artist_albums, coreartist.props.artist) scroll_vadjustment = self._artist_container.props.vadjustment scroll_vadjustment.props.value = 0. self._artist_view.set_visible_child(artist_albums) self._loaded_artists.append(coreartist.props.artist)
def _on_artist_activated(self, sidebar, row, data=None): """Initializes new artist album widgets""" if self.props.selection_mode: row.check.props.active = not row.check.props.active return self._last_selected_row = row artist = row.artist albums = self._artists[artist.casefold()]['albums'] widget = self._artists[artist.casefold()]['widget'] if widget: if self.player.playing_playlist('Artist', widget.props.artist): self._artist_albums_widget = widget.get_parent() GLib.idle_add(self._view.set_visible_child, self._artist_albums_widget) return elif widget.get_parent() == self._view: return else: widget.get_parent().destroy() # Prepare a new artist_albums_widget here new_artist_albums_widget = Gtk.Frame(shadow_type=Gtk.ShadowType.NONE, hexpand=True) self._view.add(new_artist_albums_widget) artist_albums = ArtistAlbumsWidget(artist, albums, self.player, self._header_bar, self._selection_toolbar, self._window) self._artists[artist.casefold()]['widget'] = artist_albums new_artist_albums_widget.add(artist_albums) new_artist_albums_widget.show() # Replace previous widget self._artist_albums_widget = new_artist_albums_widget GLib.idle_add(self._view.set_visible_child, new_artist_albums_widget)
def _on_artist_activated(self, widget, child, user_data=None): coreartist = child.props.coreartist if self.props.selection_mode: return self._artist_albums_widget = ArtistAlbumsWidget( coreartist, self._application, False) # FIXME: Adding scrolled windows without removing them. scrolled_window = Gtk.ScrolledWindow() scrolled_window.add(self._artist_albums_widget) scrolled_window.props.visible = True self.add(scrolled_window) self._artist_albums_widget.show() self.bind_property( "selection-mode", self._artist_albums_widget, "selection-mode", GObject.BindingFlags.BIDIRECTIONAL) self._headerbar.props.state = HeaderBar.State.SEARCH self._headerbar.props.title = coreartist.props.artist self._headerbar.props.subtitle = None self.set_visible_child(scrolled_window) self.props.search_mode_active = False