commit 2be43369eb260b9a5bbd7e3449aa6cf94335b337
parent 8ea075cbd70cefccbf755e5ad7ba5a304f58eaf5
Author: Paco Esteban <paco@e1e0.net>
Date: Mon, 18 Oct 2021 19:00:33 +0200
mock up of a list window and info window. pretty crappy for now
Diffstat:
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/requirements.txt b/requirements.txt
@@ -1 +1 @@
-py-sonic==0.7.9
+python-mpv-jsonipc==1.1.13
diff --git a/subclient/subclient.py b/subclient/subclient.py
@@ -29,9 +29,13 @@ class SubClient:
self.player = player.Player(self.subsonic)
- self.window = None
- self.hight = 0
+ self.stdscr = None
+ self.listwin = None
+ self.infowin = None
+ self.height = 0
self.width = 0
+ self.listwin_height = 0
+ self.infowin_height = 0
self.init_curses()
self.nav_list = self.subsonic.get_artists()
@@ -39,21 +43,27 @@ class SubClient:
self.nav_selected = 0
self.nav_top = 0
self.nav_bottom = len(self.nav_list)
- self.nav_max_lines = curses.LINES
+ self.nav_max_lines = self.listwin_height
self.nav_pages = self.nav_bottom // self.nav_max_lines
self.artist = None
def init_curses(self):
- self.window = curses.initscr()
- self.window.keypad(True)
+ self.stdscr = curses.initscr()
+ self.height, self.width = self.stdscr.getmaxyx()
+ # leave room for the info window
+ self.listwin_height = int(self.height * 0.8)
+ self.infowin_height = self.height - self.listwin_height
+ self.listwin = curses.newwin(self.listwin_height, self.width,
+ 0, 0)
+ self.infowin = curses.newwin(3, self.width,
+ self.listwin_height + 2, 0)
+ self.listwin.keypad(True)
curses.curs_set(0) # disable cursor
curses.noecho()
curses.cbreak()
- self.height, self.width = self.window.getmaxyx()
-
def run(self):
# read chars until we exit, then clean
try:
@@ -66,11 +76,11 @@ class SubClient:
def input_loop(self):
while True:
- self.window.erase()
+ self.listwin.erase()
self.load_list()
self.refresh()
- c = self.window.getkey()
+ c = self.listwin.getkey()
if c == 'q': # quit
break
elif c == 'j':
@@ -100,9 +110,9 @@ class SubClient:
for i, t in enumerate(
self.nav_list[self.nav_top:self.nav_top + self.nav_max_lines]):
if i == self.nav_selected:
- self.window.addstr(i, 0, str(t), curses.A_REVERSE)
+ self.listwin.addstr(i, 0, str(t), curses.A_REVERSE)
else:
- self.window.addstr(i, 0, str(t))
+ self.listwin.addstr(i, 0, str(t))
def nav_scroll(self, direction):
# next cursor position
@@ -187,7 +197,7 @@ class SubClient:
self.nav_pages = self.nav_bottom // self.nav_max_lines
def refresh(self):
- self.window.noutrefresh()
+ self.listwin.noutrefresh()
curses.doupdate()