
    cc                     .    d dl Z ddlmZ  G d de      Zy)    N   )AbstractSelectionToolc                   V     e Zd Zd Z fdZ fdZ fdZd Zd Zd Z	d Z
d	dZ xZS )
ToolFreeSelectc                     t         |   dt        d      d|       d| _        d| _        d| _        | j                  d| j                         | j                  dd       y )Nfree_selectzFree selectionztool-select-free-symbolic
   g        selection_closeF)	super__init___closing_precision	closing_x	closing_yadd_tool_action_simple_force_close_shapeset_action_sensitivity)selfwindowkwargs	__class__s      5/usr/lib/python3/dist-packages/drawing/select_free.pyr   zToolFreeSelect.__init__   s^     '=!$4"57RTZ[$$.$./1H1HI/7    c                 F    t         |           | j                  dd       y )Nr
   F)r   on_tool_unselectedr   )r   argsr   s     r   r   z!ToolFreeSelect.on_tool_unselected"   s    '/7r   c                     t         |          }| j                         j                         }|<| j	                         s,| j
                  dz   t        d      z   }|j                  |       |S )Nz - z-Click on the shape's first point to close it.)r   get_editing_tipsget_selectionget_future_pathselection_is_activelabelr   append)r   tipsfuture_pathlabel_instructionr   s       r   r   zToolFreeSelect.get_editing_tips&   sh    		!	#$""$446+T%=%=%?zzE)FGH;; !	+r   c                 L    | j                  ||       | j                  dd       y )Nr
   T)_draw_shaper   )r   event_xevent_ys      r   press_definezToolFreeSelect.press_define1   s#    7G$/6r   c                 *    | j                  |||       y N)r(   )r   r)   r*   renders       r   motion_definezToolFreeSelect.motion_define5   s    7GV,r   c                     | j                  ||      rK| j                          d| _        | j                         }| j	                  |       | j                  dd       y y )Nz	op-definer
   F)r(   restore_pixbufoperation_typebuild_operationapply_operationr   )r   surfacer)   r*   	operations        r   release_definezToolFreeSelect.release_define8   sV    	gw'$4##%9	"0%8	r   c                 R    | j                  d | j                  | j                         y r-   )r7   r   r   )r   r   s     r   r   z!ToolFreeSelect._force_close_shapeD   s    dDNNDNN;r   c                    | j                         }|j                  dddd       | j                         }|j                  d|z  d|z  g       |j	                  |       | j                         j                         @|| _        || _        |j                  ||       | j                  |j                                yt        || j                        t        || j                        z
  }t        || j                        t        || j                        z
  }|j                  | j                         j                                || j                  k  rO|| j                  k  r@|j!                          |j#                          | j                  |j                                y|j%                  ||       |j#                          | j                  |j                                |r| j'                          y)zqThis method is specific to the 'free selection' mode. It returns a
		boolean, true if the shape should be closed.g      ?   FT)get_contextset_source_rgbaget_overlay_thicknessset_dashset_line_widthr   r    r   r   move_to_pre_load_path	copy_pathmaxminappend_pathr   
close_pathstroke_preserveline_tonon_destructive_show_modif)r   r)   r*   r.   cairo_context	thicknessdelta_xdelta_ys           r   r(   zToolFreeSelect._draw_shapeG   s    ""$-S#s3((*)!i-Y78y)	))+34>4>'*}..01
(3w+GG'(3w+GG'D..0@@BC&&&Wt7M7M-M  "}..01
'*  "}..01##%
r   )T)__name__
__module____qualname____gtype_name__r   r   r   r+   r/   r7   r   r(   __classcell__)r   s   @r   r   r      s0    "887-
<r   r   )cairoabstract_selectr   r    r   r   <module>rV      s   $  2N* Nr   