
    cc                      J    d dl mZ ddlmZ ddlmZ ddlmZ  G d de      Zy)	    )Gdk   )AbstractCanvasTool)OptionsBarSkew)!utilities_show_handles_on_contextc                        e Zd Zd Z fdZd Zd Z fdZ fdZd Z	 fdZ
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Z xZS )ToolSkewc                     t         |   dt        d      d|       d| _        d| _        | j                  d| j                         | j                  dd       y )NskewSkewztool-skew-symbolicr   zskew-existscrop-expandinitial)super__init____x_yadd_tool_action_simpleselect_flowbox_childadd_tool_action_enum)selfwindow	__class__s     3/usr/lib/python3/dist-packages/drawing/tool_skew.pyr   zToolSkew.__init__   sQ     '61V9&:FC$'$'mT-F-FGM95    c                 r    d| _         | j                  j                  j                  | j                   |        y )Nr   )pane_idr   options_managertry_add_bottom_paner   s    r   try_build_panezToolSkew.try_build_pane$   s'    $,++11$,,Er   c                     t               }|j                  | _        |j                  | _        | j                  j                  d| j                         | j                  j                  d| j                         |S )Nzvalue-changed)r   
yx_spinbtn
xy_spinbtnconnecton_coord_changed)r   bars     r   build_bottom_panezToolSkew.build_bottom_pane(   sY    #NN$/NN$////4+@+@A///4+@+@A	*r   c                 :    | j                   ry t        | 	         S N)apply_to_selectionr   get_options_modelr   r   s    r   r,   zToolSkew.get_options_model0   s    	

'
#
%%r   c                 N    | j                   rt        | 	         S t        d      S )NzSkewing options)r+   r   get_options_labelr   r-   s    r   r/   zToolSkew.get_options_label6   s&    	
'
#
%%

r   c                 $   t        d      }d }| j                  rt        d      }d }nOt        d      }| j                  dz   t        d      z   }| j                         j	                         st        d      }||||g}t        t        d |            S )NzAThe directions of the deformation are hinted by the mouse pointerzSkewing the selectionzSkewing the canvasz - z&Don't forget to confirm the operation!zIPress <Alt>, <Shift>, or both, to quickly change the 'expand with' option)r   r+   label	get_imageget_mouse_is_pressedlistfilter)r   label_directionlabel_modifierslabel_actionlabel_confirm	full_lists         r   get_editing_tipszToolSkew.get_editing_tips<   s    YZ//	+,<=()<::%FGH=
..

/
/
1 D EO _m_M)	fT9%	&&r   c                 |    t         |           | j                  d| j                          | j	                          y )Nr   )r   on_tool_selectedset_action_sensitivityr+   _reset_values)r   argsr   s     r   r=   zToolSkew.on_tool_selectedN   s3    'm1H1H-HIr   c                 6    | j                   j                         S r*   )r#   get_value_as_intr    s    r   get_yxzToolSkew.get_yxU       		)	)	++r   c                 6    | j                   j                         S r*   )r$   rB   r    s    r   get_xyzToolSkew.get_xyX   rD   r   c                 b   | j                   dk(  rd| _        y | j                   dk(  s| j                   dk(  rd| _        y | j                   dk(  s| j                   dk(  rd| _        y | j                   d	k(  s| j                   d
k(  rd| _        y | j                   dk(  s| j                   dk(  rd| _        y y )N znot-allowednwseznwse-resizeneswznesw-resizensz	ew-resizeewz	ns-resize)_directionscursor_namer    s    r   _set_cursor_namezToolSkew._set_cursor_name[   s    	#4		!1!1T!9#444#3#3t#;#43$"2"2c"9!43$"2"2c"9!4 #:r   c                     | j                   r | j                         }|j                         S | j                         }|j                         S r*   )r+   get_selection_pixbufget_main_pixbuf	get_widthr   source_pixbufs     r   
_get_widthzToolSkew._get_widthh   sI    	,,.= 
	 	 	"" '')=		 	 	""r   c                     | j                   r | j                         }|j                         S | j                         }|j                         S r*   )r+   rU   rV   
