
    fl                       d Z ddlmZmZmZ ddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ 	 ddlZddlmZ  e        ddlmZmZmZmZ dd	lmZ dd
lmZ ddlmZmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z. dZ/ddl0Z0 e0jb                  d      Z2ddl3m4Z4m5Z5  e4       Z6d Z7d Z8 G d de9      Z: G d de:      Z; G d de:      Z< G d de:      Z= G d de:      Z> G d d e:      Z? G d! d"e:      Z@d#ZA G d$ d%ej                        ZC G d& d'ej                  ej                        ZFeGd(k(  r	 e;d)      ZHyy# e$ r Y w xY w)*z Onboard preferences utility     )divisionprint_functionunicode_literalsN)Popen)
ExpatError)minidom)require_gi_versions)GObjectPangoGdkGtk)LayoutLoaderSVG)SnippetView)ThemeColorScheme)ScanMode
ScanDevice)XIDeviceManagerXIEventType)unicode_str	open_utf8escape_markupXDGDirs)show_ask_string_dialogshow_confirmation_dialog)UDevTrackeronboardSettings)ConfigNumResizeHandlesc                     t        j                         }|j                  t               |j	                  t
        j                  j                  t        j                  | dz                |S )Nz.ui)
r   Builderset_translation_domainappadd_from_fileospathjoinconfiginstall_dir)filebasebuilders     2/usr/lib/python3/dist-packages/Onboard/settings.pyLoadUIr.   D   sG    kkmG""3'"'',,v'9'98E>JKN    c                 ,    |rdj                  |       S | S )Nz
<i>{0}</i>)format)textissystems     r-   format_list_itemr4   J   s    ""4((Kr/   c                       e Zd ZdZd Zd Zd Z	 ddZd Zd Z		 dd	Z
d
 Zd Z	 ddZd Zd Z	 ddZd Zd Z	 ddZd Zd Zd Zd ZddZy)DialogBuilderz
    Utility class for simplified widget setup.
    Has helpers for connecting widgets to ConfigObject properties, i.e.
    indirectly to gsettings keys.
    Mostly borrowed from Gerd Kohlberger's ScannerDialog.
    c                     || _         y N)_builderselfr,   s     r-   __init__zDialogBuilder.__init__X   s	    r/   c                     | j                   j                  |      }|s(t        j                  dj	                  |             |sJ |S )Nzwidget '{}' not found, aborting)r9   
get_object_loggererrorr1   )r;   namewidgets      r-   widzDialogBuilder.wid[   s=    ))$/MM;BB4HIN6r/   c                 J    | j                  |      }|j                  d|       y )Nclicked)rC   connect)r;   rA   callbackws       r-   bind_buttonzDialogBuilder.bind_buttonc   s    HHTN			)X&r/   Nc                       j                  |      r
       }nt              }j                  |       j                  d j                  |        t        dz          fd       y )Nchanged_notify_addc                 ,    j                        S r8   )_notify_entry_callbackxconfig_get_callbackconfig_objectkeyr;   rH   s    r-   <lambda>z*DialogBuilder.bind_entry.<locals>.<lambda>s       d11!]C2EG r/   )rC   getattrset_textrF   _bind_entry_callbackr;   rA   rR   rS   rQ   config_set_callbackvaluerH   s   ` ```  @r-   
bind_entryzDialogBuilder.bind_entryh   sr    HHTN's;EM3/E	

5			)T66&9	;3s]23G	Hr/   c                 V    |r
 |||      }nt        ||      }|j                  |       y r8   )rV   rW   r;   rB   rR   rS   rQ   r[   s         r-   rN   z$DialogBuilder._notify_entry_callbackv   s)    's;EM3/Er/   c                 p    |r ||||j                                y t        |||j                                y r8   )get_textsetattrr;   rB   rR   rS   rZ   s        r-   rX   z"DialogBuilder._bind_entry_callback~   s+    sFOO4EFM3(9:r/   c                       j                  |      r
       }nt              }j                  |       j                  d j                  |        t        dz          fd       y )Nvalue-changedrL   c                 ,    j                        S r8   )_notify_spin_callbackrO   s    r-   rT   z)DialogBuilder.bind_spin.<locals>.<lambda>   s    t11!]C5HJ r/   )rC   rV   	set_valuerF   _bind_spin_callbackrY   s   ` ```  @r-   	bind_spinzDialogBuilder.bind_spin   sr    HHTN's;EM3/E	E			/4#;#;&9	;3s]23J	Kr/   c                 V    |r
 |||      }nt        ||      }|j                  |       y r8   rV   rg   r^   s         r-   rf   z#DialogBuilder._notify_spin_callback   +    's;EM3/Er/   c                 p    |r ||||j                                y t        |||j                                y r8   	get_valuera   rb   s        r-   rh   z!DialogBuilder._bind_spin_callback   s/    sF4D4D4FGM3(8(8(:;r/   c                 6     j                  |      r
       }nt              }j                  |       j                  d j                  |        t        dz         j                          t        dz          fd       y )Nrd   rL   c                 ,    j                        S r8   )_notify_scale_callbackrO   s    r-   rT   z*DialogBuilder.bind_scale.<locals>.<lambda>   rU   r/   )rC   rV   rg   rF   _bind_scale_callbackrY   s   ` ```  @r-   
bind_scalezDialogBuilder.bind_scale   s    HHTN's;EM3/E	E			/4#<#<&9	;3s]23AKK@3s]23G	Hr/   c                 V    |r
 |||      }nt        ||      }|j                  |       y r8   rk   r^   s         r-   rr   z$DialogBuilder._notify_scale_callback   rl   r/   c                 X    |j                         }|r ||||       y t        |||       y r8   rn   )r;   rB   rR   rS   rZ   r[   s         r-   rs   z"DialogBuilder._bind_scale_callback   s+      "sE:M3.r/   c                       j                  |      r
       }nt              }j                  |       j                  d j                  |        t        dz          fd       y )NtoggledrL   c                 ,    j                        S r8   )_notify_check_callbackrO   s    r-   rT   z*DialogBuilder.bind_check.<locals>.<lambda>   s    t221mS3FH r/   )rC   rV   
set_activerF   _bind_check_callback)r;   rA   rR   rS   rQ   rZ   activerH   s   ` ```  @r-   
bind_checkzDialogBuilder.bind_check   sr    HHTN(<F]C0F	V			)T66&9	;3s]23H	Ir/   c                 V    |r
 |||      }nt        ||      }|j                  |       y r8   )rV   r{   )r;   rB   rR   rS   rQ   r}   s         r-   rz   z$DialogBuilder._notify_check_callback   s+    (<F]C0F&!r/   c                 p    |r ||||j                                y t        |||j                                y r8   )
