
     uDj\3                        S SK r S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
JrJr  S SKJr  \R                  \R                   \R"                  \R$                  4u  rrrr\R&                  \R(                  \R*                  \R,                  \R.                  4u  rrrrr\R0                  \R2                  \R4                  srrr\R6                  \R8                  \R:                  srrr\R<                  \R>                  \R@                  \RB                  4u  rrr r!\RD                  \RF                  \RH                  \RJ                  4u  r"r#r$r%\RL                  \RN                  \RP                  \RR                  4u  r&r'r(r)\RT                  \RV                  \RX                  sr-r+r,Su  r.r/Sr0S	u  r1r2S
r3S r4S r5S r6S r7 " S S\5      r8 " S S5      r9g)    N)Thread)parse)
kodi_utils)get_settingset_settingrestore_setting_default)manual_function_import))upper	uppercaseitalic
capitalizeblackmonosymbol)xml10807201080p720p1080i720i16x9))   Ffont10)   Ffont12)   Ffont13)!   Ffont14)&   Ffont16)<   Tfont60)zfenlight.current_skinzfenlight.current_fontzJspecial://home/addons/plugin.video.fenlight/resources/skins/Default/1080i/c                      [        X40 UD6nUR                  5       nAU$ ! [         a  n[        S[	        U5      5         SnAgSnAff = f)%
import_info: ('module', 'function')
zerror in open_windowN)create_windowrun	Exceptionloggerstr)import_infoskin_xmlkwargs
xml_windowchoicees         W/home/rurouni/addon-audit/build/ultimate-nondebrid/resources/lib/windows/base_window.pyopen_windowr3      sL    )[=f=*>>&	- )	Q(()s   ! 
A
AA
c                      [        U 6 nU[        5       4nU" U0 UD6nU$ ! [         a*  n[        S[	        U5      5        [        S5      s SnA$ SnAff = f)r&   zerror in create_windowErrorN)r	   
addon_pathr)   r*   r+   notification)r,   r-   r.   functionargsr/   r1   s          r2   r'   r'   #   s\    #[1(
JL	!$((*	 	!3q6*	g	s     
AA	AAc                   ^ ^	^
 U 4S jm	U 4S jnU	4S jnS nU
4S jnU
4S jn[        5          [        S5        T R                  nT R                  nU" 5       m
U(       a  U" U5        U(       a   [	        US9R                  5         U" U5        O=T
(       a.  U" 5       nU(       a  [	        US9R                  5         U" U5        OT	" 5          [        5         g !   T	" 5          N= f)	Nc                  R   > T R                  5         [        S5        [        S5        g )Nfenlight.window_loadedfenlight.window_stack)closeclear_property)objs   r2   r>   window_manager.<locals>.close1   s    ))+)*()    c                     > Sn [        S5      S:X  d-  U S::  a'  [        S5        U S-  n [        S5      S:X  d  U S::  a  M'  [        5         TR                  5         [	        S5        g Nr   r<   true   2   g?get_propertysleephide_busy_dialogr>   r?   timerr@   s    r2   monitorwindow_manager.<locals>.monitor6   \    
%12f<!9D=5 12f<! ))+)*rB   c                    >  U S   nUS:X  a  SSK Jn  U" U 5        g US:X  a  SSKJn  U" U 5        g T" 5         g !   T" 5          g = f)Nmodeextras_menu_choicer   rS   person_data_dialogrU   )indexers.dialogsrS   indexers.peoplerU   )paramsrR   rS   rU   r>   s       r2   runnerwindow_manager.<locals>.runner?   sG    	
.4
""3v$$2v	%'s   : : : 	Ac                  X    [         R                  " [        S5      5      n U $ !   / n  U $ = fNr=   )jsonloadsrI   )window_stacks    r2   	get_stack!window_manager.<locals>.get_stackK   s-    jj.E!FG|	 ,	s   " )c                 h   > TR                  U 5        [        S[        R                  " T5      5        g r]   )appendset_propertyr^   dumps)rY   r`   s    r2   add_to_stack$window_manager.<locals>.add_to_stackP   s%    f&

