removed ipod-dbus support (has now its extra branch in svn)
don't depend on python2.4, but run on system's default python (2.3 or 2.4) git-svn-id: svn://svn.berlios.de/gpodder/trunk@116 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
parent
4d909d2d7a
commit
ead82b5a26
|
@ -1,3 +1,8 @@
|
|||
Tue, 13 Jun 2006 20:20:07 +0200 <thp@perli.net>
|
||||
* Removed ipod-dbus support (has now its extra branch in svn)
|
||||
* Bumped version date + release date
|
||||
* You can run gPodder on python2.3 again (instead of 2.4 only)
|
||||
|
||||
Fri, 09 Jun 2006 12:37:54 +0200 <thp@perli.net>
|
||||
* Applied a modified version of Camille's patch to get videos
|
||||
(mov, mp4, m4v) working with iPod video devices on sync -
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python2.4
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#
|
||||
|
@ -26,8 +26,8 @@
|
|||
# PLEASE DO NOT CHANGE FORMAT OF __version__ LINE (setup.py reads this)
|
||||
|
||||
__author__ = "Thomas Perl <thp@perli.net>"
|
||||
__version__ = "0.7+svn20060609"
|
||||
__date__ = "2006-06-09"
|
||||
__version__ = "0.7+svn20060613"
|
||||
__date__ = "2006-06-13"
|
||||
__copyright__ = "Copyright (c) 2005-2006 %s. All rights reserved." % __author__
|
||||
__licence__ = "GPL"
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
|
||||
.TH GPODDER "1" "April 2006" "gpodder 0.7+svn20060409 2006-04-09" "User Commands"
|
||||
.TH GPODDER "1" "June 2006" "gpodder 0.7+svn20060613 2006-06-13" "User Commands"
|
||||
.SH NAME
|
||||
gpodder \- manual page for gpodder 0.7+svn20060409 2006-04-09
|
||||
gpodder \- manual page for gpodder 0.7+svn20060613 2006-06-13
|
||||
.SH DESCRIPTION
|
||||
usage: gpodder [options] arg1 arg2
|
||||
.PP
|
||||
|
@ -29,8 +29,8 @@ Update channel list, download new podcasts
|
|||
\fB\-u\fR, \fB\-\-update\fR
|
||||
Update channel list and exit
|
||||
.TP
|
||||
\fB\-a\fR FEEDURL, \fB\-\-add\fR=\fIFEEDURL\fR
|
||||
\fB\-aFEEDURL\fR, \fB\-\-add\fR=\fIFEEDURL\fR
|
||||
Subscribe to channel from FEEDURL
|
||||
.TP
|
||||
\fB\-d\fR n, \fB\-\-delete\fR=\fIn\fR
|
||||
\fB\-dn\fR, \fB\-\-delete\fR=\fIn\fR
|
||||
Delete channel with ID n
|
||||
|
|
|
@ -59,7 +59,6 @@ from libplayers import UserAppsReader
|
|||
|
||||
from libipodsync import gPodder_iPodSync
|
||||
from libipodsync import ipod_supported
|
||||
from libipodsync import iPodManagerSingleton
|
||||
|
||||
# for isDebugging:
|
||||
import libgpodder
|
||||
|
@ -102,9 +101,6 @@ class Gpodder(SimpleGladeApp):
|
|||
# User Apps Reader
|
||||
uar = None
|
||||
|
||||
# D-BUSified iPod Manager
|
||||
ipod_mgr = None
|
||||
|
||||
def __init__(self, path="gpodder.glade",
|
||||
root="gPodder",
|
||||
domain=app_name, **kwargs):
|
||||
|
@ -202,8 +198,7 @@ class Gpodder(SimpleGladeApp):
|
|||
if not ipod_supported():
|
||||
self.ipod_functions( False)
|
||||
else:
|
||||
self.ipod_mgr = iPodManagerSingleton()
|
||||
self.ipod_mgr.register( self.ipod_changed_callback)
|
||||
self.ipod_functions( True)
|
||||
|
||||
# if we are running a SVN-based version, notify the user :)
|
||||
if app_version.rfind( "svn") != -1:
|
||||
|
@ -218,20 +213,6 @@ class Gpodder(SimpleGladeApp):
|
|||
self.cleanup_ipod.set_sensitive( enable)
|
||||
self.sync_to_ipod.set_sensitive( enable)
|
||||
|
||||
def ipod_changed_callback( self, ipod):
|
||||
if ipod != None:
|
||||
if libgpodder.isDebugging():
|
||||
print '(ipod) iPod attached / modified'
|
||||
connected = ipod.mount_point != None
|
||||
self.ipod_functions( connected)
|
||||
if connected:
|
||||
if self.showConfirmation( _('iPod connected. Do you want to sync now?')):
|
||||
self.on_sync_to_ipod_activate( self.gPodder)
|
||||
else:
|
||||
if libgpodder.isDebugging():
|
||||
print '(ipod) iPod removed / not attached'
|
||||
self.ipod_functions( False)
|
||||
|
||||
def updateComboBox( self):
|
||||
self.channels_model = channelsToModel( self.channels)
|
||||
|
||||
|
@ -365,9 +346,11 @@ class Gpodder(SimpleGladeApp):
|
|||
return self.comboDownloaded.get_model().get_value( iter, 0)
|
||||
|
||||
def sync_to_ipod_proc( self, sync_win):
|
||||
sync = gPodder_iPodSync( callback_status = sync_win.set_status, callback_progress = sync_win.set_progress, callback_done = sync_win.close)
|
||||
gpl = gPodderLib()
|
||||
gpl.loadConfig()
|
||||
sync = gPodder_iPodSync( ipod_mount = gpl.ipod_mount, callback_status = sync_win.set_status, callback_progress = sync_win.set_progress, callback_done = sync_win.close)
|
||||
if not sync.open():
|
||||
gobject.idle_add( self.showMessage, _('Cannot access iPod.\nMake sure your iPod is connected.'))
|
||||
gobject.idle_add( self.showMessage, _('Cannot access iPod.\nMake sure your iPod is connected and mounted.'))
|
||||
sync.close()
|
||||
return False
|
||||
for channel in self.downloaded_channels:
|
||||
|
@ -376,7 +359,9 @@ class Gpodder(SimpleGladeApp):
|
|||
sync.close()
|
||||
|
||||
def ipod_cleanup_proc( self, sync_win):
|
||||
sync = gPodder_iPodSync( callback_status = sync_win.set_status, callback_progress = sync_win.set_progress, callback_done = sync_win.close)
|
||||
gpl = gPodderLib()
|
||||
gpl.loadConfig()
|
||||
sync = gPodder_iPodSync( ipod_mount = gpl.ipod_mount, callback_status = sync_win.set_status, callback_progress = sync_win.set_progress, callback_done = sync_win.close)
|
||||
if not sync.open():
|
||||
gobject.idle_add( self.showMessage, _('Cannot access iPod.\nMake sure your iPod is connected.'))
|
||||
sync.close()
|
||||
|
@ -455,9 +440,6 @@ class Gpodder(SimpleGladeApp):
|
|||
self.uar.read()
|
||||
prop = Gpodderproperties()
|
||||
prop.set_uar( self.uar)
|
||||
#if self.ipod_mgr != None:
|
||||
# self.ipod_mgr.register( prop.update_mountpoint)
|
||||
# prop.on_close = lambda: self.ipod_mgr.unregister( prop.update_mountpoint)
|
||||
#-- Gpodder.on_itemPreferences_activate }
|
||||
|
||||
#-- Gpodder.on_itemAddChannel_activate {
|
||||
|
|
|
@ -34,10 +34,6 @@ enable_ipod_functions = True
|
|||
try:
|
||||
import gpod
|
||||
import eyeD3
|
||||
import dbus
|
||||
# the following is taken from hal-device-manager source
|
||||
if getattr( dbus, 'version', (0,0,0)) >= (0,41,0):
|
||||
import dbus.glib
|
||||
except:
|
||||
enable_ipod_functions = False
|
||||
|
||||
|
@ -60,17 +56,6 @@ def ipod_supported():
|
|||
video_extensions = [ "mov", "mp4", "m4v" ]
|
||||
|
||||
|
||||
__ipodmanager = None
|
||||
|
||||
def iPodManagerSingleton():
|
||||
global __ipodmanager
|
||||
if __ipodmanager == None:
|
||||
__ipodmanager = iPodManager()
|
||||
|
||||
return __ipodmanager
|
||||
|
||||
|
||||
|
||||
class gPodder_iPodSync(object):
|
||||
itdb = None
|
||||
ipod_mount = '' # mountpoint for ipod
|
||||
|
@ -80,14 +65,12 @@ class gPodder_iPodSync(object):
|
|||
callback_progress = None
|
||||
callback_status = None
|
||||
callback_done = None
|
||||
ipod_mgr = None
|
||||
|
||||
def __init__( self, callback_progress = None, callback_status = None, callback_done = None):
|
||||
def __init__( self, ipod_mount = '/media/ipod/', callback_progress = None, callback_status = None, callback_done = None):
|
||||
if not ipod_supported():
|
||||
if libgpodder.isDebugging():
|
||||
print '(ipodsync) iPod functions not supported. (libgpod + eyed3 needed)'
|
||||
self.ipod_mgr = iPodManagerSingleton()
|
||||
self.ipod_mount = self.ipod_mgr.ipod.mount_point
|
||||
self.ipod_mount = ipod_mount
|
||||
self.callback_progress = callback_progress
|
||||
self.callback_status = callback_status
|
||||
self.callback_done = callback_done
|
||||
|
@ -118,11 +101,6 @@ class gPodder_iPodSync(object):
|
|||
if self.callback_done != None:
|
||||
time.sleep(1)
|
||||
gobject.idle_add( self.callback_done)
|
||||
if self.ipod_mgr != None:
|
||||
if self.ipod_mgr.ipod != None:
|
||||
# there has to be a better way.. ;)
|
||||
# os.system( 'sudo eject %s' % ( self.ipod_mgr.ipod.device ))
|
||||
pass
|
||||
return True
|
||||
|
||||
def remove_from_ipod( self, track, playlists):
|
||||
|
@ -286,139 +264,3 @@ class gPodder_iPodSync(object):
|
|||
# silently ignore :)
|
||||
pass
|
||||
|
||||
|
||||
class iPod(object):
|
||||
__mountpoint = None
|
||||
|
||||
def __init__( self, udi):
|
||||
self.is_connected = False
|
||||
self.device = None # /dev/sda
|
||||
self.children = []
|
||||
self.udi = udi
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPod) new with udi: %s' % udi
|
||||
|
||||
def has( self, udi):
|
||||
return udi in self.children
|
||||
|
||||
def add( self, udi):
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPod) adding: %s' % udi
|
||||
self.children.append( udi)
|
||||
|
||||
def remove( self, udi):
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPod) removing: %s' % udi
|
||||
self.children.remove( udi)
|
||||
|
||||
def get_mount_point( self):
|
||||
return self.__mountpoint
|
||||
|
||||
def set_mount_point( self, mount_point):
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPod) mountpoint: %s' % mount_point
|
||||
self.__mountpoint = mount_point
|
||||
if self.__mountpoint[-1] != '/':
|
||||
self.__mountpoint = self.__mountpoint + '/'
|
||||
|
||||
mount_point = property( fget = get_mount_point, fset = set_mount_point )
|
||||
|
||||
def blowup( self):
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPod) blown up!'
|
||||
|
||||
|
||||
class iPodManager(object):
|
||||
mgr = 'org.freedesktop.Hal.Manager'
|
||||
mgr_path = '/org/freedesktop/Hal/Manager'
|
||||
|
||||
service = 'org.freedesktop.Hal'
|
||||
interface = 'org.freedesktop.Hal.Device'
|
||||
|
||||
ipod_key = 'portable_audio_player.storage_device'
|
||||
ipod_value = '/org/freedesktop/Hal/devices/storage_model_iPod'
|
||||
ipod_parent_key = 'info.parent'
|
||||
|
||||
bus = None
|
||||
|
||||
__ipod = None
|
||||
listeners = []
|
||||
|
||||
def __init__( self):
|
||||
self.dbus_connect()
|
||||
|
||||
def dbus_connect( self):
|
||||
self.bus = dbus.SystemBus()
|
||||
self.bus.add_signal_receiver( self.device_added, 'DeviceAdded', self.mgr, self.service, self.mgr_path)
|
||||
self.bus.add_signal_receiver( self.device_removed, 'DeviceRemoved', self.mgr, self.service, self.mgr_path)
|
||||
|
||||
def device_added( self, udi):
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPodManager) device_added: %s' % udi
|
||||
self.notify_me( udi)
|
||||
props = self.get_properties( udi)
|
||||
|
||||
# add new iPod if connected
|
||||
if props.has_key( self.ipod_key):
|
||||
if props[self.ipod_key] == self.ipod_value:
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPodManager) received device_added'
|
||||
self.ipod = iPod( udi)
|
||||
self.ipod.device = props['block.device']
|
||||
self.notify_all()
|
||||
|
||||
# iPod-related
|
||||
if self.ipod != None and props.has_key( self.ipod_parent_key) and props[self.ipod_parent_key] == self.ipod_value:
|
||||
self.ipod.add( udi)
|
||||
|
||||
def notify_me( self, udi):
|
||||
callback = lambda *args: self.device_modified( udi, *args)
|
||||
self.bus.add_signal_receiver( callback, 'PropertyModified', self.interface, self.service, udi)
|
||||
|
||||
def device_removed( self, udi):
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPodManager) device_removed: %s' % udi
|
||||
# iPod-related
|
||||
if self.ipod != None and self.ipod.has( udi):
|
||||
self.ipod.remove( udi)
|
||||
if self.ipod != None and self.ipod.udi == udi:
|
||||
if libgpodder.isDebugging():
|
||||
print '(iPodManager) received device_removed'
|
||||
self.ipod.blowup()
|
||||
self.ipod = None
|
||||
self.notify_all()
|
||||
|
||||
def device_modified( self, udi, num_changes, list):
|
||||
props = self.get_properties( udi)
|
||||
for item in list:
|
||||
key = item[0]
|
||||
if self.ipod != None:
|
||||
if key == 'volume.mount_point':
|
||||
self.ipod.mount_point = props[key]
|
||||
self.notify_all()
|
||||
|
||||
def get_properties( self, udi):
|
||||
object = self.bus.get_object( self.service, udi)
|
||||
return object.GetAllProperties( dbus_interface = self.interface)
|
||||
|
||||
def get_ipod( self):
|
||||
return self.__ipod
|
||||
|
||||
def notify_all( self):
|
||||
for listener in self.listeners:
|
||||
listener( self.ipod)
|
||||
|
||||
def set_ipod( self, ipod):
|
||||
self.__ipod = ipod
|
||||
|
||||
ipod = property( fget = get_ipod, fset = set_ipod )
|
||||
|
||||
def register( self, callback):
|
||||
if not callback in self.listeners:
|
||||
self.listeners.append( callback)
|
||||
callback( self.ipod)
|
||||
|
||||
def unregister( self, callback):
|
||||
if callback in self.listeners:
|
||||
self.listeners.remove( callback)
|
||||
|
||||
|
|
Loading…
Reference in New Issue