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 dlZdaeƒ Zdadd„ eejƒD ƒZeai aG d	d
„ d
eƒZdS )é    )ÚQGuiApplication)ÚQQmlApplicationEngineÚqmlRegisterType)ÚQUrlÚQTimerÚQAbstractListModelÚQModelIndex)ÚQObjectÚSignalÚSlotÚPropertyÚQtNÚ c             C   s&   i | ]}|t jd  krt j| |“qS )Úbeebo)Úmodule_infoÚeffect_type_mapsÚeffect_prototypes_models_all)Ú.0Úk© r   ú'/home/debian/UI/module_browser_model.pyú
<dictcomp>   s    r   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	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 )"ÚModuleBrowserModelr   é   é   é   é   c             C   s2   t  | ¡ t ¡ | _ttt ¡ ƒƒ| _|a| a	d S )N)
r   Ú__init__Úfiltered_modulesÚkeysZ!_ModuleBrowserModel__effect_typesÚdictÚ	enumerateÚ_ModuleBrowserModel__orderÚ
favouritesÚmodule_browser_singleton)ÚselfZl_favouritesr   r   r   r       s
    

zModuleBrowserModel.__init__c             C   s   |   tƒ |  ¡ |  ¡ ¡ d S )N)ÚbeginInsertRowsr   ÚrowCount)r%   r   r   r   ÚstartInsert,   s    zModuleBrowserModel.startInsertc             C   s   t tt ¡ ƒƒ| _|  ¡  d S )N)r    r!   r   r   r"   ÚendInsertRows)r%   r   r   r   Ú	endInsert0   s    zModuleBrowserModel.endInsertc             C   s&   t t ¡ ƒ |¡}|  tƒ ||¡ d S )N)Úlistr   r   ÚindexÚbeginRemoveRowsr   )r%   Ú	effect_idÚcurrent_rowr   r   r   ÚstartRemove5   s    zModuleBrowserModel.startRemovec             C   s   |   ¡  d S )N)ÚendRemoveRows)r%   r   r   r   Ú	endRemove:   s    zModuleBrowserModel.endRemovec             C   s6   da t ¡  |  ¡  tattt ¡ ƒƒ| _	|  
¡  d S )Nr   )Úcurrent_letterÚcurrent_filtersÚclearÚbeginResetModelÚeffect_prototypesr   r    r!   r   r"   ÚendResetModel)r%   r   r   r   Úclear_filter=   s    zModuleBrowserModel.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nTx&t ¡ D ]}d|d krjt	d|ƒ qjW 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   Útagszno tagsc             S   s.   i | ]&\}}t td gƒ  |d ¡r||“qS )r#   r:   )r4   ÚsetÚissubset)r   r   Úvr   r   r   r   c   s    z1ModuleBrowserModel.add_filter.<locals>.<dictcomp>r#   c             S   s"   i | ]\}}|t d  kr||“qS )Úmodules)r#   )r   r   r=   r   r   r   r   e   s    c             S   s    i | ]\}}|  t¡r||“qS r   )Ú
startswithr3   )r   r   r=   r   r   r   r   g   s    )Úlenr3   r4   ÚremoveÚaddr6   r7   r   ÚitemsÚprintr    r!   r   r"   r8   )r%   ÚtagÚer   r   r   Ú
add_filterJ   s*    
zModuleBrowserModel.add_filterc             C   s*   | j  |  dd¡|  ttƒd d¡¡ d S )Nr   r   )ÚdataChangedÚemitr,   r@   r   )r%   r   r   r   Úitems_changedm   s    z ModuleBrowserModel.items_changedc             C   s4   t t ¡ ƒ |¡}| j |  |d¡|  |d¡¡ d S )Nr   )r+   r   r   r,   rH   rI   )r%   r.   r/   r   r   r   Úitem_changedq   s    zModuleBrowserModel.item_changedNc             C   s   t tƒS )N)r@   r   )r%   Úparentr   r   r   r'   w   s    zModuleBrowserModel.rowCountc             C   sÔ   |  ¡ stƒ S | ¡ }d|  kr.|  ¡ k rÎn nœ|tjkrJ| j| ¡  S |tjkrjt| j| ¡   d S |tj	krŠt| j| ¡   d S |tj
kr®tt| j| ¡   d ƒS |tjkrÎ| j| ¡  td kS tƒ S )Nr   ÚdescriptionÚlong_descriptionr:   r>   )ÚisValidZQVariantÚrowr'   r   Ú
EffectTyper"   ÚDescriptionr   ÚLongDescriptionÚTagsr+   Ú	Favouriter#   )r%   r,   ÚrolerP   r   r   r   Údata|   s    




zModuleBrowserModel.datac          
   C   s"   t jdt jdt jdt jdt jdiS )Ns   l_effect_types   descriptions   long_descriptions   tagss   is_favourite)r   rQ   rR   rS   rT   rU   )r%   r   r   r   Ú	roleNames‘   s
    zModuleBrowserModel.roleNames)r   )N)Ú__name__Ú
__module__Ú__qualname__r   ÚUserRolerQ   rR   rS   rT   rU   r   r(   r*   r0   r2   r   r9   ÚstrrG   rJ   rK   r'   rW   rX   r   r   r   r   r      s$   




"
r   )ÚPySide2.QtGuir   ÚPySide2.QtQmlr   r   ÚPySide2.QtCorer   r   r   r   r	   r
   r   r   r   r   r$   r;   r4   r3   Úsortedr   r7   r   r#   r   r   r   r   r   Ú<module>   s   