episodeselector: Add a Stream button
This commit is contained in:
parent
03a6aabf96
commit
40e524b8ab
|
@ -218,6 +218,18 @@
|
|||
<property name="can-focus">False</property>
|
||||
<property name="title" translatable="yes">Episode details</property>
|
||||
<property name="has-subtitle">False</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="stream_button">
|
||||
<property name="label" translatable="yes">Stream</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">True</property>
|
||||
<signal name="clicked" handler="on_stream_button_clicked" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="pack-type">end</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="notes_back">
|
||||
<property name="visible">True</property>
|
||||
|
@ -232,6 +244,9 @@
|
|||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
|
|
|
@ -90,6 +90,7 @@ class gPodderEpisodeSelector(BuilderWidget):
|
|||
the supplied episode objects that holds
|
||||
the text for the tooltips when hovering
|
||||
over an episode (default is 'description')
|
||||
- gPodder: Main gPodder instance
|
||||
"""
|
||||
COLUMN_INDEX = 0
|
||||
COLUMN_TOOLTIP = 1
|
||||
|
@ -277,6 +278,8 @@ class gPodderEpisodeSelector(BuilderWidget):
|
|||
if event.keyval in (Gdk.KEY_Escape, Gdk.KEY_BackSpace, Gdk.KEY_Left, Gdk.KEY_h):
|
||||
self.new_deck.navigate(Handy.NavigationDirection.BACK)
|
||||
self.treeviewEpisodes.grab_focus()
|
||||
elif event.keyval in (Gdk.KEY_s, Gdk.KEY_p):
|
||||
self.stream_button.emit("clicked")
|
||||
else:
|
||||
return False
|
||||
return True
|
||||
|
@ -299,6 +302,8 @@ class gPodderEpisodeSelector(BuilderWidget):
|
|||
# Hardcode non-HTML shownotes because of webkit2gtk crashing with multiple instances
|
||||
self.shownotes_object = shownotes.get_shownotes(False, self.shownotes_box)
|
||||
|
||||
self.activated_episode = None
|
||||
|
||||
self.calculate_total_size()
|
||||
|
||||
def treeview_episodes_query_tooltip(self, treeview, x, y, keyboard_tooltip, tooltip):
|
||||
|
@ -454,6 +459,10 @@ class gPodderEpisodeSelector(BuilderWidget):
|
|||
if model.get_iter_first() is None:
|
||||
self.on_btnCancel_clicked(None)
|
||||
|
||||
def on_stream_button_clicked(self, *args):
|
||||
if hasattr(self, 'gPodder') and self.activated_episode is not None:
|
||||
self.gPodder.playback_episodes((self.activated_episode,))
|
||||
|
||||
def on_row_activated(self, treeview, path, view_column):
|
||||
if self.toggled:
|
||||
self.toggled = False
|
||||
|
@ -464,11 +473,18 @@ class gPodderEpisodeSelector(BuilderWidget):
|
|||
episodes = [self.episodes[epind]]
|
||||
assert episodes
|
||||
if isinstance(episodes[0], GEpisode): # No notes for channels
|
||||
self.activated_episode = episodes[0]
|
||||
if episodes[0].can_stream(self._config) and hasattr(self, 'gPodder'):
|
||||
self.stream_button.set_sensitive(True)
|
||||
else:
|
||||
self.stream_button.set_sensitive(False)
|
||||
self.shownotes_object.show_pane(episodes)
|
||||
self.shownotes_box.show()
|
||||
self.new_deck.set_can_swipe_forward(True)
|
||||
self.notes_back.grab_focus()
|
||||
self.new_deck.navigate(Handy.NavigationDirection.FORWARD)
|
||||
else:
|
||||
self.activated_episode = None
|
||||
|
||||
self.calculate_total_size()
|
||||
|
||||
|
|
|
@ -3242,7 +3242,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
instructions=instructions,
|
||||
episodes=episodes, selected=selected, columns=columns,
|
||||
ok_button=_('_Delete'), callback=self.delete_episode_list,
|
||||
selection_buttons=selection_buttons, _config=self.config)
|
||||
selection_buttons=selection_buttons, _config=self.config,
|
||||
gPodder=self)
|
||||
|
||||
def on_selected_episodes_status_changed(self):
|
||||
# The order of the updates here is important! When "All episodes" is
|
||||
|
@ -3457,6 +3458,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
remove_action=_('_Mark as old'),
|
||||
remove_finished=self.episode_new_status_changed,
|
||||
_config=self.config,
|
||||
gPodder=self,
|
||||
show_notification=False)
|
||||
|
||||
def on_itemDownloadAllNew_activate(self, action, param):
|
||||
|
|
Loading…
Reference in New Issue