o
    \c1                     @   s   d dl m Z d dlZd dlmZmZmZ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Zed	d
 d dlmZ edd
 d dlmZ erZd dlmZ G dd dejZG dd dejZdS )    )gettextN)TYPE_CHECKINGListTypeDict)GenericListListDataDict)Builder)PluginManager)AppletPlugin)OptionGtkz3.0)r   Gdk)r   )BluemanAppletc                
       sv   e Zd Zejjfdedejddf fddZdddZd	ej	d
e
ddde
ddf
ddZd
e
dddej	fddZ  ZS )SettingsWidgetinstorientationreturnNc                    s,   t  jd|dd || _|   |   d S )Nr      )namer   spacing)super__init__r   construct_settingsshow_all)selfr   r   	__class__ A/usr/lib/python3/dist-packages/blueman/gui/applet/PluginDialog.pyr      s   zSettingsWidget.__init__c                 C   s   | j jj D ];\}}t|dkrBtj|d d}d|j_| 	||}| 
|ddd tjd|d  d	 d
d
dd}| 
|ddd qd S )Nr   r   labelg        Fr   z<i >descz</i>T)r!   wrap
use_markupxalign)r   r   __options__itemslenr   Labelpropsr%   get_control_widget
pack_start)r   kvr!   wr   r   r   r   !   s   z!SettingsWidget.construct_settingswidgetoptparamsr   propc                 C   s<   |d t |j|}td| d|  | j|| d S )Ntypezchanged  )getattrr*   loggingdebugr   
set_option)r   r0   r1   r2   r3   valr   r   r   handle_change/   s   zSettingsWidget.handle_changec                 C   sl  |d t kr"tj|d d}| j||j_|d| j||d |S |d t	krttj
dd}tj|d d}||ddd	 tjd
d}||ddd |dd ||d d	 |d d  | j||j_|d| j||d |S |d tkrtj
tjjdd}tj|d d}||ddd	 t }||ddd | j||j_|d| j||d |S t )Nr4   r   r    toggledactive   )r   Fr   T)numeric      rangezvalue-changedvalue)r   r   changedtext)boolr   CheckButtonr   
get_optionr*   r=   connectr;   intBoxr)   r,   
SpinButtonset_increments	set_rangerC   strOrientation
HORIZONTALEntryrE   
ValueError)r   r1   r2   cbr!   rer   r   r   r+   5   s4   z!SettingsWidget.get_control_widgetr   N)__name__
__module____qualname__r   rP   VERTICALr   r   r   WidgetrO   r;   r+   __classcell__r   r   r   r   r      s
    $
  r   c                
       s   e Zd Zd% fddZdejdejd	ejd
edef
ddZ	dej
dejdefddZdejddfddZdejddfddZdee ddfddZd&ddZdedededdfdd Zd!ejd"eddfd#d$Z  ZS )'PluginDialogappletr   r   Nc              
      s\  t  jtddddddddd | tjj || _td	}|	d
tj
| _|	dtj| _|	dtj
| _|	dtj| _|	dtj
| _|	dtj| _|	dtj
| _|	dtj
| _|	dtj| _|	dtj| _|	dtj| _| jd| j | |	dtj t }|d| j dt |ddddddt ddt!t" ddidd t!t# d!d"id#d$id%dt!dg}t$|dd$d&| _%| j%j&'d"tj(j) | j%j&*d"| j+ | j%j,d'| j- |	d(tj.}|	d)tj.}|| j% t/ d*krd|j0_1d|j0_1| 2  | jj3d+| j4d$| _5| jj3d,| j4d| _6| d-| j7 | j%8d d S ).NPluginsbluemanr_   
   i  i|  F)title	icon_namer   border_widthdefault_widthdefault_height	resizablevisiblezapplet-plugins-widget.uidescriptionicon
