merge with dev

This commit is contained in:
langolierz
2020-02-29 14:51:50 +00:00
14 changed files with 291 additions and 61 deletions

View File

@@ -29,6 +29,7 @@ class Actions(object):
self.capture = None
self.serial_port_process = None
self.openframeworks_process = None
self.remote_process = None
self.set_capture_object('value')
self.server = self.setup_osc_server()
@@ -47,6 +48,13 @@ class Actions(object):
def move_browser_selection_up(self):
self.display.browser_menu.navigate_menu_up()
def move_browser_selection_page_down(self):
self.display.browser_menu.navigate_menu_page_down()
def move_browser_selection_page_up(self):
self.display.browser_menu.navigate_menu_page_up()
def enter_on_browser_selection(self):
self.display.browser_menu.enter_on_browser_selection()
@@ -56,6 +64,13 @@ class Actions(object):
def move_settings_selection_up(self):
self.display.settings_menu.navigate_menu_up()
def move_settings_selection_page_down(self):
self.display.settings_menu.navigate_menu_page_down()
def move_settings_selection_page_up(self):
self.display.settings_menu.navigate_menu_page_up()
def enter_on_settings_selection(self):
is_setting, setting = self.display.settings_menu.enter_on_setting_selection()
if is_setting:
@@ -71,6 +86,13 @@ class Actions(object):
def move_shaders_selection_up(self):
self.shaders.shaders_menu.navigate_menu_up()
def move_shaders_selection_page_down(self):
self.shaders.shaders_menu.navigate_menu_page_down()
def move_shaders_selection_page_up(self):
self.shaders.shaders_menu.navigate_menu_page_up()
def enter_on_shaders_selection(self):
##want to select shader if its not selected, and want to enter 'param' mode if it already is
is_shader, is_selected_shader, selected_shader = self.shaders.enter_on_shaders_selection()
@@ -709,8 +731,10 @@ class Actions(object):
self.video_driver.exit_all_players()
self.exit_openframeworks()
self.exit_osc_server('','')
self.create_client_and_shutdown_osc_server()
self.stop_serial_port_process()
self.stop_openframeworks_process()
self.stop_remote_process()
self.toggle_x_autorepeat()
self.tk.destroy()
@@ -808,14 +832,59 @@ class Actions(object):
this_dispatcher.map("/shutdown", self.exit_osc_server)
#this_dispatcher.map("/player/a/status", self.set_status)
osc_server.ThreadingOSCUDPServer.allow_reuse_address = True
server = osc_server.ThreadingOSCUDPServer((server_args.ip, server_args.port), this_dispatcher)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.start()
return server
def exit_osc_server(self, unused_addr, args):
print('shutting down of osc server')
self.server.shutdown()
def create_client_and_shutdown_osc_server(self):
from pythonosc import udp_client
client_parser = argparse.ArgumentParser()
client_parser.add_argument("--ip", default=self.data.get_ip_for_osc_client(), help="the ip")
client_parser.add_argument("--port", type=int, default=8080, help="the port")
client_args = client_parser.parse_args()
client = udp_client.SimpleUDPClient(client_args.ip, client_args.port)
client.send_message("/shutdown", True)
def toggle_access_point(self, setting_value):
osc_setting_state = self.data.settings['user_input']['OSC_INPUT']['value']
self.data.settings['user_input']['OSC_INPUT']['value'] = 'disabled'
self.tk.after(2000, self.toggle_access_point_delay, setting_value, osc_setting_state)
def toggle_access_point_delay(self, setting_value, osc_setting_state ):
if setting_value == 'enabled':
subprocess.call(['sudo', 'bash', '/home/pi/raspiApWlanScripts/switchToAP.sh'])
else:
subprocess.call(['sudo', 'bash', '/home/pi/raspiApWlanScripts/switchToWlan.sh'])
self.tk.after(6000, self.enable_osc, osc_setting_state)
def toggle_remote_server(self, setting_value):
osc_setting_state = self.data.settings['user_input']['OSC_INPUT']['value']
self.data.settings['user_input']['OSC_INPUT']['value'] = 'disabled'
self.tk.after(2000, self.toggle_remote_server_delay, setting_value, osc_setting_state)
def toggle_remote_server_delay(self, setting_value, osc_setting_state):
if setting_value == 'enabled':
self.remote_process = subprocess.Popen(['node', '/home/pi/r_e_m_o_t_e/webserver.js'])
else:
self.stop_remote_process()
self.data.settings['user_input']['OSC_INPUT']['value'] = osc_setting_state
def enable_osc(self, osc_setting_state):
self.data.settings['user_input']['OSC_INPUT']['value'] = osc_setting_state
def show_ip(self, *args):
address = self.data.get_ip_address()
self.message_handler.set_message('INFO', 'ip is {}:8080'.format(address))
def create_serial_port_process(self):
if self.serial_port_process == None:
self.serial_port_process = subprocess.Popen("exec " + "ttymidi -s /dev/serial0 -b 38400 -n serial", shell=True)
@@ -826,6 +895,12 @@ class Actions(object):
self.serial_port_process.kill()
self.serial_port_process = None
def stop_remote_process(self):
if self.remote_process is not None:
self.remote_process.kill()
self.remote_process = None
def restart_openframeworks(self):
self.reset_players()
self.exit_openframeworks()
@@ -904,6 +979,11 @@ class Actions(object):
if os.path.exists(path):
os.remove(path)
def eject_all_usb_drives(self):
for i in range(1, 4):
if os.path.exists('/dev/sda{}'.format(i)):
subprocess.call(['sudo', 'eject', '/dev/sda{}'.format(i)])
# TODO: make this interrogate the various components for available routes to parse
# this would include eg a custom script module..
@property