X Tutup
Skip to content

Commit f361657

Browse files
Using new curtsies api: curtsies 0.1.x
1 parent fe53097 commit f361657

File tree

4 files changed

+33
-20
lines changed

4 files changed

+33
-20
lines changed

bpython/curtsies.py

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66

77
import curtsies
88
import curtsies.window
9+
import curtsies.input
910
import curtsies.terminal
1011
import curtsies.events
11-
Window = curtsies.window.Window
12-
Terminal = curtsies.terminal.Terminal
1312

1413
from bpython.curtsiesfrontend.repl import Repl
1514
from bpython.curtsiesfrontend.coderunner import SystemExitFromCodeGreenlet
@@ -52,36 +51,50 @@ def main(args=None, locals_=None, banner=None):
5251
mainloop(config, locals_, banner, interp, paste)
5352

5453
def mainloop(config, locals_, banner, interp=None, paste=None):
55-
with Terminal(paste_mode=True) as tc:
56-
with Window(tc, keep_last_line=True, hide_cursor=False) as term:
54+
with curtsies.input.Input(keynames='curses') as input_generator:
55+
with curtsies.window.CursorAwareWindow(
56+
sys.stdout,
57+
sys.stdin,
58+
keep_last_line=True,
59+
hide_cursor=False) as window:
60+
61+
refresh_requests = []
62+
def request_refresh():
63+
refresh_requests.append(None)
64+
def event_or_refresh():
65+
while True:
66+
if refresh_requests:
67+
refresh_requests.pop()
68+
yield curtsies.events.RefreshRequestEvent()
69+
else:
70+
yield input_generator.next()
71+
5772
with Repl(config=config,
5873
locals_=locals_,
59-
request_refresh=tc.stuff_a_refresh_request,
74+
request_refresh=request_refresh,
6075
banner=banner,
6176
interp=interp) as repl:
62-
rows, columns = tc.get_screen_size()
63-
repl.width = columns
64-
repl.height = rows
77+
repl.height, repl.width = window.t.height, window.t.width
6578

6679
def process_event(e):
6780
try:
6881
repl.process_event(e)
6982
except (SystemExitFromCodeGreenlet, SystemExit) as err:
7083
array, cursor_pos = repl.paint(about_to_exit=True, user_quit=isinstance(err, SystemExitFromCodeGreenlet))
71-
scrolled = term.render_to_terminal(array, cursor_pos)
84+
scrolled = window.render_to_terminal(array, cursor_pos)
7285
repl.scroll_offset += scrolled
7386
raise
7487
else:
7588
array, cursor_pos = repl.paint()
76-
scrolled = term.render_to_terminal(array, cursor_pos)
89+
scrolled = window.render_to_terminal(array, cursor_pos)
7790
repl.scroll_offset += scrolled
7891

7992
if paste:
80-
repl.process_event(term.get_annotated_event()) #first event will always be a window size set
8193
process_event(paste)
8294

83-
while True:
84-
process_event(term.get_annotated_event(idle=find_iterator))
95+
[None for _ in find_iterator] #TODO get idle events working (instead of this)
96+
for e in event_or_refresh():
97+
process_event(e)
8598

8699
if __name__ == '__main__':
87100
sys.exit(main())

bpython/curtsiesfrontend/repl.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919
from bpython.translations import _
2020
from bpython._py3compat import py3
2121

22-
from curtsies.fsarray import FSArray
23-
from curtsies.fmtstr import fmtstr, FmtStr
22+
from curtsies import FSArray, fmtstr, FmtStr
2423
from curtsies.bpythonparse import parse as bpythonparse
2524
from curtsies.bpythonparse import func_for_letter, color_for_letter
25+
from curtsies import fmtfuncs
26+
from curtsies import events
2627

2728
from bpython.curtsiesfrontend.manual_readline import char_sequences as rl_char_sequences
2829
from bpython.curtsiesfrontend.manual_readline import get_updated_char_sequences
2930
from bpython.curtsiesfrontend.interaction import StatusBar
3031
from bpython.curtsiesfrontend import sitefix; sitefix.monkeypatch_quit()
3132
import bpython.curtsiesfrontend.replpainter as paint
32-
import curtsies.events as events
3333
from bpython.curtsiesfrontend.coderunner import CodeRunner, FakeOutput
3434

3535
#TODO other autocomplete modes (also fix in other bpython implementations)

bpython/curtsiesfrontend/replpainter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
import logging
33
import os
44

5-
from curtsies.fmtfuncs import bold
6-
from curtsies.fsarray import fsarray
5+
from curtsies import fsarray, fmtstr
76
from curtsies.bpythonparse import func_for_letter
8-
from curtsies.fmtstr import fmtstr, linesplit
7+
from curtsies.formatstring import linesplit
8+
from curtsies.fmtfuncs import bold
99

1010
from bpython._py3compat import py3
1111
if not py3:

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def initialize_options(self):
151151

152152
if sys.version_info[:2] >= (2, 6):
153153
# curtsies only supports 2.6 and onwards
154-
extras_require['curtsies'] = ['curtsies>=0.0.32', 'greenlet']
154+
extras_require['curtsies'] = ['curtsies >=0.1.0, <0.2.0', 'greenlet']
155155
packages.append("bpython.curtsiesfrontend")
156156
entry_points['console_scripts'].append(
157157
'bpython-curtsies = bpython.curtsies:main [curtsies]')

0 commit comments

Comments
 (0)
X Tutup