
    f                         d dl mZmZmZ d dlmZ  e        d dlmZ d dlm	Z	 d dl
mZ  e       Zd dlZ ej                  d      Z ed      Z ed	      Z G d
 dej&                        Zy)    )divisionprint_functionunicode_literals)require_gi_versions)Gtk)show_error_dialog)ConfigNSnippetViewz<Enter label>z<Enter text>c                   Z    e Zd Zd Zd Zd Zd Zd ZddZddZ	dd	Z
d
 Zd Zd Zd Zy)r
   c                    t         j                  j                  |        | j                  d       t        j                  dd      }t        j
                  d|      }|j                  d| j                         t        j                  t        d      |d	      }| j                  |       t        j                  d
      }|j                  d| j                         t        j                  t        d      |d	      }|j                  d       |j                  || j                         | j                  |       t        j                  d
      }|j                  d| j                          t        j                  t        d      |d	      }|j                  d       |j                  || j"                         | j                  |       | j%                          t&        j)                  | j*                         y )NT   i  )step_incrementupper)editable
adjustmenteditedzButton Numberr   )titlecell_renderertext)r   zButton LabelzSnippet Text   )r   TreeView__init__set_headers_visible
AdjustmentCellRendererSpinconnecton_number_editedTreeViewColumn_append_columnCellRendererTexton_label_edited
set_expandset_cell_data_funclabel_data_funcon_text_editedtext_data_funcupdateconfigsnippets_notify_addon_snippets_changed)selfadjnumber_renderernumber_columntext_renderertext_columns         5/usr/lib/python3/dist-packages/Onboard/SnippetView.pyr   zSnippetView.__init__,   s   d#  &nnAT:..M$*?*?@**?1C9H013 	=),,d;h(<(<=((q/@7D./1 	t$&&}d6J6JK;',,d;h(;(;<((q/@7D./1 	t$&&}d6I6IJ;'""4#;#;<    c                 $    | j                          y N)r(   )r,   values     r2   r+   zSnippetView.on_snippets_changedO   s    r3   c                    | j                         }t        j                  t        t        t              | _        | j                  | j
                         | j
                  j                  dt        j                  j                         t        t        j                  j                               D ]&  \  }\  }}| j
                  j                  |||f      }( | j                  |       y Nr   )get_selected_numberr   	ListStoreintstr
list_store	set_modelset_sort_column_idSortType	ASCENDINGsortedr)   snippetsitemsappendselect_number)r,   last_numbernumberlabelr   its         r2   r(   zSnippetView.updateR   s    ..0--S#6t'**1cll.D.DE%+FOO,A,A,C%D 	?!FMUD''(=>B	? 	;'r3   c                 \    |j                  |d      }|st        }|j                  d|       y )Nr   r   )	get_valueDEFAULT_SNIPPET_LABELset_propertyr,   treeviewcolumnr   modeliterdatar6   s          r2   r%   zSnippetView.label_data_func_   s*    a()E""651r3   c                 \    |j                  |d      }|st        }|j                  d|       y )Nr   r   )rL   DEFAULT_SNIPPET_TEXTrN   rO   s          r2   r'   zSnippetView.text_data_funce   s*    a((E""651r3   Nc                    | j                         }	 t        |      }||k(  ry |t
        j                  v rt        t	        d      |z         y t
        j                  |   \  }}t
        j                  |       t
        j                  |||f       | j                  |       y # t        $ r t        t	        d             Y y w xY w)NzMust be an integer numberzSnippet %d is already in use.)
r9   r;   
ValueErrorr   r   r)   rC   del_snippetset_snippetrF   )	r,   cellpathnew_text	user_datarH   
new_numberrI   r   s	            r2   r   zSnippetView.on_number_editedk   s    ))+	XJ  (a ?@:MNoof-t6":t}5:&!  	a ;<=	s   B" "CCc                     | j                         }|/t        j                  |   \  }}t        j                  |||f       y y r5   r9   r)   rC   rY   r,   rZ   r[   	new_valuer]   rH   rI   r   s           r2   r"   zSnippetView.on_label_edited   sA    ))+~ //&1KE4v	4'89 r3   c                     | j                         }|/t        j                  |   \  }}t        j                  |||f       y y r5   r`   ra   s           r2   r&   zSnippetView.on_text_edited   sA    ))+~ //&1KE4vy'9: r3   c                     t        t        j                  j                               }|rt	        |      nd}|dz   }t        j                  |||f       | j                  |       y )Nr   )listr)   rC   keysmaxrY   rF   )r,   rI   r   numbers
max_numberr^   s         r2   rE   zSnippetView.append   sQ    v++-.%,S\"
!^
:t}5:&r3   c                 >   | j                         }|d }t        t        j                  j	                               }t        |      D ]-  \  }}||k(  s|t        |      dz
  k  r	||dz      }&||dz
     }/ | j                  |       t        j                  |       y y )Nr   )	r9   rB   r)   rC   rg   	enumeratelenrF   rX   )r,   remove_numberrF   ri   irH   s         r2   remove_selectedzSnippetView.remove_selected   s    002$ !MV__1134G&w/ 5	6]*3w<>)(/!(/!5 }- }- %r3   c                     | j                         }|r1|j                         \  }}|r| j                  j                  |d      S y r8   )get_selectionget_selectedr=   rL   )r,   selrQ   rR   s       r2   r9   zSnippetView.get_selected_number   sB      ",,.MUD00q99r3   c                 4   | j                         }|j                         }|rv||j                  |d      k(  rL| j                         j	                  |       | j
                  j                  |      }| j                  |       y |j                  |      }|ruy y r8   )		get_modelget_iter_firstrL   rr   select_iterr=   get_pathscroll_to_cell	iter_next)r,   rH   rQ   rR   r[   s        r2   rF   zSnippetView.select_number   s     ##%q11""$006//5##D)??4(D r3   r5   )__name__
__module____qualname__r   r+   r(   r%   r'   r   r"   r&   rE   rp   r9   rF    r3   r2   r
   r
   *   s?    !=F(22'.:;'.$	)r3   )
__future__r   r   r   Onboard.Versionr   gi.repositoryr   Onboard.WindowUtilsr   Onboard.Configr	   r)   logging	getLogger_loggerr   rM   rU   r   r
   r   r3   r2   <module>r      sj   * B A /    1 "	 
'

M
* /* .) O)#,, O)r3   