
    cc*                     ,    d dl mZmZmZ  G d d      Zy)    )GLibGioGdkc                   $   e Zd Zd Zej
                  j                  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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(d# Z)d$ Z*d% Z+d& Z,y')(DrOptionsManagerz*com.github.maoschanz.drawing.tools-optionsc                 X    || _         i | _        d | _        i | _        i | _        d| _        y )NF)window_bottom_panes_dict_active_pane_id_boolean_actions_from_gsetting_string_actions_from_gsetting_mirror_lock)selfr	   s     9/usr/lib/python3/dist-packages/drawing/options_manager.py__init__zDrOptionsManager.__init__   s1    $+$$(*$%')$$$    c                 <    | j                   j                  |      d uS N)r	   lookup_action)r   names     r   _action_existszDrOptionsManager._action_exists"   s    		"	"4	(	44r   c                 v    | j                  |      ry | j                  j                  ||| j                         y r   )r   r	   add_action_boolean_boolean_callbackr   r   defaults      r   add_option_booleanz#DrOptionsManager.add_option_boolean(   s/    		++  w0F0FGr   c                 v    | j                  |      ry | j                  j                  ||| j                         y r   )r   r	   add_action_enum_enum_callbackr   s      r   add_option_enumz DrOptionsManager.add_option_enum-   s/    		++dGT-@-@Ar   c                 ~    | j                   j                  |      }| j                  ||       || j                  |<   |S r   )_tools_gsettingsget_booleanr   r   r   action_namekey_namedefault_values       r   add_option_from_bool_keyz)DrOptionsManager.add_option_from_bool_key2   s>    ''33H=-+}55=$%%k2	r   c                 ~    | j                   j                  |      }| j                  ||       || j                  |<   |S r   )r#   
get_stringr!   r   r%   s       r   add_option_from_enum_keyz)DrOptionsManager.add_option_from_enum_key8   s>    ''228<-{M24<$$$[1	r   c                     | j                  |      sy | j                  j                  |      }|j                         j	                         dk(  r|j                         j                         S |j                         S )Ns)r   r	   r   get_state_type
dup_string	get_stater+   )r   r   actions      r   	get_valuezDrOptionsManager.get_value>   sh    			T	"	;;$$T*&'')S0




'
'
))



r   c                     |d   j                         }|d   j                  t        j                  j	                  |             | j
                  j                          | j                         j                          y)zThis callback is simple but can't handle both menu-items and check/
		toggle-buttons. It is only good for menu-items and model-buttons.   r   N)	r$   	set_stater   Variantnew_booleanr	   set_window_subtitlesget_active_panehide_options_menur   args	new_values      r   r   z"DrOptionsManager._boolean_callbackG   s\     1g!!#)q'DLL,,Y78++""$**,r   c                 F   |d   j                         }||d   j                         j                         k(  ry|d   j                  t        j                  j                  |             | j                  j                          | j                         j                          y)zThis callback is simple but can't handle both menu-items and
		radio-buttons. It is only good for menu-items and model-buttons.r5   r   N)
r+   r1   r6   r   r7   
new_stringr	   r9   r:   r;   r<   s      r   r    zDrOptionsManager._enum_callbackP   s     1g  ") $q'##%0022	 q'DLL++I67++""$**,r   c                     | j                   |  | j                  j                  |      }|d   j                         |j	                         j                         k(  ryd| _        | j                  ||d          d| _        y)zActions whose callbacks use this method can be used in menus. It sets
		the lock required to avoid infinite recursion caused by the
		synchronisation with a mirror action used on GtkRadioButtons.r5   FT)r    r	   r   r+   r1   r   )r   mirror_action_namer=   mirroring_actions       r   mirrored_action_callbackz)DrOptionsManager.mirrored_action_callbackb   s}     $t[[../AB	!W-779DDFF
$&Q0$	r   c                    | j                   ry|d   j                         |d   j                         j                         k(  ry| j                  j	                  |      }|d   j                         |j                         j                         k(  ry | j
                  |  d| _         | j                  ||d          d| _         y)a  Actions whose callbacks use this method should NEVER be added to any
		menu. Such an action should mirror the action provided as an argument
		(which can be added to menus).
		Those actions are intended to be used by GtkRadioButtons, whose weird
		behaviors include sending a `change-state` signal when being unchecked,
		thus triggering this callback twice. So a synchronisation mechanism is
		needed, with a lock & an other "classic" action duplicating the data.Fr5   r   T)r   r+   r1   r	   r   r    )r   mirrored_action_namer=   mirrored_actions       r   mirroring_action_callbackz*DrOptionsManager.mirroring_action_callbacko   s     

	!WT!W..0;;==
