
    c#                         d dl Z d dlmZmZmZ d dl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d Zedk    r e             dS dS )    N)QtCoreQtGui	QtWidgets   i  Allc                   L     e Zd ZdZ fdZdefdZd Zd Zd Z	d Z
d	 Z xZS )
IconBrowserz
    A small browser window that allows the user to search through all icons from
    the available version of QtAwesome.  You can also copy the name and python
    code for the currently selected icon.
    c                 \   t                                                       |                     dd           |                     d           t	          j                     t          j        d         j        }g }|                                D ]$\  }}|D ]}|	                    |d|           %t          j        |           | _        | j                            d           | j                            t                     | j        j                            | j                   t'                      }|                    t+          |                     t          j                    | _        | j                            |           | j                            t          j        j                   t9          |           | _        | j                            d           | j                            t@          j!        j"                   | j        #                    | j                   | j        $                    t          j        j%                   | j        j&                            | j'                   | j        (                                j)                            | j*                   tA          j+        |           | _,        | j,        -                    t          j        j.                   | j,        j/                            | j0                   | j,        j1                            | j2                   tA          j3        |           | _4        | j4        5                    d           | j4        j6                            | j2                   | j4        7                    tp          gt+          |9                                          z              tA          j:                    }|;                    dddd           |<                    | j4                   |<                    | j,                   tA          j3        |           | _=        | j=        7                    t          j>        j?        t          j>        j@        g           | j=        jA                            | jB                   |<                    | j=                   tA          jC        |           }|D                    |           tA          j+        |           | _E        | jE        -                    t          j        j.                   | jE        F                    d           tA          jG        d	|           | _H        | jH        jI                            | j'                   tA          jJ                    }|<                    |           |<                    | j                   |<                    | jE                   |<                    | jH                   tA          jC        |           }	|	D                    |           | K                    |	           | L                    | j4        | j,                   | L                    | j,        | j=                   | L                    | j=        | j                   | L                    | j        | jE                   | L                    | jE        | jH                   | L                    | jH        | j4                   tA          jM        t          jO        t          j        jP                  | | j'                   tA          jM        t          jO        d
          | | j,        jQ                   | j,        Q                                 | R                                }
	 t          jS        T                    t          jU        V                                          }|R                                W                                }n# t          $ r t@          jY        Z                                }|[                    |\                                V                                          }|]                    |          W                                }Y nw xY w|
^                    |           | _                    |
           d S )Ni  i,  zQtAwesome Icon Browsericonic.TK   r   z	Copy NamezCtrl+F)`super__init__setMinimumSizesetWindowTitle	qtawesome	_instance	_resourcecharmapitemsappendr   QTimer_filterTimersetSingleShotsetIntervalAUTO_SEARCH_TIMEOUTtimeoutconnect_updateFilter	IconModelsetStringListsortedQSortFilterProxyModel_proxyModelsetSourceModelsetFilterCaseSensitivityQtCaseInsensitiveIconListView	_listViewsetUniformItemSizessetViewModer   	QListViewIconModesetModelsetContextMenuPolicyCustomContextMenudoubleClicked_copyIconTextselectionModelselectionChanged_updateNameField	QLineEdit	_lineEditsetAlignmentAlignCentertextChanged_triggerDelayedUpdatereturnPressed_triggerImmediateUpdate	QComboBox	_comboBoxsetMinimumWidthcurrentIndexChangedaddItemsALL_COLLECTIONSkeysQHBoxLayoutsetContentsMargins	addWidget_combo_stylestylesDEFAULT_DARK_PALETTEDEFAULT_LIGHT_PALETTEcurrentTextChanged_updateStyleQFrame	setLayout
_nameFieldsetReadOnlyQPushButton_copyButtonclickedQVBoxLayoutsetCentralWidgetsetTabOrder	QShortcutr   QKeySequence
Key_ReturnsetFocusgeometryQGuiApplicationscreenAtQCursorposcenterAttributeErrorQApplicationdesktopscreenNumbercursorscreenGeometry
moveCentersetGeometry)selffontMaps	iconNamesfontCollectionfontDataiconNamemodellytsearchBarFrameframegeoscreencenterPointre   	__class__s                 6lib/python3.11/site-packages/qtawesome/icon_browser.pyr   zIconBrowser.__init__   s'   C%%%4555&x08	(0(8(8 	G 	G$NH$ G G  NNNHH!EFFFFG #M$//''---%%&9:::!))$*<===F9--...!799''...11&)2KLLL%d++**4000""9#6#?@@@ 0111++FI,GHHH$,,T-?@@@%%''8@@AVWWW",T22##FI$9:::"**4+EFFF$,,T-IJJJ",T22&&r****2243OPPP 1F8==??4K4K KLLL#%%q!Q***dn%%%dn%%%%/55""12$4 	5 	5 	5 	,44T5FGGGd'(((")$//  %%%#-d33$$VY%:;;;##D)))$0dCC (();<<<#%%n%%%dn%%%do&&&d&''' &&e$$$888):;;;*DN;;;999$*:;;;)4>:::vy344	
 	
 	

 	x((N#	
 	
 	
 	!!!mmoo
	B*33EM4E4E4G4GHHF //++2244KK 	B 	B 	B,4466G))'..*:*:*>*>*@*@AAF!0088??AAKKK	B
 	{###s   A!_4 4Ba?>a?textc                    t           j                                        }|t          j        j        k    r)t          j                     t          j        |           d S t          j                     t          j        |           d S N)	r   rd   instancer   rJ   rK   reset_cachedarklight)rk   rz   _apps      ry   rN   zIconBrowser._updateStyle   ss    %..009#88 	"!###N4     !###OD!!!!!    c                 4   d}| j                                         }|t          k    r|d|z  z  }| j                                        }|r|d|z  z  }	 | j                            |           dS # t          $ r | j                            |           Y dS w xY w)z{
        Update the string used for filtering in the proxy model with the
        current text from the line edit.
         z^%s\.z.*%s.*$N)	r@   currentTextrD   r8   rz   r$   setFilterRegularExpressionrc   setFilterRegExp)rk   reStringgroup
searchTerms       ry   r   zIconBrowser._updateFilter   s    
 **,,O# 	)5((H^((**
 	/	J..H
	777AAAAA 	7 	7 	7,,X666666	7s   A/ /$BBc                 j    | j                                          | j                                          dS )zY
        Reset the timer used for committing the search term to the proxy model.
        N)r   stopstartrk   s    ry   r<   z!IconBrowser._triggerDelayedUpdate   s4     	   !!!!!r   c                 `    | j                                          |                                  dS )zt
        Stop the timer used for committing the search term and update the
        proxy model immediately.
        N)r   r   r   r   s    ry   r>   z#IconBrowser._triggerImmediateUpdate   s1    
 	   r   c                     | j                                         }|sdS t          j                                                                        }|                    |d                                                    dS )zP
        Copy the name of the currently selected icon to the clipboard.
        Nr   )r*   selectedIndexesr   rd   r}   	clipboardsetTextdata)rk   indexesr   s      ry   r3   zIconBrowser._copyIconText   sl     .0022 	F*3355??AA	'!*//++,,,,,r   c                     | j                                         }|s| j                            d           dS | j                            |d                                                    dS )zJ
        Update field to the name of the currently selected icon.
        r   r   N)r*   r   rQ   r   r   )rk   r   s     ry   r6   zIconBrowser._updateNameField   se     .0022 	7O##B'''''O##GAJOO$5$566666r   )__name__
