
    FQ	f7                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZm	Z	 dZ
 G d	 d
ej                        Z G d dej                        Zedk(  r ed      Z ed      ej"                  j$                   ed      ej"                  j&                  fZej+                  e       ej-                  d       ej/                  d        eej3                                 eej5                                yy))KeyboardShortcutSelectionKeyboardShortcutSelectionDialog    )Gdk)GObject)Gtk)IBus)Pango)_N_   c                        e Zd Zd fd	Zd ZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )r   c                     t         t        |   t        j                  j
                         | j                          | j                  |       y )Norientation)superr   __init__r   OrientationVERTICAL#_KeyboardShortcutSelection__init_uiset_shortcuts)self	shortcuts	__class__s     )/usr/share/ibus/setup/keyboardshortcut.pyr   z"KeyboardShortcutSelection.__init__'   s=    '7OO44 	8 	69%    c                 "   t        j                  t        j                  t        j                              | _        t        j                         }t        j                  t        d      |d      }| j
                  j                  |       | j
                  j                  d| j                         t        j                         }|j                  t         j                  j                  t         j                  j                         |j!                  d       |j#                  | j
                         |j%                  t         j&                  j(                         | j+                  |ddd       t        j,                  t         j.                  j0                  	      }t        j2                  t        d
            }|j5                  t         j6                  j8                         |j;                  dd       |j+                  |ddd       t        j<                         | _        | j>                  j                  d| j@                         |j+                  | j>                  ddd       t        jB                  d      | _"        | jD                  j                  d| jF                         |j+                  | jD                  ddd       | j+                  |ddd       t        j,                  t         j.                  j0                  	      }t        j2                  t        d            }|j5                  t         j6                  j8                         |j;                  dd       |j+                  |ddd       t        jH                  dd      }g | _%        | jJ                  jM                  dt         jN                  jQ                  d      tR        jT                  jV                  f       | jJ                  jM                  dt         jN                  jQ                  d      tR        jT                  jX                  f       | jJ                  jM                  dt         jN                  jQ                  d      tR        jT                  jZ                  f       | jJ                  jM                  dt         jN                  jQ                  d      tR        jT                  j\                  f       | jJ                  jM                  dt         jN                  jQ                  d      tR        jT                  j^                  f       | jJ                  jM                  dt         jN                  jQ                  d       tR        jT                  j`                  f       | jJ                  D ]#  \  }}}	|j                  d!| jb                  |       % |je                  | jJ                  d   d"   dd"dd"       |je                  | jJ                  d"   d"   d"ddd"       |je                  | jJ                  d   d"   dd#dd"       |je                  | jJ                  d#   d"   dd"d"d       |je                  | jJ                  d   d"   d"dd"d       |je                  | jJ                  d$   d"   dd#d"d       |j+                  |ddd       | j+                  |ddd       t        j,                  t         j.                  j0                  	      }t        jB                  t        d%      d&      | _3        | jf                  ji                  d       | jf                  j                  d| jj                         |j+                  | jf                  ddd       t        jB                  t        d'      d&      | _6        | jl                  ji                  d       | jl                  j                  d| jn                         |j+                  | jl                  ddd       t        jB                  t        d(      d&      | _8        | jp                  ji                  d       | jp                  j                  d| jr                         |j+                  | jp                  ddd       | j+                  |ddd       y ))NmodelzKeyboard shortcutsr   )textzcursor-changedd   T   r   z	Key code:)labelg        g      ?Fznotify::textz...clickedz
Modifiers:   )n_rows	n_columnsControl_ControlAltA_ltShift_ShiftMeta_MetaSuperS_uperHyper_Hypertoggled         _Add)r"   use_underline_Apply_Delete):r   TreeView	ListStorer   TYPE_STRING)_KeyboardShortcutSelection__shortcut_viewCellRendererTextTreeViewColumnr
   append_columnconnect;_KeyboardShortcutSelection__shortcut_view_cursor_changed_cbScrolledWindow