get_heightrX   s     r   _get_heightzToolSkew._get_heighto   sI    	,,.= 
	!	!	## '')=		!	!	##r   c                 $    | j                          y r*   )build_and_do_opr   r@   s     r   r&   zToolSkew.on_coord_changedv   s    r   c                     | j                          d| _        d| _        | j                  j	                  d       | j
                  j	                  d       | j                          y )Nr   )_update_expansion_rgba_yx_xyr#   	set_valuer$   r_   r`   s     r   r?   zToolSkew._reset_valuesy   sL    $($(//A//Ar   c                 P    | j                  |j                  |j                         y r*   )set_directional_cursorxy)r   eventsurfaces      r   on_unclicked_motion_on_areaz$ToolSkew.on_unclicked_motion_on_area   s    egguww/r   c                    || _         || _        | j                         | _        | j	                         | _        | j                  |j                         | j                  |j                         d| j                  v r+d| j                  v r| j                  d|j                         y d| j                  v r| j                  d       y d| j                  v r| j                  d       y y )NSHIFTALT	secondaryalphar   )x_pressy_pressrC   rc   rF   rd   rb   buttonupdate_modifier_statestate_modifier_keys_force_expansion_rgbar   rj   rk   event_xevent_ys        r   on_press_on_areazToolSkew.on_press_on_area   s    $,$,[[]$([[]$( ell+U[[)###1D1D(Dk5<<8$%%%g&###i( $r   c                 8   | j                   dk(  s|sy || j                  z
  }|| j                  z
  }| j                  }| j                  }	d| j                   v r|	d|z  | j                         z  z  }	d| j                   v r|	d|z  | j                         z  z  }	d| j                   v r|d|z  | j                         z  z  }d| j                   v r|d|z  | j                         z  z  }| j                  j                  |       | j                  j                  |	       y )NrH   rM   d   rN   rP   rO   )
rQ   rr   rs   rc   rd   rZ   r]   r#   re   r$   )
r   rj   rk   rz   r{   renderdelta_xdelta_yyxxys
             r   on_motion_on_areazToolSkew.on_motion_on_area   s   	6	dll"'dll"'xx"xx"Dwt(	((2Dwt(	((2Dwt'')	))2Dwt'')	))2//B//Br   c                 L    | j                  ||||       | j                          y r*   )r   r_   ry   s        r   on_release_on_areazToolSkew.on_release_on_area   s"    ':r   c                 <   d}d}t        | j                               | j                         | j                         z  z  }t        | j	                               | j                         | j                         z  z  }|dz   dz  }|dz   dz  }|| j                         |z  z   }	|| j                         |z  z   }
| j                         j                  ||	||
| j                  d      \  }}	}}
| j                  |||       | j                         }t        |||	||
|       y )Nr   r~   F)absrF   r]   rZ   rC   r2   get_corrected_coordsr+   _draw_temp_pixbufget_overlay_thicknessr   )r   areacairo_contextx1y1	scaled_xy	scaled_yxp_xyp_yxx2y2	thicknesss               r   on_draw_abovezToolSkew.on_draw_above   s   ""$++- D$4$4$6$//:K$KL)$++- DOO$59I9I9K$KL)
c/S	 $
c/S	 $	DOO$$"	D%%">>#88RR+/+B+BEK."b"bB/((*)#M2r2r9Mr   c           	          | j                   | j                  ddd| j                  j                         dz  | j                  j                         dz  | j
                  d}|S )NTr   r~   )tool_idis_selection
is_previewlocal_dxlocal_dyr   r   rgba)idr+   r#   rB   r$   _expansion_rgba)r   	operations     r   build_operationzToolSkew.build_operation   s]    gg**		)	)	+C	/		)	)	+C	/	) 
r   c                    | j                  |       |d   r| j                         }d}n| j                         }d}t        j                  |dd       }|j                  | j                         | j                                |d   }d}|dk  rt        d|z  |j                         z        }|d   }d}|dk  rt        d|z  |j                         z        }d	||d	||g}	| j                  ||	|      }
t        j                  |
dd|
j                         |
j                               }| j                         j                  |       | j                  |       y )
Nr   FTr   r   g        r   g      ?)start_tool_operationrU   rV   r    cairo_surface_create_from_pixbufset_device_scalescale_factorintr\   rW   get_deformed_surfacepixbuf_get_from_surfacer2   set_temp_pixbufcommon_end_operation)r   r   rY   prefillsource_surfacer   x0r   y0coefsnew_surface
new_pixbufs               r   do_tool_operationzToolSkew.do_tool_operation   sM   I&~,,.=7'')=777q$O.!!$"3"3"5t7H7H7JK"
"!VBGn//1122"
"!VBGn..0012BR
$%)).%I+**;1#--/1G1G1IK*.."":.I&r   )T)__name__
__module____qualname____gtype_name__r   r!   r(   r,   r/   r;   r=   rC   rF   rS   rZ   r]   r&   r?   rl   r|   r   r   r   r   r   __classcell__)r   s   @r   r	   r	      ss    6F&'$,,"#$0)" *N$'r   r	   N)	gi.repositoryr   abstract_transform_toolr   optionsbar_skewr   utilities_overlayr   r	    r   r   <module>r      s"   $  7 + @S'! S'r   