get_activera   rb   s        r-   r|   z"DialogBuilder._bind_check_callback   s/    sF4E4E4GHM3(9(9(;<r/   c                 &     j                  |      r
       }nt        t                    }|s j                  }j	                  |       j                  d j                  |        t        dz          fd       y )NrK   rL   c                 ,    j                        S r8   )_notify_combobox_callbackrO   s    r-   rT   z0DialogBuilder.bind_combobox_id.<locals>.<lambda>   s    t55a5HJ r/   )rC   strrV   bind_combobox_config_setset_active_idrF   _bind_combobox_callback)r;   rA   rR   rS   rQ   rZ   idrH   s   ` ```  @r-   bind_combobox_idzDialogBuilder.bind_combobox_id   s    HHTN$]C8BW]C01B""&"?"?				)T99&9	;3s]23J	Kr/   c                 h    |r
 |||      }nt        t        ||            }|j                  |       y r8   )r   rV   r   )r;   rB   rR   rS   rQ   r   s         r-   r   z'DialogBuilder._notify_combobox_callback   s0    $]C8BW]C01BR r/   c                 8    |j                         } ||||       y r8   )get_active_id)r;   rB   rR   rS   rZ   r   s         r-   r   z%DialogBuilder._bind_combobox_callback   s    !!#M33r/   c                 >    |J |t        ||t        |             y y r8   )ra   int)r;   rR   rS   r   s       r-   r   z&DialogBuilder.bind_combobox_config_set  s&    ::zM3B0 r/   c                     |j                         }|r5|j                         d   }|r |j                         j                  ||      S y N   )get_selectionget_selected	get_modelro   )r;   viewcolumnselits        r-   get_tree_view_selectionz%DialogBuilder.get_tree_view_selection  sF      "!!#A&B~~'11"f==r/   c                 8   |j                         }||j                         }|rv|j                  |      }|r| j                  ||||       |j	                  ||      }||k(  r#|j                         }|r|j                  |       |j                  |      }|ruy y r8   )r   get_iter_firstiter_childrenselect_tree_view_rowro   r   select_iter	iter_next)	r;   r   r   r[   _itmodelchild_itfnr   s	            r-   r   z"DialogBuilder.select_tree_view_row  s     ;&&(C**3/H))$xHf-BU{((*OOC(//#&C r/   )NNr8   )__name__
__module____qualname____doc__r<   rC   rI   r\   rN   rX   ri   rf   rh   rt   rr   rs   r~   rz   r|   r   r   r   r   r   r    r/   r-   r6   r6   P   s     ' BFH; AEK < BFH / BFI"= HLK$!4
1
'r/   r6   c                      e 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dHd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-dId-Z.dJd.Z/dJd/Z0e1dKd0       Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdIdBZDdC ZEdD ZFdE ZGdF ZHdG ZIy,)Lr   r   r            c                     i  _         dt               v r+t        j                  j                  j                  d       nt        j                  d       t        j                          t        d      }t        j                   |       |j                  d       _        t        j                   j#                  d        j                  j%                  t'        d             |j                  d	       _         j(                  j+                  t        j,                         t        j/                   j(                  j*                         |j                  d
       _         j0                  j+                  t        j2                         t        j5                   j0                  j*                         |j                  d       _         j6                  j+                  t        j8                  j:                         t        j8                  j=                   j6                  j*                         |j                  d       _         j>                  j+                  t        j@                         t        jC                   j>                  j*                         |j                  d       _"         jD                  j+                  t        jF                         t        jI                   jD                  j*                          jK                  dt        d       |j                  d       _&         jL                  j+                  t        j                  jN                         t        j                  jQ                   fd       |j                  d       _)         jR                  j+                  t        j                  jT                         t        j                  jW                   jR                  j*                         |j                  d       _,         jX                  j+                  t        j[                                t        j                  j]                   fd       |j                  d       _/         j^                  j+                  t        j                  j`                         t        j                  jc                   j^                  j*                         |j                  d       _2         jd                  j+                  t        j                  jf                         t        j                  ji                   fd       |j                  d       _5         jj                  jm                  t        j                  jn                         t        j                  jq                   jj                  jl                         |j                  d       _9         jr                  jm                  t        j                  jt                         t        j                  jw                   jr                  jl                         |j                  d       _<        |j                  d       _=         jz                  j+                  t        j                  j|                         t        j                  j                   fd       |j                  d       _@         j                  jm                  t        j                  j                         t        j                  j                   j                  jl                         |j                  d       _C         j                  jm                  t        j                  j                         t        j                  j                   j                  jl                         d }d  } jK                  d!t        j                  d"||       d# }d$ } jK                  d%t        j8                  d"||        j                  d&t        j                  d'        fd(} j                  d)t        j                  d*d |        j                  d+t        j                  d,        j                  d-t        j                  d.        j                  d/t        j                  d0        j                  d1t        j                  d2d3 d4 5        jK                  d6t        j                  d7        jK                  d8t        j                  d9       d: }d; } jK                  d<t        j                  d=||        j                  d>t        j                  d?        j                  d@t        j                  dA        jK                  dBt        j                  dC        fdD} jK                  dEt        j                  dF|G       dH }dI }	 j                  dJt        j                  dK||	       t         |       _K        t         |       _M        |j                  dL       _N        |j                  dM       _O         fdN}
 j                  dLt        j                  dO|
G        j                  dP fdQ       |j                  dR       _Q        t        j                          _S        t        j                   fdS        j                           j                          |j                  dT       _W         j                  j                  t        j                  d t        j                         dUV             |j                  dW       _[         j                   |j                  dX       _\         j                          t        j                   j                         |j                  dY       _`         j                  j+                  t        j                         t        j                   j                         t                _e        |j                  dZ      j                   j                         |j                  d[      }|j+                  t        j                  j                         t        j                  j                  |j*                         |j                  d\       _j         j                  j+                  t        j                  j                         t        j                  j                   j                  j*                         |j                  d]       _n         j                  j+                  t        j                  j                         t        j                  j                   j                  j*                         t        j                  rB j                  d^t        j                  d_        j                  d`t        j                  da       t        j                  }|j                  db       _s         j                  j                  |       |j                  dc       _u         j                  j                         }|r$|j                  t        j                  |              j                  j                           j                          |j                  dd      }|j                  t        t        j                                j                  j                  |         j                  j                  det        j                         |j                          t        j                  df       t        j                          y )gNdbusT)set_as_defaultzD-Bus bindings unavailable.settingssettings_windowr   zOnboard Preferencesstatus_icon_togglestart_minimized_toggleicon_palette_toggleonboard_xembed_toggleshow_tooltips_togglestatus_icon_provider_comboboxstatus_icon_providerwindow_decoration_togglec                 Z    j                   j                  |       j                         gS r8   )r   r{   update_window_widgetsrP   r;   s    r-   rT   z#Settings.__init__.<locals>.<lambda>_  s)    t44??B1135 r/   window_state_sticky_toggleforce_to_top_togglec                 Z    j                   j                  |       j                         gS r8   )r   r{   r   r   s    r-   rT   z#Settings.__init__.<locals>.<lambda>k  s.    (,(@(@(K(KA(N(,(B(B(D(F r/   keep_aspect_ratio_toggletransparent_background_togglec                 Z    j                   j                  |       j                         gS r8   )r   r{   r   r   s    r-   rT   z#Settings.__init__.<locals>.<lambda>x  s-    !??JJ1M!779; r/   transparency_spinbutton"background_transparency_spinbuttoninactive_behavior_frame#enable_inactive_transparency_togglec                 Z    j                   j                  |       j                         gS r8   )r   r{   r   r   s    r-   rT   z#Settings.__init__.<locals>.<lambda>  s.    !EEPPQRS!779; r/    inactive_transparency_spinbutton&inactive_transparency_delay_spinbuttonc                 V    t        | |      }t        t        j                  |            S r8   rV   r   r)   window_handles_to_num_handlesrR   rS   handless      r-   _getzSettings.__init__.<locals>._get  $    mS1Gv;;GDEEr/   c                 `    t         j                  t        |            }t        | ||d d         y r8   )r)   num_handles_to_window_handlesr   ra   rR   rS   r[   r   s       r-   _setzSettings.__init__.<locals>._set  s&    ::3u:FGM3
3r/   num_window_handles_comboboxwindow_handlesc                 V    t        | |      }t        t        j                  |            S r8   r   r   s      r-   r   zSettings.__init__.<locals>._get  r   r/   c                 `    t         j                  t        |            }t        | ||d d         y r8   )r)   #num_handles_to_icon_palette_handlesr   ra   r   s       r-   r   zSettings.__init__.<locals>._set  s&    @@ULGM3
3r/   !num_icon_palette_handles_comboboxtouch_feedback_enabled_toggletouch_feedback_enabledc                 N    |dk  rd}t        | ||       j                          y )N   r   )ra   !_update_touch_feedback_size_labelrR   rS   r[   r;   s      r-   r   zSettings.__init__.<locals>._set  s'    rzM3.224r/   touch_feedback_size_scaletouch_feedback_sizeaudio_feedback_enabled_toggleaudio_feedback_enabled$audio_feedback_place_in_space_toggleaudio_feedback_place_in_spaceshow_secondary_labels_toggleshow_secondary_labels upper_case_on_right_click_togglekey_press_modifiersc                 $    | j                  d      S Nr   )can_upper_case_on_buttoncorS   s     r-   rT   z#Settings.__init__.<locals>.<lambda>  s    77: r/   c                 &    | j                  d|      S r   )set_upper_case_on_buttonr   rS   r[   s      r-   rT   z#Settings.__init__.<locals>.<lambda>  s    775A r/   rQ   rZ   default_key_action_comboboxdefault_key_actionkey_synth_combobox	key_synthc                 >    t        | |      }|j                  dd      S )Nall )rV   get)rR   rS   	behaviorss      r-   get_sticky_key_behaviorz2Settings.__init__.<locals>.get_sticky_key_behavior  s    s3I==++r/   c                 \    t        | |      j                         }||d<   t        | ||       y )Nr   )rV   copyra   )rR   rS   r[   r   s       r-   set_sticky_key_behaviorz2Settings.__init__.<locals>.set_sticky_key_behavior  s-    s388:I$IeM3	2r/   sticky_key_behavior_comboboxsticky_key_behavior#sticky_key_release_delay_spinbuttonsticky_key_release_delay+sticky_key_release_on_hide_delay_spinbutton sticky_key_release_on_hide_delaytouch_input_comboboxtouch_inputc                 L    j                  | ||       j                          y r8   )r   r   r   s      r-   on_input_event_source_setz4Settings.__init__.<locals>.on_input_event_source_set  s!    ))-eD&&(r/   input_event_source_comboboxinput_event_sourcerZ   c                      t        | |      dz  S Ng     @@)rV   )rR   rS   s     r-   get_inter_key_stroke_delayz5Settings.__init__.<locals>.get_inter_key_stroke_delay  s    =#.77r/   c                 $    t        | ||dz         y r  )ra   )rR   rS   r[   s      r-   set_inter_key_stroke_delayz5Settings.__init__.<locals>.set_inter_key_stroke_delay  s    M37r/   !inter_key_stroke_delay_spinbuttoninter_key_stroke_delaydocking_enabled_toggledocking_boxc                 @    t        | ||       j                          y r8   )ra   r   r   s      r-   on_docking_enabled_config_setz8Settings.__init__.<locals>.on_docking_enabled_config_set  s    M3.&&(r/   docking_enableddocking_settings_buttonc                 J    t               j                  j                        S r8   )DockingDialogrunwindow)rB   r;   s    r-   rT   z#Settings.__init__.<locals>.<lambda>	  s    (;(;DKK(H r/   layout_viewc                 $    j                         S r8   )update_layout_view_selectionr   s    r-   rT   z#Settings.__init__.<locals>.<lambda>  s    4+L+L+N r/   
theme_viewr   )markupdelete_theme_buttoncustomize_theme_button$system_theme_tracking_enabled_togglesnippet_scrolled_windowscanner_enabledhide_click_type_window_toggle'enable_click_type_window_on_exit_togglehover_click_delay_spinbutton
dwell_time'hover_click_motion_threshold_spinbuttondwell_thresholdsettings_notebook
pages_viewhover_click_framedestroyz%Entering mainloop of Onboard-settings)themesglobalsr   mainloopglibDBusGMainLoopr?   warningr)   initr.   r6   r<   r>   r  r   Windowset_default_icon_name	set_title_r   r{   show_status_iconshow_status_icon_notify_addr   start_minimizedstart_minimized_notify_addr   icpin_usein_use_notify_addr   onboard_xembed_enabled!onboard_xembed_enabled_notify_addr   show_tooltipsshow_tooltips_notify_addr   r   window_decorationwindow_decoration_notify_addr   window_state_stickywindow_state_sticky_notify_addr   is_force_to_topforce_to_top_notify_addr   keep_aspect_ratiokeep_aspect_ratio_notify_addr   transparent_background!transparent_background_notify_addr   rg   transparencytransparency_notify_addr   background_transparency"background_transparency_notify_addinactivity_framer   enable_inactive_transparency'enable_inactive_transparency_notify_addr   inactive_transparency inactive_transparency_notify_addr   inactive_transparency_delay&inactive_transparency_delay_notify_addr~   keyboardrt   ri   PageAutoShow_page_auto_showPageWordSuggestions_page_word_suggestionsr  r  rI   r   get_user_layout_diruser_layout_rootlayout_notify_addupdate_layout_viewupdate_layout_widgetsr#  append_columnTreeViewColumnCellRendererTextr%  r&  update_themeListtheme_notify_addon_theme_changedr'  system_theme_tracking_enabled(system_theme_tracking_enabled_notify_add on_system_theme_tracking_changedr   snippet_viewaddscannerenabledenabled_notify_addr*  universal_accesshide_click_type_window!hide_click_type_window_notify_addr+   enable_click_type_window_on_exit+enable_click_type_window_on_exit_notify_addmousetweakscurrent_settings_pager0  set_current_pager1  r   select_pathTreePathshow_allr   set_sensitiveboolset_keep_aboverF   	main_quitconnect_signalsinfomain)r;   mainwinr,   r   r   r   r  r  r  r  r  r)  pager   frames   `              r-   r<   zSettings.__init__*  s    WYMM,,D,AOO9: 	 $tW-(():;

((3a 567 #*"4"45I"J**6+B+BC**4+B+B+M+MN&-&8&8$'&###..v/E/EF))''22	4 $+#5#56K#L   ++FJJ,=,=>

$$T%=%=%H%HI 67 	"""--f.K.KL00&&11	3 %,$6$67M$N!!!,,V-A-AB''(A(A(L(LM=$&<	> 9: 	%%%00MM++	-225	6
 ;< 	'''22MM--	/44++66	8 $+#5#56K#L   ++F,B,B,DE-- /F 	G )0(:(:&)(%%%001P1PQ22))44	6 !++,KL 	***55fmm6Z6Z[77 9; 	< (/'9'9:S'T$$$..v}}/I/IJ--d.J.J.T.TU #--.RS 	///99&--:_:_`889`9`9j9jk ' 2 23L M &&'LM 	000;;(.(R(R	T== ?; 	<
 %//0RS 	---778[8[\66t7\7\7f7fg %//0XY 	333==fmm>g>gh<<T=h=h=r=rs	F	4 	;$mm-="D	*	F	4 	A$jj*:"D	*
 	7)A	C	5 	3)>d	$ 	7)A	C>)H	J6)@	B:)>-;-B	 	 	C 	;)=	?2	6	,	3 	<)>/1H	J 	<"OO-G	I 	D(J	L 	4$oo}	>	) 	;$oo/C2K 	 	M	8	8 	:(@13M	O
  ,D': ':$&H# %//0HI 	#"--m<	) 	0'8.K 	 	M 	2H	J #--m< & : : <  !NO!""$ ",,\:%%c&8&89<9M9M9O@A'C 	D $+#5#56K#L   #*#5#56N#O 	# 	 5 56 &&'MN 	111<<(.(L(L	N77(,(M(M	O (M4599$:K:KL ",,->?""6>>#9#9:))/*D*DE ""#BC 	***55--DD	FAA88CC	E ""#LM 	444??--NN	PKKBBMM	O NN9"..>NND"..0AC ++!(!3!34G!H//5!,,\:oo++-OOCLL./ 	 	""$ ""#67D!3!345""w;/Is}}5%<=
r/   c                     |j                         }|rS|j                         d   }|r=|d   j                         d   }|t        _        | j
                  j                  |       y y y )Nr   r   )r   get_selected_rowsget_indicesr)   r}  r0  r~  )r;   rB   r   pathspage_nums        r-   on_pages_view_cursor_changedz%Settings.on_pages_view_cursor_changedd  sf    ""$))+A.E 8//1!4/7,&&77A  r/   c                     |t         _        y r8   )r)   r}  r;   rB   gpager  s       r-    on_settings_notebook_switch_pagez)Settings.on_settings_notebook_switch_pagem  s
    '/$r/   c                 f    t         j                  d       | j                  j                  dd       y )NzSnippet add button clickedr   )r?   r  rr  appendr;   events     r-   on_snippet_add_button_clickedz&Settings.on_snippet_add_button_clickedp  s%    12  B'r/   c                 b    t         j                  d       | j                  j                          y )NzSnippet remove button clicked)r?   r  rr  remove_selectedr  s     r-    on_snippet_remove_button_clickedz)Settings.on_snippet_remove_button_clickedt  s!    45))+r/   c                 V    |j                         t        _        | j                          y r8   )r   r)   r?  r   r;   rB   s     r-   on_status_icon_toggledzSettings.on_status_icon_toggledx  s    "("3"3"5""$r/   c                 6    |j                         t        _        y r8   )r   r)   rA  r  s     r-   on_start_minimized_toggledz#Settings.on_start_minimized_toggled|  s    !'!2!2!4r/   c                     t         j                         s#|j                         t         j                  _        | j                          y r8   )r)   "is_icon_palette_last_unhide_optionr   rC  rD  r   r  s     r-   on_icon_palette_toggledz Settings.on_icon_palette_toggled  s/    88: & 1 1 3FJJ""$r/   c                 6    |j                         t        _        y r8   )r   r)   modeless_gksur  s     r-   on_modeless_gksu_toggledz!Settings.on_modeless_gksu_toggled      %002r/   c                 J    t         j                  |j                                y r8   )r)   enable_gss_embeddingr   r  s     r-   on_xembed_onboard_toggledz"Settings.on_xembed_onboard_toggled  s    ##F$5$5$78r/   c                 6    |j                         t        _        y r8   )r   r)   rH  r  s     r-   on_show_tooltips_toggledz!Settings.on_show_tooltips_toggled  r  r/   c                     t         j                         s#|j                         t         j                  _        | j                          y r8   )r)   rN  r   r  rJ  r   r  s     r-   on_window_decoration_toggledz%Settings.on_window_decoration_toggled  s/    %%'.4.?.?.AFMM+""$r/   c                 t    t         j                         s$|j                         t         j                  _        y y r8   )r)   rN  r   r  rL  r  s     r-   on_window_state_sticky_toggledz'Settings.on_window_state_sticky_toggled  s(    %%'060A0A0CFMM- (r/   c                     t         j                         s#|j                         t         j                  _        | j                          y r8   )r)   is_docking_enabledr   r  force_to_topr   r  s     r-   on_force_to_top_toggledz Settings.on_force_to_top_toggled  s/    ((*)/):):)<FMM&""$r/   c                 J    |j                         t        j                  _        y r8   )r   r)   r  rP  r  s     r-   on_keep_aspect_ratio_toggledz%Settings.on_keep_aspect_ratio_toggled  s    *0*;*;*='r/   c                     t         j                  j                  }|rt        t	        |            n
t        d      }| j                  d      j                  |       y )Nautotouch_feedback_size_label)r)   r_  r   r   roundr>  rC   rW   )r;   r[   ss      r-   r   z*Settings._update_touch_feedback_size_label  sA    33 "'CeAfI,-66q9r/   c                    t         j                         }| j                  d      }|j                  t         j                         | j
                  j                  t         j                                 t         j                         }| j
                  j                         |k7  r| j
                  j                  |       | j                  j                  |        t         j                         }| j                  j                         |k7  r| j                  j                  |       | j                  j                  |        t         j                         }| j                  j                         |k7  r| j                  j                  |       | j                  j                  t         j                                 |}| j                  j                         |k7  r| j                  j                  |       | j                   j                  t         j                                 | j"                  j                  t         j$                  j&                          | j(                  j                  t         j*                  j&                          t         j-                         }| j.                  j                         |k7  r| j.                  j                  |       | j1                          | j2                  j5                          y )Nstatus_icon_provider_box)r)   rN  rC   r  r?  r   r  is_icon_palette_in_user   r{   r   has_window_decorationr   get_sticky_stater   r  r   r   	auto_showru  rX  rt   is_inactive_transparency_enabledr   r   ra  	update_ui)r;   r  rH   r}   s       r-   r   zSettings.update_window_widgets  sJ   --/ HH/0	//0  ..99;;	=..0##..0F:$$//7 	%%334DE--/((335?))44V<''55<7GH((***5576A++66v>  ..63L3L3N/NO##..0F:$$//7//==,2,H,H,J(J	L##11,2,<,<,D,D(D	F 	++0F0F,FG88:33>>@FJ44??G 	..0 	&&(r/   c                      y r8   r   r;   s    r-   update_all_widgetszSettings.update_all_widgets      r/   c                 j    |j                         t        j                  _        | j	                          y r8   )r   r)   r  rR  r   r  s     r-   !on_transparent_background_toggledz*Settings.on_transparent_background_toggled  s#    /5/@/@/B,""$r/   c                 J    |j                         t        j                  _        y r8   )ro   r)   r  rT  r  s     r-   on_transparency_changedz Settings.on_transparency_changed  s    %+%5%5%7"r/   c                 J    |j                         t        j                  _        y r8   )ro   r)   r  rV  r  s     r-   -on_background_transparency_spinbutton_changedz6Settings.on_background_transparency_spinbutton_changed  s    060@0@0B-r/   c                     t         j                  j                  s$|j                         t         j                  _        y y r8   )r)   rt  ru  r   r  rY  r  s     r-   'on_enable_inactive_transparency_toggledz0Settings.on_enable_inactive_transparency_toggled  s)    ~~%%9?9J9J9LFMM6 &r/   c                 J    |j                         t        j                  _        y r8   )ro   r)   r  r[  r  s     r-    on_inactive_transparency_changedz)Settings.on_inactive_transparency_changed  s    .4.>.>.@+r/   c                 J    |j                         t        j                  _        y r8   )ro   r)   r  r]  r  s     r-   &on_inactive_transparency_delay_changedz/Settings.on_inactive_transparency_delay_changed  s    4:4D4D4F1r/   c                    | j                  | j                        }| j                         }|rt        t	        d|      | j
                        }|rrt        j                  j                  | j                  |      t        j                  z   }t        j                  ||       | j                          | j                          y y y )Nz"Copy layout '{}' to this new name:)get_selected_layout_valueLAYOUT_COL_NAMEget_selected_layout_filenamer   _formatr  r&   r'   r(   re  r)   LAYOUT_FILE_EXTENSIONr   copy_layoutrg  open_user_layout_dir)r;   rB   rA   filenamenew_layout_namenew_filenames         r-   on_layout_new_button_clickedz%Settings.on_layout_new_button_clicked  s    --d.B.BC4464<dCT[[ROGGLL!6!6H001   ++HlC'')))+  r/   c                 T   | j                  | j                        }| j                         }|r{t        d|      }t	        || j
                        rXt        j                  |       t        | j                        r| j                  d   d   ndt        _        | j                          y y y )NzDelete layout '{}'?r   r   r   )r  r  r  r  r   r  r   remove_layoutlenlayout_view_modelr)   layout_filenamerg  )r;   r  rA   r  questions        r-   on_layout_remove_button_clickedz(Settings.on_layout_remove_button_clicked  s    --d.B.BC4464d;H'$++>--h7 ,/t/E/E+F *.)?)?)B1)ELN &'') ? r/   c           	         | j                   }t        j                  |       d|g}	 t        |       y # t        $ rG}t
        j                  dj                  dj                  |      t        |                   Y d }~y d }~ww xY w)Nzxdg-openzFailed to run '{}': {} )
re  r   assure_user_dir_existsr   OSErrorr?   r9  r1   r(   r   )r;   user_layout_dircmdes       r-   r  zSettings.open_user_layout_dir  sr    //&&7?+	D#J 	DOO4#VCHHSM;q>BD D	Ds   3 	B=A>>Bc                 $    | j                          y r8   )r  r  s     r-   on_layout_folder_button_clickedz(Settings.on_layout_folder_button_clicked  s    !!#r/   c                    | j                         }| j                  d      j                  |d u       | j                  d      j                  |d uxr$ t        j                  |t        j
                               t        | j                  | j                              }| j                  d      j                  |       y )Nlayout_new_buttonlayout_remove_buttonlayout_about_button)	r  rC   r  r&   accessW_OKr  r  LAYOUT_COL_HAS_ABOUT_INFO)r;   r  has_about_infos      r-   rh  zSettings.update_layout_widgets  s    446$%33D8HI'(668t;K 8F)+8RWW)E	G**4+I+IJL&'55nEr/   c                 j    |j                         t        j                  _        | j	                          y r8   )r   r)   rt  ru  r   r  s     r-   on_scanner_enabled_toggledz#Settings.on_scanner_enabled_toggled  s#    !'!2!2!4""$r/   c                 J    t               j                  | j                         y r8   )ScannerDialogr  r  r  s     r-   on_scanner_settings_clickedz$Settings.on_scanner_settings_clicked  s    DKK(r/   c                 J    |j                         t        j                  _        y r8   )r   r)   rw  rx  r  s     r-   !on_hide_click_type_window_toggledz*Settings.on_hide_click_type_window_toggled!  s    9?9J9J9L6r/   c                 J    |j                         t        j                  _        y r8   )r   r)   rw  rz  r  s     r-   *on_enable_click_type_window_on_exit_togglez3Settings.on_enable_click_type_window_on_exit_toggle$  s    CICTCTCV@r/   c           
          d}	 t        |dg       y # t        $ r3}t        j                  t	        d|t        |                   Y d }~y d }~ww xY w)Nzgnome-control-centerzuniversal-accessz"System settings not found ({}): {})r   r  r?   r9  r  r   )r;   rB   r  r  s       r-   on_hover_click_settings_clickedz(Settings.on_hover_click_settings_clicked'  sN    )	?8/01 	?OOG$H$,k!n> ? ?	?s    	A)A		Ac                 `    | j                   j                          t        j                          y r8   )r  r3  r   r  r  s     r-   on_close_button_clickedz Settings.on_close_button_clicked/  s    r/   c                    | j                   j                         }|| _        |j                          g d}| j	                  t
        j                  j                  t        j                  d      |      }|D cg c]  }|j                  dk(  r| }}|D cg c]  }|j                  dk(  r| }}| j	                  | j                        }| j                  ||t        d             | j                  ||t        d             | j                  ||t        d             | j                   j                          | j                          y c c}w c c}w )N)SmallCompactzFull KeyboardPhoneGridlayoutssystemcontributionszCore layoutsContributionsz
My layouts)r   r   r  clear_read_layoutsr&   r'   r(   r)   r*   layout_sectionre  _add_layout_sectionr>  
expand_allr"  )r;   r   
sort_orderlayout_infoslir  contributedusers           r-   rg  zSettings.update_layout_view3  s1     **,!&K
))GGLL++Y7E  , 6((H4  6 6$0 =b((O;  = = !!$"7"78  .0AB  Q5GH  ao>##%))+6=s   8E
Ec                 n    | j                  | j                  | j                  t        j                         y r8   )r   r   LAYOUT_COL_FILENAMEr)   r  r  s    r-   r"  z%Settings.update_layout_view_selectionJ  s)    !!$"2"2D4L4L"("8"8	:r/   c                    |r|j                  d       }|j                  || j                  dj                  t	        |                   |D ]  }|j                  |      }|j                  || j                  |j
                  | j                  |j                  | j                  |j                  | j                  |j                  | j                  t        |j                                y y )Nz	<b>{}</b>)r  setr  r1   r   	id_stringLAYOUT_COL_SUMMARYsummaryr  r  r  r  LAYOUT_COL_IS_ROW_SENSITIVEr  )r;   r   lissection_nameparent_iterr  
child_iters          r-   r  zSettings._add_layout_sectionN  s    ,,t,KIIk((+vmL9:<  M"\\+6
		*,,bll//00"++668I8I88$r{{:KMM r/   Nc                    | j                         }| j                  |      }|y dj                  t        |j                              }|j
                  xs |j                  }|r|dj                  t        |            z  }|j                  r6|dt        d      z   dz   j                  t        |j                              z  }|dj                  t        |j                              z  }t        j                  t        d      t        j                  j                  t        j                  j                        }|j!                  |       |j#                  | j$                         |j'                          |j)                          y )Nz<big>{}</big>
z
{}

z
Author: {}z
 <tt>{}</tt>
zAbout Layout)titlemessage_typebuttons)r  _read_layoutr1   r   r   descriptionr   authorr>  r  r   MessageDialogMessageTypeQUESTIONButtonsTypeOK
set_markupset_transient_forr  r  r3  )r;   r  r   r  r$  bodydialogs          r-   on_layout_about_button_clickedz'Settings.on_layout_about_button_clicked]  s'   ..0r":"))-*>?~~+hoomD&9::F99tao-4bii012F$++M"++,FGG"">):030H0H+.??+=+=? 	&!  -

r/   c                     | j                  |      }g }|D ](  }| j                  ||      }|s|j                  |       * t        |d       S )Nc                     | j                   S r8   )sort_keyrP   s    r-   rT   z(Settings._read_layouts.<locals>.<lambda>}  s
    !** r/   rS   )_find_layoutsr+  r  sorted)r;   r'   r  	filenamesr  r  r  s          r-   r  zSettings._read_layoutst  sY    &&t,	! 	(H""8Z8B##B'	(
 l(<==r/   c           	         d }|rVt         j                  j                  |      r6t        |      }	 t	        j
                  |      j                  } G d d      } |       }|j                  d   j                  }||v r|j                  |      nd}||_
        ||_        | j                  |d      |_        t        | j                  |d            |_        t        | j                  |d            |_        | j                  |d      |_        |j                  j%                         ||j%                         f|_        d	|_        ||_        |j7                          |S # t,        $ r0}	t.        j1                  d
|dt3        |	             d }Y d }	~	Fd }	~	wt4        $ r0}	t.        j1                  dt3        |	      d|       d }Y d }	~	}d }	~	ww xY w)Nc                       e Zd Zy))Settings._read_layout.<locals>.LayoutInfoN)r   r   r   r   r/   r-   
LayoutInforB    s    r/   rC  r   i  sectionr   r,  r-  TzXML in r  zkey z required in )r&   r'   existsr   r   parsedocumentElement
attributesr[   indexr   r  _get_dom_stringr  r>  r   r,  r-  lowerr:  r  r  r   r?   r@   r   KeyErrorclose)
r;   r  r  r  file_objectdom_noderC  r   sort_priorityexs
             r-   r+  zSettings._read_layout  s   x0#H-K"==5EE&&\((.44#%#3 !+ 0 0 49= &$($8$89$M!t33HiHI
d**8]CD  008D	!00668-T$(!! 	  +b/JK R(STs$   DE 	G'&FG&G		Gc                 Z    | j                  |      r| j                  |   j                  S |S r8   )hasAttributerH  r[   )rO  	attributedefaults      r-   rJ  zSettings._get_dom_string  s,      +&&y1777r/   c                 &   g }	 t        j                  |      }|D ]b  }|j                  d      s |j                  t        j
                        s4|j                  t         j                  j                  ||             d |S # t        $ r g }Y vw xY w)Nz.sok)	r&   listdirr  endswithr)   r  r  r'   r(   )r;   r'   r  filesr  s        r-   r=  zSettings._find_layouts  s    	JJt$E  	=H  (  !=!=>rww||D(;<	=   	E	s   B BBc                      yNFr   )r;   treeviewargss      r-    on_layout_view_select_cursor_rowz)Settings.on_layout_view_select_cursor_row  s    r/   c                      y r8   r   r;   r\  r'   view_columns       r-   on_layout_view_row_activatedz%Settings.on_layout_view_row_activated  s    r/   c                 ^    | j                         }|r|t        _        | j                          y r8   )r  r)   r  rh  r;   rB   r  s      r-   on_layout_view_cursor_changedz&Settings.on_layout_view_cursor_changed  s'    446%-F"""$r/   c                     | j                   j                         }|r;|j                         d   }|r&| j                  j	                  || j
                        S y r   )r   r   r   r  ro   r  r;   r   r   s      r-   r  z%Settings.get_selected_layout_filename  sX    ,,.!!#A&B--77484L4LN Nr/   c                     | j                   j                         }|r1|j                         d   }|r| j                  j	                  ||      S y r   )r   r   r   r  ro   )r;   	col_indexr   r   s       r-   r  z"Settings.get_selected_layout_value  sK    ,,.!!#A&B--77IFFr/   c                    	 t        t        d      | j                        }|sy t        j                  |      }t
        j                  j                  |      sn%t        d|      }t        || j                        rn|| j                         }|s
