§
    ºv¦j¥  ã                  óÌ   — d Z ddlmZ ddlZddlmZ ddlZddlZddlmZm	Z	 dZ
dZdZdZdZdZd	Zed
z   ZdZdZdZdZdZdZdZ G d„ dej        ¦  «        Z G d„ d¦  «        ZdS )u  
Poe2VisualTool System Tray Manager (Windows Shell_NotifyIcon)
Thu nhá»� á»©ng dá»¥ng xuá»‘ng khay há»‡ thá»‘ng (System Tray) khÃ´ng chiáº¿m thanh tÃ¡c vá»¥.
TÃ­ch há»£p:
  - Khá»Ÿi táº¡o icon khay há»‡ thá»‘ng (Shell_NotifyIconW qua Win32 API / ctypes).
  - Báº¯t sá»± kiá»‡n click chuá»™t khÃ´i phá»¥c cá»­a sá»• chÃ­nh.
  - Há»— trá»£ cháº¡y ngáº§m hoÃ n háº£o khi ngÆ°á»�i dÃ¹ng Ä‘Ã³ng cá»­a sá»• chÃ­nh (Minimize to Tray).
100% Zero-Dependency (Thuáº§n Windows API, khÃ´ng báº¯t buá»™c pystray).
Báº£n quyá»�n 2026 Poe2VisualTool.
é    )ÚannotationsN)Úwintypes)ÚCallableÚOptionalé   é   é   i   ée   i  i  i  é   é@   i   c                  óô   — e Zd Zdej        fdej        fdej        fdej        fdej        fdej        fdej        dz  fd	ej        fd
ej        fdej        dz  fdej        fdej        dz  fdej        fgZ	dS )ÚNOTIFYICONDATAWÚcbSizeÚhWndÚuIDÚuFlagsÚuCallbackMessageÚhIconÚszTipé€   ÚdwStateÚdwStateMaskÚszInfoé   ÚuTimeoutOrVersionÚszInfoTitler   ÚdwInfoFlagsN)
Ú__name__Ú
__module__Ú__qualname__r   ÚDWORDÚHWNDÚUINTÚHICONÚWCHARÚ_fields_© ó    ú8C:\Projects\Poe2VisualTool\src\commercial\system_tray.pyr   r   +   s¦   € € € € € à	�8”>Ð"Ø	�”ÐØ	�”ÐØ	�8”=Ð!Ø	˜Xœ]Ð+Ø	�(”.Ð!Ø	�(”. 3Ñ&Ð'Ø	�H”NÐ#Ø	˜œÐ'Ø	�8”> CÑ'Ð(Ø	˜hœmÐ,Ø	˜œ¨Ñ+Ð,Ø	˜œÐ'ð€H€H€Hr(   r   c                  ó:   — e Zd ZdZ	 	 	 ddd	„Zdd„Zdd„Zdd„ZdS )ÚSystemTrayIconuX   
    Quáº£n lÃ½ biá»ƒu tÆ°á»£ng khay há»‡ thá»‘ng cho Poe2VisualTool trÃªn Windows.
    õ-   Poe2VisualTool â€” Path of Exile 2 Visual QoLNÚtooltipÚstrÚon_double_clickúOptional[Callable[[], None]]Úon_right_clickc                ój   — |d d…         | _         || _        || _        d | _        d | _        d| _        d S )Né   F)r-   r/   r1   Ú_nidÚ_hwndÚ_is_visible)Úselfr-   r/   r1   s       r)   Ú__init__zSystemTrayIcon.__init__B   s?   € ð ˜t ˜t”}ˆŒØ.ˆÔØ,ˆÔà/3ˆŒ	Ø$(ˆŒ
Ø ˆÔÐÐr(   ÚhwndÚintÚreturnÚboolc                ó‚  — t           j        dk    s|sdS || _        	 t          j        j                             dt          j        t          ¦  «        ¦  «        }t          ¦   «         }t          j        t          ¦  «        |_        t          j        |¦  «        |_        d|_        t           t"          z  t$          z  |_        t(          |_        ||_        | j        |_        t          j        j                             t6          t          j        |¦  «        ¦  «        }|r|| _        d| _        dS n# t>          $ r Y nw xY wdS )u=   Gáº¯n biá»ƒu tÆ°á»£ng khay vÃ o HWND cá»§a cá»­a sá»• chÃ­nh.ÚntFNr   T) ÚosÚnamer5   ÚctypesÚwindllÚuser32Ú	LoadIconWr   ÚLPCWSTRÚIDI_APPLICATIONr   Úsizeofr   r"   r   r   ÚNIF_MESSAGEÚNIF_ICONÚNIF_TIPr   ÚWM_TRAYICONr   r   r-   r   Úshell32ÚShell_NotifyIconWÚNIM_ADDÚbyrefr4   r6   Ú	Exception)r7   r9   Úh_iconÚnidÚrets        r)   Úattach_to_windowzSystemTrayIcon.attach_to_windowP   s  € åŒ7�dŠ?ˆ? $ˆ?Ø�5àˆŒ
ð	å”]Ô)×3Ò3°D½(Ô:JÍ?Ñ:[Ô:[Ñ\Ô\ˆFå!Ñ#Ô#ˆCÝœ¥Ñ7Ô7ˆCŒJÝ”} TÑ*Ô*ˆCŒHØˆCŒGÝ$¥xÑ/µ'Ñ9ˆCŒJÝ#.ˆCÔ ØˆCŒIØœˆCŒIå”-Ô'×9Ò9½'Å6Ä<ÐPSÑCTÔCTÑUÔUˆCØð Ø�”	Ø#'�Ô Ø�tðøõ ð 	ð 	ð 	ØˆDð	øøøàˆus   �DD/ Ä/
D<Ä;D<ÚNonec                óì   — | j         �j| j        re	 t          j        j                             t          t          j        | j         ¦  «        ¦  «         n# t          $ r Y nw xY wd| _        d| _         dS dS dS )u2   Gá»¡ biá»ƒu tÆ°á»£ng khay khi thoÃ¡t á»©ng dá»¥ng.NF)	r4   r6   rA   rB   rL   rM   Ú
NIM_DELETErO   rP   )r7   s    r)   ÚremovezSystemTrayIcon.removem   s„   € àŒ9Ð  TÔ%5Ð ðÝ”Ô%×7Ò7½
ÅFÄLÐQUÔQZÑD[ÔD[Ñ\Ô\Ð\Ð\øÝð ð ð Ø�ðøøøà$ˆDÔØˆDŒIˆIˆIð !Ð Ð Ð s   �AA Á
AÁAÚtextc                óø   — | j         �p| j        rk	 |dd…         | j         _        t          j        j                             t          t          j        | j         ¦  «        ¦  «         dS # t          $ r Y dS w xY wdS dS )u?   Cáº­p nháº­t ná»™i dung hiá»ƒn thá»‹ khi rÃª chuá»™t vÃ o khay.Nr3   )
r4   r6   r   rA   rB   rL   rM   Ú
NIM_MODIFYrO   rP   )r7   rY   s     r)   Úupdate_tooltipzSystemTrayIcon.update_tooltipw   s‡   € àŒ9Ð  TÔ%5Ð ðØ"& t¨ t¤*�”	”Ý”Ô%×7Ò7½
ÅFÄLÐQUÔQZÑD[ÔD[Ñ\Ô\Ð\Ð\Ð\øÝð ð ð Ø��ðøøøð	 !Ð Ð Ð s   �AA' Á'
A5Á4A5)r,   NN)r-   r.   r/   r0   r1   r0   )r9   r:   r;   r<   )r;   rU   )rY   r.   r;   rU   )r   r   r    Ú__doc__r8   rT   rX   r\   r'   r(   r)   r+   r+   =   s   € € € € € ðð ð GØ8<Ø7;ð	!ð !ð !ð !ð !ðð ð ð ð:ð ð ð ðð ð ð ð ð r(   r+   )r]   Ú
__future__r   rA   r   r?   Ú	threadingÚtypingr   r   rN   r[   rW   rH   rI   rJ   ÚWM_USERrK   ÚWM_LBUTTONDBLCLKÚWM_LBUTTONUPÚWM_RBUTTONUPÚ
IMAGE_ICONÚLR_LOADFROMFILEÚLR_DEFAULTSIZErF   Ú	Structurer   r+   r'   r(   r)   ú<module>ri      s&  ðð	ð 	ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ð €Ø€
Ø€
à€Ø€Ø
€à
€Ø˜‰m€àÐ Ø€Ø€à€
Ø€Ø€à€ðð ð ð ð �fÔ&ñ ô ð ð$Að Að Að Að Añ Aô Að Að Að Ar(   