From 58112250d3a556743cbe056e7d6908bd83d0fce7 Mon Sep 17 00:00:00 2001 From: Tim Caldwell Date: Thu, 12 Oct 2017 21:01:51 +1300 Subject: [PATCH] working on the text gui --- data_centre.py | 4 +- display_centre.py | 96 +++++++++++++++++++++++++++++++++++++++++++---- video_centre.py | 2 +- 3 files changed, 92 insertions(+), 10 deletions(-) diff --git a/data_centre.py b/data_centre.py index fee0a33..71dc6f9 100644 --- a/data_centre.py +++ b/data_centre.py @@ -52,7 +52,7 @@ class data(object): browser_list_for_display = [] for index , dir in enumerate(self._browser_list): - browser_list_for_display.append(([dir['name'],dir['bank']],index)) + browser_list_for_display.append([dir['name'],dir['bank']]) #logger.info(browser_list_for_display) return browser_list_for_display @@ -177,7 +177,7 @@ def get_all_looper_data_for_display(): length = convert_int_to_string_for_display(bank["length"]) start = convert_int_to_string_for_display(bank["start"]) end = convert_int_to_string_for_display(bank["end"]) - loop_data.append(([str(index),bank["name"],length,start,end],index)) + loop_data.append([str(index), bank["name"], length, start, end]) return loop_data diff --git a/display_centre.py b/display_centre.py index cea86f4..3ec0a78 100644 --- a/display_centre.py +++ b/display_centre.py @@ -6,12 +6,22 @@ import time import traceback from data_centre import * from Tkinter import * +import tkFont import video_centre import data_centre +VIDEO_DISPLAY_TEXT = 'NOW [{}] {} NEXT [{}] {}' +VIDEO_DISPLAY_BANNER_LIST = ['[','-','-','-','-','-','-','-','-','-','-',']'] +VIDEO_DISPLAY_BANNER_TEXT = '{} {} {}' + + tk = Tk() +#from tkinter.font import Font + +bold_font = tkFont.Font( size=12, weight="bold") + label_position_value = StringVar() label_position_value.set('Current Position: --:--') label_length_value = StringVar() @@ -24,17 +34,89 @@ video_driver = video_centre.video_driver(frame) label_length.pack() label_position.pack() + bank_info = data_centre.get_all_looper_data_for_display() -t = Text(tk) -for x in bank_info: - for y in x: - t.insert(END, y + ' ') - t.insert(END, '\n') -t.pack() + +#terminal_font = Font(family="Terminal", size=12) +#terminal_font_bold = Font(family="Terminal", size=12, weight='bold') +#titles.configure(font=terminal_font_bold) +display_mode = 'BROWSER' + +def load_display(display): + load_title(display) + load_divider(display) + load_player(display) + load_divider(display) + if display_mode == 'BROWSER': + load_browser(display) + elif display_mode == 'SETTINGS': + load_settings(display) + else: + load_looper(display) + load_divider(display) + + display.pack() + + +def load_title(display): + display.insert(END,'======== r_e_c_u_r ======== \n') + +def load_divider(display): + display.insert(END, '---------------- \n') + +def load_player(display): + text, banner = get_text_for_video_display() + display.insert(END, text + '\n') + display.insert(END, banner + '\n') + +def load_looper(display): + bank_info = data_centre.get_all_looper_data_for_display() + display.insert(END, '------ ------ \n') + display.insert(END, '{:>10} {:>20} {:>10} {:>10} {:>10} \n'.format('bank no', 'name', 'length', 'start', 'end')) + for bank in bank_info: + display.insert(END, '{:>10} {:>20} {:>10} {:>10} {:>10} \n'.format(bank[0], bank[1], bank[2], bank[3], bank[4])) + +def get_text_for_video_display(): + now_bank, now_status, next_bank, next_status, duration, video_length = video_driver.get_info_for_video_display() + banner = create_video_display_banner(duration, video_length) + time_been = data_centre.convert_int_to_string_for_display(duration) + time_left = data_centre.convert_int_to_string_for_display(video_length - duration) + + return VIDEO_DISPLAY_BANNER_TEXT.format(time_been, banner, time_left),\ + VIDEO_DISPLAY_TEXT.format(now_bank,now_status,next_bank, next_status) + +def create_video_display_banner(duration,video_length): + banner_list = ['[','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',']'] + max = len(banner_list) - 1 + if duration <= 0: + banner_list[0] = '<' + elif duration >= video_length: + banner_list[max] = '>' + else: + marker = int(math.floor(float(duration)/float(video_length)*(max-1))+1) + banner_list[marker] = '*' + + return ''.join(banner_list) + +def load_browser(self): + data_object = data_centre.data() + browser_info = data_object.get_browser_data_for_display() + display.insert(END, '------ ------ \n') + display.insert(END, '{:50} {:20} \n'.format('path', 'bank')) + for path in browser_info: + display.insert(END, '{:50} {:20} \n'.format(path[0], path[1])) + +display = Text(tk) + +display.tag_configure("BOLD", background="black", foreground="white") + +load_display(display) + +display.tag_add("BOLD", 8.0, 8.35) def key(event): print "pressed", repr(event.char) - print "video position is :{}".format(video_driver.current_player.get_position()) + print sel.first if(event.char in ['0', '1', '2']): print 'updating next bank' data_centre.update_next_bank_number(int(event.char)) diff --git a/video_centre.py b/video_centre.py index 0409aed..125471b 100644 --- a/video_centre.py +++ b/video_centre.py @@ -93,7 +93,7 @@ class video_driver(object): def get_info_for_video_display(self): if has_omx: return self.current_player.bank_number, self.current_player.status, self.next_player.bank_number, \ - self.next_player.status, self.current_player.duration, self.current_player.video_length + self.next_player.status, self.current_player.position, self.current_player.video_length else: return 0, 'test', 1, 'test', 0, 10