
    @};dN                     v   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dl	mZmZmZmZmZ d dlmZ d dlZd dlZ ej&                  d e
j(                                 G d de
j*                        Z G d d	ej                  ej.                        Z G d
 dej                  ej2                        Zy)    N)RB)GObjectGtkGioPeasPeasGtk)MagnatuneSource	rhythmboxc                   *    e Zd Zd Zd Zd Zd Zd Zy)MagnatuneEntryTypec                     t         j                  j                  | d       t        j                  d      | _        t        j                  d      | _        t        j                         | _	        y )N	magnatunenamez^http://[^.]+\.magnatune\.com/z\.(mp3|ogg)$)
r   RhythmDBEntryType__init__recompileURIrensreMagnatuneAccountinstanceaccountselfs    B/usr/lib/x86_64-linux-gnu/rhythmbox/plugins/magnatune/magnatune.pyr   zMagnatuneEntryType.__init__.   sL    ;7zz;<$*jj)$)!**,$,    c                     |S N )r   trackurlaccount_typeusernamepasswords        r   fix_trackurlzMagnatuneEntryType.fix_trackurl4   s    	/r   c           	      >   | j                   j                         \  }}}|j                  t        j                  j
                        }|dk7  rP| j                  j                  d|d|d|d|      }| j                  j                  d|      }t        d|z         |S )Nnonezhttp://:@z.magnatune.com/z_nospeech.\1zconverted track uri: %s)
r   get
get_stringr   RhythmDBPropTypeLOCATIONr   subr   print)r   entryr"   r#   r$   uris         r   do_get_playback_uriz&MagnatuneEntryType.do_get_playback_uri7   s    '+||'7'7'9$<8,,556#V	HhP\]_b	c3		,3	"S	()	*r   c                      y)NTr    )r   r0   s     r   do_can_sync_metadataz'MagnatuneEntryType.do_can_sync_metadataA   s    	r   c                      y r   r    )r   r0   changess      r   do_sync_metadataz#MagnatuneEntryType.do_sync_metadataD   s    r   N)__name__
__module____qualname__r   r%   r2   r4   r7   r    r   r   r   r   -   s    -	r   r   c                   n    e Zd Zd Z ej
                  ej                        Zd Zd Zd Z	d Z
d Zd Zy)		Magnatunetypec                 B    t         j                   j                  |        y r   )r   r   r   s    r   r   zMagnatune.__init__M   s    	//4 r   c                 d    | j                   }|j                  j                  j                          y r   )objectpropsselected_pagedownload_albumr   action	parametershells       r   download_album_action_cbz"Magnatune.download_album_action_cbP   s!    
++%++**,r   c                 d    | j                   }|j                  j                  j                          y r   )rA   rB   rC   display_artist_inforE   s       r   artist_info_action_cbzMagnatune.artist_info_action_cbT   s!    
++%++//1r   c                 `   | j                   }|j                  j                  | _        t        j                  | d       t               | _        | j                  j                  | j                         t        j                  j                  d      | _        t        j                  j                         }t        j                  d      }|j                  d| j                          |j#                  |       t        j                  d      }|j                  d| j$                         |j#                  |       t'        j(                         }|j+                  t        j,                  | d             |j/                  d      }|j1                  |       t2        j4                  j7                  d	      }t        j                  j                  d      }t9        j                  t:        || j                  t        j<                  j                  d
      | |j?                  d      tA        d      |      | _!        |jE                  | jB                  | j                         |jG                  | jB                  |       |j                  jH                  j                  d| jJ                        | _&        y )Nicons%org.gnome.rhythmbox.plugins.magnatunezmagnatune-album-downloadr   activatezmagnatune-artist-infozmagnatune-toolbar.uizmagnatune-toolbarstoreszmagnatune-symbolicsourcer<   )rH   
entry_typeiconpluginsettingsr   toolbar_menuzplaying-song-changed)'rA   rB   dbrbappend_plugin_source_pathr   rS   register_entry_typer   SettingsnewrV   Applicationget_defaultSimpleActionconnectrI   
add_actionrL   r   Builderadd_from_filefind_plugin_file
get_objectlink_shared_menusr   DisplayPageGroup	get_by_idr   r	   
ThemedIcon	get_child_rR   register_entry_type_for_sourceappend_display_pageshell_playerplaying_entry_changedpec_id)r   rH   apprF   buildertoolbargrouprV   s           r   do_activatezMagnatune.do_activateX   s   
++%KKNN$'tW-&($/''doo.,,""#JK$-##%#!;<&..T::;..!89&..T778..KKM'	++D2HIJ23' 



'
'
2%\\EF(O//NN34""8,kN$+ &&t{{DOODDKK/((001GIcIcd$+r   c                 V   | j                   }|j                  j                  j                  | j                         | j
                  j                  | j                         | j
                  j                          d | _        d | _        | j                  j                          d | _	        y r   )rA   rB   ro   