t               }|j                  ||       |j                  t        _        | j                          y )NzEnter a name for the new theme:z;This theme file already exists.
'{filename}'

Overwrite it?)r  )r   r>  r  r   build_user_filenamer&   r'   rE  r  r   get_selected_themesave_asr  r)   theme_filenamerl  )r;   rB   new_namer  r  themes         r-   on_new_theme_button_clickedz$Settings.on_new_theme_button_clicked  s    -34dkkCH 44X>L77>>,/  3(46H ($++>   '')GEh) %r/   c                 l   | j                         }|r!|j                  s| j                  |      rt        d      }nt        d      }t	        || j
                        }|dk(  rt        j                  j                  |j                        rt        j                  |j                         | j                  |      }|r|j                  t        _        n*| j                  |      }|r|j                  ndt        _        | j                          | j                         }|r|j                          y y y y y )Nz)Reset selected theme to Onboard defaults?zDelete selected theme?Tr   )rl  	is_systemget_hidden_themer>  r   r  r&   r'   rE  r  remover)   rn  find_neighbor_themerl  apply)r;   rB   rp  r  replyhidden_theme
near_themes          r-   on_delete_theme_button_clickedz'Settings.on_delete_theme_button_clicked  s   '')$$U+HI56,Xt{{CE}77>>%..1IIenn-  $44U;,8,A,AF) "&!9!9%!@J/9 -7,?,??A ) %%' //1KKM )  )5r/   c                     | j                         }t        |      D ]L  \  }}|j                  |d   j                  k(  s#|t        |      dz
  k  r||dz      d   c S ||dz
     d   c S  y )Nr   r   )get_sorted_themes	enumeratebasenamer  r;   rp  r4  itpls        r-   rv  zSettings.find_neighbor_theme	  su    '')' 	*FAs~~Q0s6{1}$!!A#;q>)!!A#;q>)	* r/   c                 6    |j                         t        _        y r8   )r   r)   ro  r  s     r-   (on_system_theme_tracking_enabled_toggledz1Settings.on_system_theme_tracking_enabled_toggled  s    /5/@/@/B,r/   c                 $    | j                          y r8   customize_themer  s     r-   !on_customize_theme_button_clickedz*Settings.on_customize_theme_button_clicked      r/   c                 $    | j                          y r8   r  r`  s       r-   on_theme_view_row_activatedz$Settings.on_theme_view_row_activated  r  r/   c                     | j                         }|r%|j                          |j                  t        _        | j                          y r8   )rl  rw  r  r)   rn  update_theme_buttons)r;   rB   rp  s      r-   on_theme_view_cursor_changedz%Settings.on_theme_view_cursor_changed  s4    '')KKM$)NNF!!!#r/   c                 f   t        | j                  j                               D cg c]  }|d   j                  s|d   s| }}t        | j                  j                               D cg c]  }|d   j                  r|d   r| }}t	        |d       t	        |d       z   S c c}w c c}w )Nr   r   c                 <    | d   j                   j                         S Nr   rA   rK  r;  s    r-   rT   z,Settings.get_sorted_themes.<locals>.<lambda>'  s    qtyy/@ r/   r<  c                 <    | d   j                   j                         S r  r  r;  s    r-   rT   z,Settings.get_sorted_themes.<locals>.<lambda>(  s    !A$))//*; r/   )listr4  valuesrs  r>  )r;   rP   rs  r  s       r-   r}  zSettings.get_sorted_themes#  s     $T[[%7%7%9 :U1adnnPQRSPTQU	U 2 2 45VaadnnPQRSPTVVi%@Ad ;<= 	= VVs   B) B)+B. B.B.c                     | j                         }t        |      D ]%  \  }}|j                  |d   j                  k(  s#|c S  y)Nr   )r}  r~  r  r  s        r-   find_theme_indexzSettings.find_theme_index*  sF    '')v& 	EAc~~Q0	 r/   c                 ^   | j                         }|r