KK--.BC/	!W_668CCEE
$t$otAw/$	r   c                    | j                   j                  d| j                                | j                  | j	                         d       | j                  | j                         d       | j                  D ]#  }| j                  |   }| j                  ||       % | j                  D ]#  }| j                  |   }| j                  ||       % y)zpCalled before closing to persist the current values of a few options
		into gsettings (dconf or key-value file).z	last-sizelast-left-rgbalast-right-rgbaN)
r#   set_intget_tool_width_persist_colorget_left_colorget_right_colorr   _persist_booleanr   _persist_string)r   r=   r&   r'   s       r   persist_tools_optionsz&DrOptionsManager.persist_tools_options   s    
 T-@-@-BCd))+-=>d**,.?@ 88 0k11+>8h/0
 77 /k00=8X./r   c                 ^    | j                  |      }| j                  j                  ||       y r   )r3   r#   
set_stringr   r&   r'   action_values       r   rR   z DrOptionsManager._persist_string   s&    ,,""8\:r   c                 ^    | j                  |      }| j                  j                  ||       y r   )r3   r#   set_booleanrV   s       r   rQ   z!DrOptionsManager._persist_boolean   s&    ,,##Hl;r   c                     t        |j                        t        |j                        t        |j                        t        |j                        g}| j
                  j                  ||       y r   )strredgreenbluealphar#   set_strv)r   rgbar'   s      r   rN   zDrOptionsManager._persist_color   sF    
dhh-TZZ#dii.#djj/	J$  40r   c                     || j                   vrR|j                         }|y || j                   |<   | j                  j                  j	                  |j
                         y y r   )r
   build_bottom_paner	   bottom_panes_boxadd