set_policy
PolicyType	AUTOMATICset_min_content_heightaddset_shadow_type
ShadowTypeIN
pack_startBoxr   
HORIZONTALLabelset_justifyJustificationLEFTset_alignmentEntry)_KeyboardShortcutSelection__keycode_entry3_KeyboardShortcutSelection__keycode_entry_notify_cbButton*_KeyboardShortcutSelection__keycode_button5_KeyboardShortcutSelection__keycode_button_clicked_cbTable,_KeyboardShortcutSelection__modifier_buttonsappendCheckButtonnew_with_mnemonicr   ModifierTypeCONTROL_MASK	MOD1_MASK
SHIFT_MASK	META_MASK
SUPER_MASK
HYPER_MASK6_KeyboardShortcutSelection__modifier_button_toggled_cbattach&_KeyboardShortcutSelection__add_buttonset_sensitive1_KeyboardShortcutSelection__add_button_clicked_cb(_KeyboardShortcutSelection__apply_button3_KeyboardShortcutSelection__apply_button_clicked_cb)_KeyboardShortcutSelection__delete_button4_KeyboardShortcutSelection__delete_button_clicked_cb)
r   renderercolumnscrolledwindowhboxr"   tablenamebuttonmasks
             r   	__init_uiz#KeyboardShortcutSelection.__init_ui-   s     #||g&9&9: <'')##A&:$;XaP**62$$%5t7]7]^++-!!#..":":CNN<T<TU--c24//0&&s~~'8'89dA6 ww3??#=#=>		!K.1#++001C%udA."yy{$$^T5S5ST,,dD!< #

5 9%%i1Q1QR--udA>eT1- ww3??#=#=>		!L/2#++001C%udA.		1!4"$&&	(+(I(I*(U(+(8(8(E(E(G 	H 	&&(+(I(I&(Q(+(8(8(B(B(D 	E 	&&(+(I(I((S(+(8(8(C(C(E 	F 	&&(+(I(I'(R(+(8(8(B(B(D 	E 	&&(+(I(I((S(+(8(8(C(C(E 	F 	&&(+(I(I((S(+(8(8(C(C(E 	F
 #'"9"9 	OD&$NN9d&G&GN	O 	T,,Q/2Aq!Q?T,,Q/2Aq!Q?T,,Q/2Aq!Q?T,,Q/2Aq!Q?T,,Q/2Aq!Q?T,,Q/2Aq!Q?tT1-eT1- ww3??#=#=>JJqy7;=''.!!)T-I-IJ))5$:!jj89=?))%0##It/M/MN++UD!<"zz!I,:> @**51$$Y0O0OP,,eT1=eT1-r   c                     |d k(  rg }| j                   j                         }|j                          g }|D ]1  }||vs|j                  d      }|||   d<   |j	                  |       3 y Nr   )r>   	get_modelclearinsertr]   )r   r   r   addedshortcutits         r   r   z'KeyboardShortcutSelection.set_shortcuts   sn    I$$..0! 	'Hu$\\!_'b	!X&		'r   c                 z    | j                   j                         }	 |D cg c]  }|d   	 c}S c c}w #  g cY S xY wrz   )r>   r{   )r   r   is      r   get_shortcutsz'KeyboardShortcutSelection.get_shortcuts   s?    $$..0	"'(QAaD(((	Is   4 /4 4 :c                 H   | j                   j                         }t        |      t        kD  ry || j	                         v ry |j                  d      }|||   d<   | j                  j                  d       |j                  |      }| j                   j                  |d d       y )Nr   F)
r>   r{   len
MAX_HOTKEYr   r}   ri   rj   get_path
set_cursor)r   r   r   r   paths        r   add_shortcutz&KeyboardShortcutSelection.add_shortcut   s    $$..0u:
"t))++\\!_b	!''.~~b!''dE:r   c                 h   g }| j                   j                         }t        j                  |      dk(  ry | j                  D ](  \  }}}|j                         s|j                  |       * |j                  d      r|dd  }dj                  |D cg c]
  }d|z   dz    c}      }||z  }|S c c}w )Nr   r
   r4    <>)	rV   get_textr   keyval_from_namer\   