| j                  |j                     d   }t        | |      }|j	                         }||k(  rkt
        j                  d|j                  z         t        j                  j                  |j                        rt        j                  |j                         nb||k(  s]|j                  |j                  |j                         |j                  t        _        t
        j                  d|j                  z         | j!                          y )Nr   zDeleting theme '%s'zSaved theme '%s')rl  r4  r  ThemeDialogr  r?   r  r  r&   r'   rE  ru  rm  rA   r)   rn  rl  )r;   rp  system_themer6  modified_themes        r-   r  zSettings.customize_theme1  s    '');;u~~6q9L u-F#ZZ\N-2U^^CD77>>%..1IIenn-#u,&&u~~uzzB(6(?(?%/%..@Ar/   c                     | j                   j                  t        j                         t        j	                          | j                          y r8   )r'  r{   r)   ro  
load_themern  )r;   rP   s     r-   rq  z)Settings.on_system_theme_tracking_changedG  s8    11<<(.(L(L	Nr/   c                 l    | j                         }|t        j                  k7  r| j                          y y r8   )get_selected_theme_filenamer)   rn  rl  )r;   rn  selecteds      r-   rn  zSettings.on_theme_changedM  s/    335v,,,!!# -r/   c                 ,   t        j                  t        t              | _        | j                  j                  | j                         t        j                         | _        t        j                  j                  t        j                  j                  t        j                              d   }d }| j                         D ]  \  }}| j                  j!                  t#        |j$                  |j&                        |j(                  f      }|j                  |k(  s[| j                  j+                         }|r|j-                  |       |} |r6| j                  j/                  |      }| j                  j1                  |       | j3                          y r  )r   	ListStorer   	themeListr#  	set_modelr   load_merged_themesr4  r&   r'   splitextr  r)   rn  r}  r  r4   rA   rs  r  r   r   get_pathscroll_to_cellr  )r;   theme_basenameit_selectionrp  ry  r   r   r'   s           r-   rl  zSettings.update_themeListR  s,   sC0!!$..1..0 ww 0 01F1F GHK 	"&"8"8": 	"E,&&)%**eooF() *B ~~/oo335OOB'!	" >>**<8DOO**40!!#r/   c                    | j                         }|rB| j                  |      s|j                  r%| j                  j	                  t        d             n$| j                  j	                  t        d             | j                  j                  t        |      xr |j                          | j                  j                  t        |             y )N_Reset_Delete)	rl  rt  rs  r%  	set_labelr>  r  r  r&  r;   rp  s     r-   r  zSettings.update_theme_buttonsl  s    '')d++E2eoo$$..q{; $$..q|<  ..tE{/R5???RS##11$u+>r/   c                 @    |r| j                   |j                     d   S y r   )r4  r  r  s     r-   rt  zSettings.get_hidden_themez  s     ;;u~~.q11r/   c                     | j                         }|r_t        j                  j                  t        j                  j	                  |            d   }|| j
                  v r| j
                  |   d   S y r  )r  r&   r'   r  r  r4  )r;   r  r  s      r-   rl  zSettings.get_selected_theme  s^    335ww''(8(8(BCAFH4;;&{{8,Q//r/   c                     | j                   j                         }|r1|j                         d   }|r| j                  j	                  |d      S y r   )r#  r   r   r  ro   rg  s      r-   r  z$Settings.get_selected_theme_filename  sG    oo++-!!#A&B~~//A66r/   )r   r8   )r   )r   )Jr   r   r   r  r  r  r  r!  r<   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  rh  r  r  r   r  r  r  rg  r"  r  r7  r  r+  staticmethodrJ  r=  r^  rb  re  r  r  rq  r{  rv  r  r  r  r  r}  r  r  rq  rn  rl  r  rt  rl  r  r   r/   r-   r   r      s    O !"#xt	B0(,%5%
