
    Zhl,                        d Z ddlZddlmZmZmZ ddlZddlm	Z	m
Z
mZ ddlmZ dZdZdZd	Zd
Z G d dej&                        Z G d dej*                        Z G d de	j.                        Z G d dej2                        Zd Zy)zD
A browser for exploring the available images and possible options.
    N)AnyNoReturnOptional)QtCoreQtGui	QtWidgets)cache   i  AllzNo ColorzNo Animc                   P     e Zd Zd
 fd	Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z xZS )Browserc                    t         t        |   |       | j                  dd       | j	                  d       d | _        d | _        d | _        t        j                  j                         }t        j                  |       | _        | j                  j                  d       | j                  j                  t                | j                  j"                  j%                  | j&                         t)               }|j+                  t-        |             t        j.                         | _        | j0                  j3                  |       | j0                  j5                  t        j6                  j8                         t;        |       | _        | j<                  j?                  d       | j<                  jA                  tB        jD                  jF                         | j<                  jI                  | j0                         | j<                  jK                  t        j6                  jL                         | j<                  jN                  j%                  | jP                         | j<                  jS                         jT                  j%                  | jV                         tC        jX                  |       | _-        | jZ                  j]                  t        j6                  j^                         | jZ                  j`                  j%                  | jb                         | jZ                  jd                  j%                  | jf                         g }|D ]+  }d|vr|ji                  |jk                  dd      d          - t-        tm        |            }tC        jn                  |       | _8        | jp                  js                  tt        g|z          | jp                  jv                  j%                  | jf                         tC        jx                         }|j{                  dddd       |j}                  | jp                         |j}                  | jZ                         tC        j~                  |       }|j                  |       tC        j                         | _B        | j                  j]                  t        j6                  j^                         tC        j                  d	|       | _D        | j                  j                  j%                  | jP                         tC        j                         }|j}                  |       |j}                  | j<                         |j}                  | j                         tC        j~                  |       }|j                  |       tC        j                         }t               | _H        | j                  j                  t        j                  d
d
             tC        jn                  |       | _K        | j                  js                  t        ddf       | j                  jv                  j%                  | j                         tC        jn                  |       | _N        | j                  js                  t        gt-        t        j                  j                               z          | j                  jv                  j%                  | j                         tC        j~                  |       | _T        | j                  j                  d
       |j}                  | j                         |j}                  | j                         |j}                  | j                         |j}                  | j                         |j                  tC        j                  ddtB        j                  j                  tB        j                  j                               | j                  j                  |       tC        jx                         }|j{                  dddd       |j}                  |       |j}                  | j                         tC        j~                  |       }	|	j                  |       | j                  |	       tC        j                  t        j                  t        j6                  j                        | | jP                         | jZ                  j                          | j                         }
tB        j                  j                         }|j                  |j                         j                               }|j                  |      j                         }|
j                  |       | j                  |
       y )N)parenti   i@  zIconify BrowserT:   r   z	Copy Name   SpinBreathe)isuperr   __init__setMinimumSizesetWindowTitle_currentIcon_currentAnim_currentColoricopath	listIconsr   QTimer_filterTimersetSingleShotsetIntervalAUTO_SEARCH_TIMEOUTtimeoutconnect_updateFilterModelsetStringListsortedQSortFilterProxyModel_proxyModelsetSourceModelsetFilterCaseSensitivityQtCaseInsensitiveView	_listViewsetUniformItemSizessetViewModer   	QListViewIconModesetModelsetContextMenuPolicyCustomContextMenudoubleClicked_copyIconTextselectionModelcurrentChanged_iconChanged	QLineEdit	_lineEditsetAlignmentAlignCentertextChanged_triggerDelayedUpdatereturnPressed_triggerImmediateUpdateappendsplitset	QComboBox_collectionsComboaddItemsALL_COLLECTIONScurrentIndexChangedQHBoxLayoutsetContentsMargins	addWidgetQFrame	setLayoutQLabel	_iconNameQPushButton_copyButtonclickedQVBoxLayoutPixmapGeneratorLabel_previewImagesetFixedSizeQSize
