|
GnuCash 2.4.99
|
Public Member Functions | |
| def | __init__ |
| def | history_init |
| def | history_save |
| def | history_add |
| def | history_reset |
| def | history_next |
| def | history_prev |
| def | raw_input |
| def | grab_focus |
| def | write |
| def | overwrite |
| def | last_line |
| def | prompt |
| def | key_press_event |
| def | execute |
| def | quit |
Data Fields | |
| do_quit | |
| view | |
| buffer | |
| color_pat | |
| killbuffer | |
| argv | |
| cout | |
| shell | |
| interrupt | |
| input_mode | |
| input | |
| stdout | |
| stderr | |
| stdin | |
| fifoname | |
| piperead | |
| pipewrite | |
| history_file | |
| history_size | |
| history_index | |
GTK python console
Definition at line 122 of file console.py.
| def pycons::console::Console::__init__ | ( | self, | |
argv = [], |
|||
shelltype = 'python', |
|||
banner = [], |
|||
filename = None, |
|||
size = 100 |
|||
| ) |
Console interface building + initialization
Definition at line 125 of file console.py.
00127 : 00128 00129 """ Console interface building + initialization""" 00130 00131 # GTK interface 00132 self.do_quit = False 00133 gtk.ScrolledWindow.__init__(self) 00134 self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) 00135 self.set_shadow_type (gtk.SHADOW_NONE) 00136 self.set_border_width(0) 00137 self.view = gtk.TextView() 00138 self.view.modify_font (pango.FontDescription("Mono 10")) 00139 self.view.set_editable (True) 00140 self.view.set_wrap_mode(True) 00141 self.view.set_left_margin(0) 00142 self.view.set_right_margin(0) 00143 self.buffer = self.view.get_buffer() 00144 self.buffer.create_tag ('title', 00145 indent = 2, 00146 weight=pango.WEIGHT_BOLD, 00147 foreground='blue', 00148 font='Mono 12') 00149 self.buffer.create_tag ('subtitle', 00150 indent = 2, 00151 foreground='blue', 00152 font='Mono 8') 00153 self.buffer.create_tag ('output', 00154 foreground = 'blue', 00155 font='Mono 10') 00156 self.buffer.create_tag ('error', 00157 foreground='red', 00158 style=pango.STYLE_OBLIQUE, 00159 font='Mono 10') 00160 self.buffer.create_tag ('prompt', 00161 foreground='blue', 00162 weight=pango.WEIGHT_BOLD, 00163 font='Mono 10') 00164 self.buffer.create_tag('0') 00165 self.color_pat = re.compile('\x01?\x1b\[(.*?)m\x02?') 00166 for code in ansi_colors: 00167 self.buffer.create_tag(code, 00168 foreground=ansi_colors[code], 00169 weight=700) 00170 for text, style in banner: 00171 self.write (text, style) 00172 iter = self.buffer.get_iter_at_mark(self.buffer.get_insert()) 00173 self.buffer.create_mark ('linestart', iter, True) 00174 self.view.add_events(gtk.gdk.KEY_PRESS_MASK) 00175 self.view.connect ('key-press-event', self.key_press_event) 00176 self.add(self.view) 00177 self.show_all() 00178 self.killbuffer = None 00179 00180 # Console stuff 00181 self.argv = argv 00182 self.history_init(filename, size) 00183 self.cout = StringIO() 00184 self.cout.truncate(0) 00185 if shelltype=='ipython': 00186 self.shell = ishell.Shell(argv,locals(),globals(), 00187 cout=self.cout, cerr=self.cout, 00188 input_func=self.raw_input) 00189 else: 00190 self.shell = shell.Shell(locals(),globals()) 00191 self.interrupt = False 00192 self.input_mode = False 00193 self.input = None 00194 self.stdout = ConsoleOut (self, sys.stdout.fileno(), 'output') 00195 self.stderr = ConsoleOut (self, sys.stderr.fileno(), 'error') 00196 self.stdin = ConsoleIn (self, sys.stdin.fileno()) 00197 00198 # Create a named pipe for system stdout/stderr redirection 00199 self.fifoname = tempfile.mktemp() 00200 if not os.path.exists (self.fifoname): 00201 os.mkfifo (self.fifoname) 00202 self.piperead = os.open (self.fifoname, os.O_RDONLY | os.O_NONBLOCK) 00203 self.pipewrite = os.open (self.fifoname, os.O_WRONLY | os.O_NONBLOCK) 00204 self.shell.eval(self) 00205 self.cout.truncate(0)
| def pycons::console::Console::grab_focus | ( | self | ) |
Give focus to the TextView
Definition at line 246 of file console.py.
| def pycons::console::Console::key_press_event | ( | self, | |
| widget, | |||
| event | |||
| ) |
Handle key press event
Definition at line 300 of file console.py.
00301 : 00302 """ Handle key press event """ 00303 00304 keyname = gtk.gdk.keyval_name (event.keyval) 00305 00306 # New command 00307 if keyname in ['Return', 'KP_Enter']: 00308 line = self.last_line() 00309 self.history_add (line) 00310 if self.input_mode: 00311 self.input_mode = False 00312 self.input = self.last_line() 00313 self.write('\n') 00314 else: 00315 self.execute() 00316 return True 00317 00318 # Prevent cursor to go back past prompt 00319 elif keyname in ['Left', 'BackSpace']: 00320 mark = self.buffer.get_mark('linestart') 00321 linestart = self.buffer.get_iter_at_mark(mark) 00322 iter = self.buffer.get_iter_at_mark(self.buffer.get_insert()) 00323 if iter.compare(linestart) <= 0: 00324 return True 00325 00326 elif keyname == 'Right': 00327 return False 00328 00329 # Next history item 00330 elif keyname == 'Down': 00331 self.overwrite (self.history_next()) 00332 return True 00333 00334 # Previous history item 00335 elif keyname == 'Up': 00336 self.overwrite (self.history_prev()) 00337 return True 00338 00339 # Move cursor just after prompt 00340 elif keyname == 'Home': 00341 mark = self.buffer.get_mark('linestart') 00342 linestart = self.buffer.get_iter_at_mark(mark) 00343 self.buffer.place_cursor (linestart) 00344 return True 00345 00346 # Completion if line not empty 00347 elif keyname == 'Tab': 00348 line = self.last_line() 00349 if not line.strip(): 00350 return False 00351 completed, possibilities = self.shell.complete(line) 00352 if len(possibilities) > 1: 00353 slice = line 00354 self.write('\n') 00355 for symbol in possibilities: 00356 self.write(symbol+'\n') 00357 self.prompt('prompt') 00358 self.overwrite(completed or slice) 00359 return True 00360 00361 # Controls 00362 elif event.state & gtk.gdk.CONTROL_MASK: 00363 if keyname in ['a','A']: 00364 mark = self.buffer.get_mark('linestart') 00365 linestart = self.buffer.get_iter_at_mark(mark) 00366 self.buffer.place_cursor (linestart) 00367 return True 00368 elif keyname in ['e','E']: 00369 end = self.buffer.get_end_iter() 00370 self.buffer.place_cursor (end) 00371 return True 00372 elif keyname in ['k','K']: 00373 start = self.buffer.get_iter_at_mark (self.buffer.get_insert()) 00374 end = self.buffer.get_end_iter() 00375 self.killbuffer = self.buffer.get_text(start,end) 00376 self.buffer.delete(start,end) 00377 return True 00378 elif keyname in ['y','Y']: 00379 if self.killbuffer: 00380 iter = self.buffer.get_iter_at_mark (self.buffer.get_insert()) 00381 self.buffer.insert(iter, self.killbuffer) 00382 return True 00383 elif keyname in ['l', 'L']: 00384 start = self.buffer.get_start_iter() 00385 end = self.buffer.get_end_iter() 00386 end.backward_sentence_start() 00387 self.buffer.delete (start,end) 00388 elif keyname in ['d', 'D']: 00389 if not len(self.last_line().strip()): 00390 self.quit() 00391 00392 # Editing before prompt is forbidden 00393 else: 00394 mark = self.buffer.get_mark('linestart') 00395 linestart = self.buffer.get_iter_at_mark(mark) 00396 iter = self.buffer.get_iter_at_mark(self.buffer.get_insert()) 00397 if iter.compare(linestart) < 0: 00398 iter = self.buffer.get_end_iter() 00399 self.buffer.place_cursor (iter) 00400 return False 00401
| def pycons::console::Console::last_line | ( | self | ) |
Get last line (without prompt)
Definition at line 278 of file console.py.
| def pycons::console::Console::overwrite | ( | self, | |
| text, | |||
style = None |
|||
| ) |
Overwrite text after prompt with text
Definition at line 269 of file console.py.
| def pycons::console::Console::prompt | ( | self, | |
style = None |
|||
| ) |
Display prompt
Definition at line 287 of file console.py.
00288 : 00289 """ Display prompt """ 00290 00291 iter = self.buffer.get_end_iter() 00292 self.buffer.place_cursor (iter) 00293 self.write (self.shell.prompt, style) 00294 iter = self.buffer.get_iter_at_mark(self.buffer.get_insert()) 00295 self.buffer.move_mark (self.buffer.get_mark('linestart'), iter) 00296 self.history_reset() 00297 self.view.scroll_mark_onscreen(self.buffer.get_insert()) 00298 while gtk.events_pending(): 00299 gtk.main_iteration()
| def pycons::console::Console::quit | ( | self | ) |
Quit console
Definition at line 431 of file console.py.
| def pycons::console::Console::write | ( | self, | |
| text, | |||
style = None |
|||
| ) |
Write text using given style (if any)
Definition at line 251 of file console.py.
00252 : 00253 """ Write text using given style (if any) """ 00254 segments = self.color_pat.split(text) 00255 segment = segments.pop(0) 00256 start,end = self.buffer.get_bounds() 00257 if style==None: 00258 self.buffer.insert(end, segment) 00259 else: 00260 self.buffer.insert_with_tags_by_name(end, segment, style) 00261 if segments: 00262 ansi_tags = self.color_pat.findall(text) 00263 for tag in ansi_tags: 00264 i = segments.index(tag) 00265 self.buffer.insert_with_tags_by_name(self.buffer.get_end_iter(), 00266 segments[i+1], tag) 00267 segments.pop(i) 00268 self.view.scroll_mark_onscreen(self.buffer.get_insert())
1.7.4