
    |~gT5                     j   d dl m Z d dlZd dl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 d dlmZmZ d dlZ ej(                  dd	        ej(                  d
d	       d dlmZmZmZmZmZ erd dlmZ  G d dej:                        Z G d dej>                        Z  G d dejB                        Z"y)    )gettextN)TYPE_CHECKINGTypeDictcastOptionalTypeVar)Builder)PluginManager)AppletPlugin)Option
BasePluginGtkz3.0Gdk)r   r   GioGLibGObject)BluemanAppletc            
           e Zd ZU d Z G d d      Zeed<    ej                  e      Z	 ej                  e      Z
 ej                  e      Z ej                  ed      Z ej                  ed      Zdeded	ed
edef
 fdZ xZS )
PluginItemc                   @    e Zd ZU eed<   eed<   eed<   eed<   eed<   y)PluginItem._Props	icon_nameplugin_namedescriptionenabledactivatableN)__name__
__module____qualname__str__annotations__bool     A/usr/lib/python3/dist-packages/blueman/gui/applet/PluginDialog.py_Propsr      s    r%   r'   props)typeF)r)   defaultr   r   r   r   r   c                     t         |           || j                  _        || j                  _        || j                  _        || j                  _        || j                  _        y N)super__init__r(   r   r   r   r   r   )selfr   r   r   r   r   	__class__s         r&   r.   zPluginItem.__init__%   sJ    (

!,

!,

$

!,

r%   )r   r   r    __gtype_name__r'   r"   r   Propertyr!   r   r   r   r#   r   r   r.   __classcell__r0   s   @r&   r   r      s    !N  M   c*I"'"",K"'"",KgD%8G"'""e<K-# -C -c -TX -gk - -r%   r   c            
            e Zd Zej                  j
                  fdedej                  ddf fdZddZdej                  de
d	d
de
ddf
dZde
d	d
dej                  fdZ xZS )SettingsWidgetinstorientationreturnNc                 x    t         |   d|d       || _        | j                          | j	                          y )Nr6      )namer8   spacing)r-   r.   r7   construct_settingsshow_all)r/   r7   r8   r0   s      r&   r.   zSettingsWidget.__init__/   s<    !# 	 	

 	!r%   c                    | j                   j                  j                  j                         D ]  \  }}t	        |      dkD  st        j                  |d         }d|j                  _        | j                  ||      }| j                  |ddd       t        j                  d|d   z   d	z   d
d
d      }| j                  |ddd        y )Nr;   r<   labelg        Fr   z<i >descz</i>T)rB   wrap
use_markupxalign)r7   r0   __options__itemslenr   Labelr(   rF   get_control_widget
pack_start)r/   kvrB   ws        r&   r>   z!SettingsWidget.construct_settings:   s    II''3399; 	8DAq1vz		&	2%("++Aq15%3		6(:V(C$[_hklueQ7	8r%   widgetoptparamsr   propc                      |d   t        |j                  |            }t        j                  d| d|        | j                  j                  ||       y )Nr)   zchanged  )getattrr(   loggingdebugr7   
set_option)r/   rP   rQ   rR   rS   vals         r&   handle_changezSettingsWidget.handle_changeH   sJ    fVnWV\\489Qse,-		S#&r%   c                    |d   t         k(  rdt        j                  |d         }| j                  j	                  |      |j
                  _        |j                  d| j                  ||d       |S |d   t        k(  rt        j                  d      }t        j                  |d         }|j                  |ddd	       t        j                  d
      }|j                  |ddd       |j                  dd       |j                  |d   d	   |d   d          | j                  j	                  |      |j
                  _        |j                  d| j                  ||d       |S |d   t"        k(  rt        j                  t        j$                  j&                  d      }t        j                  |d         }|j                  |ddd	       t        j(                         }|j                  |ddd       | j                  j	                  |      |j
                  _        |j                  d| j                  ||d       |S t-               )Nr)   r<   rA   toggledactive   )r=   Fr   T)numeric      rangezvalue-changedvalue)r8   r=   changedtext)r#   r   CheckButtonr7   