get_activer]   
startswithjoin)r   	modifierskeycoderu   rv   rw   mr   s           r   __get_shortcut_from_buttonsz5KeyboardShortcutSelection.__get_shortcut_from_buttons   s    	&&//1(A-"&"9"9 	'D&$  "  &	' c"abkG779=aC!GcM=>G >s   B/c                     t        j                  |      \  }}|dk(  r|dk(  ry | j                  D ].  \  }}}||z  r|j                  d       |j                  d       0 | j                  j                  |j                  dd      d          y )Nr   TFr   r4   )r   accelerator_parser\   
set_activerV   set_textrsplit)r   r   keyvalstateru   rv   rw   s          r   __set_shortcut_to_buttonsz3KeyboardShortcutSelection.__set_shortcut_to_buttons   s    //9Q;5A:"&"9"9 	)D&$t|!!$'!!%(		)
 	%%hooc1&=b&ABr   c                     | j                   j                         }| j                   j                         \  }}|d k(  ry ||j                         d      d   S rz   )r>   r{   
get_cursorget_indicesr   r   r   rq   s       r   __get_selected_shortcutz1KeyboardShortcutSelection.__get_selected_shortcut   sV    $$..0++668f4<T%%'*+A..r   c                     | j                   j                         }| j                   j                         \  }}|||d      d<   | j                          y rz   )r>   r{   r   8_KeyboardShortcutSelection__update_add_and_apply_buttons)r   r   r   r   rq   s        r   __set_selected_shortcutz1KeyboardShortcutSelection.__set_selected_shortcut   sL    $$..0++668f$d1gq++-r   c                     | j                   j                         }| j                   j                         \  }}|j                  |j	                  |             | j                          y N)r>   r{   r   removeget_iterr   r   s       r   __del_selected_shortcutz1KeyboardShortcutSelection.__del_selected_shortcut   sO    $$..0++668fU^^D)*++-r   c                     | j                         }|d k7  r-| j                  |       | j                  j                  d       y | j                  j                  d       y )NTF)1_KeyboardShortcutSelection__get_selected_shortcut3_KeyboardShortcutSelection__set_shortcut_to_buttonsrn   rj   )r   treeviewr   s      r   !__shortcut_view_cursor_changed_cbz;KeyboardShortcutSelection.__shortcut_view_cursor_changed_cb   sN    //1t**84  ..t4  ..u5r   c                 @   | j                         }| j                         }| j                         }|d k7  xr ||vxr t        |      t        k  }| j
                  j                  |       ||k7  xr |d k7  xr |d k7  xr ||v}| j                  j                  |       y r   )5_KeyboardShortcutSelection__get_shortcut_from_buttonsr   r   r   r   ri   rj   rl   )r   r   selected_shortcutr   can_add	can_applys         r   __update_add_and_apply_buttonsz8KeyboardShortcutSelection.__update_add_and_apply_buttons   s    335 88:&&(	d" 2)+2)nz1 	 	''0 11 .$.%-. I- 	 	)))4r   c                 $    | j                          y r   r   )r   rv   ru   s      r   __modifier_button_toggled_cbz6KeyboardShortcutSelection.__modifier_button_toggled_cb       ++-r   c                 $    | j                          y r   r   )r   entryargs      r   __keycode_entry_notify_cbz3KeyboardShortcutSelection.__keycode_entry_notify_cb   r   r   c                    g t        j                  | j                         t         j                  j                        t        d      }j                  |       j                  t        d             t        j                         }fd}t        j                  t        j                  t        j                  t        j                        }t        j                  |      }|j                  d       |j                  |       |j!                  d       t        j"                         }t        j$                  t         j&                  j(                  d	      }|j+                  d
|       |j-                  |d       |j/                  |dd       |j/                  |dd       |j/                  |dd       |j1                  |       |j3                  d       }	j5                         }
|
j7                  |ddd       |j9                          j;                         }j=                          |t         j>                  j@                  k7  stC              dk  ry d   }d   }d   }| jD                  D ].  \  }}}||z  r|jG                  d       |jG                  d       0 t        jH                  d |||      }|jK                  dd      }| jL                  jO                  |jQ                  dd      d          y )N)transient_forbuttonsz^Please press a key (or a key combination).
The dialog will be closed when the key is released.z)Please press a key (or a key combination)c                     j                  |       j                  |       j                  |       j                  t        j                  j                         y r   )r]   responser   ResponseTypeOK)cr   r   r   r   dlgouts        r   __accel_edited_cbzPKeyboardShortcutSelection.__keycode_button_clicked_cb.<locals>.__accel_edited_cb  s?    JJvJJuJJwLL)),,-r   r   F   T)
accel_modeeditablezaccel-editedz
accel-modsr   z	accel-keyr4   r   r$   r5   z	<Primary>z	<Control>r   r   ))r   MessageDialogget_toplevelButtonsTypeCLOSEr
   