author_txtdepends_hdrdepends_txtconflicts_hdrconflicts_txtr   main_containercontentb_prefsr<   allr=   r   r@   )r=   activatablerj   )idr4   rendererrender_attrsrv   )rw   r4   z	icon-namer   r"   markuprA   expandT)rw   r4   rx   ry   
view_props)headers_visiblerj   rD   plugin_listmain_scrolled_window   zplugin-loadedzplugin-unloadedzdelete-event)9r   r   _set_positionr   WindowPositionCENTERr`   r	   
get_widgetr)   rk   Imagerl   rm   r]   rn   ro   rp   rq   plugin_nameBinrr   content_gridToggleButtonrt   rI   on_prefs_toggledadd	ContainerCellRendererToggle
on_toggledrF   rO   CellRendererPixbufCellRendererTextr   list	liststoreset_sort_column_idSortType	ASCENDINGset_sort_funclist_compare_func	selectionon_selection_changedScrolledWindowget_minor_versionr*   overlay_scrollingpopulatera   plugin_state_changedsig_asig_b	_on_close
set_cursor)r   r`   buildercrdatar~   plugin_infor   r   r   r   ]   sj   
zPluginDialog.__init__
_treemodeliter1iter2
_user_datac                 C   s   | j |dd}| j |dd}|d r|d s |d s6|d s6|d |d kr*dS |d |d k r4dS dS |d r@|d s@dS |d sJ|d rJdS dS )Nrv   r   r   r@   )r   get)r   r   r   r   r   arU   r   r   r   r      s    zPluginDialog.list_compare_func_widget_eventc                 C   s$   | j j| j | j j| j dS NF)r`   ra   
disconnectr   r   )r   r   r   r   r   r   r      s   zPluginDialog._on_close
_selectionc                 C   s.  | j  }|d usJ | j |dd }| jj | }d| d | jj_|j	| j
j_|j| jj_|j| jj_|jrNd| jj_d| jj_d|j| jj_n
d| jj_d| jj_|jrod| jj_d| jj_d|j| jj_n
d| jj_d| jj_| r|| jj v rd| jj_nd| jj_| | d S )Nr   z<b>z</b>T, F)r   selectedr   r`   ra   get_classesr   r*   r!   __icon__rl   re   
__author__rm   __description__rk   __depends__rn   rj   ro   join__conflicts__rp   rq   is_configurable
get_loadedrt   	sensitiveupdate_config_widget)r   r   	tree_iterr   clsr   r   r   r      s0   









z!PluginDialog.on_selection_changed_buttonc                 C   sF   | j  }|d usJ | j |dd }| jj | }| | d S )Nr   )r   r   r   r`   ra   r   r   )r   r   r   r   r   r   r   r   r      s
   
zPluginDialog.on_prefs_toggledr   c                 C   s   | j jjrA| sd| j j_d S | }|sd| j j_d S | j }|d us(J | j| t|t	r7|
  | jt	| d S | j }|d usLJ | j| t|t	r[|
  | j| j d S r   )rt   r*   r=   r   get_instancerr   	get_childremove
isinstancer   destroyr   r   )r   r   r   rT   r   r   r   r      s&   





z!PluginDialog.update_config_widgetc                 C   sf   | j j }| j j }| D ] \}}| rd| d}n|}| jj||v |j|j	||d qd S )Nz<span weight="bold">z</span>)r=   rl   rv   r   r"   )
r`   ra   r   r   r'   r   r   appendr   __unloadable__)r   classesloadedr   r   r"   r   r   r   r     s   zPluginDialog.populate_pluginsr   r   c                 C   sh   | j j|d}| j j|d |d | jj | }|s'| | d| jj_	d S |
 r2d| jj_	d S d S )N)r   r   )r=   FT)r   get_conditionalsetr`   ra   r   r   rt   r*   r   r   )r   r   r   r   rowr   r   r   r   r     s   
z!PluginDialog.plugin_state_changed_togglepathc                 C   s  | j |dd }| jj | }| jj }g }|D ]}||v r&|| q|retj| tj	j
tjjd}d|j_d|j_td|j_tdd||d |j_| }	|	tjjkra|  d S |  | jj | }
g }|
D ]}||v r||| qq|rtj| tj	j
tjjd}d|j_d|j_td|j_td	d||d |j_| }	|	tjjkr|  d S |  |D ]
}| jj|d
 q| jj||| jj v d S )Nr   )parentr4   buttonsTrb   zDependency issuezoPlugin <b>"%(0)s"</b> depends on <b>%(1)s</b>. Unloading <b>%(1)s</b> will also unload <b>"%(0)s"</b>.
Proceed?r   )01zhPlugin <b>%(0)s</b> conflicts with <b>%(1)s</b>. Loading <b>%(1)s</b> will unload <b>%(0)s</b>.
Proceed?F)r   r   r`   ra   get_dependenciesr   r   r   MessageDialogMessageTypeQUESTIONButtonsTypeYES_NOr*   secondary_use_markupre   r   rE   r   secondary_textrunResponseTypeYESr   get_conflicts
set_config)r   r   r   r   depsr   	to_unloaddepdialogresp	conflictsconfpr   r   r   r     sZ   

 zPluginDialog.on_toggled)r`   r   r   NrX   )rY   rZ   r[   r   r   	TreeModelTreeIterobjectrJ   r   r]   r   EventrF   r   TreeSelectionr   r   r   r   r   r   r   r
   rO   r   r   r   r^   r   r   r   r   r_   \   s    I
"
 r_   )r   r   r7   typingr   r   r   r   blueman.gui.GenericListr   r   blueman.main.Builderr	   blueman.main.PluginManagerr
   blueman.plugins.AppletPluginr   blueman.plugins.BasePluginr   girequire_versiongi.repositoryr   r   blueman.main.Appletr   rK   r   Windowr_   r   r   r   r   <module>   s"    G