summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--blc2/functions/chaser.py6
-rw-r--r--interface/audioview.py1
-rwxr-xr-xinterface/channelbank.py1
-rwxr-xr-xinterface/chaserview.py1
-rw-r--r--interface/dialog.py1
-rw-r--r--interface/interface.py12
-rwxr-xr-xinterface/pager.py1
7 files changed, 17 insertions, 6 deletions
diff --git a/blc2/functions/chaser.py b/blc2/functions/chaser.py
index 1190024..5068fc2 100644
--- a/blc2/functions/chaser.py
+++ b/blc2/functions/chaser.py
@@ -129,7 +129,7 @@ class Chaser(Function):
n = (n + 1) % len(self.steps)
yield n
else:
- yield from range(n, len(self.steps))
+ yield from range(n+1, len(self.steps))
def _fix_indices(self):
for i, s in enumerate(self._steps):
@@ -212,7 +212,7 @@ class Chaser(Function):
else:
raise ValueError("Chaser is finished")
if data.steps:
- data.steps[-1].end_time = t
+ data.steps[-1].end_time = t - data.steps[-1].start_time
data.steps.append(self.steps[n]._get_data(t, n))
data.audio_id += 1
@@ -246,7 +246,7 @@ class Chaser(Function):
data.audio_id += 1
## Make sure we have all the steps we need
- st = data.steps[-1].step.duration + data.steps[-1].start_time
+ st = data.steps[-1].actual_duration + data.steps[-1].start_time
if st < INFTY and st <= t:
for n in self.next_steps(data):
s = self.steps[n]
diff --git a/interface/audioview.py b/interface/audioview.py
index ebfe228..2d450e5 100644
--- a/interface/audioview.py
+++ b/interface/audioview.py
@@ -93,6 +93,7 @@ class AudioView:
def __init__(self, y, x, height, width):
with CURSES_LOCK:
self.win = curses.newwin(height, width, y, x)
+ self.win.leaveok(True)
self.win.keypad(True)
self._lock = threading.RLock()
diff --git a/interface/channelbank.py b/interface/channelbank.py
index 6562a9c..47d6482 100755
--- a/interface/channelbank.py
+++ b/interface/channelbank.py
@@ -96,6 +96,7 @@ class ChannelView:
self.root = root
with CURSES_LOCK:
self.win = root.subpad(self.height, self.width, self.y, self.x)
+ self.win.leaveok(True)
self._refresh_value()
self._refresh_channel()
diff --git a/interface/chaserview.py b/interface/chaserview.py
index 6a80241..7a6a8db 100755
--- a/interface/chaserview.py
+++ b/interface/chaserview.py
@@ -147,6 +147,7 @@ class ChaserView:
def __init__(self, y, x, height, width):
with CURSES_LOCK:
self.win = curses.newwin(height, width, y, x)
+ self.win.leaveok(True)
self.win.keypad(True)
self._lock = threading.RLock()
self._height = height
diff --git a/interface/dialog.py b/interface/dialog.py
index 18ecb34..68de590 100644
--- a/interface/dialog.py
+++ b/interface/dialog.py
@@ -33,6 +33,7 @@ def askyesnocancel(stdscr, msg, title="Confirm", resize=None):
raise ValueError("Not enough room")
win = curses.newwin(thisheight, thiswidth, posy, posx)
+ win.leaveok(True)
win.border()
win.addstr(0, (thiswidth // 2) - (len(title) // 2), title)
win.keypad(True)
diff --git a/interface/interface.py b/interface/interface.py
index f9c868e..5be5196 100644
--- a/interface/interface.py
+++ b/interface/interface.py
@@ -529,13 +529,17 @@ class Interface:
def _render_callback(self, t, values):
if not self.rendering:
return
- with self.w_lock:
+ with self.w_lock, CURSES_LOCK:
+ syx = self.input.win.getyx()
+
self.channel_bank.set_values(values)
self.channel_bank.title = "LIVE: %7.2fs" % t
for d, cv in zip(self.renderer._data, self.chaser_views):
cv.selected = d.steps[-1].index if d.steps else None
+ self.input.win.move(*syx)
+
def base_run(self):
if not self.chaser_views:
return "No chasers loaded"
@@ -573,8 +577,10 @@ class Interface:
return "No such chaser loaded"
n = n[0]
if n >= len(self.chaser_views) or n < 0:
- return "Index out of range"
- self.renderer.advance((n, p))
+ return "Chaser index out of range"
+ if p is not None and (p < 1 or p > len(self.chaser_views[n].chaser.steps)):
+ return "Step index out of range"
+ self.renderer.advance((n, (p-1) if p is not None else p))
def __init__(self, path, output):
## Have to do most of the actual initialization in the main method, as curses isn't
diff --git a/interface/pager.py b/interface/pager.py
index 2203e52..901c431 100755
--- a/interface/pager.py
+++ b/interface/pager.py
@@ -134,6 +134,7 @@ class Pager:
def __init__(self, y, x, height, width):
with CURSES_LOCK:
self.win = curses.newwin(height, width, y, x)
+ self.win.leaveok(True)
self.win.keypad(True)
self._lock = threading.RLock()
self._height = height