MCPcopy Create free account
hub / github.com/RetiredWizard/PyDOS / line_edit

Method line_edit

pye.py:350–424  ·  view source on GitHub ↗
(self, prompt, default, zap=None)

Source from the content-addressed store, hash-verified

348 res = self.mark_range()
349 return (res[0], res[2]) if res[3] > 0 else (res[0], res[2] - 1)
350 def line_edit(self, prompt, default, zap=None):
351 push_msg = lambda msg: self.wr(msg + Editor.TERMCMD[13] * len(msg))
352 self.goto(Editor.height, 0)
353 self.hilite(1)
354 self.wr(prompt)
355 self.wr(default)
356 self.clear_to_eol()
357 res = default
358 pos = len(res)
359 del_all = True
360 mouse_last = None
361 while True:
362 key, char = self.get_input()
363 if key == KEY_NONE:
364 if len(prompt) + len(res) < self.width - 2:
365 res = res[:pos] + char + res[pos:]
366 self.wr(res[pos])
367 pos += len(char)
368 push_msg(res[pos:])
369 elif key in (KEY_ENTER, KEY_TAB):
370 self.hilite(0)
371 return res
372 elif key in (KEY_QUIT, KEY_COPY):
373 self.hilite(0)
374 return None
375 elif key == KEY_LEFT:
376 if pos > 0:
377 self.wr(Editor.TERMCMD[13])
378 pos -= 1
379 elif key == KEY_RIGHT:
380 if pos < len(res):
381 self.wr(res[pos])
382 pos += 1
383 elif key == KEY_HOME:
384 self.wr(Editor.TERMCMD[13] * pos)
385 pos = 0
386 elif key == KEY_END:
387 self.wr(res[pos:])
388 pos = len(res)
389 elif key == KEY_DELETE:
390 if del_all:
391 self.wr(Editor.TERMCMD[13] * pos)
392 self.wr(" " * len(res))
393 self.wr(Editor.TERMCMD[13] * len(res))
394 pos = 0
395 res = ""
396 else:
397 if pos < len(res):
398 res = res[:pos] + res[pos+1:]
399 push_msg(res[pos:] + ' ')
400 elif key == KEY_BACKSPACE:
401 if pos > 0:
402 res = res[:pos-1] + res[pos:]
403 self.wr(Editor.TERMCMD[13])
404 pos -= 1
405 push_msg(res[pos:] + ' ')
406 elif key == KEY_PASTE:
407 res += self.getsymbol(self.content[self.cur_line], self.col, zap)[:Editor.width - pos - len(prompt) - 1]

Callers 3

handle_edit_keysMethod · 0.95
edit_loopMethod · 0.95
pye_editFunction · 0.80

Calls 6

gotoMethod · 0.95
hiliteMethod · 0.95
clear_to_eolMethod · 0.95
get_inputMethod · 0.95
getsymbolMethod · 0.95
wrMethod · 0.45

Tested by

no test coverage detected