393%
D%
>:+)Z%8CMAG,
*D$F%)MW?,.:M.	>!F  

% 0">C$= , $
$4?
r/   c                   B    e Zd ZdZ	 dZdZdZd Zd Zd Z	d Z
d	 Zd
 Zy)r`   Word Suggestions r   r   r   c                 
    t         j                   |       | _         fd} j                  dt        j
                  d|        j                  dt        j
                  d|        fd} j                  dt        j
                  d|        j                  d	t        j
                  d
|        fd} j                  dt        j
                  d|       d }d } j                  dt        j
                  d||        j                  dt        j
                  d       d }d } j                  dt        j
                  d||        j                  dt        j
                  d||        fd} j                  dt        j
                  d|       t                _	         j                  j                  d j                          j                          t        j
                  j                   fd       y ) Nc                     |r+t         j                  j                  j                        sd}t	        | ||       j                  j                          y r[  )r)   check_gnome_accessibility	_settingsr  ra   r   r   rS   r[   r;   s      r-   r   z#PageAutoShow.__init__.<locals>._set  s?    33DNN4I4IJBU#NN002r/   auto_show_toggle1ru  r  auto_show_toggle2c                 `    j                  | ||       j                  j                          y r8   )r   r  r   r   s      r-   r   z#PageAutoShow.__init__.<locals>._set  s%    ))-eDNN002r/   #reposition_method_floating_comboboxreposition_method_floating!reposition_method_docked_comboboxreposition_method_dockedc                 T    t        | ||       j                  j                          y r8   ra   r  r   r   s      r-   r   z#PageAutoShow.__init__.<locals>._set  s    M3.NN002r/   hide_on_key_press_togglehide_on_key_pressc                 T    t        | |      }t        t        t        |                  S r8   )rV   r   r   r  )rR   rS   durations      r-   r   z#PageAutoShow.__init__.<locals>._get  s"    }c2Hs5?+,,r/   c                 4    t        |      }t        | ||       y r8   )floatra   )rR   rS   r[   r  s       r-   r   z#PageAutoShow.__init__.<locals>._set  s    U|HM31r/    hide_on_key_press_pause_comboboxhide_on_key_press_pause$tablet_mode_detection_enabled_toggletablet_mode_detection_enabledc                 ,    t        t        | |            S r8   )r   rV   r   s     r-   r   z#PageAutoShow.__init__.<locals>._get  s    wr3'((r/   c                 X    	 t        |      }t        | ||       y # t        $ r d}Y w xY wr  )r   
ValueErrorra   r   s      r-   r   z#PageAutoShow.__init__.<locals>._set  s4    E
 BU#  s    ))tablet_mode_enter_key_entrytablet_mode_enter_keyr   tablet_mode_leave_key_entrytablet_mode_leave_keyc                 T    t        | ||       j                  j                          y r8   r  r  s      r-   r   z#PageAutoShow.__init__.<locals>._set  s    BU#NN002r/   (keyboard_device_detection_enabled_toggle!keyboard_device_detection_enabledzkeyboard-detection-changedc                 $    j                         S r8   _update_keyboard_devices_viewr   s    r-   rT   z'PageAutoShow.__init__.<locals>.<lambda>  s    d88: r/   )r6   r<   r  r~   r)   r  r   r\   r   _udev_trackerrF   %_on_keyboard_device_detection_changedr  /keyboard_device_detection_exceptions_notify_add)r;   r   r,   r   r   s   `    r-   r<   zPageAutoShow.__init__  s   tW-!	3 	+((),0 	 	2 	+((),0 	 	2	3 	C$..0L26 	 	8 	A$..0J26 	 	8	3 	2((*=,0 	 	2	-	2 	@$..0I"D	*
 	>((*I	K	)	$ 	5((*A,0,0 	 	2 	5((*A,0,0 	 	2	3 	B((*M,0 	 	2 )]""#?#'#M#M	O 	**,HH:	<r/   c                    | j                  d      }|j                         sZt        j                  t        t
        t              }|j                  |       t        j                         }t        j                  t        d            }t        j                  t        d            }|j                  |       |j                  |       |j                  |       t        j                         }|j                  |d       |j                  |d| j                         t        j                         }|j                  |d       |j                  |d| j                         |j!                  d| j"                  |       |j                         }| j%                  || j&                        }|j)                          | j*                  j-                         }	|	D ]R  }
|
j.                  t0        j2                  j4                  v }|
j.                  ||
j6                  f}|j9                  |       T | j;                  || j&                  |       y )	Nkeyboard_detection_devices_viewIgnoreDeviceFr}   Tr2   rx   )rC   r   r   r  r   r  r  rj  r>  ri  CellRendererToggle
pack_startadd_attributeCOL_INCLUDErk  COL_TEXTrF   _on_keyboard_device_toggledr   COL_IDr  r  get_keyboard_devicesr   r)   r  $keyboard_device_detection_exceptionsrA   r  r   )r;   r   r   	column_idcolumn_togglecolumn_textcellrenderer_togglecellrenderer_textselected_iddevicesdeviceignorets                r-   r  z*PageAutoShow._update_keyboard_devices_view  s   xx9:~~MM#tS1ENN5!**,I  ..q{;M ,,Qx[9Ky)}-{+"%"8"8":$$%8%@''#Xt/?/?A !$ 4 4 6""#4d;%%&7O''4;;UD  224E$$99; 	FYY  EEFFFFKK0ALLO		 	!!$[Ar/   c                 $    | j                          y r8   r  )r;   detecteds     r-   r  z2PageAutoShow._on_keyboard_device_detection_changed!  s    **,r/   c                     ||   | j                      }||   | j                      }|D ]$  }|| j                      |k(  s||| j                  <   & | j                  ||       y r8   )r  r  _ignore_keyboard_device)r;   rB   r'   r   	device_idr  rows          r-   r  z(PageAutoShow._on_keyboard_device_toggled$  so    $K,	4[!1!122  	/C4;;9,(.D$$%	/ 	$$Y7r/   c                     t         j                  j                  d d  }|r||vr$|j                  |       n	 |j	                  |       |t         j                  _        y # t
        $ r Y !w xY wr8   )r)   r  r  r  ru  r  )r;   r  r  
exceptionss       r-   r  z$PageAutoShow._ignore_keyboard_device0  sj    %%JJ1M

*!!),!!), AK=  s   A 	A*)A*c                    | j                  d      j                  t        j                  j                         | j                  d      j                  t        j                  j                         t        j                         }| j                  d      j                  |        | j                  d      j                  |       | j                  d      j                  t        j                                | j                  d      j                  t        j                                t        j                         }| j                  d      j                  |       | j                  d      j                  |       | j                  d	      j                  |       | j                  d
      j                  t        j                                y )Nr  r  reposition_method_floating_boxreposition_method_docked_boxr  hide_on_key_press_boxauto_show_general_boxauto_show_convertibles_box auto_show_external_keyboards_boxkeyboard_device_detection_box)rC   r{   r)   r  ru  r  set_visibler  can_set_auto_hideis_auto_hide_enabledis_auto_show_enabled$is_keyboard_device_detection_enabled)r;   dockedauto_show_enableds      r-   r  zPageAutoShow.update_ui>  sE    	$%001A1A1I1IJ$%001A1A1I1IJ**,12>>6zJ/0<<VD+,]63356()]66689"779()778IJ-.<<=NO34],-01]6FFHIr/   N)r   r   r   r   r  r  r  r<   r  r  r  r  r  r   r/   r-   r`  r`    s;    )FKHZ<x+BZ-
8KJr/   r`  c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)rb  r  c                     t         j                   |       | _         fd} j                  d      j	                  d fd        j                  dt        j                  d|        j                  d      j	                  d fd        j                  dt        j                  d	        j                  d
t        j                  d        j                  dt        j                  d        j                  dt        j                  d        j                  dt        j                  d        j                  dt        j                  dd d         j                  dt        j                  dd d        d }d } j                  dt        j                  d||        j                  dt        j                  d        j                           j                          y )Nc                     |rKt         j                  j                  j                        s"d}j	                  d      j                  |       t        | ||       y )NFenable_word_suggestions_toggle)r)   r  r  r  rC   r{   ra   r  s      r-   _set_word_suggestions_enabledzCPageWordSuggestions.__init__.<locals>._set_word_suggestions_enabled`  sF    33DNN4I4IJ9:#E*BU#r/   r  rx   c                 $    j                         S r8   
_update_uir   s    r-   rT   z.PageWordSuggestions.__init__.<locals>.<lambda>i      DOO4E r/   ru  r  auto_learn_togglec                 $    j                         S r8   r  r   s    r-   rT   z.PageWordSuggestions.__init__.<locals>.<lambda>o  r  r/   
auto_learnpunctuation_assistance_togglepunctuation_assistanceauto_capitalization_toggleauto_capitalizationauto_correction_toggleauto_correctionenable_spell_check_togglespelling_suggestions_enabledlanguage_button_togglewordlist_buttonsc                 "    | j                         S r8   )can_show_language_buttonr   s     r-   rT   z.PageWordSuggestions.__init__.<locals>.<lambda>~  s    //1 r/   c                 :    | j                  | j                  |      S r8   )show_wordlist_buttonKEY_ID_LANGUAGEr   s      r-   rT   z.PageWordSuggestions.__init__.<locals>.<lambda>  s    ++B,>,>F r/   r   pause_learning_button_togglec                 "    | j                         S r8   )can_show_pause_learning_buttonr   s     r-   rT   z.PageWordSuggestions.__init__.<locals>.<lambda>  s    557 r/   c                 :    | j                  | j                  |      S r8   )r&  KEY_ID_PAUSE_LEARNINGr   s      r-   rT   z.PageWordSuggestions.__init__.<locals>.<lambda>  s    ++B,D,DeL r/   c                 "    | j                         S r8   ) can_show_more_predictions_buttonr   s     r-   r   z*PageWordSuggestions.__init__.<locals>._get  s    6688r/   c                 t    | j                  | j                  |       | j                  | j                  |       y r8   )r&  KEY_ID_NEXT_PREDICTIONSKEY_ID_PREVIOUS_PREDICTIONSr   s      r-   r   z*PageWordSuggestions.__init__.<locals>._set  s.    ##B$>$>F##B$B$BEJr/   more_predictions_button_toggle!learning_behavior_paused_comboboxlearning_behavior_paused)r6   r<   r  rC   connect_afterr~   r)   word_suggestionswptyping_assistancer   !_init_spell_checker_backend_combor  )r;   r   r,   r  r   r   s   `     r-   r<   zPageWordSuggestions.__init__\  s   tW-!	$ 	12y*EF8//.K 	 	M 	$%y*EF+"II|	5 	7"II'?	A4"446K	M0"446G	I3"335S	U 	0##%7#2#G	 	 	H 	6##%7#8#M	 	 	N	9	K 	8//1C,0,0 	 	2
 	A//1K	M
 	..0r/   c                    | j                  d      }|j                  t        j                  j                         |j                  d| j                         t        j                  j                  | j                         y )Nspell_check_backend_comboboxrK   )	rC   r{   r)   r8  spell_check_backendrF   on_spell_check_backend_changedspell_check_backend_notify_add_backend_notifyr;   combos     r-   r9  z5PageWordSuggestions._init_spell_checker_backend_combo  sY    7811EEFi!D!DE  ??@T@TUr/   c                 J    |j                         t        j                  _        y r8   )r   r)   r8  r<  r  s     r-   r=  z2PageWordSuggestions.on_spell_check_backend_changed  s    7=7H7H7J  4r/   c                 D    | j                  d      j                  |       y )Nr;  )rC   r{   r;   modes     r-   r?  z#PageWordSuggestions._backend_notify  s    /0;;DAr/   c                     | j                  d      j                  t        j                                | j                  d      j                  t        j                  j
                         y )Nword_suggestions_general_box1r(  )rC   r  r)   are_word_suggestions_enabledr6  r  r  s    r-   r  zPageWordSuggestions._update_ui  sE    01vBBDE/0v66AABr/   N)	r   r   r   r   r<   r9  r=  r?  r  r   r/   r-   rb  rb  Y  s$    AFVKBCr/   rb  c                   "    e Zd ZdZd Zd Zd Zy)r  z Dialog "Docking Settings" c                    t        d      }t        j                  | |       | j                  dt        j
                  d       | j                  dt        j
                  j                  d       | j                  dt        j
                  j                  d       | j                  dt        j
                  d       | j                  d	t        j
                  d
       | j                          y )Nsettings_docking_dialogdocking_shrink_workarea_toggledocking_shrink_workarealandscape_dock_expand_toggledock_expandportrait_dock_expand_toggledocking_edge_comboboxdocking_edgedocking_monitor_comboboxdocking_monitor)
