diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1a73573..215f5ed 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,23 +2,14 @@
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -29,11 +20,11 @@
-
+
-
-
+
+
@@ -41,48 +32,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -91,11 +53,10 @@
-
-
+
+
-
@@ -106,12 +67,14 @@
-
-
+
+
-
-
-
+
+
+
+
+
@@ -119,19 +82,10 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
@@ -140,15 +94,54 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -163,12 +156,17 @@
refr
data_ob
self.display
- self.display
settings
video_driver
browser_start_index
MAX_LINES
data_object
+ has_omx
+ settings_list
+ TITLE
+ DISPLAY_MODE
+ color
+ color
@@ -179,17 +177,18 @@
-
-
+
-
+
+
-
+
+
@@ -215,7 +214,6 @@
-
@@ -247,6 +245,7 @@
+
@@ -411,6 +410,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -421,23 +528,117 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
@@ -448,14 +649,7 @@
-
-
-
-
-
-
-
-
+
@@ -467,27 +661,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
@@ -497,7 +675,6 @@
-
@@ -511,7 +688,6 @@
-
@@ -519,57 +695,25 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
@@ -579,55 +723,104 @@
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data_centre.py b/data_centre.py
index 25329c5..08872fa 100644
--- a/data_centre.py
+++ b/data_centre.py
@@ -6,13 +6,12 @@ from random import randint
import time
import inspect
-#from ffprobe import FFProbe
try:
from omxplayer.player import OMXPlayer
has_omx = True
except:
has_omx = False
-print('has omx:{}'.format(has_omx))
+print('data_centre has omx:{}'.format(has_omx))
current_message = None
@@ -76,7 +75,7 @@ logger = setup_logging()
######## sets paths and constants ########
PATH_TO_DATA_OBJECTS = '{}data_objects/'.format(get_the_current_dir_path())
PATH_TO_BROWSER = get_path_to_browser()
-EMPTY_BANK = dict(name='',location='',length=-1,start=-1,end=-1)
+EMPTY_BANK = dict(name='', location='', length=-1, start=-1, end=-1)
DEV_MODE = read_json(SETTINGS_JSON)[6]["value"]
print(DEV_MODE)
####<<<< data methods for browser tab >>>>#####
@@ -213,7 +212,7 @@ def clear_all_banks():
####<<<< data methods for looper tab >>>>#####
def get_all_looper_data_for_display():
- ######## read bank mappings from data object and format for displaying in asciimatics ########
+ ######## read bank mappings from data object and format for displaying ########
memory_bank = read_json(BANK_DATA_JSON)
loop_data = []
for index, bank in enumerate(memory_bank):
@@ -227,7 +226,7 @@ def get_all_looper_data_for_display():
####<<<< data methods for looper tab >>>>#####
def get_all_settings_data_for_display():
- ######## read settings from data object and format for displaying in asciimatics ########
+ ######## read settings from data object and format for displaying ########
settings = read_json(SETTINGS_JSON)
display_settings = []
for index, setting in enumerate(settings):
diff --git a/data_objects/display_data.json b/data_objects/display_data.json
index afceb01..6afdb75 100644
--- a/data_objects/display_data.json
+++ b/data_objects/display_data.json
@@ -1 +1,72 @@
-[{"start": -1, "end": -1, "location": "/media/pi/TIM1/samplerloop3s.mp4", "length": 4, "name": "samplerloop3s.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/teaser1.mp4", "length": 3, "name": "teaser1.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/teaser2.mp4", "length": 3, "name": "teaser2.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/teaser3.mp4", "length": 3, "name": "teaser3.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/teaser4.mp4", "length": 2, "name": "teaser4.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/Test.mp4", "length": 600, "name": "Test.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/TRASHPALACEVIDEOS/01_trashpalaceintro.mp4", "length": 26, "name": "01_trashpalaceintro.mp4"}, {"start": 5, "end": 40, "location": "/media/pi/TIM1/videos_to_play/colour_pixel_01.mp4", "length": 49, "name": "colour_pixel_01.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/teaser1.mp4", "length": 0, "name": "teaser1.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/samplerloop3s2.mp4", "length": 0, "name": "samplerloop3s2.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/videos_to_play/colour_pixel_02.mp4", "length": 87.04, "name": "colour_pixel_02.mp4"}, {"start": -1, "end": -1, "location": "/media/pi/TIM1/videos_to_play/long_spinning.mp4", "length": 804.245, "name": "long_spinning.mp4"}, {"start": -1, "end": -1, "location": "", "length": -1, "name": ""}, {"start": -1, "end": -1, "location": "", "length": -1, "name": ""}, {"start": -1, "end": -1, "location": "", "length": -1, "name": ""}]
+[
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/samplerloop3s.mp4",
+ "length": 4,
+ "name": "samplerloop3s.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/teaser1.mp4",
+ "length": 3,
+ "name": "teaser1.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/teaser2.mp4",
+ "length": 3,
+ "name": "teaser2.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/teaser3.mp4",
+ "length": 3,
+ "name": "teaser3.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/teaser4.mp4",
+ "length": 2,
+ "name": "teaser4.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/Test.mp4",
+ "length": 600,
+ "name": "Test.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/TRASHPALACEVIDEOS/01_trashpalaceintro.mp4",
+ "length": 26,
+ "name": "01_trashpalaceintro.mp4"
+ },
+ {
+ "start": 5,
+ "end": 40,
+ "location": "/media/pi/TIM1/videos_to_play/colour_pixel_01.mp4",
+ "length": 49,
+ "name": "colour_pixel_01.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/teaser1.mp4",
+ "length": 0,
+ "name": "teaser1.mp4"
+ },
+ {
+ "start": -1,
+ "end": -1,
+ "location": "/media/pi/TIM1/samplerloop3s2.mp4",
+ "length": 0,
+ "name": "samplerloop3s2.mp4"
+ }
+]
diff --git a/display_centre/display.py b/display_centre/display.py
index 7f656b1..22b0186 100644
--- a/display_centre/display.py
+++ b/display_centre/display.py
@@ -5,9 +5,9 @@ import data_centre
class Display(object):
MAX_LINES = 10
- SELECTOR_WIDTH = 0.28
+ SELECTOR_WIDTH = 0.47
ROW_OFFSET = 6.0
- VIDEO_DISPLAY_TEXT = ' NOW [{}] {} NEXT [{}] {}'
+ VIDEO_DISPLAY_TEXT = ' NOW [{}] {} NEXT [{}] {}'
VIDEO_DISPLAY_BANNER_TEXT = ' {} {} {}'
def __init__(self, tk, video_driver):
@@ -34,22 +34,27 @@ class Display(object):
def add_tags(self):
self.display_text.tag_configure("SELECT", background="white", foreground="black")
self.display_text.tag_configure("TITLE", background="black", foreground="red")
+ self.display_text.tag_configure("DISPLAY_MODE", background="black", foreground="magenta")
self.display_text.tag_configure("ERROR_MESSAGE", background="red", foreground="black")
self.display_text.tag_configure("INFO_MESSAGE", background="blue", foreground="black")
self.display_text.tag_configure("PLAYER_INFO", background="black", foreground="yellow")
+ self.display_text.tag_configure("COLUMN_NAME", background="black", foreground="cyan")
def load_display(self):
self.load_title()
self.load_player()
+ self.load_display_body()
+ self.load_message()
+ self.display_text.pack()
+
+ def load_display_body(self):
if self.display_mode == 'BROWSER':
self.load_browser()
elif self.display_mode == 'SETTINGS':
self.load_settings()
else:
- self.load_looper()
- print('trying to display')
- self.load_message()
- self.display_text.pack()
+ self.load_sampler()
+ self.display_text.tag_add("COLUMN_NAME", 5.0, 6.0)
def load_title(self):
self.display_text.insert(END, '================== r_e_c_u_r ================== \n')
@@ -66,24 +71,30 @@ class Display(object):
def load_settings(self):
line_count = 0
- self.display_text.insert(END, '--------------- --------------- \n')
- self.display_text.insert(END, '{:>20} {:>20} \n'.format('SETTING', 'VALUE'))
- for index in range(len(self.settings_list)):
+ self.display_text.insert(END, '------------------ ----------------- \n')
+ self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
+ self.display_text.insert(END, '{:^25} {:^25} \n'.format('SETTING', 'VALUE'))
+ number_of_settings_items = len(self.settings_list)
+ for index in range(number_of_settings_items):
if line_count >= self.MAX_LINES:
break
- if index >= self.browser_start_index:
+ if index >= self.settings_start_index:
setting = self.settings_list[index]
- self.display_text.insert(END, '{:>20} {:>20} \n'.format(setting[0], setting[1]))
+ self.display_text.insert(END, '{:>25} {:<25} \n'.format(setting[0], setting[1][0:25]))
line_count = line_count + 1
- def load_looper(self):
+ for index in range(self.MAX_LINES - number_of_settings_items):
+ self.display_text.insert(END, '\n')
+
+ def load_sampler(self):
bank_info = data_centre.get_all_looper_data_for_display()
- self.display_text.insert(END, '--------------- --------------- \n')
- self.display_text.insert(END, '{:>4} {:>15} {:>4} {:>4} {:>4} \n'.format(
+ self.display_text.insert(END, '------------------ ------------------ \n')
+ self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
+ self.display_text.insert(END, '{:^4} {:<22} {:<4} {:<4} {:<4} \n'.format(
'bank', 'name', 'length', 'start', 'end'))
for bank in bank_info:
- self.display_text.insert(END, '{:>4} {:>15} {:>4} {:>4} {:>4} \n'.format(
- bank[0], bank[1][0:15], bank[2], bank[3], bank[4]))
+ self.display_text.insert(END, '{:^4} {:<22} {:<4} {:<4} {:<4} \n'.format(
+ bank[0], bank[1][0:22], bank[2], bank[3], bank[4]))
self.select_current_playing(self.video_driver.current_player.bank_number)
def load_message(self):
@@ -96,17 +107,22 @@ class Display(object):
def load_browser(self):
line_count = 0
- self.display_text.insert(END, '--------------- --------------- \n')
- self.display_text.insert(END, '{:35} {:5} \n'.format('path', 'bank'))
+ self.display_text.insert(END, '------------------ ------------------ \n')
+ self.display_text.tag_add("DISPLAY_MODE", 4.19, 4.29)
+ self.display_text.insert(END, '{:40} {:5} \n'.format('path', 'bank'))
- for index in range(len(self.browser_list)):
+ number_of_browser_items = len(self.browser_list)
+ for index in range(number_of_browser_items):
if line_count >= self.MAX_LINES:
break
if index >= self.browser_start_index:
path = self.browser_list[index]
- self.display_text.insert(END, '{:35} {:5} \n'.format(path[0][0:35], path[1]))
+ self.display_text.insert(END, '{:40} {:5} \n'.format(path[0][0:35], path[1]))
line_count = line_count + 1
+ for index in range(self.MAX_LINES - number_of_browser_items):
+ self.display_text.insert(END, '\n')
+
def highlight_this_row(self, row):
self.display_text.tag_add("SELECT", self.ROW_OFFSET + row,
self.ROW_OFFSET + self.SELECTOR_WIDTH + row)
@@ -128,7 +144,9 @@ class Display(object):
@staticmethod
def create_video_display_banner(start, end, length, position):
banner_list = ['[', '-', '-', '-', '-', '-', '-', '-', '-',
- '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-',
+ '-', '-', '-', '-', '-', '-', '-', '-', '-',
+ '-', '-', '-', '-', '-',
']']
max = len(banner_list) - 1
if position < start:
diff --git a/r_e_c_u_r.py b/r_e_c_u_r.py
index aa438f0..7a88856 100644
--- a/r_e_c_u_r.py
+++ b/r_e_c_u_r.py
@@ -5,7 +5,7 @@ import sys
from user_input.actions import Actions
from display_centre.display import Display
from user_input.numpad_input import NumpadInput
-from video_centre.videodriver import VideoDriver
+from video_centre.video_driver import VideoDriver
import data_centre
## create tk object
diff --git a/user_input/numpad_input.py b/user_input/numpad_input.py
index d72cc1a..c3b62e3 100644
--- a/user_input/numpad_input.py
+++ b/user_input/numpad_input.py
@@ -26,6 +26,10 @@ class NumpadInput(object):
if event.char is not '.':
self.display.refresh_display()
+ # for bank in range(10):
+ # if event.char == str(bank):
+ # self.actions.load_this_bank_into_next_player(bank)
+
def on_backspace_press(self, event):
if self.display.display_mode == 'BROWSER':
self.actions.enter_on_browser_selection()
diff --git a/video_centre/videodriver.py b/video_centre/video_driver.py
similarity index 88%
rename from video_centre/videodriver.py
rename to video_centre/video_driver.py
index 8847475..1066c18 100644
--- a/video_centre/videodriver.py
+++ b/video_centre/video_driver.py
@@ -1,17 +1,13 @@
-try:
- from video_centre.video_player import video_player # <== for deving only
- has_omx = True
-except ImportError:
- has_omx = False
- from video_centre.video_player import fake_video_player
+import data_centre
+from video_centre.video_player import video_player, fake_video_player # <== for deving only
+
class VideoDriver(object):
def __init__(self, root=None):
- print('has omx :{}'.format(has_omx))
self.root = root
self.delay = 5
- self.has_omx = has_omx
+ self.has_omx = data_centre.has_omx
if self.has_omx:
self.last_player = video_player(self.root, 'a.a')
self.current_player = video_player(self.root, 'b.b')
@@ -72,7 +68,7 @@ class VideoDriver(object):
self.next_player.status, self.current_player.get_position(), self.current_player.length, \
self.current_player.start, self.current_player.end
else:
- return 0, 'test', 1, 'test', 0, 10
+ return 0, 'test', 1, 'test', 5, 10, 2, 8
def exit_all_players(self):
self.next_player.exit()
diff --git a/video_centre/video_player.py b/video_centre/video_player.py
index bf405db..46dc97f 100644
--- a/video_centre/video_player.py
+++ b/video_centre/video_player.py
@@ -118,7 +118,7 @@ class video_player:
class fake_video_player:
def __init__(self):
self.player = None
- self.name = name
+ self.name = 'fake'
self.omx_running = False
self.status = 'N/A'
self.duration = 0