action_bar)r   pane_idcalling_toolnew_panes       r   try_add_bottom_panez$DrOptionsManager.try_add_bottom_pane   sZ    D+++,,.8
&.47#;;##H$7$78 ,r   c                     || j                   k(  ry || j                  vry || _         | j                          | j                          y r   )r   r
   _show_active_paneupdate_minimap_positionr   rg   s     r   try_enable_panez DrOptionsManager.try_enable_pane   sD    $$$	d---	!4!r   c                     | j                   D ]9  }|| j                  k(  }| j                   |   j                  j                  |       ; y r   )r
   r   rf   set_visible)r   each_id	is_actives      r   rl   z"DrOptionsManager._show_active_pane   sH    (( Fg$...97#..::9EFr   c                 4    | j                   | j                     S r   )r
   r   r   s    r   r:   z DrOptionsManager.get_active_pane   s    		 	 !5!5	66r   c                 T    | j                   |j                     j                  |       y r   )r
   rg   update_for_new_tool)r   tools     r   update_panezDrOptionsManager.update_pane   s    $,,';;DAr   c                     | j                   D ]  }| j                   |   j                          ! | j                          y r   )r
   init_adaptabilityrl   rn   s     r   r{   z"DrOptionsManager.init_adaptability   s:    (( 8g7#5578r   c                     | j                         j                  |       | j                         j                  j                  d       y )NT)r:   adapt_to_window_sizerf   rq   )r   available_widths     r   r}   z%DrOptionsManager.adapt_to_window_size   s8    --o> ##//5r   c                 @    | j                         j                          y r   )r:   toggle_options_menuru   s    r   toggle_menuzDrOptionsManager.toggle_menu   s    ,,.r   c                 b    | j                   D ]   }| j                   |   j                  |       " y r   )r
   set_minimap_label)r   labelrg   s      r   r   z"DrOptionsManager.set_minimap_label   s0    (( =g7#55e<=r   c                    | j                         j                         }|&| j                  j                  j	                  |       y| j                  j                  j	                  | j                  j
                         y)z<Move the minimap popover to the currently active optionsbar.N)r:   get_minimap_btnr	   minimapset_relative_tord   )r   btns     r   rm   z(DrOptionsManager.update_minimap_position   sX    ..0#_;;&&s+;;&&t{{'C'CDr   c                      | j                   d   S )Nclassic)r
   ru   s    r   get_classic_tools_panez'DrOptionsManager.get_classic_tools_pane   s    		 	 	++r   c                 6    | j                         j                  S r   )r   _color_lru   s    r   left_color_btnzDrOptionsManager.left_color_btn       		$	$	&	/	//r   c                 6    | j                         j                  S r   )r   _color_rru   s    r   right_color_btnz DrOptionsManager.right_color_btn   r   r   c                 B    | j                         j                  |       y r   )r   set_palette_setting)r   show_editors     r   r   z$DrOptionsManager.set_palette_setting   s    33K@r   c                 d    t        | j                         j                  j                               S r   )intr   thickness_spinbtnr3   ru   s    r   rM   zDrOptionsManager.get_tool_width   s%    	T((*<<FFH	IIr   c                 |    | j                         |z   }| j                         j                  j                  |       y r   )rM   r   r   	set_value)r   deltawidths      r   update_tool_widthz"DrOptionsManager.update_tool_width   s2    



%
'%11;;EBr   c                 T    | j                         j                  j                  |      S r   )r   color_widgetset_rgbar   colors     r   set_right_colorz DrOptionsManager.set_right_color   s"    					,	,	5	5e	<<r   c                 T    | j                         j                  j                  |      S r   )r   r   r   r   s     r   set_left_colorzDrOptionsManager.set_left_color  s"    					+	+	4	4U	;;r   c                 R    | j                         j                  j                         S r   )r   r   get_rgbaru   s    r   rP   z DrOptionsManager.get_right_color  s     					,	,	5	5	77r   c                 R    | j                         j                  j                         S r   )r   r   r   ru   s    r   rO   zDrOptionsManager.get_left_color  s     					+	+	4	4	66r   c                    |r| j                   j                  d      }n| j                   j                  d      }t        |d         }t        |d         }t        |d         }t        |d         }t        j                  ||||      S )NrJ   rK   r   r5         )r\   r]   r^   r_   )r#   get_strvfloatr   RGBA)r   is_left_colorcolor_arrayrgbas          r   get_persisted_colorz$DrOptionsManager.get_persisted_color
  s    &&//0@A;&&//0AB;KN!KN!KN!KN!	aqq	22r   c                     | j                         j                  j                  }| j                         j                  j                  }||fS r   )r   r   _operator_enum_operator_label)r   enumr   s      r   get_operatorzDrOptionsManager.get_operator  sB     
	$	$	&	/	/	>	>$

%
%
'
0
0
@
@%	ur   N)-__name__
__module____qualname____gtype_name__r   Settingsnewr#   r   r   r   r!   r)   r,   r3   r   r    rD   rH   rS   rR   rQ   rN   rj   ro   rl   r:   ry   r{   r}   r   r   rm   r   r   r   r   rM   r   r   r   rP   rO   r   r    r   r   r   r      s    $ LL$$%QR5H
B
--$./&;<19	"F
7B

6/=E,00AJC=<87	3r   r   N)gi.repositoryr   r   r   r   r   r   r   <module>r      s   $ ) (G Gr   