get_optionr(   r^   connectr[   intBoxrJ   rL   
SpinButtonset_increments	set_rangerd   r!   Orientation
HORIZONTALEntryrf   
ValueError)r/   rQ   rR   cbrB   res           r&   rK   z!SettingsWidget.get_control_widgetN   s   &>T!fVn5A!YY11#6AGGNIIi!3!3S&(KHF^s""AIIF6N3ELLua0t,ALLE5!,Q"KKw*F7OA,>? II005AGGMIIot'9'93PHF^s"COO$>$>JAIIF6N3ELLua0		ALLE5!,99//4AGGLIIi!3!3S&&IHlr%   r9   N)r   r   r    r   ro   VERTICALr   r.   r>   Widgetr!   r[   rK   r3   r4   s   @r&   r6   r6   .   s    JM//JbJb 	\ 	 	gk 	8'CJJ 'S '( 'RU 'Z^ '$c $8 $

 $r%   r6   c            	           e Zd Zd# fdZdedededdfdZd$dej                  d	e	e
   dej                  fd
Zd$de	e
   de	e
   d	e	e
   defdZdej"                  dej&                  ddfdZdej*                  dej,                  ddfdZdej                  dej2                  defdZdej6                  ddfdZdee   ddfdZd%dZ  e!dd      Z"de#e"   dededdfd Z$d!edefd"Z% xZ&S )&PluginDialogr9   Nc                     t            |t        d      ddddddd	        j                  t        j
                  j                         | _        t        d	      }|j                  d
t        j                         _        |j                  dt        j                         _        |j                  dt        j                         _        |j                  dt        j                         _        |j                  dt        j                         _        |j                  dt        j                         _        |j                  dt        j$                         _        |j                  dt        j(                         _        |j                  dt        j,                         _         j.                  j1                  d j2                          j5                  |j                  dt        j6                               t8        j:                  j=                  t>        j@                         _!        |j                  dt        jD                         _#         jF                  jI                   jB                   jJ                          jF                  j1                  d jL                         |j                  dt        jN                        }|j                  dt        jN                        }t	        jP                         dk\  r"d|jR                  _*        d|jR                  _*         jW                           j                  jX                  j1                  d jZ                  d       _.         j                  jX                  j1                  d jZ                  d       _/         j1                  d j`                         t8        jb                  j=                  dd       }|j1                  d fd         je                  |       y )!NPluginsbluemanr{   
   i  i|  F)	applicationtitler   r<   border_widthdefault_widthdefault_height	resizablevisiblezapplet-plugins-widget.uir   icon
author_txtdepends_txtconflicts_txtr<   main_containercontentb_prefsr]   allplugin_listboxzrow-selectedplugin_listmain_scrolled_window   zplugin-loadedTzplugin-unloadedzdelete-eventcloseactivatec                 $    j                         S r,   )r   )xyr/   s     r&   <lambda>z'PluginDialog.__init__.<locals>.<lambda>   s    djjl r%   )3r-   r.   _set_positionr   WindowPositionCENTERappletr
   
