Define prestart attribute on ButtonMark to place buttons before start
This commit is contained in:
@@ -178,12 +178,13 @@ class SetMark(Event):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
class ButtonMark(Event):
|
class ButtonMark(Event):
|
||||||
def __init__(self, name, *args, **kwargs):
|
def __init__(self, name, prestart=False, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self._name = name
|
self._name = name
|
||||||
|
self._prestart = prestart
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self):
|
||||||
self._at._timings.register_mark(self._name, None)
|
self._at._timings.register_mark(self._name, None, self._prestart)
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self._eventrunner.finished(self)
|
self._eventrunner.finished(self)
|
||||||
|
|||||||
7
gig.py
7
gig.py
@@ -52,6 +52,8 @@ class EventRunner:
|
|||||||
if self._playing is not None:
|
if self._playing is not None:
|
||||||
return self.activate()
|
return self.activate()
|
||||||
elif self._selected is not None:
|
elif self._selected is not None:
|
||||||
|
if self._next_button_is_prestart:
|
||||||
|
return self.activate()
|
||||||
self.play()
|
self.play()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
@@ -77,6 +79,7 @@ class EventRunner:
|
|||||||
print("Scheduled event {} at {} ({} from now)".format(event, event.at, event.at - now))
|
print("Scheduled event {} at {} ({} from now)".format(event, event.at, event.at - now))
|
||||||
event.scheduled = True
|
event.scheduled = True
|
||||||
self._next_button = self._currentitem.get_next_button()
|
self._next_button = self._currentitem.get_next_button()
|
||||||
|
self._next_button_is_prestart = self._currentitem.is_button_prestart(self._next_button)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
@@ -127,6 +130,9 @@ class EventRunner:
|
|||||||
button = "Select next"
|
button = "Select next"
|
||||||
elif self._selected is not None:
|
elif self._selected is not None:
|
||||||
status = 'Selected {}'.format(self.get_item().get_title())
|
status = 'Selected {}'.format(self.get_item().get_title())
|
||||||
|
if (self._next_button is not None) and self._next_button_is_prestart:
|
||||||
|
button = "Marker {}".format(self._next_button)
|
||||||
|
else:
|
||||||
button = "Play"
|
button = "Play"
|
||||||
else:
|
else:
|
||||||
status = 'Waiting'
|
status = 'Waiting'
|
||||||
@@ -249,6 +255,7 @@ class MainWindow(pyglet.window.Window):
|
|||||||
self.update_cursor(self._cursorpos + 1)
|
self.update_cursor(self._cursorpos + 1)
|
||||||
self._eventrunner.select(self._cursorpos)
|
self._eventrunner.select(self._cursorpos)
|
||||||
elif self._selectpos == self._cursorpos:
|
elif self._selectpos == self._cursorpos:
|
||||||
|
if not self._eventrunner.advance():
|
||||||
self._eventrunner.play()
|
self._eventrunner.play()
|
||||||
else:
|
else:
|
||||||
self._eventrunner.select(self._cursorpos)
|
self._eventrunner.select(self._cursorpos)
|
||||||
|
|||||||
3
item.py
3
item.py
@@ -42,6 +42,9 @@ class Item:
|
|||||||
def get_next_button(self):
|
def get_next_button(self):
|
||||||
return self._timings.get_button()
|
return self._timings.get_button()
|
||||||
|
|
||||||
|
def is_button_prestart(self, name):
|
||||||
|
return self._timings.is_button_prestart(name)
|
||||||
|
|
||||||
def get_title(self):
|
def get_title(self):
|
||||||
return self._title
|
return self._title
|
||||||
|
|
||||||
|
|||||||
11
timings.py
11
timings.py
@@ -17,6 +17,7 @@ class Timings:
|
|||||||
self._markers = {}
|
self._markers = {}
|
||||||
self._marker_objects = {}
|
self._marker_objects = {}
|
||||||
self._marker_buttons = []
|
self._marker_buttons = []
|
||||||
|
self._marker_buttons_prestart = {}
|
||||||
self._tempo_objects = []
|
self._tempo_objects = []
|
||||||
self._tempo = []
|
self._tempo = []
|
||||||
self._resolved = False
|
self._resolved = False
|
||||||
@@ -36,6 +37,12 @@ class Timings:
|
|||||||
return button
|
return button
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def is_button_prestart(self, name):
|
||||||
|
if name in self._marker_buttons_prestart:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
def add_timing(self, timing):
|
def add_timing(self, timing):
|
||||||
self._timings.append(timing)
|
self._timings.append(timing)
|
||||||
self._resolved = False
|
self._resolved = False
|
||||||
@@ -73,10 +80,12 @@ class Timings:
|
|||||||
#print("beat_at({}) = {}".format(at, 60 / tempo))
|
#print("beat_at({}) = {}".format(at, 60 / tempo))
|
||||||
return 60 / tempo
|
return 60 / tempo
|
||||||
|
|
||||||
def register_mark(self, name, at):
|
def register_mark(self, name, at, prestart=False):
|
||||||
self._marker_objects[name] = at
|
self._marker_objects[name] = at
|
||||||
if at is None:
|
if at is None:
|
||||||
self._marker_buttons.append(name)
|
self._marker_buttons.append(name)
|
||||||
|
if prestart:
|
||||||
|
self._marker_buttons_prestart[name] = True
|
||||||
self._resolved = False
|
self._resolved = False
|
||||||
|
|
||||||
def register_tempo(self, tempo, beats, at):
|
def register_tempo(self, tempo, beats, at):
|
||||||
|
|||||||
Reference in New Issue
Block a user