r.   r6   r<   r~   r)   r  	landscapeportraitr   r  r:   s     r-   r<   zDockingDialog.__init__  s    23tW-8'@	B6//	@5..	?5~	78'8	: 	r/   c                     | j                  d      }|j                  |       |j                          |j                          y Nr6  )rC   r4  r  r3  r;   parentr6  s      r-   r  zDockingDialog.run  s1    (#  (

r/   c                      y r8   r   r  s    r-   r  zDockingDialog.update_ui  r  r/   N)r   r   r   r   r<   r  r  r   r/   r-   r  r    s    %&r/   r  c                       e 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) r  z Customize theme dialog r   c                     | _         t        j                  |       _        t	        d      }t
        j                   |       |j                  d       _        |j                  d       _	        |j                  d       _
        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d	       _        |j                  d
       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _        |j                  d       _         fd} j7                  dt8        j:                  dd |        j=                           j                  j?                  |j@                          j                  jC                  tD        jF                         |jI                          y )Nsettings_theme_dialogcustomize_theme_dialogtheme_notebookkey_style_comboboxcolor_scheme_comboboxfont_comboboxfont_attributes_viewbackground_gradient_scalekey_roundness_scalekey_size_scalegradients_boxkey_fill_gradient_scalekey_stroke_gradient_scalekey_gradient_direction_scalekey_shadow_strength_scalekey_shadow_size_scalerevert_buttonsuperkey_label_comboboxsuperkey_label_size_checkbuttonsuperkey_label_modelc                 @    t        | ||       j                          y r8   )ra   update_sensivityr   s      r-   r   z"ThemeDialog.__init__.<locals>._set  s    M3.!!#r/   key_stroke_width_scalekey_stroke_width)%original_themer   deepcopyrp  r.   r6   r<   r>   r6  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rt   r)   theme_settingsr  r4  r  r~  r  current_pager  )r;   r   rp  r,   r   s   `    r-   r<   zThemeDialog.__init__  s=   #]]5)
01tW-(()AB%001AB")"4"45I"J%,%7%78O%P"$//@$+$6$67M$N!)0););/J*L&#*#5#5/D$F %00/?A$//@'.'9'9/H(J$)0););/J*L&,3,>,>/M-O))0););/J*L&%,%7%7/F&H"$//@'.'9'9/H(J$/6/A/A,M0O,$+$6$67M$N!	$ 	0--/Ad	$ 	%%hoo6,,[-E-EF%r/   c                     | j                   j                  d       | j                   j                          t        j                          | j                   j                          | j                  S )NT)r6  	set_modalshowr   r  r3  rp  r  s    r-   r  zThemeDialog.run  sI     	d#
zzr/   c                 V   |t         j                  j                  k(  r	 || j                  j	                  | j
                        k(  rOt        j                  | j                        | _	        | j                          | j                  j                          y t        j                          y r8   )r   ResponseTypeDELETE_EVENTr6  get_response_for_widgetrn  r   rw  rv  rp  r  rw  r  )r;   r6  response_ids      r-   on_responsezThemeDialog.on_response  sx    #**777KK//0B0BCD t':':;DJNNJJr/   c                 H   d| _         | j                          | j                          | j                          | j	                          | j
                  j                  | j                  j                         | j                  j                  | j                  j                         | j                  j                  | j                  j                         | j                  j                  | j                  j                         | j                  j                  | j                  j                          | j"                  j                  | j                  j$                         | j&                  j                  | j                  j(                         | j*                  j                  | j                  j,                         | j/                          | j0                  j3                  t5        | j                  j7                                      | j9                          d| _         y )NTF)	in_updateupdate_key_styleListupdate_color_schemeListupdate_fontListupdate_font_attributesListre  rg   rp  background_gradientrf  roundrect_radiusrg  key_sizeri  key_fill_gradientrj  key_stroke_gradientrk  key_gradient_directionrl  key_shadow_strengthrm  key_shadow_sizeupdate_superkey_labelListrp  r{   r  get_superkey_size_grouprs  r  s    r-   r  zThemeDialog.update_ui&  si   !!#$$&'')&&001O1OP  **4::+F+FG%%djj&9&9:$$..tzz/K/KL&&	$**889))	$**;;<&&	$**889""	$**445&&(,,
4

 B B DEFr/   c                 J   | j                   j                  | j                  | j                  k(          | j                  j                  dk7  }| j
                  j                  |       | j                  j                  t        | j                  j                                      y )Nflat)	rn  r  rp  rv  	key_stylerh  rp  r  get_superkey_label)r;   has_gradients     r-   rs  zThemeDialog.update_sensivityA  su    ((TZZ4;N;N-N)NOzz++v5((6,,#mD)F)F)H$IJr/   c                    t        j                  t        t              | _        | j                  j                  | j                         t        j                         }| j                  j                          | j                  j                  |d       | j                  j                  |dd       t        d      dgt        d      dgt        d      d	gg| _        | j                  D ]W  \  }}| j                  j                  ||f      }|| j                  j                  k(  s=| j                  j                  |       Y y )
NTr$  r   Flatr  GradientgradientDishdish)r   r  r   key_style_listra  r  rk  r  r  r  r>  
key_stylesr  rp  r  set_active_iter)r;   cellrA   r   r   s        r-   r  z ThemeDialog.update_key_styleListI  s   !mmC4))$*=*=>##%%%'**46--dHa@ fIv.jM:6fIv.  	<HD"$$++T2J7BTZZ)))''77;	<r/   c                    t        j                  t        t              | _        | j                  j                  | j                         t        j                         }| j                  j                          | j                  j                  |d       | j                  j                  |dd       t        j                         | _        | j                  j                         }t        t!        | j                  j#                               d       D ]r  }| j                  j%                  t'        |j(                  |j*                        |j,                  f      }|j,                  |k(  sX| j                  j/                  |       t y )NTr$  r   c                     | j                   S r8   )rA   r;  s    r-   rT   z5ThemeDialog.update_color_schemeList.<locals>.<lambda>i  s
     r/   r<  )r   r  r   color_scheme_listrb  r  rk  r  r  r  r   get_merged_color_schemescolor_schemesrp  get_color_scheme_filenamer>  r  r  r  r4   rA   rs  r  r  )r;   r  color_scheme_filenamecolor_schemer   s        r-   r  z#ThemeDialog.update_color_schemeList^  s-   !$s3!7"",,T-C-CD##%""((*""--dD9""00xC(AAC $

 D D F"4(:(:(A(A(C#D'79 	?L''..&|'8'8,:P:PQ"++0- .B $$(==**::2>	?r/   c                    t        j                  t        t              | _        | j                  j                  | j                         t        j                         }| j                  j                          | j                  j                  |d       | j                  j                  |dd       | j                  j                  | j                  d        dt               vrDt        j                         }|j                         }|j                         a|j#                          t         D cg c]"  }|j%                         |j%                         f$ }}|j'                  d        t)        d      dfd	g|z   }t+        j,                  | j.                  j0                        }|j3                         }|D ]L  }| j                  j5                  |      }	|d
   |k(  s|d
   dk(  s/|r2| j                  j7                  |	       N y c c}w )NTr$  r   font_familiesc                     | d   S r  r   r;  s    r-   rT   z-ThemeDialog.update_fontList.<locals>.<lambda>  s
    AaD r/   r<  Defaultr   )-r  r   )r   r  r   	font_listrc  r  rk  r  r  r  set_row_separator_func font_combobox_row_separator_funcr5  DrawingAreacreate_pango_contextlist_familiesr  r3  get_namesortr>  r   FontDescriptionrp  key_label_font
get_familyr  r  )
r;   r  rB   contextfontfamiliesfdfamilyfr   s
             r-   r  zThemeDialog.update_fontListp  s   s3/$$T^^4##%  "%%dD1((x;11$($I$I$(	* ')+__&F113G#113MNN !./ ]]_dmmo6 / / 	.)y\2& "*+""4::#<#<= 	7A&&q)B!!
6""2226		7/s   .'Hc                 >    t        |j                  |d            dk(  S )Nr   r  )r   ro   )r;   r   iterdatas       r-   r  z,ThemeDialog.font_combobox_row_separator_func  s    5??434;;r/   c                    | j                   }|j                         st        j                  t        t
        t
              }|| _        |j                  |       t        j                  d      }t        j                  d      }|j                  |       |j                  |       t        j                         }|j                  |d       |j                  |dd       t        j                         }|j                  |d       |j                  |dd       |j                  d	| j                  |       |j!                         }|j#                          t%        j&                  | j(                  j*                        }|j-                         t$        j.                  j0                  k(  t3        d
      dg|j5                         t$        j6                  j8                  k(  t3        d      dg|j;                         t$        j<                  j>                  k(  t3        d      dgg}|D ]1  \  }	}
}|jA                  |	|
|f      }|dk(  s!|jC                  |       3 y )NToggleTextFr}   r   Tr2   r   rx   BoldboldItalicitalic	Condensed	condensedr   )"rd  get_columnsr   r  r  r   font_attributes_listr  rj  ri  r  r  r  rk  rF   on_font_attributesList_toggler   r  r   r  rp  r  
get_weightWeightBOLDr>  	get_styleStyleITALICget_stretchStretch	CONDENSEDr  r  )r;   r\  	liststorer  r  r  r  r  itemscheckedrA   r   r   s                r-   r  z&ThemeDialog.update_font_attributesList  s   ,,##%dC5I(1D%y)..x8M,,V4K""=1"";/"%"8"8":$$%8%@''(;XqI # 4 4 6""#4d;%%&7C''	!??L &&(	""4::#<#<=--/U\\%6%66F)V%,,.EKK$6$66H+x).."emm&=&==K.+/	 "' 	-GT2!!7D""56BRx((,	-r/   c                    | j                   j                  d        | j                  j                          dt	        d      gt	        d      t	        d      gg| _        | j
                  D ]"  \  }}| j                  j                  ||f       $ | j                  j                         }| j                   j                         j                  |r|nd       | j                   j                  | j                         y )Nr   r  u   zUbuntu Logo)ro  r  rq  r  r>  superkey_labelsr  rp  r  	get_childrW   )r;   labeldescrs      r-   r  z%ThemeDialog.update_superkey_labelList  s    $$..t4!!'')!#!I, 7!"51]+; < ! !00 	=LE5%%,,eU^<	= 

--/$$..099=B ;@HJ	L 	$$..t/H/HIr/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r  ro   r)   rx  r  rp  rs  r;   rB   r[   s      r-   $on_background_gradient_value_changedz0ThemeDialog.on_background_gradient_value_changed  ;    f&&()491).

&r/   c                     | j                   j                  | j                  j                         d      }|| j                  _        |t        j                  _        | j                          y r   )	r  ro   ra  get_active_iterrp  r  r)   rx  rs  r  s      r-   on_key_style_combobox_changedz)ThemeDialog.on_key_style_combobox_changed  sS    ##-- 33CCEaI$

