ó
®ˆ#\c           @   sà  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
 m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m  Z  y d  d l! j" j# Z$ Wn# e% k
 rMd  d l& j" j' Z$ n Xd  d l( m) Z) d  d l* m+ Z+ m, Z, y d  d l- m. Z. Wn n Xd Z/ e  j0 j1 e/ d ƒ Z2 d e f d „  ƒ  YZ3 d e e f d „  ƒ  YZ4 d S(   iÿÿÿÿN(   t   eTimer(   t   configt   ConfigEnableDisablet   ConfigSubsectiont   ConfigYesNot   ConfigClockt   getConfigListEntryt
   ConfigTextt   ConfigSelectiont   ConfigNumbert   ConfigSubDictt   NoSavet   ConfigPasswordt   ConfigSelectionNumber(   t
   MessageBox(   t   Screen(   R   R   (   t   Label(   t   ConfigListScreen(   t	   ActionMap(   t   Button(   t   List(   t
   LoadPixmap(   t   resolveFilenamet   SCOPE_CURRENT_SKIN(   t   SCOPE_ACTIVE_SKINs   /etc/enigma2/s   e2m3u2bouquet/t   E2m3u2b_Providersc           B   sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   s	  
        <screen position="center,center" size="600,500">
            <widget name="key_red" position="0,0" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;20" transparent="1" shadowColor="background" shadowOffset="-2,-2" />
            <widget name="key_green" position="140,0" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;20" transparent="1" shadowColor="background" shadowOffset="-2,-2" />
            <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" transparent="1" alphatest="on" />
            <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" transparent="1" alphatest="on" />
            <widget source="list" render="Listbox" position="10,50" size="580,430" scrollbarMode="showOnDemand">
                <convert type="TemplatedMultiContent">
                    {"template": [
                        MultiContentEntryPixmapAlphaTest(pos = (10, 0), size = (32, 32), png = 0),
                        MultiContentEntryText(pos = (47, 0), size = (400, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),
                        MultiContentEntryText(pos = (450, 0), size = (120, 30), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),
                        ],
                        "fonts": [gFont("Regular",22)],
                        "itemHeight": 30
                    }
                </convert>
            </widget>
            <widget name="pleasewait" position="10,60" size="580,140" font="Regular;18" halign="center" valign="center" transparent="0" zPosition="5"/>
            <widget name="no_providers" position="10,50" size="580,430" font="Regular;18" zPosition="4" />
        </screen>
        c         C   s=  t  j |  | ƒ | |  _ t  j |  d ƒ d d g |  _ g  |  _ t |  j ƒ |  d <t ƒ  |  _ |  j j	 j
 ƒ  j |  j ƒ t d d d g i |  j d 6|  j d	 6|  j d
 6|  j d 6|  j d 6d ƒ |  d <t d ƒ |  d <t d ƒ |  d <t ƒ  |  d <t ƒ  |  d <|  d j d ƒ |  d j ƒ  |  j j |  j ƒ d  S(   Ns   IPTV Bouquet Maker - ProvidersR   t   AutoBouquetsMaker_HideSectionst   listt   ColorActionst   SetupActionst   MenuActionst   okt   cancelt   redt   greent   menuiþÿÿÿt   actionst   Cancelt   key_redt   Addt	   key_greent
   pleasewaitt   no_providerssH   No providers please add one (use green button) or create config.xml file(   R   t   __init__t   sessiont   setTitlet   skinNamet   drawListR   R    t   activityTimert   timeoutt   gett   appendt   prepareR   t   openSelectedt	   keyCancelt   key_addR   R   t   setTextt   hidet   onLayoutFinisht   populate(   t   selfR,   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR+   9   s.    		




c         C   s6   |  d j  t ƒ |  d j d ƒ |  j j d ƒ d  S(   NR$   R)   s   Please wait...i   (   t
   setEnabledt   FalseR8   R0   t   start(   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR;   W   s    c         C   s   |  j  j ƒ  t j ƒ  |  _ t j j t j j t j	 d ƒ ƒ rb |  j j
 t j j t	 d ƒ ƒ n  |  j ƒ  |  d j ƒ  |  d j t ƒ d  S(   Ns
   config.xmlR)   R$   (   R0   t   stopt   e2m3u2bouquett   Configt   e2m3u2b_configt   ost   patht   isfilet   joint   CFGPATHt   read_configt   refreshR9   R=   t   True(   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR4   ]   s    $"
c         C   s   |  j  ƒ  d  S(   N(   t   close(   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR6   h   s    c         C   sT   t  j ƒ  } d | _ t | _ | |  j j | j <|  j j |  j	 t
 |  j | ƒ d  S(   Nt   New(   RA   t   ProviderConfigt   nameRK   t   enabledRC   t	   providersR,   t   openWithCallbackt   provider_add_callbackt   E2m3u2b_Providers_Config(   R<   t   provider(    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR7   k   s
    		c         C   sA   |  d j  ƒ  d } |  j j |  j t |  j |  j j | ƒ d  S(   NR   i   (   t
   getCurrentR,   RR   t   provider_config_callbackRT   RC   RQ   (   R<   t   provider_name(    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR5   s   s    c         C   s¶   | j  rV y" t d t d t t d ƒ ƒ } Wq  t d t d t t d ƒ ƒ } q  XnJ y" t d t d t t d ƒ ƒ } Wn% t d t d t t d ƒ ƒ } n X| t | j ƒ d f S(   Nt   cachedRE   s   icons/lock_on.pngs   skin_default/icons/lock_on.pngs   icons/lock_off.pngs   skin_default/icons/lock_off.pngt    (   RP   R   RK   R   R   R   t   strRO   (   R<   RU   t   pixmap(    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyt   buildListEntryw   s    	"%""c         C   sˆ   g  |  _  x9 |  j j j ƒ  D]% \ } } |  j  j |  j | ƒ ƒ q W|  d j |  j  ƒ |  j j sv |  d j ƒ  n |  d j ƒ  d  S(   NR   R*   (	   R/   RC   RQ   t	   iteritemsR3   R]   t   setListt   showR9   (   R<   t   keyRU   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRJ   …   s    	c         C   s   |  j  ƒ  d  S(   N(   RJ   (   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRW   ‘   s    c         C   s9   d |  j  j k r+ |  j  j j d d  ƒ n  |  j ƒ  d  S(   NRM   (   RC   RQ   t   popt   NoneRJ   (   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRS   ”   s    (   t   __name__t
   __module__t   skinR+   R;   R4   R6   R7   R5   R]   RJ   RW   RS   (    (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR   !   s   									RT   c           B   sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   s™  
    <screen position="center,center" size="600,500">
    <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" transparent="1" alphatest="on" />
    <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" transparent="1" alphatest="on" />
    <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" transparent="1" alphatest="on" />
    <widget name="key_red" position="0,0" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;20" transparent="1" shadowColor="background" shadowOffset="-2,-2" />
    <widget name="key_green" position="140,0" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;20" transparent="1" shadowColor="background" shadowOffset="-2,-2" />
    <widget name="key_yellow" position="280,0" size="140,40" valign="center" halign="center" zPosition="4"  foregroundColor="white" font="Regular;20" transparent="1" shadowColor="background" shadowOffset="-2,-2" />
    <widget name="config" position="10,60" size="590,330" scrollbarMode="showOnDemand" />
    <widget name="description" position="10,410" size="590,80" font="Regular;18" halign="center" valign="top" transparent="0" zPosition="1"/>
    <widget name="pleasewait" position="10,60" size="590,350" font="Regular;18" halign="center" valign="center" transparent="0" zPosition="2"/>
    </screen>c         C   s€  t  j |  | ƒ | |  _ | |  _ | |  _ d j | j ƒ |  _ t  j |  |  j ƒ d d g |  _	 g  |  _
 g  |  _ t j |  |  j d |  j d |  j ƒt ƒ  |  _ |  j j j ƒ  j |  j ƒ t d d d d	 g i |  j d
 6|  j d 6|  j d 6|  j d 6|  j d 6|  j d 6d ƒ |  d <t d ƒ |  d <t d ƒ |  d <t d ƒ |  d <t ƒ  |  d <t ƒ  |  d <|  j j |  j ƒ d  S(   Ns   Provider Configure - {}RT   t    AutoBouquetsMaker_ProvidersSetupR,   t	   on_changeR   R   t   VirtualKeyboardActionsR   R   R    R!   R"   t   yellowR#   iþÿÿÿR$   R%   R&   t   SaveR(   t   Deletet
   key_yellowt   descriptionR)   (   R   R+   R,   RC   RU   t   formatRO   t   setup_titleR-   R.   t   onChangedEntryR   R   t   changedEntryR    R0   R1   R2   R3   R4   R   t   keySaveR6   t
   key_deleteR   R   R:   R;   (   R<   R,   t   providers_configRU   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR+   §   s6    					%





c         C   s6   |  d j  t ƒ |  d j d ƒ |  j j d ƒ d  S(   NR$   R)   s   Please wait...i   (   R=   R>   R8   R0   R?   (   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR;   Ê   s    c      	   C   s  |  j  j ƒ  t d t ƒ |  _ t d t ƒ |  _ |  j j |  j _ t	 d d d t d d ƒ |  _
 |  j j d k r |  j j n d |  j
 _ t d d d d d	 g ƒ |  _ |  j j |  j _ t	 d d d t d d ƒ |  _ |  j j |  j _ t	 d d d t d d ƒ |  _ |  j j |  j _ t	 d d d t ƒ |  _ |  j j |  j _ t d d d t ƒ |  _ |  j j |  j _ t d t ƒ |  _ |  j j |  j _ t d t ƒ |  _ |  j j |  j _ t d d
 d d
 d g ƒ |  _ |  j j rðd |  j _ n  t d t ƒ |  _ |  j j  |  j _ t d t ƒ |  _! |  j j" |  j! _ t d d d d d d d d g ƒ |  _# |  j j$ |  j# _ t d d d d d d d g ƒ |  _% |  j j& |  j% _ t d t ƒ |  _' |  j j( |  j' _ t d t ƒ |  _) |  j j* |  j) _ |  j+ ƒ  |  d j, ƒ  |  d j- t. ƒ d  S(   Nt   defaultRZ   t
   fixed_sizet   visible_widthi   RM   t   simplet   choicest   expertt   bottomt   topt    t   1t   4097t   5001t   5002R)   R$   (/   R0   R@   R   R>   t   provider_deletet   provider_enabledRU   RP   t   valueR   RX   RO   R   t   provider_settings_levelt   settings_levelt   provider_m3u_urlt   m3u_urlt   provider_epg_urlt   epg_urlt   provider_usernamet   usernameR   t   provider_passwordt   passwordR   t   provider_multi_vodt	   multi_vodt   provider_piconst   piconst   provider_bouquet_post   bouquet_topt   provider_all_bouquett   all_bouquett   provider_iptv_typest
   iptv_typest   provider_streamtype_tvt   streamtype_tvt   provider_streamtype_vodt   streamtype_vodt   provider_sref_overridet   sref_overridet   provider_bouquet_downloadt   bouquet_downloadt   create_setupR9   R=   RK   (   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR4   Ï   sL    *'$
c         C   s   d  |  _ g  |  _ d } |  j j t d |  j d ƒ ƒ |  j j t d |  j d j |  j j	 ƒ ƒ ƒ |  j j
 sx|  j j t d |  j d j |  j j	 ƒ ƒ ƒ |  j j
 rx|  j j t d |  j d	 ƒ ƒ |  j j t d
 |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j
 d k ru|  j j t d |  j d ƒ ƒ |  j j t d |  j d ƒ ƒ |  j j t d |  j d  ƒ ƒ |  j j t d! |  j d" ƒ ƒ |  j j t d# |  j d$ ƒ ƒ quqxn  |  j |  d% _ |  d% j |  j ƒ d  S(&   Ns   - s   Name:s   Provider names   Delete:s   Delete provider {}s   Enabled:s   Enable provider {}s   Setup mode:s2   Choose level of settings. Expert shows all optionss   M3U url:sG   Providers M3U url. USERNAME & PASSWORD will be replaced by values belows   EPG url:sG   Providers EPG url. USERNAME & PASSWORD will be replaced by values belows	   Username:s0   If set will replace USERNAME placeholder in urlss	   Password:s0   If set will replace PASSWORD placeholder in urlss
   Multi VOD:sE   Enable to create multiple VOD bouquets rather than single VOD bouquets   Picons:s   Automatically download Piconss   IPTV bouquet positions$   Select where to place IPTV bouquets s   Create all channels bouquet:s(   Create a bouquet containing all channelsR{   s   All IPTV type:s¡   Normally should be left disabled. Setting to enabled may allow recording on some boxes. If you playback issues (e.g. stuttering on channels) set back to disableds   TV Stream Type:s   Stream type for TV servicess   VOD Stream Type:s   Stream type for VOD servicess   Override service refss{   Should be left disabled unless you need to use the override.xml to override service refs (e.g. for DVB to IPTV EPG mapping)s   Check providers bouquetsA   Enable this option to check and use providers custom service refsR   (   Rc   t   editListEntryR   R3   R   RX   Rƒ   Ro   RU   RO   R…   R„   R†   Rˆ   RŠ   RŒ   RŽ   R   R’   R”   R–   R˜   Rš   Rœ   Rž   R    R_   (   R<   t   indent(    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR¢   ú   s2    		..(c         C   s‡   |  d j  ƒ  |  _ x |  j D] } | ƒ  q WyK t |  d j  ƒ  d t ƒ sk t |  d j  ƒ  d t ƒ rx |  j ƒ  n  Wn n Xd  S(   NR   i   (   RV   t   itemRq   t
   isinstanceR   R   R¢   (   R<   t   x(    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRr     s    :c         C   s1  |  j  j } |  j j d k s* |  j j rO |  j j |  j t d j	 | ƒ ƒ n  |  j
 j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j |  j  _ |  j j d k rt |  j  _ n t |  j  _ |  j j |  j  _ |  j  j |  j  _! |  j" j j# ƒ  |  j  _$ |  j% j j# ƒ  |  j  _& |  j' j |  j  _( |  j) j |  j  _* |  j j s±t |  j  _ n  |  j j d k r|  j j | k r|  j+ j, j- | ƒ |  j+ j, |  j j <t. d j	 |  j j ƒ IJn  |  j+ j/ ƒ  |  j0 ƒ  d  S(   NRZ   s   Confirm deletion of provider {}R}   s   [e2m3u2b] Provider {} updated(1   RU   RO   RX   R…   Rƒ   R,   RR   t   delete_confirmR   Ro   R„   RP   R†   R‡   Rˆ   R‰   RŠ   R‹   RŒ   R   RŽ   R   R   R‘   R’   R“   R”   RK   R•   R>   R–   R—   R˜   R™   Rš   t   stripR›   Rœ   R   Rž   RŸ   R    R¡   RC   RQ   Rb   t   logt   write_configRL   (   R<   t   previous_name(    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRs   #  s8    %$%c         C   s>   | s
 d  Sx# |  d j  D] } | d j ƒ  q W|  j ƒ  d  S(   NR   i   (   R   R    RL   (   R<   t   resultR§   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyt   cancelConfirmJ  s
    c         C   s   |  j  ƒ  d  S(   N(   RL   (   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR6   Q  s    c         C   s,   |  j  j |  j t d j |  j j ƒ ƒ d  S(   Ns   Confirm deletion of provider {}(   R,   RR   R¨   R   Ro   RU   RO   (   R<   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRt   Z  s    c         C   sZ   | s
 d  St  d j |  j j ƒ IJ|  j j j |  j j d  ƒ |  j j ƒ  |  j	 ƒ  d  S(   Ns   [e2m3u2b] Provider {} delete(
   Rª   Ro   RU   RO   RC   RQ   Rb   Rc   R«   RL   (   R<   R­   (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyR¨   ]  s    (   Rd   Re   Rf   R+   R;   R4   R¢   Rr   Rs   R®   R6   Rt   R¨   (    (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyRT   ™   s   	#		+			'				(5   RD   Rª   RA   t   enigmaR    t   Components.configR   R   R   R   R   R   R   R   R	   R
   R   R   R   t   Screens.MessageBoxR   t   Screens.ScreenR   t   Components.LabelR   t   Components.ConfigListR   t   Components.ActionMapR   t   Components.ButtonR   t   Components.Sources.ListR   t   xml.etree.cElementTreet   etreet   cElementTreet   ETt   ImportErrort   xml.etree.ElementTreet   ElementTreet   Tools.LoadPixmapR   t   Tools.DirectoriesR   R   t   Tools.DirectoiresR   t
   ENIGMAPATHRE   RG   RH   R   RT   (    (    (    sE   /usr/lib/enigma2/python/Plugins/Extensions/E2m3u2bouquet/providers.pyt   <module>   s4   Xx