set_markup	set_titlerD   r<   r   TYPE_INT	TYPE_UINTr;   set_headers_visiblerI   rH   r@   CellRendererAccelCellRendererAccelModeOTHERrB   rM   add_attributerA   r]   get_message_areapack_endshow_allrundestroyr   r   r   r\   r   accelerator_name_with_keycodereplacerV   r   r   )r   rv   messagesw+_KeyboardShortcutSelection__accel_edited_cbr   
accel_viewrq   rp   r   areaidr   r   r   ru   rw   r   r   r   s                     @@r   __keycode_button_clicked_cbz5KeyboardShortcutSelection.__keycode_button_clicked_cb   s   0A0A0C*-//*?*?A J KwaCDE!	. g..%//%//1 \\%0
&&u-
z
!!"%##%((C4M4M4S4S268):;(D)X|Q7X{A6Xy!4  (\\$##%b$a(
WWY!!$$$C1QAa&"&"9"9 	)D&$t|!!$'!!%(		) 44T5;5<5:< ##K=%%hooc1&=b&ABr   c                 F    | j                         }| j                  |       y r   )r   r   r   rv   r   s      r   __add_button_clicked_cbz1KeyboardShortcutSelection.__add_button_clicked_cb1  s    335(#r   c                 F    | j                         }| j                  |       y r   )r   1_KeyboardShortcutSelection__set_selected_shortcutr   s      r   __apply_button_clicked_cbz3KeyboardShortcutSelection.__apply_button_clicked_cb5  s    335$$X.r   c                     | j                          | j                  j                  d       | j                  j                  d       y )NF)1_KeyboardShortcutSelection__del_selected_shortcutrn   rj   rl   )r   rv   s     r   __delete_button_clicked_cbz4KeyboardShortcutSelection.__delete_button_clicked_cb9  s6    $$&**51))%0r   r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   rC   r   rg   rW   rZ   rk   rm   ro   __classcell__r   s   @r   r   r   &   sb    &`.D'
;	C/..65..7Cr$/1r   r   c                   4     e Zd Zd fd	ZddZd Zd Z xZS )r   c                     t         t        |   |||       t               | _        | j
                  j                  | j                  ddd       | j
                  j                          y )N)titler   flagsFTr   )r   r   r   r   0_KeyboardShortcutSelectionDialog__selection_viewvboxrM   r   )r   r   r   r   r   s       r   r   z(KeyboardShortcutSelectionDialog.__init__?  sY    -t=}e 	> 	M 9 ;		T22E4C		r   c                 :    | j                   j                  |       y r   )r   r   )r   	shotrcutss     r   r   z-KeyboardShortcutSelectionDialog.set_shortcutsF  s    ++I6r   c                 :    | j                   j                  |       y r   )r   r   )r   shotrcuts     r   r   z,KeyboardShortcutSelectionDialog.add_shortcutI  s    **84r   c                 6    | j                   j                         S r   )r   r   )r   s    r   r   z-KeyboardShortcutSelectionDialog.get_shortcutsL  s    $$2244r   )NNr   r   )r   r   r   r   r   r   r   r   r   s   @r   r   r   >  s    755r   r   __main__zSelect test)r   _Cancel_OKzControl+Shift+spaceN)__all__gi.repositoryr   r   r   r   r	   i18nr
   r   r   rN   r   Dialogr   r   r   r   CANCELr   r   add_buttonsr   r   printr   r    r   r   <module>r     s   .
  !    
V1 V1p5cjj 5& z
)-
@C|S--44x)),,.GOOG*+d	3779	3  r   