disconnectrq   rX   entry_delete_by_typerS   commitrR   delete_thyself)r   rH   s     r   do_deactivatezMagnatune.do_deactivate   sp    
++%++%%dkk2''t/''..$'$/++$+r   c                 :    | j                   j                  |       y r   )rR   rp   )r   spr0   s      r   rp   zMagnatune.playing_entry_changed   s    ++##E*r   N)r8   r9   r:   __gtype_name__r   propertyrA   r   rI   rL   rv   r|   rp   r    r   r   r<   r<   I   s=    
'


0!-2'eR
+r   r<   c                   ^    e Zd Zd Z ej
                  ej                        Zg dZd Zd Z	y)MagnatuneConfigr=   )oggflacwavzmp3-vbrzmp3-cbrc                     t         j                   j                  |        t        j                  j	                  d      | _        t        j                         | _        y )NrO   )	r   r   r   r\   r]   rV   r   r   r   r   s    r   r   zMagnatuneConfig.__init__   s;    	//4 ,,""#JK$-!**,$,r   c                    	 dd d}fd	 	fd} 	fd}fd} fd}||d _         t        j                         j                  t	        j
                   d	             j                  d
      }dD ]"  }j                  |      j                  |       $ j                  d      j                   j                  j                   j                  d                j                   j                          j                  d      j                  d|       j                  d      j                  d|        |        |S )Nr   )iditemc                    | dk7  }j                  d      j                  |       j                  d      j                  |       j                  d      j                  |       j                  d      j                  |       y )Nr'   username_entrypassword_entryusername_labelpassword_label)rf   set_sensitive)r"   has_accountrs   s     r   update_sensitivityzFMagnatuneConfig.do_create_configure_widget.<locals>.update_sensitivity   su    ';
&'55kB
&'55kB
&'55kB
&'55kBr   c                     j                   j                         \  } }}j                  d      j                  | dk(         j                  d      j                  | dk(         j                  d      j                  | dk(         j                  d      j	                  |xs d       j                  d	      j	                  |xs d        |        y )
Nno_account_radior'   stream_account_radiostreamdownload_account_radiodownloadr    r   )r   r*   rf   
set_activeset_text)r"   r#   r$   rs   r   r   s      r   fill_account_detailszHMagnatuneConfig.do_create_configure_widget.<locals>.fill_account_details   s    (,(8(8(:%L(H
()44\V5KL
,-889QR
./::<:;UV
&'00R@
&'00R@l#r   c                     t        d| j                         z          dddd}| j                         r:|| j                            j                  d<    || j                                   y y )Nz"account type radiobutton toggled: r'   r   r   r   r   r   zaccount-type)r/   get_name
get_activerV   )buttonr"   r   r   s     r   account_type_toggledzHMagnatuneConfig.do_create_configure_widget.<locals>.account_type_toggled   sd    	-0A	AB'-xkuv<$01B$CDMM.!|FOO$567 r   c                     j                  d      j                         }j                  d      j                         }|dk(  s|dk(  rt        d       y t        j                         j                  ||       y )Nr   r   r   zmissing something)rf   get_textr/   r   r   update)r0   eventr#   r$   rs   s       r   account_details_changedzKMagnatuneConfig.do_create_configure_widget.<locals>.account_details_changed   sk      !12;;=8  !12;;=8"nB	


 %%h9r   c                 Z    j                   | j                            j                  d<   y )Nformat)format_listr   rV   )r   r   s    r   format_selection_changedzLMagnatuneConfig.do_create_configure_widget.<locals>.format_selection_changed   s%    !--f.?.?.AB4==r   )&rb_magnatune_audio_combobox_changed_cb%rb_magnatune_radio_account_toggled_cbzmagnatune-prefs.uimagnatune_vboxr   audio_comboboxr   r   zfocus-out-eventr   )configure_callback_dicr   rc   rd   rY   re   rf   set_namer   r   indexrV   connect_signalsra   )
r   keyring_datar   r   r   r   dialogr   rs   r   s
   `       @@r   do_create_configure_widgetz*MagnatuneConfig.do_create_configure_widget   s7    
,
C	$8:C /G-A!$
 KKM'	++D2FGH./& U +d
d$$T*+ 
%&11$2B2B2H2HW_I`2ab	$556	%&../@BYZ	%&../@BYZ	-r   N)
r8   r9   r:   r   r   r   rA   r   r   r   r    r   r   r   r      s-    #
'


0;-
Gr   r   )zipfilesysos.pathosxmldatetimestringr   rY   gi.repositoryr   r   r   r   r   r   r	   r   gettextinstall
locale_dirr   r   Activatabler<   Configurabler   r    r   r   <module>r      s   8   
   	 	  : : +   ]R]]_ -	-- 	8E+!1!1 E+TRgoow';'; Rr   