play button in main dialog

git-svn-id: svn://svn.berlios.de/gpodder/trunk@210 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
Thomas Perl 2006-12-12 23:11:34 +00:00
parent d7e380f63b
commit c6982417fa
6 changed files with 79 additions and 17 deletions

View File

@ -1,3 +1,10 @@
Wed, 13 Dec 2006 00:10:11 +0100 <thp@perli.net>
* src/gpodder/gpodder.py: Add support for "Play" button in main
gpodder dialog (depending on which episode is selected)
* data/gpodder.glade: Add support for "Play" button (see above)
* TODO: Release goals for 0.8.0 updated
* bin/gpodder: Updated release date + version
Mon, 11 Dec 2006 16:11:54 +0100 <thp@perli.net>
* src/gpodder/gpodder.py: Don't treat already downloaded but
deleted episodes as "new" when clicking on "download new" -

3
TODO
View File

@ -2,8 +2,9 @@
=== Release Goals for gPodder 0.9.0 ===
[ ] Implement support for filesystem-based MP3 players
[ ] Change "Download" button to "Play" on downloaded podcasts
[X] Change "Download" button to "Play" on downloaded podcasts
[ ] Add support for importing gPodder 0.8.0 downloaded episodes
[ ] Re-structure main menu for better usability
=== Todo List for gPodder post-0.9.0 ===

View File

@ -26,8 +26,8 @@
# PLEASE DO NOT CHANGE FORMAT OF __version__ LINE (setup.py reads this)
__author__ = "Thomas Perl <thp@perli.net>"
__version__ = "0.8.0+svn20061211"
__date__ = "2006-12-11"
__version__ = "0.8.0+svn20061212"
__date__ = "2006-12-12"
__copyright__ = "Copyright (c) 2005-2006 %s. All rights reserved." % __author__
__licence__ = "GPL"

View File

@ -729,6 +729,8 @@
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
<signal name="row_activated" handler="on_treeAvailable_row_activated" last_modification_time="Sat, 29 Oct 2005 11:49:26 GMT"/>
<signal name="button_release_event" handler="on_treeAvailable_button_release_event" last_modification_time="Tue, 12 Dec 2006 22:51:54 GMT"/>
<signal name="key_release_event" handler="on_treeAvailable_button_release_event" last_modification_time="Tue, 12 Dec 2006 22:54:24 GMT"/>
</widget>
</child>
</widget>
@ -795,6 +797,22 @@
</packing>
</child>
<child>
<widget class="GtkButton" id="btnPlay">
<property name="can_focus">True</property>
<property name="label">gtk-media-play</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_btnDownloadedExecute_clicked" last_modification_time="Tue, 12 Dec 2006 22:55:31 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="btnDownload">
<property name="visible">True</property>

View File

@ -192,6 +192,31 @@ class Gpodder(SimpleGladeApp):
#-- Gpodder.new }
#-- Gpodder custom methods {
def play_or_download( self):
is_download_button = False
gl = gPodderLib()
try:
selection = self.treeAvailable.get_selection()
selection_tuple = selection.get_selected_rows()
for apath in selection_tuple[1]:
selection_iter = self.treeAvailable.get_model().get_iter( apath)
url = self.treeAvailable.get_model().get_value( selection_iter, 0)
filename = self.active_channel.getPodcastFilename( url)
if not os.path.exists( filename):
is_download_button = True
break
except:
is_download_button = True
if is_download_button:
self.btnPlay.hide_all()
self.btnDownload.show_all()
else:
self.btnPlay.show_all()
self.btnDownload.hide_all()
def updateComboBox( self):
try:
old_active = self.comboAvailable.get_active()
@ -361,20 +386,21 @@ class Gpodder(SimpleGladeApp):
current_podcast = current_channel.find_episode( url)
filename = current_channel.getPodcastFilename( current_podcast.url)
if widget and widget.get_name() == 'itemPlaySelected':
gPodderLib().openFilename( filename)
return
if widget and widget.get_name() == 'treeAvailable':
gpe = Gpodderepisode()
gpe.set_episode( current_podcast, current_channel)
if os.path.exists( filename):
gpe.set_play_callback( lambda: gPodderLib().openFilename( filename))
else:
gpe.set_download_callback( lambda: self.download_podcast_by_url( url, want_message_dialog, None))
return
if widget:
if widget.get_name() == 'itemPlaySelected' or widget.get_name() == 'btnPlay':
gPodderLib().openFilename( filename)
return
if widget.get_name() == 'treeAvailable':
gpe = Gpodderepisode()
gpe.set_episode( current_podcast, current_channel)
if os.path.exists( filename):
gpe.set_play_callback( lambda: gPodderLib().openFilename( filename))
else:
gpe.set_download_callback( lambda: self.download_podcast_by_url( url, want_message_dialog, None))
return
if not os.path.exists( filename) and not self.download_status_manager.is_download_in_progress( current_podcast.url):
downloadThread( current_podcast.url, filename, None, self.download_status_manager, current_podcast.title, current_channel, current_podcast, self.ldb).download()
@ -605,6 +631,11 @@ class Gpodder(SimpleGladeApp):
self.on_treeAvailable_row_activated( widget, args)
#-- Gpodder.on_btnDownload_clicked }
#-- Gpodder.on_treeAvailable_button_release_event {
def on_treeAvailable_button_release_event(self, widget, *args):
self.play_or_download()
#-- Gpodder.on_treeAvailable_button_release_event }
#-- Gpodder.on_btnDownloadNewer_clicked {
def on_btnDownloadNewer_clicked(self, widget, *args):
channel = self.active_channel

View File

@ -160,6 +160,11 @@ class Gpodder(SimpleGladeApp):
print "on_treeAvailable_row_activated called with self.%s" % widget.get_name()
#-- Gpodder.on_treeAvailable_row_activated }
#-- Gpodder.on_treeAvailable_button_release_event {
def on_treeAvailable_button_release_event(self, widget, *args):
print "on_treeAvailable_button_release_event called with self.%s" % widget.get_name()
#-- Gpodder.on_treeAvailable_button_release_event }
#-- Gpodder.on_treeDownloads_row_activated {
def on_treeDownloads_row_activated(self, widget, *args):
print "on_treeDownloads_row_activated called with self.%s" % widget.get_name()