
    ODg9                         d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 dZ
 G d dej                        Z G d d      Zy)    N)GLibGioGtkGdkPango)PythonConsoleOutFilec                       e Zd ZddiZdZdZdZdZdZi f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dZddZd Zd Zy)r   z
grab-focusoverridezMonospace 11z"org.x.viewer.plugins.pythonconsolezorg.gnome.desktop.interfacezcommand-colorzerror-colorc                    t         j                  j                  |        t        j                  j                  | j                        | _        | j                  j                  d| j                         t        j                  j                  | j                        | _        | j                  j                  d| j                         | j                         | _        | j                  j                  d| j                         | j                  t         j                   j"                  t         j                   j$                         | j'                  t         j(                  j*                         t        j,                         | _        | j1                          | j.                  j3                  d       | j.                  j5                  t         j6                  j8                         | j;                  | j.                         | j.                  j=                          | j.                  j?                         }|jA                  d      | _!        |jA                  d      | _"        |jA                  d      | _#        | j                  | j                  d        tI        jJ                  d      | _&        || _'        d| _(        |jS                  d|jU                         d       |jW                  |jU                         d	       |jS                  d
|jU                         d       dg| _,        d| _-        d| _.        | jX                  | jN                  d<   t_        | t`        jb                  je                         | jB                        | _1        t_        | t`        jf                  je                         | jD                        | _3        | j.                  j                  d| jh                         |j                  d| jj                         y )NchangedTnormalerrorcommandz^\s+F
input-line>>> input r   __history__zkey-press-eventzmark-set)6r   ScrolledWindow__init__r   SettingsnewCONSOLE_KEY_BASE	_settingsconnecton_color_settings_changedSETTINGS_INTERFACE_DIR_interface_settingson_settings_changedget_profile_settings_profile_settings
set_policy
PolicyTypeNEVER	AUTOMATICset_shadow_type
ShadowTypeINTextViewviewreconfigureset_editableset_wrap_modeWrapMode	WORD_CHARaddshow
get_buffer
create_tagr   r   r   recompile_PythonConsole__spaces_pattern	namespaceblock_commandcreate_markget_end_iterinserthistoryhistory_poscurrent_commandr	   sysstdoutfilenostderr"_PythonConsole__key_press_event_cb_PythonConsole__mark_set_cb)selfr8   bufs      1/usr/lib/xviewer/plugins/pythonconsole/console.pyr   zPythonConsole.__init__3   s   ##D)))$*?*?@y$*H*HI#&<<#3#3D4O4O#P   ((D4L4LM!%!:!:!<&&y$2J2JK,,cnn.F.FGS^^../LLN			t$		 6 67		ii""$nnX.nnW-
~~i0 	&&t~~t< "

7 3"" 	c&6&6&8$?

3##%v.!1!1!3T: t!(,}% dCJJ$5$5$7EdCJJ$5$5$7D 			+T-F-FGJ 2 23    c                 T    t         j                  j                  | j                        S N)r   r   r   r   rF   s    rH   r!   z"PythonConsole.get_profile_settingsh   s    || 5 566rI   c                 8    | j                   j                          y rK   )r+   
grab_focusrL   s    rH   do_grab_focuszPythonConsole.do_grab_focusl   s    		rI   c                    d }| j                   j                  d      }| j                  j                  d      r|}n| j                  j                  d      }	 t	        j
                  |      }|d k7  r| j                  j                  |       y y #  || j                  k7  rP||k7  r	 t	        j
                  |      }n#  Y nxY w|d k(  r(	 t	        j
                  | j                        }n#  Y nxY wY xY w)Nzmonospace-font-namezuse-system-fontfont)	r   
