Compare commits

..

No commits in common. "298e5abdbe0c6f749dad438e89c967f2613c2392" and "bdba68ecb0856969db199e61c5a469d34c3159ba" have entirely different histories.

5 changed files with 57 additions and 38 deletions

View File

View File

@ -1,7 +0,0 @@
init:
pip install -r requirements.txt
test:
py.test tests
.PHONY: init test

View File

@ -1,35 +1,21 @@
# std imports
from math import floor
import npyscreen
# local
from blessed import Terminal
# This application class serves as a wrapper for the initialization of curses
# and also manages the actual forms of the application
class MyTestApp(npyscreen.NPSAppManaged):
def onStart(self):
self.registerForm("MAIN", MainForm())
def roundxy(x, y):
return int(floor(x)), int(floor(y))
# This form class defines the display that will be presented to the user.
class MainForm(npyscreen.Form):
def create(self):
self.add(npyscreen.TitleText, name = "Text:", value= "Hellow World!" )
term = Terminal()
def afterEditing(self):
self.parentApp.setNextForm(None)
x, y, xs, ys = 2, 2, 0.4, 0.3
with term.cbreak(), term.hidden_cursor():
# clear the screen
print(term.home + term.black_on_olivedrab4 + term.clear)
# loop every 20ms
while term.inkey(timeout=0.02) != 'q':
# erase,
txt_erase = term.move_xy(*roundxy(x, y)) + ' '
# bounce,
if x >= (term.width - 1) or x <= 0:
xs *= -1
if y >= term.height or y <= 0:
ys *= -1
# move,
x, y = x + xs, y + ys
# draw !
txt_ball = term.move_xy(*roundxy(x, y)) + ''
print(txt_erase + txt_ball, end='', flush=True)
if __name__ == '__main__':
TA = MyTestApp()
TA.run()

View File

@ -0,0 +1,40 @@
import curses
# The `screen` is a window that acts as the master window
# that takes up the whole screen. Other windows created
# later will get painted on to the `screen` window.
screen = curses.initscr()
# lines, columns, start line, start column
my_window = curses.newwin(15, 20, 0, 0)
# Long strings will wrap to the next line automatically
# to stay within the window
my_window.addstr(4, 4, "Hello from 4,4")
my_window.addstr(5, 15, "Hello from 5,15 with a long string")
# Print the window to the screen
my_window.refresh()
curses.napms(2000)
# Clear the screen, clearing my_window contents that were printed to screen
# my_window will retain its contents until my_window.clear() is called.
screen.clear()
screen.refresh()
# Move the window and put it back on screen
# If we didn't clear the screen before doing this,
# the original window contents would remain on the screen
# and we would see the window text twice.
my_window.mvwin(10, 10)
my_window.refresh()
curses.napms(1000)
# Clear the window and redraw over the current window space
# This does not require clearing the whole screen, because the window
# has not moved position.
my_window.clear()
my_window.refresh()
curses.napms(1000)
curses.endwin()

View File

@ -1,2 +1,2 @@
# Blessed handles our terminal "graphics"
blessed==1.17.12
npyscreen==4.10.5
windows-curses==2.2.0 # Only for those using windows, curses is standard on python for BSD and GNU/Linux