*/'r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r   ro   r)   rx  r  rp  rs  )r;   rB   radiuss      r-   on_key_roundness_value_changedz*ThemeDialog.on_key_roundness_value_changed  s;    V%%'(17.&,

#r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r   ro   r)   rx  r  rp  rs  r  s      r-   on_key_size_value_changedz%ThemeDialog.on_key_size_value_changed  s;    F$$&').&#

r/   c                     | j                   j                  | j                  j                         d      }| j                  j                  |       |t        j                  _        | j                          y r   )
r  ro   rb  r  rp  set_color_scheme_filenamer)   rx  r  rs  rd  s      r-    on_color_scheme_combobox_changedz,ThemeDialog.on_color_scheme_combobox_changed  sY    ))33#99IIKAO

,,X66>3r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r   ro   r)   rx  r  rp  rs  r  s      r-   "on_key_fill_gradient_value_changedz.ThemeDialog.on_key_fill_gradient_value_changed  s;    F$$&'27/',

$r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r   ro   r)   rx  r  rp  rs  r  s      r-   $on_key_stroke_gradient_value_changedz0ThemeDialog.on_key_stroke_gradient_value_changed  s;    F$$&'491).

&r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r   ro   r)   rx  r  rp  rs  r  s      r-   'on_key_gradient_direction_value_changedz3ThemeDialog.on_key_gradient_direction_value_changed  s;    F$$&'7<4,1

)r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r  ro   r)   rx  r  rp  rs  r  s      r-   $on_key_shadow_strength_value_changedz0ThemeDialog.on_key_shadow_strength_value_changed   r  r/   c                     t        |j                               }|t        j                  _        || j
                  _        | j                          y r8   )r  ro   r)   rx  r  rp  rs  r  s      r-    on_key_shadow_size_value_changedz,ThemeDialog.on_key_shadow_size_value_changed  s;    f&&()05-%*

"r/   c                 ^    | j                   s!| j                          | j                          y y r8   )r  store_key_label_fontrs  r  s     r-   on_font_combobox_changedz$ThemeDialog.on_font_combobox_changed  s&    ~~%%'!!# r/   c                 b    ||   d    ||   d<   | j                          | j                          y r  )r  rs  )r;   rB   r'   r   s       r-   r  z)ThemeDialog.on_font_attributesList_toggle  s2    "4[^+dA!!#r/   c                     | j                   j                  | j                  j                         d      }| j                  D ]  }|d   s	|d|d   z   z  } || j
                  _        |t        j                  _        y )Nr   r   r  r   )	r  ro   rc  r  r  rp  r  r)   rx  )r;   r  r  s      r-   r  z ThemeDialog.store_key_label_font  sq    ~~''(:(:(J(J(LQO,, 	%C1vc!f$	% %)

!/3,r/   c                 D    | j                          | j                          y r8   store_superkey_label_overriders  r  s     r-   "on_superkey_label_combobox_changedz.ThemeDialog.on_superkey_label_combobox_changed      **,r/   c                 D    | j                          | j                          y r8   r  r  s     r-   *on_superkey_label_size_checkbutton_toggledz6ThemeDialog.on_superkey_label_size_checkbutton_toggled#  r  r/   c                    | j                   j                         j                         }t        j                  j
                  dk(  r|j                  d      }|sd }| j                  j                         }|rt        j                  nd}| j                  j                  ||       t        | j                  j                        t        j                  _        y )Nr   utf8r   )ro  r  r`   sysversion_infomajordecoderp  r   r)   SUPERKEY_SIZE_GROUPrp  set_superkey_labeldictkey_label_overridesrx  )r;   r  r  
size_groups       r-   r   z)ThemeDialog.store_superkey_label_override'  s    ,,668AAC!!Q&LL(EE66AAC3:V//


%%eZ8*.tzz/M/M*N 	1r/   c                     |t         _        y r8   )r  ry  r  s       r-   on_theme_notebook_switch_pagez)ThemeDialog.on_theme_notebook_switch_page3  s
    #+ r/   N)!r   r   r   r   ry  r<   r  r  r  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r/   r-   r  r    s    "L5&n6K<*?$ 7D<%-NJ$          $
 
4  
O,r/   r  c                   V   e Zd ZdZ	 dZdZdZ	 dZdZdZ	dZ
dZdZ	 ej                   ed      ej                    ed	      ej"                   ed
      ej$                   ed      ej&                   ed      ej(                   ed      iZ	 ej                  gej                  gej                  ej(                  gej                   ej"                  ej$                  ej&                  ej(                  gg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 )!r  z Scanner settings dialog r   r   r   r   r      StepLeftRightUpDownActivatec                    t        d      }t        j                  | |       t               | _        | j                  j                  d| j                         d | _        d | _        | j                          | j                          | j                          t        j                  }| j                  d|d       | j                  d|d       | j                  d|d       | j                  d|d       | j                  d|d       | j                  d	|d
       | j                  d|d       | j                  d|d       | j                  d|d       | j                  d|d       y )Nsettings_scanner_dialogzdevice-eventcyclescycles_overscancycles_stepscanstep_intervalintervalbacktrack_intervalforward_intervalinterval_fastbacktrack_steps	backtrack	user_scan	alternatedevice_detach)r.   r6   r<   r   device_managerrF   _on_device_eventpointer_selectedmapping_rendererinit_input_devicesinit_scan_modesinit_device_mappingr)   rt  ri   r~   )r;   r,   rt  s      r-   r<   zScannerDialog.__init__Z  s(   23tW--/##ND4I4IJ $ $ 	!  "..x(3('8<('8<<+WjA)7OD(';?Wk:Wk:/Br/   c                 .    t         j                  d       y )NzScannerDialog.__del__())r?   debugr  s    r-   __del__zScannerDialog.__del__u  s    /0r/   c                     | j                  d      }|j                  |       |j                          |j                          t        j
                  j                          d | _        y rX  )rC   r4  r  r3  r)   rt  disconnect_notificationsr)  rY  s      r-   r  zScannerDialog.runx  sI    (#  (

//1"r/   c                 r   | j                  d      }|j                  t        j                  j                         |j                  d| j                         t        j                  j                  | j                         | j                  d      j                  t        j                  j                         y )Nscan_mode_comborK   scan_mode_notebook)
rC   r{   r)   rt  rE  rF   on_scan_mode_changedmode_notify_add_scan_mode_notifyr~  r@  s     r-   r.  zScannerDialog.init_scan_modes  sw    *+,,-i!:!:;&&t'='=>%&778K8KLr/   c                 J    |j                         t        j                  _        y r8   )r   r)   rt  rE  r  s     r-   r8  z"ScannerDialog.on_scan_mode_changed  s    $//1r/   c                     | j                  d      j                  |       | j                  d      j                  |       | j                          y )Nr6  r7  )rC   r{   r~  update_device_mappingrD  s     r-   r:  zScannerDialog._scan_mode_notify  s>    "#..t4%&77=""$r/   c                    | j                  d      }|j                  t        j                  t        t        t
        j                               |j                  | j                  d      d| j                         |j                  | j                  d      d| j                         | j                          |j                  d| j                         t        j                  j                  | j                          y )Ninput_device_comboinput_device_icon_rendererz	icon-nameinput_device_text_rendererr2   rK   )rC   r  r   r  r   r
   TYPE_PYOBJECTr  COL_ICON_NAMECOL_DEVICE_NAMEupdate_input_devicesrF   on_input_device_changedr)   rt  device_name_notify_add_device_name_notifyr@  s     r-   r-  z ScannerDialog.init_input_devices  s    -.c30E0EFGDHH%AB'););	=DHH%AB"D$8$8	: 	!!#i!=!=>--d.F.FGr/   c                    | j                         }| j                  d      j                         }|j                          |j	                  dt
        j                  d g       |D ]1  }|j                         s|j	                  d|j                  |g       3 |D ]1  }|j                         r|j	                  d|j                  |g       3 | j                  t        j                  j                         y )Nr?  zinput-mousezinput-keyboard)list_devicesrC   r   r  r  r   DEFAULT_NAME
is_pointerrA   select_current_devicer)   rt  device_name)r;   r  r   devs       r-   rE  z"ScannerDialog.update_input_devices  s    ##%-.88:mZ%<%<dCD 	=C~~mSXXs;<	=  	@C>>#.#>?	@ 	""6>>#=#=>r/   c                    | j                  d      }|j                         }|j                         }|y |t        j                  k(  r9d| _        | j                  d      j                  d       |j                  |       n|r|j                  || j                        }|rZ||j                         k(  rG|j                         | _        | j                  d      j                  d       |j                  |       n|j                  |      }|r| j                  r'| j                  j                  d| j
                         y y )Nr?  Tr(  Fpointer-mode)rC   r   r   r   rK  r+  r  r  ro   
COL_DEVICEget_config_stringrL  r   r,  set_property)r;   rA   rA  r   r   r  s         r-   rM  z#ScannerDialog.select_current_device  s   -.!!!#::***$(D!HH_%33E:!!"%T__=df&>&>&@@,2,=,=,?D)HH_-;;DA))"-__R(    !!..~/3/D/DF !r/   c                 \   |j                         }|j                         }|y dt        j                  _        |j                  || j                        }|rY|j                         t        j                  _        | j                  d      j                  d       |j                         | _        nJt        j                  t        j                  _        | j                  d      j                  d       d| _        | j                  r'| j                  j!                  d| j                         y y )NFr(  TrQ  )r   r  r)   rt  r(  ro   rR  rS  rN  rC   r  rL  r+  r   rK  r,  rT  )r;   rA  r   r   r  s        r-   rF  z%ScannerDialog.on_input_device_changed  s    !""$:',$T__5)/)A)A)CFNN&HH_%33D9$*$5$5$7D!)3)@)@FNN&HH_%33E:$(D!  !!..~/3/D/DF !r/   c                 F    | j                  |       | j                          y r8   )rM  r=  )r;   rA   s     r-   rH  z!ScannerDialog._device_name_notify  s    ""4(""$r/   c                 j   | j                          t               | _        | j                  j                  d| j                         | j                  j                  d| j                         | j                  j                  d| j                         | j                  d      }|j                  | j                  d       |j                  | j                  d| j                         |j                  | j                  d| j                         |j                  | j                  d| j                         y )	NrQ  mapping-editedmapping-clearedcolumn_mappingFbuttonrS   visible)r=  CellRendererMappingr,  rT  r+  rF   on_mapping_editedon_mapping_clearedrC   r  r  
COL_BUTTONCOL_KEYCOL_VISIBLE)r;   r   s     r-   r/  z!ScannerDialog.init_device_mapping  s    ""$ 3 5**>4;P;PQ%%&68N8NO%%&79P9PQ*+$//7T22HdooNT22E4<<HT22It?O?OPr/   c                    | j                  d      }|j                         }|j                          |j                  d       }|j	                  || j
                  t        d      | j                  t        j                  j                         | j                  t        j                  j                     D ]  }|j                  |      }|j	                  || j
                  | j                  |   | j                   || j"                  d| j                  t        j                  j$                  	       | j&                  rK| j)                  |t        j                  j*                        }|s|j	                  || j,                  |       | j)                  |t        j                  j.                        }|s|j	                  || j0                  |        |j3                          y )Ndevice_mappingzAction:T)rC   r   r  r  r  COL_NAMEr>  
COL_WEIGHTr   r  r  supported_actionsr)   rt  rE  action_names
COL_ACTIONrb  NORMALr+  get_value_for_actiondevice_button_mapr`  device_key_mapra  r  )r;   r   r   r$  actionr%  r[  rS   s           r-   r=  z#ScannerDialog.update_device_mapping  sb   xx() ll4(		+--9//5<<#4#4	6 ,,V^^-@-@A 	=Fk2JIIjmmT%6%6v%>oov&&oou||':':	< $$22V^^==?IIj$//6B//V^^::<IIj$,,<#	=& 	r/   c                    | j                  d      }|j                  |      }|y |r5| j                  }t        j                  j
                  j                         }n4| j                  }t        j                  j                  j                         }|j                  d      }	d }