<(@ArB   c                  h   > TR                  5       n [        S[        R                  " T5      5        U $ r]   )popre   r^   rf   )previous_paramsr`   s    r2   remove_from_stack)window_manager.<locals>.remove_from_stackT   s+     $$&/&

<(@A	rB   r<   target)show_busy_dialogr?   current_params
new_paramsr   startrK   )r@   rN   rZ   ra   rg   rl   rq   rr   rk   r>   r`   s   `        @@r2   window_managerrt   0   s    *
+

B )*%%.~~*,\.1	!	*&(?
'  "
? s   AC 4C C 	C#c                   ^  U 4S jnS n T R                   nSU;   a!  [        S5      (       a  [        S5      (       d  g [        S5        T R                  n[        5       nUR                  U5        [        S5        UR                  5       (       d"  [        S5        UR                  5       (       d  M"  T R                  5         UR                  5       (       a"  [        S5        UR                  5       (       a  M"  [        5         [        S5        [        US9R                  5         U" U5        [        5         g !   T R                  5          N= f)	Nc                     > Sn [        S5      S:X  d-  U S::  a'  [        S5        U S-  n [        S5      S:X  d  U S::  a  M'  [        5         TR                  5         [	        S5        g rD   rH   rL   s    r2   rN   window_player.<locals>.monitorl   rP   rB   c                 x     U S   nUS:X  a  SSK Jn  U" U 5        g SSKJn  U" U 5        g !   [	        5          g = f)NrR   rS   r   rT   rV   )rW   rS   rX   rU   r>   )rY   rR   rS   rU   s       r2   rZ   window_player.<locals>.runneru   s8    
.4
""3v2v%'s   + + 9zplugin.video.youtuber<   i  d   i  rn   )window_player_urladdon_installedaddon_enabledr?   rq   xbmc_playerplayrJ   isPlayingVideor>   rp   r   rs   rK   )r@   rN   rZ   r{   rq   players   `     r2   window_playerr   k   s    +	++00
0
1
1G]9^9^`f)*%%.=&++ +!!##U3ZF!!##))+s+  s   2D9 A2D9 3AD9 :4D9 9Ec                       \ rS rSrS rS rS'S jrS rS rS r	S r
S(S	 jrS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS(S jrS rS rS rS rS rS r S r!S  r"S! r#S)S" jr$S# r%S$ r&S%r'g&)*
BaseDialog   c                     [         R                  X5        Xl        [        5       U l        SU l        SU l        SU l        SU l        SU l	        SU l
        SU l        SU l        g )	N               )   rz   )	   
      \   )e   l   u   )window_xml_dialog__init__r9   r~   r   left_actionright_action	up_actiondown_actioninfo_actionselection_actionsclosing_actionscontext_actions)selfr9   s     r2   r   BaseDialog.__init__   s]    T()$+$$$.$$#$($($rB   c                     [        5       $ N)current_skinr   s    r2   r   BaseDialog.current_skin   s
    	rB   c                     [        X5      $ r   )r   )r   
setting_idsetting_defaults      r2   r   BaseDialog.get_setting   s    	Z	11rB   c                     [        X5        g r   )r   )r   r   values      r2   r   BaseDialog.set_setting   s
    j rB   c                     [        U5        g r   )r   r   rY   s     r2   r   "BaseDialog.restore_setting_default   s
    &!rB   c                     [        5       $ r   )make_listitemr   s    r2   r   BaseDialog.make_listitem   s
    	rB   c                     [        U5      $ r   )	build_urlr   s     r2   r   BaseDialog.build_url   s    	6	rB   c                     [        X5      $ r   )execute_builtinr   commandblocks      r2   execute_codeBaseDialog.execute_code   s    		((rB   c                 @    U R                  U5      R                  5       $ r   )get_controlgetSelectedPositionr   	window_ids     r2   get_positionBaseDialog.get_position   s    			)	$	8	8	::rB   c                 @    U R                  U5      R                  5       $ r   )r   getSelectedItemr   s     r2   get_listitemBaseDialog.get_listitem   s    			)	$	4	4	66rB   c                 D    U R                  U5      R                  U5        g r   )r   addItems)r   _control_itemss      r2   	add_itemsBaseDialog.add_items       8%%f-rB   c                 D    U R                  U5      R                  U5        g r   )r   
selectItem)r   r   _items      r2   select_itemBaseDialog.select_item   s    8''.rB   c                 D    U R                  U5      R                  U5        g r   )r   setImage)r   r   _images      r2   	set_imageBaseDialog.set_image   r   rB   c                 D    U R                  U5      R                  U5        g r   )r   setLabel)r   r   _labels      r2   	set_labelBaseDialog.set_label   r   rB   c                 D    U R                  U5      R                  U5        g r   )r   setText)r   r   _texts      r2   set_textBaseDialog.set_text   s    8$$U+rB   c                 D    U R                  U5      R                  U5        g r   )r   
setPercent)r   r   _percents      r2   set_percentBaseDialog.set_percent   s    8''1rB   c                 B    U R                  U5      R                  5         g r   )r   reset)r   r   s     r2   reset_windowBaseDialog.reset_window   s    8""$rB   c                 $    U R                  U5      $ r   )
getControl)r   
control_ids     r2   r   BaseDialog.get_control   s    		$$rB   c                 p    U R                  5       nUR                  XU R                  U5      -  S.5        U$ )N)labelaction)r   set_propertiesr   )r   r   r   rY   cm_items        r2   make_contextmenu_item BaseDialog.make_contextmenu_item   s4     '	5T^^F=S4STU	.rB   c                     [        U5      $ r   )get_infolabel)r   r   s     r2   r   BaseDialog.get_infolabel   s    	u	rB   c                     [        U5      $ r   )get_visibility)r   r   s     r2   r   BaseDialog.get_visibility   s    		  rB   c                     [        X40 UD6$ r   )r3   )r   r,   r-   r.   s       r2   r3   BaseDialog.open_window   s    	[	5f	55rB   c                     [        X5        g r   )
run_pluginr   s      r2   	run_addonBaseDialog.run_addon   s
    WrB   c                     [        U5        g r   )rJ   )r   times     r2   rJ   BaseDialog.sleep   s	    +rB   c                     [        U5      $ r   )path_existsr   paths     r2   r  BaseDialog.path_exists   s    	T	rB   c                     [        U5      $ r   )translate_pathr  s     r2   r  BaseDialog.translate_path   s    		rB   c                 "    [        SU-  U5        g Nzfenlight.%s)re   )r   propr   s      r2   set_home_propertyBaseDialog.set_home_property   s    }t#U+rB   c                     [        SU-  5      $ r  )rI   r   r  s     r2   get_home_propertyBaseDialog.get_home_property   s    	md*	++rB   c                     [        SU-  5      $ r  )r?   r  s     r2   clear_home_propertyBaseDialog.clear_home_property   s    	,	--rB   c                     [        X5      $ r   )getattr)r   r@   	attributes      r2   get_attributeBaseDialog.get_attribute   s    		  rB   c                     [        XU5      $ r   )setattr)r   r@   r  r   s       r2   set_attributeBaseDialog.set_attribute   s    		''rB   c                     U ? g !    g = fr   )r   r   s    r2   clear_modalsBaseDialog.clear_modals   s    ;$s    c                     [        X5      $ r   )r7   )r   textdurations      r2   r7   BaseDialog.notification   s    	d	%%rB   c                     [        U5      $ r   )r|   r   addon_ids     r2   r|   BaseDialog.addon_installed  s    		""rB   c                     [        U5      $ r   )r}   r*  s     r2   r}   BaseDialog.addon_enabled  s    	x	  rB   )
r9   r   r   r   r   r   r   r   r   r   N) )F)i  )(__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r   rJ   r  r  r  r  r  r  r   r#  r7   r|   r}   __static_attributes__ rB   r2   r   r      s    )2!");7./..,2%%
!6,,.!(&#!rB   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)	FontUtilsi	  c                 :   U R                  5       (       d  g / Sp!UR                  nU R                  5       nU(       a  [        SU-  5      nU(       a.  U R	                  U5      =(       d    U R                  5       U l        OU R                  5       U l        [         H  oS" U R                  " U6 5        M     [        [        [        5      5      S    H  oPR                  XQ5        M     [        [        U R                  5        [        [        U R                   5        g )Nr/  zspecial://skin/%s/Font.xmlr   )skin_change_checkrd   get_skin_folderr  get_font_infodefault_font_infoskin_font_infoneeded_font_values
match_font	list_dirsaddon_skins_folderreplace_fontre   current_skin_propr   current_font_propcurrent_font)r   replacement_valuesskin_font_xmlreplacement_values_appendskin_folderitems         r2   execute_custom_fontsFontUtils.execute_custom_fonts
  s    				!	!6&("m077$$&+.1MP[1["\-$*<*<]*K*gtOeOeOgD'"446 d";DOOT<R"S '9:;A>d@Q@QRV@k> $"3"34 $"3"34rB   c                 .   S n [        [        S5      5      R                  S5      S   R                  S5      S   R                  S5      nU(       d6  [	        [        S5      5      S    Vs/ s H  o"[
        ;   d  M  UPM     snS   nU$ s  snf !    U$ = f)Nzspecial://skin/addon.xml	extensionr   resfolderzspecial://skin)mdParser  getElementsByTagNamegetAttributer@  folder_options)r   rI  is      r2   r:  FontUtils.get_skin_folder  s    +(BCDYYZefghi~~  @E  F  GH  I  V  V  W_  `;
>JZ;[1\]^1_%w1_Ahvcva1_%wxy%z{	 &x$	s$   A'B +B
<B
B 
B Bc                     [        5       [        SS5      sU l         U l        U R                   [        [        5      :w  d  U R                  [        [
        5      :w  a  gg)Nzlookandfeel.fontDefaultTF)r   get_system_settingrE  rI   rC  rD  r   s    r2   r9  FontUtils.skin_change_check  sN    )59KL^`i9j&$T&	,'899T=N=NR^_pRq=qz~	rB   c                 Z  ^ ST< U(       a  SOS< 3n[        [        TS-  5      [        TS-  5      5      n[        [        TS-  5      [        TS-  5      5      nU R                   Vs/ s H  owS   U:X  d  M  US	   U;   d  M  US   PM     nnU(       a  XHS
   4$ U R                   Vs/ s H  owS	   U;   d  M  UPM     n	nU	(       d  U$ U	 Vs/ s H  owS   U:X  d  M  US   (       a  M  UPM     sn=(       dK    U	 Vs/ s H  owS   U:X  d  M  UPM     sn=(       d'    U	 Vs/ s H  owS   (       a  M  UPM     sn=(       d    U	n
XJ Vs/ s H1  owS	   [        U
 Vs/ s H  owS	   PM	     snU4S jS9:X  d  M,  WS   PM3     snS
   4$ s  snf s  snf s  snf s  snf s  snf s  snf s  snf )N	FENLIGHT__BOLDr/  g      ?g      ?g      ?g      ?namesizer   boldextra_stylesc                     > [        U T-
  5      $ r   )abs)kr_  s    r2   <lambda>&FontUtils.match_font.<locals>.<lambda>.  s    lopqrvpvlwrB   )key)rangeintr=  min)r   r_  r`  fallbackfont_tag
size_rangecompatibility_rangerU  compatibility_fontssized_fontsfontss    `         r2   r?  FontUtils.match_font$  s    $g2&=>(S%s4$;'78*c$+.D4K0@A,0,?,?~,?qV9PXCX]^_e]fj}]}6,?~(,B!CC //K/qV9
3J/+K	Xo!
QkvY$%61q?P1k
Q Hal  VCal\]rxpy  ~B  qBVWal  VC H8;a&7;8H<G 
y16cV[B\V[QRV9V[B\bw>x1xYQvYyz{|	}} K
Q  VC8B\ysf   *F
:F
	F
+F;FF F,F FF$F5FF(F#+F(:	F(#F(c                   ^^ / nU(       d  U$ UR                   n [        U5      R                  S5      nU Vs/ s HA  oUR                  S5      R	                  5       U R
                  R	                  5       :X  d  M?  UPMC     snS   nUR                  S5       H  nUR                  S5      S   R                  R                  n[        UR                  S5      S   R                  R                  5      n	UR                  S5      S   R                  R                  R	                  5       mUR	                  5       m[        S	 TT4 5       5      n
[        U4S
 j[         5       5      nU(       d  [        U4S j[         5       5      nU" XXS.5        M     U$ s  snf !   US   n GN = f!    GM  = f!    GM!  = f!   Sm N= f!    U$ = f)Nfontsetidr   fontr^  r_  styler/  c              3   ,   #    U  H
  nS U;   v   M     g7f)r`  Nr5  ).0rJ  s     r2   	<genexpr>*FontUtils.get_font_info.<locals>.<genexpr>@  s     @*?$v~*?s   c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r5  )ry  rJ  rw  s     r2   rz  r{  A  s     =u}   c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r5  )ry  rJ  name_compares     r2   rz  r{  B  s     +Y[TL,@[r}  r^  r_  r`  ra  )rd   rQ  rR  rS  lowerrE  
firstChilddatari  anyextras_keys)r   rG  resultsresults_append	all_fontsrU  rt  rJ  r^  r_  r`  ra  r  rw  s               @@r2   r;  FontUtils.get_font_info0  s   '	w>>.}%::9E9'ei>>$+?+E+E+G4K\K\KbKbKd+d1iefgh++F3t))&1!4??DDD--f5a8CCHHI**73A6AAFFLLN::<L@<*?@@D===L+Y[+Y(YD[\ 4 
. f!Yq\7 HHBE $	.sv   G F >F;FF G (F*1F346F<*A,G F F'$G *F0,G 3F95G <G G G
c           	      x   [        [        U-   5      n[        U5       oDR                  5       nS S S 5        U H0  n[        R
                  " SUS   -  SUS   < SUS   < S3W5      nM2     [        US5       oDR                  W5        S S S 5        g ! , (       d  f       Nj= f!    Mp  = f! , (       d  f       g = f)Nz<font>(.*?)</font> <\!-- %s -->r   z<font>r   z</font> <!-- z -->w)r  rA  	open_filereadresubwrite)r   windowrF  filefcontentrJ  s          r2   rB  FontUtils.replace_fontG  s    	*V3	4$!vvxW d&&;d1gEhlmnhoquvwqxGy  |C  D ! sq'''"2	  4s"   B-B#8B+
B #B(+
B9c                 Z    SSSSS.SSSSS.SSSSS.S	S
SSS.SSSSS.SSSSS.SSSSS./$ )Nr   r   Fr  r   r   r   r   r    r   r"   r!   font45-   r$   r#   r5  r   s    r2   r<  FontUtils.default_font_infoO  sb    R
Nr5%Hr5%Hr5%Hr5%Hr5%Hr5%H
J JrB   )rE  r   r=  N)r0  r1  r2  r3  rK  r:  r9  r?  r;  rB  r<  r4  r5  rB   r2   r7  r7  	  s'    5

~.3JrB   r7  ):r  r^   	threadingr   xml.dom.minidomr   rQ  modulesr   caches.settings_cacher   r   r   modules.utilsr	   r   r*   r~   r7   r   rJ   r  r  confirm_dialogr|   r6   delete_folderr?   r   r   rp   rK   r}   
getSkinDirr   r   re   rI   r  r   r@  r   jsonrpc_get_system_settingselect_dialog	ok_dialogrY  r  rT  r>  rC  rD  rA  r3   r'   rt   r   r   r7  r5  rB   r2   <module>r     sh   	   ,  S S 07A7S7SU_UfUfhrh~h~  AK  AX  AX  8X 4 6;?I?W?WYcYiYikukk  BL  BX  BX  Zd  Zs  Zs  @s <uin-7-G-GI^I^`j`x`x *]-7-F-F
H]H]_i_x_x *
N@J@[@[]g]x]x  {E  {S  {S  U_  Uj  Uj  Aj = "M:9C9M9MzOiOiku  lC  lC  EO  E\  E\  :\ 6	?L,9C9R9RT^TlTlnx  oC  oC  EO  E\  E\  :\ 6y,/9/T/TV`VnVnpz  qE  qE , M9 j ^ _ 'W $ $a 
)9v%Nu!" u!nMJ MJrB   