Gtk UI: Initial hack for embedded shownotes display
Add configuration option to embed shownotes in main window.
This commit is contained in:
parent
5e205ecb7c
commit
c1dae9e9f6
4 changed files with 36 additions and 18 deletions
|
@ -146,6 +146,7 @@ defaults = {
|
||||||
'descriptions': True,
|
'descriptions': True,
|
||||||
'view_mode': 1,
|
'view_mode': 1,
|
||||||
'columns': int('101', 2), # bitfield of visible columns
|
'columns': int('101', 2), # bitfield of visible columns
|
||||||
|
'embed_shownotes': False, # show shownotes below episode list
|
||||||
},
|
},
|
||||||
|
|
||||||
'download_list': {
|
'download_list': {
|
||||||
|
|
|
@ -54,6 +54,9 @@ SHOWNOTES_HTML_TEMPLATE = """
|
||||||
|
|
||||||
class gPodderShownotes(gPodderShownotesBase):
|
class gPodderShownotes(gPodderShownotesBase):
|
||||||
def on_create_window(self):
|
def on_create_window(self):
|
||||||
|
if self._config.ui.gtk.episode_list.embed_shownotes:
|
||||||
|
self.main_window.hide()
|
||||||
|
|
||||||
self.textview.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))
|
self.textview.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))
|
||||||
if self._config.enable_html_shownotes:
|
if self._config.enable_html_shownotes:
|
||||||
try:
|
try:
|
||||||
|
@ -106,6 +109,7 @@ class gPodderShownotes(gPodderShownotesBase):
|
||||||
vsb.set_value(vsb.get_value() - step)
|
vsb.set_value(vsb.get_value() - step)
|
||||||
|
|
||||||
def on_show_window(self):
|
def on_show_window(self):
|
||||||
|
self.main_window.vbox.show()
|
||||||
self.download_progress.set_fraction(0)
|
self.download_progress.set_fraction(0)
|
||||||
self.download_progress.set_text(_('Please wait...'))
|
self.download_progress.set_text(_('Please wait...'))
|
||||||
self.main_window.set_title(self.episode.title)
|
self.main_window.set_title(self.episode.title)
|
||||||
|
@ -149,6 +153,7 @@ class gPodderShownotes(gPodderShownotesBase):
|
||||||
self.b.place_cursor(self.b.get_start_iter())
|
self.b.place_cursor(self.b.get_start_iter())
|
||||||
|
|
||||||
def on_hide_window(self):
|
def on_hide_window(self):
|
||||||
|
self.main_window.vbox.hide()
|
||||||
self.episode = None
|
self.episode = None
|
||||||
if self.have_webkit:
|
if self.have_webkit:
|
||||||
self.htmlview.load_html_string('', '')
|
self.htmlview.load_html_string('', '')
|
||||||
|
|
|
@ -141,19 +141,19 @@ class gPodderShownotesBase(BuilderWidget):
|
||||||
|
|
||||||
def _download_status_changed(self, task):
|
def _download_status_changed(self, task):
|
||||||
"""Called from main window for download status changes"""
|
"""Called from main window for download status changes"""
|
||||||
if self.main_window.get_property('visible'):
|
if self.main_window.vbox.get_property('visible'):
|
||||||
self.task = task
|
self.task = task
|
||||||
self.on_episode_status_changed()
|
self.on_episode_status_changed()
|
||||||
|
|
||||||
def _download_status_progress(self):
|
def _download_status_progress(self):
|
||||||
"""Called from main window for progress updates"""
|
"""Called from main window for progress updates"""
|
||||||
if self.main_window.get_property('visible'):
|
if self.main_window.vbox.get_property('visible'):
|
||||||
self.on_download_status_progress()
|
self.on_download_status_progress()
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
def show(self, episode):
|
def show(self, episode):
|
||||||
if self.main_window.get_property('visible'):
|
if self.episode is not None:
|
||||||
if episode == self.episode:
|
if episode == self.episode:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -165,8 +165,11 @@ class gPodderShownotesBase(BuilderWidget):
|
||||||
|
|
||||||
self.on_show_window()
|
self.on_show_window()
|
||||||
self.on_episode_status_changed()
|
self.on_episode_status_changed()
|
||||||
self.main_window.show()
|
|
||||||
self.main_window.present()
|
if not self._config.ui.gtk.episode_list.embed_shownotes:
|
||||||
|
if not self.main_window.get_property('visible'):
|
||||||
|
self.main_window.show()
|
||||||
|
self.main_window.present()
|
||||||
|
|
||||||
# Make sure the window comes up quick
|
# Make sure the window comes up quick
|
||||||
while gtk.events_pending():
|
while gtk.events_pending():
|
||||||
|
|
|
@ -508,16 +508,6 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
||||||
|
|
||||||
util.idle_add(indicator.on_finished)
|
util.idle_add(indicator.on_finished)
|
||||||
|
|
||||||
def on_podcast_selected(self, treeview, path, column):
|
|
||||||
# for Maemo 5's UI
|
|
||||||
model = treeview.get_model()
|
|
||||||
channel = model.get_value(model.get_iter(path), \
|
|
||||||
PodcastListModel.C_CHANNEL)
|
|
||||||
self.active_channel = channel
|
|
||||||
self.update_episode_list_model()
|
|
||||||
self.episodes_window.channel = self.active_channel
|
|
||||||
self.episodes_window.show()
|
|
||||||
|
|
||||||
def on_button_subscribe_clicked(self, button):
|
def on_button_subscribe_clicked(self, button):
|
||||||
self.on_itemImportChannels_activate(button)
|
self.on_itemImportChannels_activate(button)
|
||||||
|
|
||||||
|
@ -907,8 +897,20 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
||||||
|
|
||||||
selection = self.treeAvailable.get_selection()
|
selection = self.treeAvailable.get_selection()
|
||||||
selection.set_mode(gtk.SELECTION_MULTIPLE)
|
selection.set_mode(gtk.SELECTION_MULTIPLE)
|
||||||
# Update the sensitivity of the toolbar buttons on the Desktop
|
selection.connect('changed', self.on_episode_list_selection_changed)
|
||||||
selection.connect('changed', lambda s: self.play_or_download())
|
|
||||||
|
def on_episode_list_selection_changed(self, selection):
|
||||||
|
# Update the toolbar buttons
|
||||||
|
self.play_or_download()
|
||||||
|
|
||||||
|
if (self.episode_shownotes_window is not None and
|
||||||
|
self.episode_shownotes_window.episode is not None):
|
||||||
|
rows = selection.count_selected_rows()
|
||||||
|
if rows != 1:
|
||||||
|
self.episode_shownotes_window.on_close_button_clicked()
|
||||||
|
else:
|
||||||
|
episode = self.get_selected_episodes()[0]
|
||||||
|
self.show_episode_shownotes(episode)
|
||||||
|
|
||||||
def init_download_list_treeview(self):
|
def init_download_list_treeview(self):
|
||||||
# enable multiple selection support
|
# enable multiple selection support
|
||||||
|
@ -3302,7 +3304,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
||||||
episodes = self.get_selected_episodes()
|
episodes = self.get_selected_episodes()
|
||||||
if episodes:
|
if episodes:
|
||||||
episode = episodes.pop(0)
|
episode = episodes.pop(0)
|
||||||
self.show_episode_shownotes(episode)
|
if episode is not None:
|
||||||
|
self.show_episode_shownotes(episode)
|
||||||
else:
|
else:
|
||||||
self.show_message(_('Please select an episode from the episode list to display shownotes.'), _('No episode selected'), widget=self.treeAvailable)
|
self.show_message(_('Please select an episode from the episode list to display shownotes.'), _('No episode selected'), widget=self.treeAvailable)
|
||||||
|
|
||||||
|
@ -3325,6 +3328,12 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
||||||
_episode_list_status_changed=self.episode_list_status_changed, \
|
_episode_list_status_changed=self.episode_list_status_changed, \
|
||||||
_cancel_task_list=self.cancel_task_list, \
|
_cancel_task_list=self.cancel_task_list, \
|
||||||
_streaming_possible=self.streaming_possible())
|
_streaming_possible=self.streaming_possible())
|
||||||
|
|
||||||
|
if self.config.ui.gtk.episode_list.embed_shownotes:
|
||||||
|
self.episode_shownotes_window.main_window.vbox.reparent(self.vbox_episode_list)
|
||||||
|
self.episode_shownotes_window.main_window.vbox.set_border_width(0)
|
||||||
|
self.episode_shownotes_window.vbox1.set_border_width(0)
|
||||||
|
|
||||||
self.episode_shownotes_window.show(episode)
|
self.episode_shownotes_window.show(episode)
|
||||||
if episode.downloading:
|
if episode.downloading:
|
||||||
self.update_downloads_list()
|
self.update_downloads_list()
|
||||||
|
|
Loading…
Reference in a new issue