__module____qualname____doc__r   strrN   r   r<   r>   r3   r6   __classcell__rx   s   @ry   r	   r	      s         m m m m m^" " " " "7 7 7." " "  	- 	- 	-7 7 7 7 7 7 7r   r	   c                   .     e Zd ZdZd fd	Z fdZ xZS )r)   zk
    A QListView that scales it's grid size to ensure the same number of
    columns are always drawn.
    Nc                     t                                          |           |                     t          j        j                   d S r|   )r   r   setVerticalScrollBarPolicyr   r'   ScrollBarAlwaysOn)rk   parentrx   s     ry   r   zIconListView.__init__   s:       ''	(CDDDDDr   c                    |                                                                  dz
  }|t          z  }t          |dz            }t          |          }|                     t          j        ||                     |                     t          j        ||                     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   QSizesetIconSizer   resizeEvent)rk   eventr   	tileWidth	iconWidthrx   s        ry   r   zIconListView.resizeEvent   s     %%''", L(		C((		NN	i;;<<<i;;<<<ww""5)))r   r|   )r   r   r   r   r   r   r   r   s   @ry   r)   r)      sf         
E E E E E E* * * * * * * * *r   r)   c                   .     e Zd Z fdZd Z fdZ xZS )r    c                 H    t                                                       d S r|   )r   r   )rk   rx   s    ry   r   zIconModel.__init__   s    r   c                 H    t           j        j        t           j        j        z  S r|   )r   r'   ItemIsEnabledItemIsSelectable)rk   indexs     ry   flagszIconModel.flags   s    y&)CCCr   c                     |t           j        j        k    r:|                     |t           j        j                  }t          j        |          S 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   DisplayRoler   iconr   )rk   r   r   
iconStringrx   s       ry   r   zIconModel.data   sY     69++ 	.5vy/DEEJ>*---ww||E4(((r   )r   r   r   r   r   r   r   r   s   @ry   r    r       sc            D D D) ) ) ) ) ) ) ) )r   r    c                      t          j        g           } t          j        |            t	                      }|                                 t          j        |                                            dS )zB
    Start the IconBrowser and block until the process exits.
    N)	r   rd   r   r   r	   showsysexitexec_)appbrowsers     ry   runr     sX     
 
$
$CN3mmGLLNNNHSYY[[r   __main__)r   qtpyr   r   r   r   r   r   rD   QMainWindowr	   r-   r)   QStringListModelr    r   r    r   ry   <module>r      s   



 ) ) ) ) ) ) ) ) ) )    
  x7 x7 x7 x7 x7)' x7 x7 x7v* * * * *9& * * *B) ) ) ) )' ) ) )6
 
 
 z 
CEEEEE
 
r   