_animComboNO_ANIM_animChanged_colorComboNO_COLORr   QColor
colorNames_colorChanged_previewFramesetFixedWidthaddSpacerItemQSpacerItemQSizePolicy	ExpandingsetCentralWidget	QShortcutQKeySequence
Key_ReturnsetFocusgeometryQApplicationdesktopscreenNumbercursorposscreenGeometrycenter
moveCentersetGeometry)selfr   	iconNamesmodelcollectionsiconNamelytsearchBarFrame	iconFramecentralFramegeorr   screencenterPoint	__class__s                 ^/mounts/lovelace/software/anaconda3/envs/py312/lib/python3.12/site-packages/iconify/browser.pyr   zBrowser.__init__   s   gt%V%4D#&-.  !HH&&(	"MM$/''-%%&9:!!))$*<*<=F9-.!779''.11&))2K2KLd**40""9#6#6#?#?@ 0 01++FII,G,GH$$,,T-?-?@%%'66>>	
 #,,T2##FII$9$9:""**4+E+EF$$,,T-I-IJ! 	:H("x~~c15a89	: S-.!*!4!4T!:''(9K(GH22::((	
 ##%q!Q*d,,-dnn%"))$/  %"))+##FII$9$9:$00dC  ((););<##%n%dnn%d&&'$$T*	C ##%13''S#(>?#--d3  '69!=>++33D4E4EF$..t4!!8*"()@)@)B"C#D 	E,,44T5G5GH&--d3((-d(()dnn%doo&d&&'!!1i++55%%//	
 	$$S)##%q!Q*i d(() ''-s#l+vyy334	
 	!mmo((002%%gnn&6&:&:&<=,,V4;;={#    c                     |j                  t        j                  j                        }|| _        | j                          | j                  j                  | j                         y N)datar   r.   DisplayRoler   _updatePixmapGeneratorrT   setText)rz   currentIndexpreviousIndexcurrentIcons       r   r=   zBrowser._iconChanged   sH    "''		(=(=>'##%t001r   c                    | j                   j                         }|t        k(  rd | _        nJ t	        t
        j                  |             | _        | j                  | j                  j                          | j                          y r   )	r]   currentTextr^   r   getattrr   animstartr   )rz   currentAnims     r   r_   zBrowser._animChanged   sf    oo113'! $D >+ > @D  ,!!'')##%r   c                     | j                   j                         }|t        k(  rd | _        nt	        j
                  |      | _        | j                          y r   )r`   r   ra   r   r   rb   r   )rz   currentColors     r   rd   zBrowser._colorChanged   sC    ''3358#!%D!&l!;D##%r   c                     | j                   d }n5t        j                  | j                   | j                  | j                        }| j
                  j                  |       y r   )r   r   PixmapGeneratorr   r   rZ   setPixmapGenerator)rz   pixmapGenerators     r   r   zBrowser._updatePixmapGenerator   sR    $"O!11!!4#5#5t7H7HO 	--o>r   c                     d}| j                   j                         }|t        k7  r|d|z  z  }| j                  j	                         }|r|d|z  z  }| j
                  j                  |       y)z{
        Update the string used for filtering in the proxy model with the
        current text from the line edit.
         z^%s:z.*%s.*$N)rJ   r   rL   r?   textr+   setFilterRegExp)rz   reStringgroup
searchTerms       r   r&   zBrowser._updateFilter   sk     &&224O#&H^^((*
	J..H((2r   c                 l    | j                   j                          | j                   j                          y)zY
        Reset the timer used for committing the search term to the proxy model.
        N)r    stopr   rz   s    r   rC   zBrowser._triggerDelayedUpdate   s(    
 	 !r   c                 X    | j                   j                          | j                          y)zt
        Stop the timer used for committing the search term and update the
        proxy model immediately.
        N)r    r   r&   r   s    r   rE   zBrowser._triggerImmediateUpdate   s"     	 r   c                     | j                   j                         }|syt        j                  j	                         j                         }|j                  |d   j                                y)zP
        Copy the name of the currently selected icon to the clipboard.
        Nr   )r1   selectedIndexesr   rq   instance	clipboardr   r   )rz   indexesr   s      r   r:   zBrowser._copyIconText   sR    
 ..002**335??A	'!*//+,r   r   )__name__
__module____qualname__r   r=   r_   rd   r   r&   rC   rE   r:   __classcell__r   s   @r   r   r      s2    ~@2	&&	?3$"
-r   r   c                   .     e Zd ZdZd fd	Z fdZ xZS )r0   zk
    A QListView that scales it's grid size to ensure the same number of
    columns are always drawn.
    c                 ~    t         t        |   |       | j                  t        j
                  j                         y r   )r   r0   r   setVerticalScrollBarPolicyr   r.   ScrollBarAlwaysOn)rz   r   r   s     r   r   zView.__init__   s*    dD"6*''		(C(CDr   c                 .   | j                         j                         dz
  }|t        z  }t        |dz        }| j	                  t        j                  ||             | j                  t        j                  ||             t        t        | +  |      S )z
        Re-implemented to re-calculate the grid size to provide scaling icons

        Parameters
        ----------
        event : QtCore.QEvent
           g?)viewportwidthVIEW_COLUMNSintsetGridSizer   r\   setIconSizer   r0   resizeEvent)rz   eventr   	tileWidth	iconWidthr   s        r   r   zView.resizeEvent   s|     %%'", L(		C(	i;<i;<T4,U33r   r   )r   r   r   __doc__r   r   r   r   s   @r   r0   r0      s    
E
4 4r   r0   c                   Z     e Zd Zd Zeej                  j                  f fd	       Z xZ	S )r'   c                 l    t         j                  j                  t         j                  j                  z  S r   )r   r.   ItemIsEnabledItemIsSelectable)rz   indexs     r   flagszModel.flags  s!    yy&&)C)CCCr   c                     |t         j                  j                  k(  r@| j                  |t         j                  j                        }t        j                  |      S t        t        |   ||      S )z
        Re-implemented to return the icon for the current index.

        Parameters
        ----------
        index : QtCore.QModelIndex
        role : int

        Returns
        -------
        Any
        )role)	r   r.   DecorationRoler   r   r   Iconr   r'   )rz   r   r   
iconStringr   s       r   r   z
Model.data  sV     699+++5vyy/D/DEJ88J''UD&ud33r   )
r   r   r   r   r	   r   r.   r   r   r   r   s   @r   r'   r'     s*    D %yy44 4 4r   r'   c                   0     e Zd Zd fd	Zd Z fdZ xZS )rY   c                 Z    t         t        |           d | _        | j	                  |       y r   )r   rY   r   _pixmapGeneratorr   )rz   r   r   s     r   r   zPixmapGeneratorLabel.__init__)  s'    "D24 $0r   c                 f   | j                   rA| j                   j                         }|r%|j                  j                  | j                         || _         | j                   rA| j                   j                         }|r%|j                  j                  | j                         | j	                          y r   )r   r   tick
disconnectupdater%   )rz   r   r   s      r   r   z'PixmapGeneratorLabel.setPixmapGenerator/  s      ((--/D		$$T[[1 /  ((--/D		!!$++.r   c                    t         t        |   |       | j                  y |j	                         }|j                         |j                         kD  r3t        j                  |j                         |j                               }n2t        j                  |j                         |j                               }| j                  j                  |      }t        j                  |       }|dz  }|j                         t        j                  |j                         |j                               z
  }|j                  ||       |j                          y )N   )r   rY   
paintEventr   rectr   heightr   r\   pixmapr   QPainterrw   QPoint
drawPixmapend)	rz   r   r   sizer   painterhalfSizepointr   s	           r   r   zPixmapGeneratorLabel.paintEvent?  s    "D4U;  (zz|::<$++-'<<t{{}=D<<

djjl;D&&--d3..&!8 
MM(..*HOO,=>?5&)r   r   )r   r   r   r   r   r   r   r   s   @r   rY   rY   '  s    1  r   rY   c                      t        j                  g       } t               }|j                          t	        j
                  | j                                y)zF
    Start the Iconify Browser and block until the process exits.
    N)r   rq   r   showsysexitexec_)appbrowsers     r   runr   W  s6    
 
 
 
$CiGLLNHHSYY[r   )r   r   typingr   r   r   iconifyr   
iconify.qtr   r   r   
kids.cacher	   r   r#   rL   ra   r^   QMainWindowr   r4   r0   QStringListModelr'   rS   rY   r    r   r   <module>r      s     * *  / /  
U-i## U-p49 4B4F## 46-9++ -`
r   