diff --git a/source/carla_modgui.py b/source/carla_modgui.py index 07e0aa91a..2c8fc6420 100755 --- a/source/carla_modgui.py +++ b/source/carla_modgui.py @@ -40,11 +40,9 @@ else: # ------------------------------------------------------------------------------------------------------------ # Imports (tornado) -from pystache import render as pyrender -from tornado.gen import engine from tornado.log import enable_pretty_logging from tornado.ioloop import IOLoop -from tornado.web import asynchronous, HTTPError +from tornado.web import HTTPError from tornado.web import Application, RequestHandler, StaticFileHandler # ------------------------------------------------------------------------------------------------------------ @@ -80,7 +78,6 @@ os.environ['MOD_KEY_PATH'] = os.path.join(DATA_DIR, "keys") os.environ['MOD_CLOUD_PUB'] = os.path.join(ROOT, "keys", "cloud_key.pub") os.environ['MOD_PLUGIN_LIBRARY_DIR'] = os.path.join(DATA_DIR, "lib") -os.environ['MOD_DEFAULT_JACK_BUFSIZE'] = "0" os.environ['MOD_PHANTOM_BINARY'] = "/usr/bin/phantomjs" os.environ['MOD_SCREENSHOT_JS'] = os.path.join(ROOT, "screenshot.js") os.environ['MOD_DEVICE_WEBSERVER_PORT'] = PORT @@ -88,7 +85,7 @@ os.environ['MOD_DEVICE_WEBSERVER_PORT'] = PORT # ------------------------------------------------------------------------------------------------------------ # Imports (MOD) -from mod.lv2 import get_plugin_info, init as lv2_init +from mod.utils import get_plugin_info, init as lv2_init # ------------------------------------------------------------------------------------------------------------ # MOD related classes @@ -100,22 +97,16 @@ class EffectGet(RequestHandler): try: data = get_plugin_info(uri) except: + print("ERROR: get_plugin_info for '%s' failed" % uri) raise HTTPError(404) self.set_header('Content-type', 'application/json') self.write(json.dumps(data)) + self.finish() -class EffectResource(StaticFileHandler): - - def initialize(self): - # Overrides StaticFileHandler initialize - pass - - def get(self, path): - try: - uri = self.get_argument('uri') - except: - return self.shared_resource(path) +class EffectHTML(RequestHandler): + def get(self, html): + uri = self.get_argument('uri') try: data = get_plugin_info(uri) @@ -123,23 +114,16 @@ class EffectResource(StaticFileHandler): raise HTTPError(404) try: - root = data['gui']['resourcesDirectory'] + path = data['gui']['%sTemplate' % html] except: raise HTTPError(404) - try: - super(EffectResource, self).initialize(root) - super(EffectResource, self).get(path) - except HTTPError as e: - if e.status_code != 404: - raise e - self.shared_resource(path) - except IOError: + if not os.path.exists(path): raise HTTPError(404) - def shared_resource(self, path): - super(EffectResource, self).initialize(os.path.join(HTML_DIR, 'resources')) - super(EffectResource, self).get(path) + with open(path, 'rb') as fd: + self.set_header('Content-type', 'text/html') + self.write(fd.read()) class EffectStylesheet(RequestHandler): def get(self): @@ -183,6 +167,41 @@ class EffectJavascript(RequestHandler): self.set_header('Content-type', 'text/javascript') self.write(fd.read()) +class EffectResource(StaticFileHandler): + def initialize(self): + # Overrides StaticFileHandler initialize + pass + + def get(self, path): + try: + uri = self.get_argument('uri') + except: + return self.shared_resource(path) + + try: + data = get_plugin_info(uri) + except: + raise HTTPError(404) + + try: + root = data['gui']['resourcesDirectory'] + except: + raise HTTPError(404) + + try: + super(EffectResource, self).initialize(root) + return super(EffectResource, self).get(path) + except HTTPError as e: + if e.status_code != 404: + raise e + return self.shared_resource(path) + except IOError: + raise HTTPError(404) + + def shared_resource(self, path): + super(EffectResource, self).initialize(os.path.join(HTML_DIR, 'resources')) + return super(EffectResource, self).get(path) + # ------------------------------------------------------------------------------------------------------------ # WebServer Thread @@ -196,6 +215,7 @@ class WebServerThread(QThread): self.fApplication = Application( [ (r"/effect/get/?", EffectGet), + (r"/effect/(icon|settings).html", EffectHTML), (r"/effect/stylesheet.css", EffectStylesheet), (r"/effect/gui.js", EffectJavascript), (r"/resources/(.*)", EffectResource), @@ -391,6 +411,8 @@ class HostWindow(QMainWindow): self.setFixedSize(size) # set initial values + self.fCurrentFrame.evaluateJavaScript("icongui.setPortValue(':bypass', 0, null)") + for index in self.fPortValues.keys(): symbol = self.fPortSymbols[index] value = self.fPortValues[index]