
    cc                     J    d dl Z d dlmZmZmZ  G d dej
                        Zy)    N)GtkGdk	GdkPixbufc                   Z     e Zd Zd Z fdZd Zd Zd ZddZd Z	d Z
d Zd	 Zd
 Z xZS )	DrMinimapc                    t        |   di | || _        | j                  j                  j	                  d      | _        t        j                  j                  t        j                  j                  dddd      | _        t        j                  t        j                  j                  dd      | _        t"        j$                  j'                  d      }|j)                  d      }|j)                  d      | _        | j*                  j-                  d	t"        j.                  j0                  d        | j*                  j3                  d
| j4                         |j)                  d      | _        | j6                  j9                  dd       | j6                  j;                  t<        j>                  j@                  t<        j>                  jB                  z  t<        j>                  jD                  z         | j6                  j3                  d| jF                         | j6                  j3                  d| jH                         | j6                  j3                  d| jJ                         | j6                  j3                  d| jJ                         | jM                  |       | j3                  d| jN                         | jQ                  |       y )Nzpreview-sizeT   i,     z+/com/github/maoschanz/drawing/ui/minimap.uiminimap_box_zoom_scaleg      Y@zvalue-changed_minimap_area   drawzbutton-press-eventzmotion-notify-eventzbutton-release-eventclosed ))super__init___window	gsettingsget_int_preview_sizer   Pixbufnew
ColorspaceRGBmini_pixbufcairoImageSurfaceFormatARGB32_mini_surfacer   Buildernew_from_resource
get_objectr   add_markPositionTypeTOPconnect_update_zoom_levelr   set_size
add_eventsr   	EventMaskBUTTON_PRESS_MASKBUTTON_MOTION_MASKBUTTON_RELEASE_MASK_on_mm_draw_on_mm_press_on_mm_motionadd_on_popover_dismissedset_relative_to)selfwindowminimap_btnkwargsbuilderbox	__class__s         1/usr/lib/python3/dist-packages/drawing/minimap.pyr   zDrMinimap.__init__	   s   'V$,||--55nE$%%)))*>*>*B*BD!SRUV$))%,,*=*=q!D$KK))IK'=)#''6$E3#3#3#7#7>?D,C,CD))/:$c3' ? ? # @ @!A # A A!B C VT%5%56143D3DE2D4F4FG3T5G5GH((3-,,x334{#    c                 @    | j                   j                  |dz         y Nd   )r   	set_value)r6   values     r=   update_zoom_scalezDrMinimap.update_zoom_scale*   s    US[)r>   c                     t        d      t        t        |            z  }| j                  j                  j                  |       | j                          y )Nz%s%%)_strintr   options_managerset_minimap_labelupdate_overlay)r6   	int_value
zoom_labels      r=   set_zoom_labelzDrMinimap.set_zoom_label-   s?     y3s9~..*,,00<r>   c                 :   | j                   j                         }|j                  | j                        | _        | j                  j                         }| j                  j                         }| j                  j                  ||       | j                  d       y)zUpdate the minimap's content.TN)
r   get_active_imagegenerate_mini_pixbufr   r   	get_width
get_heightr   set_size_requestrK   )r6   image	pix_width
pix_heights       r=   update_contentzDrMinimap.update_content4   sy    
,,
'
'
)%//0B0BC$((*)**,*%%i<dr>   c                    | j                         s|sy| j                  j                         }t        j                  | j
                  dd      | _        |j                         r`|j                  | j
                  j                               }t        |j                  |z        }t        |j                  |z        }|j                         \  }}t        ||z        dz   }t        ||z        dz   }	t        j                  | j                        }
|
j!                          |
j#                  d       |
j%                  t        j&                  j(                         |
j+                  t        j,                  j.                         |
j1                  ||       |
j3                  ||	|z          |
j3                  ||z   |	|z          |
j3                  ||z   |       |
j3                  ||       | j
                  j                         }| j
                  j5                         }|
j1                  dd       |
j3                  |d       |
j3                  |dz   |dz          |
j3                  d|       |
j7                          |
j9                  dddd       |
j;                          |
j9                  dddd       |
j=                          | j>                  jA                          y)	zXUpdate the overlay on the minimap, based on the zoom level and the
		scroll coordinates.Nr         g333333?g?g      ?g      ?)!get_visibler   rP   r    cairo_surface_create_from_pixbufr   r!   get_minimap_need_overlayget_minimap_ratiorR   rH   scroll_xscroll_yget_visible_sizer   Contextnew_pathset_line_widthset_antialias	AntialiasNONEset_line_capLineCapSQUAREmove_toline_torS   
close_pathset_source_rgbafill_preservestroker   
queue_draw)r6   force_updaterU   
size_ratiomini_xmini_yvisible_widthvisible_height
mini_widthmini_heightmini_contextrV   rW   s                r=   rK   zDrMinimap.update_overlay>   sn    
			L	
,,
'
'
)%;;040@0@!TK$
##%''(8(8(B(B(DE:+,6+,6#(#9#9#; =.MJ./!3:^j01A5; -- 2 23<q!eoo223U]]112 'f 45
V+[6-AB
V+V4' ))+9  ++-:1	1%	AzA~6:& S#s3 S#s3!r>   c                     | j                   j                         }| j                  j                         }|j                  |dz  k7  r|dz  |_        |j                          | j                  |j                  dz         y r@   )r   	get_valuer   rP   
zoom_levelupdaterN   )r6   args
zoom_valuerU   s       r=   r)   zDrMinimap._update_zoom_levelr   sj    ))+*
,,
'
'
)%
c)) 3&5<<>e&&,-r>   c                 R    	 | j                         j                  d       y#  Y yxY w)zBCallback of the 'closed' signal, updating the state of the action.FN)get_relative_to
set_active)r6   r   s     r=   r4   zDrMinimap._on_popover_dismissedz   s(    $$U+s   " &c                 ^    |j                  | j                  dd       |j                          y)zBCallback of the 'draw' signal, painting the area with the surface.r   N)set_source_surfacer!   paint)r6   areacairo_contexts      r=   r0   zDrMinimap._on_mm_draw   s&    ""4#5#5q!<r>   c                     |j                   | _        |j                  | _        | j                  j                         }|j                  | _        |j                  | _	        y)z,Callback of the 'button-press-event' signal.N)
x_press_xy_press_yr   rP   r`   _old_scroll_xra   _old_scroll_y)r6   r   eventrU   s       r=   r1   zDrMinimap._on_mm_press   sB    ''$-''$-
,,
'
'
)%~~$~~$r>   c                    | j                   j                         }| j                  |_        | j                  |_        |j                  | j                  j                               }t        |j                  | j                  z
  |z        }t        |j                  | j                  z
  |z        }|j                  ||d       y)z\Callback of the 'button-release-event' signal (and also the
		'motion-notify-event' signal).r[   N)r   rP   r   r`   r   ra   r_   r   rR   rH   r   r   r   r   
add_deltas)r6   r   r   rU   rt   delta_xdelta_ys          r=   r2   zDrMinimap._on_mm_motion   s     ,,
'
'
)%%%%.%%%.&&t'7'7'A'A'CD*4==(J67'4==(J67'7GQ'r>   )F)__name__
__module____qualname____gtype_name__r   rD   rN   rX   rK   r)   r4   r0   r1   r2   __classcell__)r<   s   @r=   r   r      s<    $B*0"h.
&	(r>   r   )r   gi.repositoryr   r   r   Popoverr   r   r>   r=   <module>r      s"     - -Q( Q(r>   