
    cc-                     J    d dl Z d dlmZmZmZmZmZ ddlmZ  G d de      Z	y)    N)GtkGdkGLibPango
PangoCairo   )AbstractClassicToolc                        e Zd Zd Z fdZd Zd Zd Z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 Zd Zd Zd Zd Zd Zd Z xZS )ToolTextc                 T   t         |   dt        d      d|       d| _        d| _        | j                  d| j                         | j                  dd       | j                  dd       | j                  d	d
      | _	        | j                  dd      | _
        | j                  d| j                         | j                  d| j                         | j                  d| j                         t        j                         j!                  | j"                  dz         }|j%                  d      | _        |j%                  d      | _        | j(                  j+                  dd       | j(                  j-                         j/                  d| j0                         | j3                          y )NtextTextztool-text-symbolicFr   ztext-set-font	text-boldtext-italictext-backgroundzlast-text-backgroundtext-active-familyzlast-font-nameztext-cancelztext-previewztext-insertztool-text.uizinsertion-popoverentryd   2   changed)super__init____should_cancel_last_click_btnadd_tool_action_simple	_set_fontadd_tool_action_booleanload_tool_action_enum_background_id_font_fam_name
_on_cancel_force_refresh_on_insert_textr   Buildernew_from_resourceUI_PATH
get_object_popover_entryset_size_request
get_bufferconnect_preview_text_hide_entry)selfwindowkwargsbuilder	__class__s       3/usr/lib/python3/dist-packages/drawing/tool_text.pyr   zToolText.__init__   s\   '61V9&:FC$$ot~~>{E2}e4223D3IK$223G3CE$ mT__=nd.A.ABmT-A-ABKKM++DLL>,IJ'$$%89$-""7+$+++sB'++""9d.@.@A    c                 l   t        j                  d      }|j                  t         j                  j                         |j                  | j                         	 |j                         }t         j                  j                  k(  r|j                         j                         | _        t        j                  j                  | j                        }| j                   j#                  d      j%                  |       | j'                          |j)                          y # t        $ r
}Y d }~d }~ww xY w)NF)show_preview_entryr   )r   FontChooserDialog	set_levelFontChooserLevelFAMILYset_fontr!   run	ExceptionResponseTypeOKget_font_familyget_namer   Variant
new_stringr1   lookup_action	set_stater.   destroy)r0   argsdialogstatusex	font_gvars         r5   r   zToolText._set_font8   s      E:&3''..///$%%&
JJL6
 s"""//1::<4||&&t':':;9;;12<<YG.. 
 s   D   	D3.D3c                 \    | j                  d      | _        | j                  d      | _        y )Nr   r   )get_option_value
_is_italic_is_boldr0   rI   s     r5   _set_font_optionszToolText._set_font_optionsO   s&    ))-8$/''4$-r6   c                 0    | j                  d      | _        y )Nr   )rO   r    rR   s     r5   _set_background_stylezToolText._set_background_styleT   s    --.?@$r6   c                     t        d      S )NzText options)r   r0   s    r5   get_options_labelzToolText.get_options_labelW   s    	
>	r6   c                 R   | j                          | j                          | j                          | j                  dz   | j                  z   }| j
                  dk7  rJt        d      t        d      t        d      t        d      t        d      d| j
                     }|d|z   z  }|gS )	Nz - nonezNo backgroundShadowzThin outlinezThick outlinezRectangle background)rZ   shadowthin-outlinethick-outline	rectangle)rS   rU   r#   labelr!   r    r   )r0   label_optionsbg_labels      r5   get_editing_tipszToolText.get_editing_tipsZ   s     **u$t':'::-	F"okn%')* 
8 EH$$=
r6   c                 0    t         |           d| _        y )Nr   )r   on_tool_selectedr   )r0   r4   s    r5   re   zToolText.on_tool_selectedp   s    '$r6   c                     | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )NpasteT
select_allselection_cutselection_copy)set_action_sensitivityrW   s    r5   on_tool_unselectedzToolText.on_tool_unselectedt   sC    gt,lD1ot4.5r6   c                 >    | j                   r| j                          y y N)r   r"   )r0   preserve_selections     r5   give_back_controlzToolText.give_back_controlz   s    	?? r6   c                     | j                          | j                  | j                  dd       | j                  dd       | j	                  |       y )Nr   )select_flowbox_childset_common_valuesr   _open_popover_at_set_stringr0   strings     r5   force_text_toolzToolText.force_text_tool~   sD    --sC8S!6r6   c                 `    |d}| j                   j                         j                  |d       y )N )r*   r,   set_textrv   s     r5   ru   zToolText._set_string   s)    ^6++##FB/r6   c                     |j                   | _        d| _        | j                  | j                  ||       | j	                  |j
                  |j                         y )NT)buttonr   r   rs   rt   xy)r0   eventsurfaceevent_xevent_ys        r5   on_release_on_areazToolText.on_release_on_area   sF    $$--w@)r6   c                    t        j                         }||_        ||_        d|_        d|_        | j                  j                  |       | j                  j                  | j                                | j                  j                          | j                  j                          | j                          | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )Nr   rg   Frh   ri   rj   )r   	Rectangler   r   heightwidthr)   set_pointing_toset_relative_to	get_imagepopupr*   
grab_focusr.   rk   )r0   r   r   r_   s       r5   rt   zToolText._open_popover_at   s    mmo))+)+))/--	*-- 01--++ gu-lE2ou5.6r6   c                 8    | j                   j                          y rn   )r)   popdownrW   s    r5   r/   zToolText._hide_entry   s    --r6   c                     | j                  | j                  | j                  | j                         | j	                          y rn   )rs   r   x_pressy_pressr.   rR   s     r5   r#   zToolText._force_refresh   s.    --t||T\\Jr6   c                 8   | j                          | j                         r2| j                         }| j                  |       | j	                  d       | j                  dd       | j                  dd       | j                  dd       | j                  dd       y )Nrz   rg   Trh   ri   rj   )r/   _has_current_textbuild_operationapply_operationru   rk   r0   rI   	operations      r5   r$   zToolText._on_insert_text   s    	##%9	"Bgt,lD1ot4.5r6   c                     | j                   j                         }|j                  |j                         |j	                         d      | _        | j
                  dk(  r!| j                          | j                          yy)NFrz   T)r*   r,   get_textget_start_iterget_end_itertext_stringrestore_pixbufnon_destructive_show_modif)r0   bs     r5   r   zToolText._has_current_text   se    
kk!ZZ 0 0 2ANN4DeL$	""$

r6   c                 h    | j                         r"| j                         }| j                  |       y y rn   )r   r   do_tool_operationr   s      r5   r.   zToolText._preview_text   s/    	##%9)$ r6   c                 T    | j                          | j                  d       d| _        y )Nrz   F)r/   ru   r   rR   s     r5   r"   zToolText._on_cancel   s$    2$r6   c                    | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  d}|S )N)tool_idrgba1rgba2font_fam	is_italicis_bold	font_size	antialiasr   r   
backgroundr   )id
main_colorsecondary_colorr!   rP   rQ   
tool_width_use_antialiasr   r   r    r   )r0   r   s     r5   r   zToolText.build_operation   so    ggOO  ""mm##$$) 
r6   c           
         | j                  |      }|d   }|d   dz  }|d   }|d   }|d   }|d   }|}	|d   r|	d	z  }	|d
   r|	dz  }	|	dt        |      z   z  }	t        j                  |	      }
t	        j
                  |      }t        j                  |      }|j                  |
       |d   st        j                         }|j                  t        j                  j                         |j                  t        j                  j                         |j!                  t        j"                  j$                         t	        j&                  ||       |d   dk(  r2|j)                  d      }|}|D ]  }| j+                  ||||||      } n}|d   dk(  rNt-        t/        t1        |dz        d      d      } |j2                  |  | j5                  |||||z   ||z          n'|d   dk(  r |j2                  |  t/        t1        |dz        d      }t-        |d      }t7        | |      D ]M  }t7        | |      D ];  }t9        |      t9        |      z   |dz  k  s!| j5                  |||||z   ||z          = O n|d   dk(  r |j2                  |  t1        |dz        }t-        |d      }t7        | |      D ]M  }t7        | |      D ];  }t9        |      t9        |      z   |dz  k  s!| j5                  |||||z   ||z          = O  |j2                  |d     | j5                  |||||       | j;                          y )Nr   r      r   r   r   r   r   z Italicr   z Bold r   r   r_   
r\         r   r]   
   g      ?r^   r   )start_tool_operationstrr   FontDescriptionr   create_contextLayoutset_font_descriptioncairoFontOptionsset_antialias	AntialiasNONEset_hint_metricsHintMetricsOFFset_hint_style	HintStyleFULLcontext_set_font_optionssplit_op_bg_rectanglemaxminintset_source_rgba_show_text_at_coordsrangeabsr   )r0   r   cairo_contextr   r   entire_textbackground_colortext_xtext_yfont_description_stringfont	p_contextlayoutfont_optionslinesline_y	line_textdistdxdys                       r5   r   zToolText.do_tool_operation   sz   ++I6-z"($q()&!+w'S>&S>&${i'yg%S3y>11			6	7$''6)<<	"&d#	;	##%<eoo223  !2!2!6!67u334&&y,?
 |+T"56 Ey""=&(&&)EFE (*
c#il#Q'
+4 =  "23]FK*04-$H.0 =  "23
c)B,
$4
dA,4D5$ ?rTE4  ?B#b'TCZ'
v#Vb[&2+??? /1 =  "23
il
4
dA,4D5$ ?rTE4  ?B#b'TCZ'
v#Vb[&2+???  -7!34M6;;A6K !!#r6   c                     |j                  ||       |j                  |d       t        j                  ||       t        j                  ||       y)zUse a pango layout (pango_l) to show a line of text (text) on a cairo
		context (cairo_c) at given coordinates (text_x, text_y).r{   N)move_tor|   r   update_layoutshow_layout)r0   cairo_cpango_lr   r   r   s         r5   r   zToolText._show_text_at_coords'  sB     
//&&!	47G,'*r6   c                    |j                  dddd       | j                  |||||       |j                         \  }}|j                  }	|j	                  d|	       |j	                  |j
                  d       |j	                  dd|	z         |j                           |j                   |  |j                          |j                          ||	z   S )Ng        r   r{   )	r   r   get_pixel_extentsr   rel_line_tor   
close_pathfillstroke)
r0   contextr   c2r   r   r   ink_rectlogical_rectdelta_ys
             r5   r   zToolText._op_bg_rectangle/  s    	#sC-GVYG!335(L'	a!	l((!,	ag&	'2	,,.	..	'	r6   )__name__
__module____qualname____gtype_name__r   r   rS   rU   rX   rc   re   rl   rp   rx   ru   r   rt   r/   r#   r$   r   r.   r"   r   r   r   r   __classcell__)r4   s   @r5   r   r      s~    >.5
A,60*7$	6%
"H$T+r6   r   )
r   gi.repositoryr   r   r   r   r   abstract_classic_toolr	   r    r6   r5   <module>r      s"   $  ; ; 6i" ir6   