improved the dev mode switching and some other things

This commit is contained in:
langolierz
2018-12-19 22:55:04 +00:00
parent 808cce0992
commit 78e4ae3546
4 changed files with 34 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ import subprocess
import tracemalloc import tracemalloc
import data_centre.length_setter as length_setter import data_centre.length_setter as length_setter
import sys import sys
import shlex
import os import os
from pythonosc import osc_message_builder from pythonosc import osc_message_builder
from pythonosc import dispatcher from pythonosc import dispatcher
@@ -26,6 +27,7 @@ class Actions(object):
self.python_capture = self.capture = Capture(self.tk, self.message_handler, self.data) self.python_capture = self.capture = Capture(self.tk, self.message_handler, self.data)
self.capture = None self.capture = None
self.serial_port_process = None self.serial_port_process = None
self.openframeworks_process = None
self.set_capture_object('value') self.set_capture_object('value')
self.server = self.setup_osc_server() self.server = self.setup_osc_server()
@@ -347,16 +349,14 @@ class Actions(object):
def check_if_should_start_openframeworks(self): def check_if_should_start_openframeworks(self):
if self.data.settings['other']['VIDEO_BACKEND']['value'] == 'openframeworks': if self.data.settings['other']['VIDEO_BACKEND']['value'] == 'openframeworks':
subprocess.Popen(["make run --directory=~/openFrameworks/apps/myApps/c_o_n_j_u_r" ], shell=True) self.openframeworks_process = subprocess.Popen(['/home/pi/openFrameworks/apps/myApps/c_o_n_j_u_r/bin/c_o_n_j_u_r'])
print('conjur pid is {}'.format(self.openframeworks_process.pid))
def exit_openframeworks(self): def exit_openframeworks(self):
self.video_driver.osc_client.send_message("/exit", True) self.video_driver.osc_client.send_message("/exit", True)
def toggle_of_screen_size(self, value): def toggle_of_screen_size(self, value):
if value == 'dev': self.data.update_conjur_dev_mode(value)
self.video_driver.osc_client.send_message("/dev_mode", True) self.video_driver.osc_client.send_message("/dev_mode", True)
else:
self.video_driver.osc_client.send_message("/dev_mode", False)
def switch_video_backend(self, state): def switch_video_backend(self, state):
if state == 'openframeworks': if state == 'openframeworks':
@@ -450,6 +450,7 @@ class Actions(object):
self.exit_openframeworks() self.exit_openframeworks()
self.exit_osc_server('','') self.exit_osc_server('','')
self.stop_serial_port_process() self.stop_serial_port_process()
self.stop_openframeworks_process()
self.toggle_x_autorepeat() self.toggle_x_autorepeat()
self.tk.destroy() self.tk.destroy()
@@ -528,6 +529,17 @@ class Actions(object):
self.serial_port_process.kill() self.serial_port_process.kill()
self.serial_port_process = None self.serial_port_process = None
def restart_openframeworks(self):
self.exit_openframeworks()
self.stop_openframeworks_process()
self.check_if_should_start_openframeworks()
def stop_openframeworks_process(self):
if self.openframeworks_process is not None:
print('killing process')
self.openframeworks_process.kill()
self.openframeworks_process = None
def try_pull_code_and_reset(self): def try_pull_code_and_reset(self):
#self.message_handler.set_message('INFO', 'checkin fo updates pls wait') #self.message_handler.set_message('INFO', 'checkin fo updates pls wait')
recur_repo = git.Repo("~/r_e_c_u_r") recur_repo = git.Repo("~/r_e_c_u_r")

View File

@@ -1,4 +1,5 @@
import json import json
import xml.etree.ElementTree as ET
import os import os
from random import randint from random import randint
import inspect import inspect
@@ -20,6 +21,7 @@ class Data(object):
EMPTY_SLOT = dict(name='', location='', length=-1, start=-1, end=-1, rate=1) EMPTY_SLOT = dict(name='', location='', length=-1, start=-1, end=-1, rate=1)
PATH_TO_DATA_OBJECTS = '/home/pi/r_e_c_u_r/json_objects/' PATH_TO_DATA_OBJECTS = '/home/pi/r_e_c_u_r/json_objects/'
PATH_TO_EXTERNAL_DEVICES = '/media/pi' PATH_TO_EXTERNAL_DEVICES = '/media/pi'
PATH_TO_CONJUR_DATA = '/home/pi/openFrameworks/apps/myApps/c_o_n_j_u_r/bin/data/settings.xml'
def __init__(self, message_handler): def __init__(self, message_handler):
self.message_handler = message_handler self.message_handler = message_handler
@@ -56,6 +58,7 @@ class Data(object):
self.midi_mappings = self._read_json(self.MIDI_MAPPING_JSON) self.midi_mappings = self._read_json(self.MIDI_MAPPING_JSON)
self.analog_mappings = self._read_json(self.ANALOG_MAPPING_JSON) self.analog_mappings = self._read_json(self.ANALOG_MAPPING_JSON)
@staticmethod @staticmethod
def create_empty_bank(): def create_empty_bank():
empty_slot = dict(name='', location='', length=-1, start=-1, end=-1, rate=1) empty_slot = dict(name='', location='', length=-1, start=-1, end=-1, rate=1)
@@ -70,6 +73,13 @@ class Data(object):
with open('{}{}'.format(self.PATH_TO_DATA_OBJECTS, file_name), 'w') as data_file: with open('{}{}'.format(self.PATH_TO_DATA_OBJECTS, file_name), 'w') as data_file:
json.dump(data, data_file, indent=4, sort_keys=True) json.dump(data, data_file, indent=4, sort_keys=True)
def update_conjur_dev_mode(self, value):
print(value)
tree = ET.parse(self.PATH_TO_CONJUR_DATA)
tag = tree.find("isDevMode")
tag.text = str(int(value == 'dev'))
tree.write(self.PATH_TO_CONJUR_DATA)
def get_setting_and_folder_from_name(self, setting_name): def get_setting_and_folder_from_name(self, setting_name):
for folder_key , folder_item in self.settings.items(): for folder_key , folder_item in self.settings.items():
for setting_key, setting_item in folder_item.items(): for setting_key, setting_item in folder_item.items():

View File

@@ -163,6 +163,11 @@
"options": [], "options": [],
"value": null "value": null
}, },
"RESTART_OPENFRAMEWORKS": {
"action": "restart_openframeworks",
"options": [],
"value": null
},
"QUIT": { "QUIT": {
"action": "quit_the_program", "action": "quit_the_program",
"options": [], "options": [],

View File

@@ -128,7 +128,7 @@ class AltVideoPlayer:
if self.rate is None: if self.rate is None:
self.rate = 1 self.rate = 1
new_rate = amount #self.rate + amount new_rate = self.rate + amount
print('new rate is being set to {}'.format(new_rate)) print('new rate is being set to {}'.format(new_rate))
if new_rate >= -3 and new_rate <= 3: if new_rate >= -3 and new_rate <= 3:
self.client.send_message("/player/{}/speed".format(self.name[0]), new_rate) self.client.send_message("/player/{}/speed".format(self.name[0]), new_rate)