B
    £ �až  ã               @   s‚   d dl mZ d dlmZmZ d dlmZmZmZm	Z	 d dlm
Z
mZmZmZmZ daeƒ Zdai ai adai aG dd„ deƒZdS )	é    )ÚQGuiApplication)ÚQQmlApplicationEngineÚqmlRegisterType)ÚQUrlÚQTimerÚQAbstractListModelÚQModelIndex)ÚQObjectÚSignalÚSlotÚPropertyÚQtNÚ c               @   sÎ   e Zd Zejd Zejd Zejd Zejd Zejd Z	ejd Z
dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zeƒ dd„ ƒZeeƒd#dd„ƒZeƒ dd„ ƒZeƒ dd„ ƒZd$dd„Zdd „ Zd!d"„ ZdS )%ÚPresetBrowserModelr   é   é   é   é   é   c                sP   t  | ¡ ‡ fdd„tˆ ƒD ƒata|a|at ¡ | _t	t
t ¡ ƒƒ| _| ad S )Nc                s   i | ]}ˆ | |“qS © r   )Ú.0Úk)Úl_preset_metar   ú'/home/debian/UI/preset_browser_model.pyú
<dictcomp>)   s    z/PresetBrowserModel.__init__.<locals>.<dictcomp>)r   Ú__init__ÚsortedÚpreset_metaÚfiltered_presetsÚauthorÚ
favouritesÚkeysZ!_PresetBrowserModel__effect_typesÚdictÚ	enumerateÚ_PresetBrowserModel__orderÚpreset_browser_singleton)Úselfr   Úl_favouritesZl_authorr   )r   r   r       s    

zPresetBrowserModel.__init__c             C   s   |   tƒ |  ¡ |  ¡ ¡ d S )N)ÚbeginInsertRowsr   ÚrowCount)r&   r   r   r   ÚstartInsert3   s    zPresetBrowserModel.startInsertc             C   s   t tt ¡ ƒƒ| _|  ¡  d S )N)r"   r#   r   r!   r$   ÚendInsertRows)r&   r   r   r   Ú	endInsert7   s    zPresetBrowserModel.endInsertc             C   s&   t t ¡ ƒ |¡}|  tƒ ||¡ d S )N)Úlistr   r!   ÚindexÚbeginRemoveRowsr   )r&   Ú	effect_idÚcurrent_rowr   r   r   ÚstartRemove<   s    zPresetBrowserModel.startRemovec             C   s   |   ¡  d S )N)ÚendRemoveRows)r&   r   r   r   Ú	endRemoveA   s    zPresetBrowserModel.endRemovec                s$   ‡ fdd„t ˆ ƒD ƒa|  d¡ d S )Nc                s   i | ]}ˆ | |“qS r   r   )r   r   )r   r   r   r   F   s    z9PresetBrowserModel.update_preset_meta.<locals>.<dictcomp>r   )r   r   Ú
add_filter)r&   r   r   )r   r   Úupdate_preset_metaD   s    z%PresetBrowserModel.update_preset_metac             C   s6   da t ¡  |  ¡  tattt ¡ ƒƒ| _	|  
¡  d S )Nr   )Úcurrent_letterÚcurrent_filtersÚclearÚbeginResetModelr   r   r"   r#   r!   r$   ÚendResetModel)r&   r   r   r   Úclear_filterI   s    zPresetBrowserModel.clear_filterr   c             C   sÐ   |dkrFt |ƒdkr(|tkr"daqF|an|tkr<t |¡ n
t |¡ |  ¡  t tƒdkr`tan8tadtkr~dd„ t ¡ D ƒadtkr˜dd„ t ¡ D ƒatdkr²d	d„ t ¡ D ƒat	t
t ¡ ƒƒ| _|  ¡  d S )
Nr   r   r   r    c             S   s"   i | ]\}}|t d  kr||“qS )Úpresets)r    )r   r   Úvr   r   r   r   r   s    z1PresetBrowserModel.add_filter.<locals>.<dictcomp>Úminec             S   s"   i | ]\}}|d  t kr||“qS )r   )r   )r   r   r>   r   r   r   r   t   s    c             S   s<   i | ]4\}}|  d ¡ d ¡d dd…  ¡  t¡r||“qS )ú/éÿÿÿÿNiúÿÿÿ)ÚstripÚsplitÚlowerÚ
startswithr7   )r   r   r>   r   r   r   r   v   s    )Úlenr7   r8   ÚremoveÚaddr:   r   r   Úitemsr"   r#   r!   r$   r;   )r&   Útagr   r   r   r5   W   s(    
zPresetBrowserModel.add_filterc             C   s*   | j  |  dd¡|  ttƒd d¡¡ d S )Nr   r   )ÚdataChangedÚemitr.   rF   r   )r&   r   r   r   Úitems_changed|   s    z PresetBrowserModel.items_changedc             C   s4   t t ¡ ƒ |¡}| j |  |d¡|  |d¡¡ d S )Nr   )r-   r   r!   r.   rK   rL   )r&   r0   r1   r   r   r   Úitem_changed€   s    zPresetBrowserModel.item_changedNc             C   s   t tƒS )N)rF   r   )r&   Úparentr   r   r   r)   †   s    zPresetBrowserModel.rowCountc             C   s>  |  ¡ stƒ S | ¡ }d|  kr0|  ¡ k �r8n �n|tjkrn| j| ¡   d¡ d¡d d d…  	dd¡S |tj
krªdt| j| ¡   kr¤t| j| ¡   d S dS nŽ|tjkrÊt| j| ¡   d	 S |tjkrâ| j| ¡  S |tjk�rt| j| ¡   d	 tk�rd
gS g S n"|tjk�r8| j| ¡  td kS tƒ S )Nr   r@   rA   iúÿÿÿÚ_ú Údescriptionr   r   r?   r=   )ÚisValidÚQVariantÚrowr)   r   ÚTitler$   rB   rC   ÚreplaceÚDescriptionr   ÚAuthorÚFilenameÚTagsr   Ú	Favouriter    )r&   r.   ÚrolerU   r   r   r   Údata‹   s*     
.


zPresetBrowserModel.datac             C   s(   t jdt jdt jdt jdt jdt jdiS )Ns   titles   descriptions   authors   filenames   tagss   is_favourite)r   rV   rX   rY   rZ   r[   r\   )r&   r   r   r   Ú	roleNames©   s    zPresetBrowserModel.roleNames)r   )N)Ú__name__Ú
__module__Ú__qualname__r   ÚUserRolerV   rX   rY   rZ   r[   r\   r   r*   r,   r2   r4   r6   r   r<   Ústrr5   rM   rN   r)   r^   r_   r   r   r   r   r      s(   





$
r   )ÚPySide2.QtGuir   ÚPySide2.QtQmlr   r   ÚPySide2.QtCorer   r   r   r   r	   r
   r   r   r   r%   Úsetr8   r7   r   r   r   r    r   r   r   r   r   Ú<module>   s   