From 655fcd54d5fa17b0b125edca7e8b76aa56977d5c Mon Sep 17 00:00:00 2001 From: Tim Caldwell Date: Thu, 12 Oct 2017 10:30:01 +1300 Subject: [PATCH] removed asciimatic package to start the ui from console --- data_centre.pyc | Bin 0 -> 11092 bytes display_centre.py | 262 ++-------------------------------------------- dual_screen.pyc | Bin 0 -> 62349 bytes logfile.log | 3 + video_centre.pyc | Bin 0 -> 6604 bytes 5 files changed, 10 insertions(+), 255 deletions(-) create mode 100644 data_centre.pyc create mode 100644 dual_screen.pyc create mode 100644 logfile.log create mode 100644 video_centre.pyc diff --git a/data_centre.pyc b/data_centre.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a682564ab2ea468da769739c953d0432d98d1e62 GIT binary patch literal 11092 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 self.frame_update_count or self._last_frame == 0: - self._last_frame = frame_no - - video_display_text, video_banner_text = self.get_text_for_video_display() - self.player_info_label._text = video_display_text - self.player_info_banner._text = video_banner_text - - super(Display, self)._update(frame_no) - - @property - def frame_update_count(self): - # Refresh once every 1 seconds by default. - return 20 - - def get_focus_on_list(self, list): - return list.options[list.value][0][0] - - def process_event(self, event): - if isinstance(event, KeyboardEvent): - if event.key_code in [ord('n'), ord('N')]: - raise NextScene - - return super(Display, self).process_event(event) - - -class Browser(Display): - def __init__(self, screen, data, driver): - super(Browser, self).__init__([1,0,0],screen,driver, on_load=self._reload_list) - - self._data_object = data - layout = Layout([100], fill_frame=True) - self.add_layout(layout) - self._browser_data_view = ScrollingMultiColumnListBox( - Widget.FILL_FRAME, - [50,10], - self._data_object.get_browser_data_for_display(), - titles=['path','bank'] - ) - layout.add_widget(self._browser_data_view) - - self.fix() - - def process_event(self, event): - numberMapping = [ord('q'),ord('w'),ord('e'),ord('r'),ord('t'),ord('y'),ord('u'),ord('i'),ord('o'),ord('p') ] - - if isinstance(event, KeyboardEvent): - if event.key_code in numberMapping: - - focus = self.get_focus_on_list(self._browser_data_view) - is_file, name = data_centre.extract_file_type_and_name_from_browser_format(focus) - if(is_file): - bank_number = numberMapping.index(event.key_code) - data_centre.create_new_bank_mapping(bank_number,name) - self._data_object.rewrite_browser_list() - self._reload_list(self._browser_data_view.value) - - if event.key_code in [ord('m')]: - focus = self.get_focus_on_list(self._browser_data_view) - is_file , name = data_centre.extract_file_type_and_name_from_browser_format(focus) - if(is_file): - data_centre.create_new_bank_mapping_in_first_open(name) - self._data_object.rewrite_browser_list() - self._reload_list(self._browser_data_view.value) - else: - self._data_object.update_open_folders(name) - self._data_object.rewrite_browser_list() - self._reload_list(self._browser_data_view.value) - - if event.key_code in [ord('c')]: - data_centre.clear_all_banks() - - self._data_object.rewrite_browser_list() - self._reload_list(self._browser_data_view.value) - - return super(Browser, self).process_event(event) - # Now pass on to lower levels for normal handling of the event. - - def _update(self, frame_no): - logger.info('the BROWSER frame number is {}'.format(frame_no)) - super(Browser, self)._update(frame_no) - - def _reload_list(self, new_value=None): - self._browser_data_view.options = self._data_object.get_browser_data_for_display() - self._browser_data_view.value = new_value - - -class Looper(Display): - def __init__(self, screen, data,driver): - super(Looper, self).__init__([0, 1, 0],screen,driver,on_load=self._reload_list,) - - self._data_object = data - layout = Layout([100], fill_frame=True) - self.add_layout(layout) - self._bank_data_view = MultiColumnListBox( - Widget.FILL_FRAME, - [10,35,10,10,10], - data_centre.get_all_looper_data_for_display(), - titles=['bank','name','length','start','end']) - layout.add_widget(self._bank_data_view) - - self.fix() - - def process_event(self, event): - return super(Looper, self).process_event(event) - - def _reload_list(self, new_value=None): - self._bank_data_view.options = data_centre.get_all_looper_data_for_display() - self._bank_data_view.value = new_value - - -class Settings(Display): - def __init__(self, screen, data,driver): - super(Settings, self).__init__([0, 0, 1], screen,driver,on_load=self._reload_list) - - self._data_object = data - layout = Layout([100], fill_frame=True) - self.add_layout(layout) - self._settings_data_view = MultiColumnListBox( - Widget.FILL_FRAME, - [30, 30], - data_centre.get_all_settings_data_for_display(), - titles=['setting', 'value']) - layout.add_widget(self._settings_data_view) - - self.fix() - - def _reload_list(self,new_value=None): - self._settings_data_view.options = data_centre.get_all_settings_data_for_display() - self._settings_data_view.value = new_value - - def process_event(self, event): - - if isinstance(event, KeyboardEvent): - if event.key_code in [ord('m')]: - focus = self.get_focus_on_list(self._settings_data_view) - data_centre.switch_settings(focus) - self._reload_list(self._settings_data_view.value) - - return super(Settings, self).process_event(event) - - -class ScrollingMultiColumnListBox(MultiColumnListBox): - def __init__(self, height, columns, options, titles): - super(ScrollingMultiColumnListBox, self).__init__(height, columns, options, titles) - - def process_event(self, event): - if isinstance(event, KeyboardEvent): - if len(self._options) > 0 and event.key_code == Screen.KEY_UP and self._line == 0: - self._line = len(self._options) - elif len(self._options) > 0 and event.key_code == Screen.KEY_DOWN and self._line == len(self._options) - 1: - self._line = -1 - - super(ScrollingMultiColumnListBox,self).process_event(event) - -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 demo(screen, tk): - scenes = [Scene([Browser(screen, data,video_driver)], -1), - Scene([Looper(screen, data,video_driver)], -1), - Scene([Settings(screen, data,video_driver)], -1)] - screen.play(scenes,tk) - -data = data_centre.data() -video_driver = video_centre.video_driver() -last_scene = None - tk = Tk() +tk.withdraw() canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0) canvas.pack() -while True: - try: - Screen.wrapper(demo, catch_interrupt=True, arguments=(tk,)) - sys.exit(0) - except ResizeScreenError as e: - last_scene = e.scene - except Exception as e: - logger.error(traceback.format_exc()) - logger.error(str(e)) - +data = data_centre.data() +try: + video_driver = video_centre.video_driver(canvas) +except Exception as e: + logger.error(str(e)) diff --git a/dual_screen.pyc b/dual_screen.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1980e611b30aa719607d82f18bba3173711d0b08 GIT binary patch literal 62349 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 BHd_Dy literal 0 HcmV?d00001 diff --git a/logfile.log b/logfile.log new file mode 100644 index 0000000..85ce46d --- /dev/null +++ b/logfile.log @@ -0,0 +1,3 @@ +2017-10-12 10:22:50,776 INFO the has_omx flag is False +2017-10-12 10:22:50,776 INFO the has_omx flag is False +2017-10-12 10:22:50,776 INFO the has_omx flag is False diff --git a/video_centre.pyc b/video_centre.pyc new file mode 100644 index 0000000000000000000000000000000000000000..303f12da8fe2d7eac9edd0a61d4711e27d15c379 GIT binary patch literal 6604 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 literal 0 HcmV?d00001