get_stringr"   get_booleanr   FontDescriptionDEFAULT_FONTr+   modify_font)rF   	font_descsystem_font	font_names       rH   r,   zPythonConsole.reconfigureo   s    	..99:OP!!--.?@#I..99&AI	--i8I II!!), 	D---+$)$9$9+$F	$$)$9$9$:K:K$L	s<   B C2&B<;C2<C >
C2	C)(C2)C-+C2c                 $    | j                          y rK   )r,   rF   settingskeys      rH   r    z!PythonConsole.on_settings_changed   s    rI   c                     | j                   j                  d|j                  | j                               | j                  j                  d|j                  | j
                               y )N
foreground)r   set_propertyrR   CONSOLE_KEY_ERROR_COLORr   CONSOLE_KEY_COMMAND_COLORr[   s      rH   r   z'PythonConsole.on_color_settings_changed   sL    

h.A.A$B^B^._`!!,0C0CDDbDb0cdrI   c                     d | _         y rK   )r8   rL   s    rH   stopzPythonConsole.stop   s	    rI   c                    t        j                         }|j                  |z  }|j                  t        j
                  k(  r.|t        j                  j                  k(  r| j                          y |j                  t        j                  k(  rs|t        j                  j                  k(  rU|j                         }|j                  d      }|j                  |      }|j                         }|j                  ||d      }	| j                  |	z   dz   | _        | j!                  |	       |j                         }|j#                  |d       |j                         }|j%                  ||       t'        j(                  | j*                  |	      }
|
A|j#                  ||	|
j-                         |
j/                                 |j                         }|j1                  |       t3        j4                  | j6                         y|j                  t        j                  k(  r|j                         }|j                  d      }|j                  d      }|j                  |      }|j                         }|j                  ||d      }	| j                  |	z   dz   | _        | j!                  |	       |j                  |      }|j9                  | j:                  ||       |j#                  |d       | j                  j=                         }|j?                  d      s| j                  dd  d	k7  r| j@                  r
d| _         d
}n?|j?                  d      rd
}n+| jC                  | j                         d| _        d| _         d}|j                         }|j%                  ||       |j#                  ||       |j                         }|j%                  ||       |j1                  |       t3        j4                  | j6                         y|j                  t        jD                  k(  s|j                  t        jF                  k(  rA|jI                  d       | jK                          t3        j4                  | j6                         y|j                  t        jL                  k(  s|j                  t        jN                  k(  rA|jI                  d       | jQ                          t3        j4                  | j6                         y|j                  t        jR                  k(  s:|j                  t        jT                  k(  s|j                  t        jV                  k(  rx|j                         }|j                  |j                  d            }|j                  |jY                               }|j[                  |      dk(  r|s|j1                  |       yy|j                  t        j\                  k(  s|j                  t        j^                  k(  rK||t        j                  j`                  t        j                  j                  z  z  k(  r|j                         }|j                  |j                  d            }|j                  |jY                               }|jc                         je                         r/|jg                          |jc                         je                         r/|ji                  |      r |j                  |j                  d            }|t        j                  j`                  z  r|jk                  d|       y|j1                  |       y|j                  t        jl                  k(  s|j                  t        jn                  k(  rL||t        j                  j`                  t        j                  j                  z  z  k(  r|j                         }|j                         }|j                  |jY                               }|jq                          |jc                         je                         r/|jq                          |jc                         je                         r/|jg                          |ji                  |      r|j                         }|t        j                  j`                  z  r|jk                  d|       y|j1                  |       yy y )Nr   F
z
... Tr   :z

z... \r   r   key_press_eventr   r<   )9r    accelerator_get_default_mod_maskstatekeyvalr   KEY_DModifierTypeCONTROL_MASKdestroy
KEY_Returnr3   get_markget_iter_at_markr;   get_textr?   history_addr<   	move_markr5   matchr7   startendplace_cursorr   idle_addscroll_to_end	apply_tagr   rstripendswithr9   _PythonConsole__runKEY_KP_DownKEY_Downstop_emission_by_namehistory_down	KEY_KP_UpKEY_Up
history_upKEY_KP_LeftKEY_LeftKEY_BackSpace
get_insertcompareKEY_KP_HomeKEY_Home
SHIFT_MASKget_charisspaceforward_charequalmove_mark_by_name
KEY_KP_EndKEY_Endbackward_char)rF   r+   eventmodifier_maskevent_staterG   inp_markinpcurlinespaceslin_marklin	cur_stripcom_markitinss                    rH   __key_press_event_cbz"PythonConsole.__key_press_event_cb   s   <<>kkM1<<399$8H8H8U8U)ULLN\\S^^+s?O?O?\?\0\//#C||G,H&&x0C""$C<<S%0D#'#7#7$#>#ED T" ""$CJJsH%""$CMM(C( XXd33T:F!

3V\\^fjjl CD&&(S!MM$,,-\\S^^+//#C||L1H||G,H &&x0C""$C<<S%0D#'#7#7$#>#ED T" &&x0CMM$,,S1JJsD!,,335I!!#&$$RS)V38J8J%)"!##D)! 

4//0')$%*"! ""$CMM(C(JJsH%""$CMM(C(S!MM$,,-\\S__,0L&&'89MM$,,-\\S]]*ellcjj.H&&'89OOMM$,,-\\S__,0L\\S...//#C&&s||G'<=C&&s~~'78C{{31$"$$S)
 llcoo-1MK3+;+;+F+FsGWGWGdGd+dee//#C%%cll7&;<B&&s~~'78C++-'')! ++-'') xx}))#,,w*?@S--888%%h3    $llcnn,0KK3+;+;+F+FsGWGWGdGd+dee//#C!!#B&&s~~'78C++-'')  " ++-'') OOxx}%%'S--888%%h3    $) f 1LrI   c                     |j                  |j                  d            }|j                  |j                               }| j                  j	                  |j                  |      dk7         y )Nr   )rt   rs   r   r+   r-   r   )rF   rG   r   namer   poss         rH   __mark_set_cbzPythonConsole.__mark_set_cb)  sR    $$S\\'%:;$$S^^%56		s{{51R78rI   c                     | j                   j                         }|j                  |j                  d            }|j	                         }|j                  ||d      S )Nr   F)r+   r3   rt   rs   r;   ru   )rF   rG   r   r   s       rH   get_command_linezPythonConsole.get_command_line.  sN    ii""$""3<<#89 ||Ce,,rI   c                    | j                   j                         }|j                  d      }|j                  |      }|j	                         }|j                  ||       |j                  ||       | j                   j                          y )Nr   )r+   r3   rs   rt   r;   deleter<   rN   )rF   r   rG   markr   r   s         rH   set_command_linezPythonConsole.set_command_line4  sl    ii""$||G$""4( 

3

3 		rI   c                     |j                         dk7  rRt        | j                        | _        || j                  | j                  dz
  <   | j                  j	                  d       y y )Nr      )striplenr=   r>   append)rF   r   s     rH   rv   zPythonConsole.history_add=  sQ    ::<2"4<<0D15DLL))A-.LL# rI   c                     | j                   dkD  rd| j                         | j                  | j                   <   | j                   dz
  | _         | j                  | j                  | j                             y y )Nr   r   )r>   r   r=   r   rL   s    rH   r   zPythonConsole.history_upC  sb    a-1-B-B-DDLL))*#//!3D!!$,,t/?/?"@A  rI   c                    | j                   t        | j                        dz
  k  rd| j                         | j                  | j                   <   | j                   dz   | _         | j	                  | j                  | j                             y y )Nr   )r>   r   r=   r   r   rL   s    rH   r   zPythonConsole.history_downI  sp    c$,,/!33-1-B-B-DDLL))*#//!3D!!$,,t/?/?"@A 4rI   c                     | j                   j                         j                         }| j                   j                  |dddd       y)N        F      ?)r+   r3   r;   scroll_to_iter)rF   is     rH   r}   zPythonConsole.scroll_to_endO  s:    II  "//1		  CS9rI   Nc                     | j                   j                         }|!|j                  |j                         |       n!|j	                  |j                         ||       t        j                  | j                         y rK   )r+   r3   r<   r;   insert_with_tagsr   r|   r}   )rF   texttagrG   s       rH   writezPythonConsole.writeT  s]    ii""$;JJs'')40  !1!1!3T3?d(()rI   c                    | j                   j                         }|j                  d      }|j                  |j	                  |      |j                                t        |t              st        |t              r=|D ]7  }|r"| j                  d|z   dz   | j                         | j                  |       9 n5|r"| j                  dz   dz   | j                         | j                  |       |j                         }|j                  d|       |j                  |d       |j                         }|j                  d|       | j                   j                  |j                         dddd       y )Nr   r   rf   r   r   Fr   )r+   r3   rs   r   rt   r;   
isinstancelisttupler   r   r   r   r<   r   )rF   r   display_commandrG   r   cr   s          rH   evalzPythonConsole.eval]  s-   ii""$ll<(

3'',##%	' gt$
7E(B "JJvzD0$,,?

1
 

6A:,dll;JJw lC0

3 gs+		  !1!1!3S%cJrI   c                    | j                   t        j                   ct        _         | _         | j                  t        j                  ct        _        | _        	 	 t        || j                  | j                        }|t        |       | j                   t        j                   ct        _         | _         | j                  t        j                  ct        _        | _        y # t        $ r t        || j                         Y xw xY w#  t        t        d      r(t        j                  t        k(  r| j                          nt        j                          Y xY w)N	last_type)rA   r@   rC   r   r8   printSyntaxErrorexechasattrr   
SystemExitrq   	traceback	print_exc)rF   r   rs      rH   __runzPythonConsole.__runt  s    "&++szz
DK"&++szz
DK	&.$..$..A=!H #'++szz
DK"&++szz
DK  .Wdnn-.	&sK(S]]j-H##%s%   .C D =D ?D  D AEc                      y rK    rL   s    rH   rq   zPythonConsole.destroy  s    rI   rK   )F)__name__
__module____qualname____gsignals__rU   r   r   rb   ra   r   r!   rO   r,   r    r   rd   rD   rE   r   r   rv   r   r   r}   r   r   r   rq   r   rI   rH   r   r   %   s     	zL "L;: /+#% 34j7-:eQf9
-$BB
*K.:(rI   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eZy)r	   zA fake output file object. It sends output to a TK test widget,
    and if asked for a file number, returns one set on instance creationc                 .    || _         || _        || _        y rK   )fnconsoler   )rF   r   r   r   s       rH   r   zOutFile.__init__  s    rI   c                      y rK   r   rL   s    rH   closezOutFile.close      rI   c                      y rK   r   rL   s    rH   flushzOutFile.flush  r   rI   c                     | j                   S rK   )r   rL   s    rH   rB   zOutFile.fileno  s
    DGG^rI   c                      y)Nr   r   rL   s    rH   isattyzOutFile.isatty  s    ArI   c                      yNr   r   rF   as     rH   readzOutFile.read      BrI   c                      yr   r   rL   s    rH   readlinezOutFile.readline  r   rI   c                     g S rK   r   rL   s    rH   	readlineszOutFile.readlines  s    BYrI   c                 P    | j                   j                  || j                         y rK   r   r   r   )rF   ss     rH   r   zOutFile.write      T\\//488<rI   c                 P    | j                   j                  || j                         y rK   r   )rF   ls     rH   
writelineszOutFile.writelines  r   rI   c                     t        d      N)   zIllegal seekIOErrorr   s     rH   seekzOutFile.seek      7+?#@@rI   c                     t        d      r   r   rL   s    rH   tellzOutFile.tell  r   rI   N)r   r   r   __doc__r   r   r   rB   r   r   r   r   r   r   r   r  truncater   rI   rH   r	   r	     s5    L "!+%&&&<<@@HrI   r	   )stringr@   r5   r   gi.repositoryr   r   r   r   r   __all__r   r   r	   r   rI   rH   <module>r     s=   6  
 	  4 4
&dC&& dP rI   