|	rO||j                  |	|      k(  r&|j                  |	|      }
|j                  |	|d       n|j                  |	      }	|	rO|j                  |||       |
|v r||
= |j                  || j                        }|||<   |j                         D ]  \  }}||k7  s||k(  s||=  n |r|t        j                  _        y |t        j                  _        y )Ndevice_mapping_modelz0:0r   )rC   get_iter_from_stringr`  r)   rt  rl  r   ra  rm  ro   r  r   ri  r  )r;   r  r'   r[   pointer_moder   r   coldev_mapdup_itdup_valrn  kvs                 r-   r^  zScannerDialog.on_mapping_edited  s[   /0''-://Cnn66;;=G,,Cnn3388:G++E244//&#6		&#q)__V,F  			"c5!g T__5MMO 	DAqEza6kAJ	
 /6FNN,,3FNN)r/   c                    | j                  d      }|j                  |      }|y |r|j                  || j                        }|j	                  || j                  d       |t
        j                  j                  v rAt
        j                  j                  j                         }||= |t
        j                  _        y y |j                  || j                        }|j	                  || j                  d       |t
        j                  j                  v rAt
        j                  j                  j                         }||= |t
        j                  _
        y y )Nrp  r   )rC   rq  ro   r`  r  r)   rt  rl  r   ra  rm  )r;   r  r'   rr  r   r   	old_valuer   s           r-   r_  z ScannerDialog.on_mapping_cleared6  s   /0''-:DOO<IIIb$//1-FNN<<<~~77<<>O370 =
 DLL9IIIb$,,*FNN999~~4499;O04- :r/   c                     | j                   j                         D cg c]  }t        j                  |      r| c}S c c}w r8   )r)  get_devicesr   
is_useable)r;   ds     r-   rJ  zScannerDialog.list_devicesK  s>    ..::< .a((+  . 	. .s   >c                 ~    |j                   t        j                  t        j                  fv r| j	                          y y r8   )xi_typer   DeviceAddedDeviceRemovedrE  r  s     r-   r*  zScannerDialog._on_device_eventO  s5    ==[44(668 8%%'8r/   c                 F    |j                         D ]  \  }}||k(  s|c S  y r8   )r  )r;   rn  rt  rw  rx  s        r-   rk  z"ScannerDialog.get_value_for_actionT  s'    MMO 	DAqF{	r/   N))r   r   r   r   rC  rD  rR  re  ri  r`  ra  rb  rf  r   ACTION_STEPr>  ACTION_LEFTACTION_RIGHT	ACTION_UPACTION_DOWNACTION_ACTIVATErh  rg  r<   r2  r  r.  r8  r:  r-  rE  rM  rF  rH  r/  r=  r^  r_  rJ  r*  rk  r   r/   r-   r  r  7  sl   # MOJ"HJJGKJ'))&	))&	**'
''$))&	--*@L /#//0#//0#//#335#//#00#--#//#33	5	7C61#M2%
H?"F2F,%Q>&4P5*.(
r/   r  ic            
           e Zd ZdZ ed      ej                  dddedej                  f ed      ej                  dddedej                  f ed      e	dddej                  fiZ
 ed      ej                  j                  d	eee	ff ed
      ej                  j                  d	ee	ffiZ f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 )r]  zF
    Custom cell renderer that displays device buttons as labels.
    r[  r   r   rS   rQ  TrX  NrY  c                     t         t        |   d       d| _        d| _        d| _        d | _        d | _        d | _        d | _	        d | _
        d| _        d| _        d| _        d | _        | j                          y )NT)editabler   )superr]  r<   rS   r[  rr  _edit_widget_grab_widget_grab_pointer_grab_keyboard_path_bp_id_kp_id_se_id_sizing_label_update_text_props)r;   	__class__s    r-   r<   zCellRendererMapping.__init__o  s|    !4141@   !"
!!r/   c                     |j                   dk(  r| j                  S |j                   dk(  r| j                  S |j                   dk(  r| j                  S y Nr[  rS   rQ  )rA   r[  rS   rr  r;   props     r-   do_get_propertyz#CellRendererMapping.do_get_property  sJ    99 ;;YY%88OYY.($$$ )r/   c                     |j                   dk(  r|| _        n-|j                   dk(  r|| _        n|j                   dk(  r|| _        | j	                          y r  )rA   r[  rS   rr  r  r;   r  r[   s      r-   do_set_propertyz#CellRendererMapping.do_set_property  sH    99 DKYY%DHYY.( %D!r/   c           	      j   | j                   r| j                  dk(  s| j                   sm| j                  dk(  r^| j                  dt        j
                  j                         | j                  dt        j                  dddd             t        d      }n| j                  dt        j
                  j                         | j                  dd       | j                   r&d	j                  t        d
      | j                        }nt        j                  | j                        }| j                  d|       y )Nr   stylezforeground-rgbag333333?g      ?Disabledzforeground-setFz{} {!s}Buttonr2   )rr  r[  rS   rT  r   r  r  r   RGBAr>  rj  r1   keyval_name)r;   r2   s     r-   r  z&CellRendererMapping._update_text_props  s    $++"2!!dhh!mgu{{'9'9:/#sC1MNZ=Dgu{{'9'9:.6   ''(T[[Atxx0&$'r/   c                     t        j                  | j                  | j                         t        j                         }| j                  j                  |       | j                  j                  |       y r8   )r   device_grab_remover  r  get_current_event_timeungrabr  )r;   rB   times      r-   _on_edit_widget_unrealizez-CellRendererMapping._on_edit_widget_unrealize  sT    t00$2D2DE))+!!$'""4(r/   c                 J   | j                   j                  | j                         | j                   j                  | j                         | j                   j                  | j                         | j
                  j                          | j
                  j                          y r8   )r  handler_disconnectr  r  r  r  editing_doneremove_widgetr  s    r-   _editing_donez!CellRendererMapping._editing_done  sn    ,,T[[9,,T[[9,,T[[9&&('')r/   c                     | j                          | j                  r2| j                  d| j                  |j                  | j                         y)NrX  T)r  rr  emitr  r[  )r;   rB   r  s      r-   _on_button_pressz$CellRendererMapping._on_button_press  s?    II&jj%,,0A0ACr/   c                 j   | j                          t        j                  |j                        }|t        j                  k(  r(| j                  d| j                  | j                         y|t        j                  k(  r	 y| j                  s(| j                  d| j                  || j                         y)NrY  rX  T)	r  r   keyval_to_lowerkeyvalKEY_BackSpacer  r  rr  
KEY_Escape)r;   rB   r  r[   s       r-   _on_key_pressz!CellRendererMapping._on_key_press  s    ##ELL1C%%%II'T5F5FG  cnn$
  $$		***eT->->@r/   c                     | j                          | j                  r7d|j                  z   }| j                  d| j                  || j                         y)Nr   rX  T)r  rr  	directionr  r  )r;   rB   r  r[  s       r-   _on_scroll_eventz$CellRendererMapping._on_scroll_event  sH    (FII&jj&$*;*;=r/   c                     | j                   $t        j                  t        d            | _         | j                   j	                         S )NPress a button...)r  )r  r   Labelr>  get_preferred_widthr  s     r-   do_get_preferred_widthz*CellRendererMapping.do_get_preferred_width  s:    %!$3F1G!HD!!5577r/   c                    |sy |j                         }|j                         }|j                         t        j                  j
                  k(  r|}	|j                         }
n|}
|j                         }	|	j                  |j                         t        j                  j                  dt        j                  j                  d |      t        j                  j                  k7  ry |
j                  |j                         t        j                  j                  dt        j                  j                  d |      t        j                  j                  k7  r|	j!                  |       y t#        j$                  ||
d       || _        |
| _        |	| _        || _        |j/                  d| j0                        | _        |j/                  d| j4                        | _        |j/                  d| j8                        | _        |j=                         }|j?                  t"        j@                  jB                        }|jE                  t"        j@                  jB                        }| jF                  rtI        d      }ntI        d      }t#        jJ                  |t"        jL                  jN                  t"        jL                  jP                        }|jS                  t"        j@                  jT                  |       tW        |      | _,        | jX                  j[                  t"        j@                  jT                  |       | jX                  j/                  d	| j\                         | jX                  j_                          | jX                  S )
NFTzbutton-press-eventzkey-press-eventzscroll-eventr  zPress a key...)r  halignvalign	unrealize)0get_time
get_device
get_sourcer   InputSourceKEYBOARDget_associated_devicegrab
get_windowGrabOwnershipWINDOW	EventMaskKEY_PRESS_MASK
GrabStatusSUCCESSBUTTON_PRESS_MASKr  r   device_grab_addr  r  r  r  rF   r  r  r  r  r  r  get_style_contextget_background_color
StateFlagsSELECTED	get_colorrr  r>  r  AlignSTARTCENTERoverride_colorrj  EditableBoxr  override_background_colorr  r  )r;   r  rB   r'   bg_area	cell_areastater  r  r_  pointerr  bgfgr2   r  s                   r-   do_start_editingz$CellRendererMapping.do_start_editing  s   ~~!!##//":"::H224GG335H==**,**11555t% ),(>(>? <<))+))00%77d$ (+~~'='=> OOD!FGT2
$&"nn%94;P;PQnn%68J8JKnn^T5J5JK((*''(?(?@__S^^445()D%&D		!$!$!1!13 	S^^22B7'.33CNN4I4I2N!!+t/M/MN""$   r/   )r   r   r   r   r   r
   TYPE_INT
MAX_GINT32PARAM_READWRITEr  __gproperties__SignalFlagsRUN_LASTr   __gsignals__r<   r  r  r  r  r  r  r  r  r  r  __classcell__r  s   @r-   r]  r]  \  s    Hg.>.>-/Q
A-4-D-D.F E
g.>.>-/Q
A-4-D-D.F N+tRT-4-D-D/FHO )*g.A.A.J.J-1Cd3C.E*+g.A.A.J.J-1C;.@BL
"&%"($)*87!r/   r]  c                   h     e Zd ZdZ ed      edddej                  fiZd	 fd	Z	d Z
d Zd Z xZS )
r  zC
    Container that implements the Gtk.CellEditable interface.
    editing-canceledr   Fc                 `    t         t        |           d| _        |r| j	                  |       y y r[  )r  r  r<   editing_canceledrs  )r;   childr  s     r-   r<   zEditableBox.__init__	  s+    k4)+ %HHUO r/   c                 :    |j                   dk(  r| j                  S y Nr  rA   r  r  s     r-   r  zEditableBox.do_get_property%	  s     99**((( +r/   c                 2    |j                   dk(  r|| _        y y r  r  r  s      r-   r  zEditableBox.do_set_property)	  s    99**$)D! +r/   c                      y r8   r   r  s     r-   r  zEditableBox.do_start_editing-	  r  r/   r8   )r   r   r   r   r   r  r
   r  r  r<   r  r  r  r  r  s   @r-   r  r  	  sF     ./$B292I2I2K MO)*r/   r  __main__T)Ir   
__future__r   r   r   r&   r  r   
subprocessr   xml.parsers.expatr   xml.domr   dbus.mainloop.glibr   ImportErrorOnboard.Versionr	   gi.repositoryr
   r   r   r   Onboard.LayoutLoaderSVGr   Onboard.SnippetViewr   Onboard.Appearancer   r   Onboard.Scannerr   r   Onboard.XInputr   r   Onboard.utilsr   r   r   r   Onboard.WindowUtilsr   r   Onboard.UDevTrackerr   r$   logging	getLoggerr?   Onboard.Configr   r    r)   r.   r4   objectr6   r   r`  rb  r  r  r  r  rk  r]  EventBoxCellEditabler  r   r  r   r/   r-   <module>r     s]  0 $ A A 	 
   ( 	 0   2 2 3 / 6 8 @, ,= /  
'

J
' 4	M'F M'`m} m`FJ= FJRVC- VCrM @b,- b,J`M `F	 
v!#.. v!r#,, 0 0 8 zA [H  		s   E EE