get_widgetrJ   r   Imager   r   r   r   r   Binr   ry   content_gridToggleButtonr   ri   on_prefs_toggledadd	Containerr   	ListStorenewr   	__gtype__modelListBoxlistbox
bind_model_widget_factory_on_row_selectedScrolledWindowget_minor_versionr(   overlay_scrollingpopulater}   plugin_state_changedsig_asig_b	_on_closeSimpleAction
add_action)r/   r   builderr   plugin_infoclose_actionr0   s   `     r&   r.   zPluginDialog.__init__v   s   I, 	 
	
 	#,,33445"--mSYYG&&vsyy9	!,,\399E"--mSYYG$//K"--fcii@%001A377K#..y#**E)))S5E5EFY(=(=>##E3==9:]]&&z';';<
))*:CKKH

D,@,@A^T-B-BC((8J8JK(()?ASAST   "b(27K/27K/++--55otG`G`bfg
++--556GIbIbdij
^T^^4''++GT:Z)BC%r%   r<   stater   c                 .   t        j                  d|        t        j                  j	                  |d t
        j                  j                  |            }|j                  d|       | j                  |       |j                  d| j                         y )Nzadding action: r   zchange-state)rW   rX   r   r   new_statefulr   Variantnew_booleanset_propertyr   ri   _on_plugin_toggle)r/   r<   r   r   actions        r&   _add_plugin_actionzPluginDialog._add_plugin_action   ss    v./!!..$007
 	I{3~t'='=>r%   item_datac                 ,   t        |t              sJ t        j                  t        j                  j
                  dd      }t        j                  d|j                  j                        }|j                  |       |j                  d|j                  j                          | j                  |j                  j                  |j                  j                  |j                  j                         |j                  |j                  j                         t        j                  |j                  j                   d      }|j                  |       t        j"                  |j                  j$                  dd      }|j                  |       |S )N   T)r8   r=   r   )r   	sensitivezwin.)r   r   )rB   rE   r   )
isinstancer   r   rk   ro   rp   rg   r(   r   r   set_action_namer   r   r   
set_activer   r   rJ   r   )r/   r   r   boxcheckbutton	plugin_imrB   s          r&   r   zPluginDialog._widget_factory   s   $
+++gg#//"<"<aQUVooddjj>T>TU##d4::+A+A*B$CD

 6 6

8J8JDJJLbLbctzz112II

(<(<dK				

 6 64QUV
r%   item1item2c                    t        |t              sJ t        |t              sJ |j                  j                  r|j                  j                  sy|j                  j                  s|j                  j                  ry|j                  j                  |j                  j                  k  ry|j                  j                  |j                  j                  kD  ryy)Nra   r   )r   r   r(   r   r   )r/   r   r   r   s       r&   _model_sort_funczPluginDialog._model_sort_func   s    %,,,%,,,;;""5;;+B+B((U[[-D-D;;""U[[%<%<<[[$$u{{'>'>>r%   r   c                 0   |j                  |       |j                         }| j                  j                  j	                         |   }| j                  j                  j                         }|D cg c]	  }||v s| }}|r_| j                  t        d      dj                  |      |dz        s|j                  t        j                  j                  |              y | j                  j                  j                         |   }|D 	cg c]	  }	|	|v s|	 }}	|r_| j                  t        d      dj                  |      |dz        s0|j                  t        j                  j                  |              y |D ]@  }
t        j                  d|
        | j                  j                  j                  |
d       B | j                  j                  j                  ||| j                  j                  j                         v       y c c}w c c}	w )NzoPlugin <b>"%(0)s"</b> depends on <b>%(1)s</b>. Unloading <b>%(1)s</b> will also unload <b>"%(0)s"</b>.
Proceed?, )01zhPlugin <b>%(0)s</b> conflicts with <b>%(1)s</b>. Loading <b>%(1)s</b> will unload <b>%(0)s</b>.
Proceed?z
unloading F)	set_stateget_namer   r}   get_dependencies
get_loaded_ask_unloadr   joinr   r   r   get_conflictsrW   rX   
set_config)r/   r   r   r   depsloadeddep	to_unload	conflictsconfps              r&   r   zPluginDialog._on_plugin_toggle   s   oo'{{""335kB$$//1$(:SC6MS:	:## - .6:ii	6JQ\0]^   !9!9e)!DE++99;KHI*3F$tv~FIF!1!1   (,		)(<;"OP"   !9!9e)!DE 	5AMMJqc*+KK**1e4	5 	&&{Kt{{GZGZGeGeGg4gh1 ; Gs   1	H;H	HH_lblbrowc                    |j                         }| j                  j                  |      }t        |t              sJ | j
                  j                  j                         |j                  j                     }d|j                  j                  z   dz   | j                  j                  _
        |j                  | j                  j                  _        |j                  | j                  j                  _
        |j                   | j"                  j                  _
        |j$                  r5dj'                  |j$                        | j(                  j                  _
        n$t+        d      | j(                  j                  _
        |j,                  r5dj'                  |j,                        | j.                  j                  _
        n$t+        d      | j.                  j                  _
        |j1                         rV|j                  j                  | j
                  j                  j3                         v rd| j4                  j                  _        nd| j4                  j                  _        | j9                  |       y )Nz<b>z</b>r   zNo dependencieszNo conflictsTF)	get_indexr   get_itemr   r   r   r}   get_classesr(   r   rB   __icon__r   r   
__author__r   __description__r   __depends__r   r   r   __conflicts__r   is_configurabler   r   r   update_config_widget)r/   r   r   posr   clss         r&   r   zPluginDialog._on_row_selected   s   oozz""3'$
+++"&++"5"5"A"A"CDJJDZDZ"[',tzz/E/E'E'N$$'LL		!&)nn#'*':':$??+/99S__+ED""(+,->+?D""(-1YYs7H7H-ID$$*-.~->D$$* TZZ%;%;t{{?R?R?]?]?_%_+/DLL(+0DLL(!!#&r%   _widget_eventc                     | j                   j                  j                  | j                         | j                   j                  j                  | j                         yNF)r   r}   
disconnectr   r   )r/   r   r   s      r&   r   zPluginDialog._on_close  s=    &&tzz2&&tzz2r%   _buttonc                 B   | j                   j                         }|j                         }t        t        | j
                  j                  |            }| j                  j                  j                         |j                  j                     }| j                  |       y r,   )r   get_selected_rowr   r   r   r   r   r   r}   r   r(   r   r   )r/   r   rowr   r   r   s         r&   r   zPluginDialog.on_prefs_toggled  so    ll++-mmoJ

 3 3C 89"&++"5"5"A"A"CDJJDZDZ"[!!#&r%   r   c                    | j                   j                  j                  r|j                         sd| j                   j                  _        y |j	                         }|sd| j                   j                  _        y | j
                  j                         }|J | j
                  j                  |       t        |t              r|j                          | j
                  j                  t        |             y | j
                  j                         }|J | j
                  j                  |       t        |t              r|j                          | j
                  j                  | j                         y r   )r   r(   r^   r   get_instancer   	get_childremover   r6   destroyr   r   )r/   r   r7   rs   s       r&   r   z!PluginDialog.update_config_widget&  s   <<$$&&(,1"")##%D,1"")''113}$}##**1-a0IIK##''t(<= ##--/A= =&&q)!^,		##D$5$56r%   c                    | j                   j                  j                         }| j                   j                  j                         }|j	                         D ]j  \  }}|j                         rd| d}n|}t        |j                  ||||v |j                        }| j                  j                  || j                         l | j                  j                  | j                  j                  d             y )Nz<span weight="bold">z</span>)r   r   )r   r}   r   r   rH   r   r   r   __unloadable__r   insert_sortedr   r   
select_rowget_row_at_index)r/   classesr   r<   r   rC   plugin_items          r&   r   zPluginDialog.populate@  s    151D1D1P1P1R$$//1  	IID#""$/vW=$S\\4tv~[^[m[mnKJJ$$[$2G2GH	I 	 = =a @Ar%   _Tr   )bound_pluginsr   c                    t        j                  | d|        | j                  |      }t        |t        j
                        sJ |j                  t        j                  j                  |             | j                  j                  j                         |   }|s-| j                  |       d| j                  j                  _        y |j#                         rd| j                  j                  _        y y )NrU   FT)rW   rX   lookup_actionr   r   r   r   r   r   r   r   r}   r   r   r   r(   r   r   )r/   r  r<   r   r   r   s         r&   r   z!PluginDialog.plugin_state_changedN  s    ax()##D)&#"2"233311&9:"&++"5"5"A"A"CD"I%%c*+0DLL(  "+/DLL( #r%   rf   c                    t        j                  | t         j                  j                  t         j                  j
                        }d|j                  _        d|j                  _        t        d      |j                  _
        ||j                  _        |j                         }|j                          |t         j                  j                  k(  S )N)parentr)   buttonsTr~   zDependency issue)r   MessageDialogMessageTypeQUESTIONButtonsTypeYES_NOr(   secondary_use_markupr   r   rf   secondary_textrunr  ResponseTypeYES)r/   rf   dialogresps       r&   r   zPluginDialog._ask_unload[  s    ""$S__5M5MWZWfWfWmWmn,0)!*01&*#zz|s''++++r%   )r   r   r9   Nr,   rw   )'r   r   r    r.   r!   r#   r   r   Objectr   objectr   ry   r   rj   r   r   r   r   r   r   r   
ListBoxRowr   r   Eventr   r   r   r   r   r   r   r	   r  r   r   r   r3   r4   s   @r&   r{   r{   u   su   9&v?s ?4 ?d ?t ?GNN 8F;K WZWaWa &hv&6 x?O X`agXh tw  i(8(8 i iRV i@'CKK ' '4 '8 SYY 4 
'(8(8 'T '7\(: 7t 74
B 
\	*B0]2-> 0c 0SW 0\` 0	, 	, 	,r%   r{   )#r   r   rW   typingr   r   r   r   r   r	   blueman.main.Builderr
   blueman.main.PluginManagerr   blueman.plugins.AppletPluginr   blueman.plugins.BasePluginr   r   girequire_versiongi.repositoryr   r   r   r   r   blueman.main.Appletr   r   r   rk   r6   ApplicationWindowr{   r$   r%   r&   <module>r.     s       E E ( 4 5 9 	   5%     5%   6 61- -6DSWW DNo,3(( o,r%   