
    BPc                         d dl Z d dlZd dlmZ d dlmZ d dlmZ  edddd          Z ed	d
dd          Z	ddddddZ
 G d dej                  Zedk    r e                                             dS dS )    N)KeyDict)SvgDocumentElement)inkex_gettextleftrightcenter_x)lrmtopbottomcenter_y)tbr   tbbtlrrl)i  Z   r   ih     c                   H    e Zd ZdZ ed           Zd Zd Zd Zd Z	d Z
dS )	RestackzCChange the z-order of objects based on their position on the canvasc                      d S )N r       )/usr/share/inkscape/extensions/restack.py<lambda>zRestack.<lambda>(   s     r   c                    |                     d|                     d          | j                   |                     ddd           |                     dt          d	d
           |                     ddd           |                     ddd           |                     ddd           |                     ddd           d S )Nz--tabrestack)typedefaultz--directionr   zdirection to restack)r!   helpz--angleg        zarbitrary angle)r    r!   r"   z	--xanchorr	   zhorizontal point to comparez	--yanchorr   zvertical point to comparez--zsortrevzRestack mode based on Z-Orderz--nb_direction zDirection tab)add_argument
arg_methodrestack_positionalfloat)selfparss     r   add_argumentszRestack.add_arguments*   s    $//)44d>U 	 	
 	
 	
 	-<RSSS)%CTUUU+s9VWWW+s9TUUUu+J 	 	
 	
 	
 	*B_MMMMMr   c                 X   | j         j        s!t          j        t	          d                    d }| j         j                            t                    D ] }|} | j         j        t          |            !|| j         	                                }| j
                            |           d S )Nz!There is no selection to restack.)svg	selectioninkexAbortExtension_filterr   set_selectionlistget_current_layeroptionstabr)   
parentnodenodes      r   effectzRestack.effect7   s    x! 	O&q)L'M'MNNN 
H&--.@AA 	0 	0DJ"DH"DJJ///3355J$$$$$r   c                     t          | j        j                                        | j                  D ]}|                    |           dS )z Restack based on canvas position)keyT)sortedr-   r.   values_sortappendr8   s      r   r'   zRestack.restack_positionalF   sO     48-4466DJGGG 	$ 	$Dd####tr   c                    | j         j        | j         j        }}| j        j                                        }| j         j        }d| j         j        v r| j         j        }|                                	                    ||||          S )Ncustom)
r6   xanchoryanchorr-   r.   bounding_box	directionnb_directionangle
get_anchor)r)   r:   xyselboxrG   s         r   r@   zRestack._sortM   su    |#T\%91#0022L*	t|000*I  ""--aIvFFFr   c                 &   t          | j        j                                                  }| j        j        dk    r|                                 n$| j        j        dk    rt          j        |           ||D ]}|	                    |           dS )zRestack based on z-orderr#   randNT)
r4   r-   r.   rendering_orderr6   zsortreverserandomshufflerA   )r)   r9   objectsitems       r   restack_z_orderzRestack.restack_z_orderU   s    tx)99;;<<<&&OO\6))N7###! ( (!!$''''tr   N)__name__
__module____qualname____doc__staticmethodrestack_helpr+   r;   r'   r@   rW   r   r   r   r   r   %   s|        MM<--LN N N% % %  G G G
 
 
 
 
r   r   __main__)rS   r/   inkex.utilsr   r   inkex.localizationr   r1   XANYANCUSTOM_DIRECTIONEffectExtensionr   rX   runr   r   r   <module>rf      s   0         $ $ $ $ $ $ 1 1 1 1 1 1 gFz::;;gEz::;;4Dt$GG : : : : :e# : : :z zGIIMMOOOOO r   