def load_view(app): import enaml import enamlnative with enamlnative.imports(): with enaml.imports(): from view import ContentView app.view = ContentView() app.show_view()
def reload_view(app): import enaml import enamlnative with enamlnative.imports(): with enaml.imports(): import view reload(view) app.view = view.ContentView() app.show_view()
def main(): """ Called by PyBridge.start() """ print(sys.path) import enamlnative with enamlnative.imports(): from enamlnative.android.app import AndroidApplication app = AndroidApplication('com.codelv.enamlnative.EnamlActivity') app.debug = True #: Makes a lot of lag! app.dev = 'server' app.reload_view = reload_view app.deferred_call(load_view, app) app.start()
def main(): """ Called by PyBridge.start() """ print(sys.path) import enamlnative with enamlnative.imports(): from enamlnative.android.app import AndroidApplication app = AndroidApplication('com.enaml.MainActivity') #app.debug = True #: Makes a lot of lag! #app.dev = '192.168.34.103' #app.reload_view = reload_view app.ignore_reference_errors = True app.deferred_call(load_view, app) #app.deferred_call(dump_stats) app.start()
def default(cls): """ Get the first available event loop implementation based on which packages are installed. """ with enamlnative.imports(): for impl in [ TornadoEventLoop, TwistedEventLoop, BuiltinEventLoop, ]: if impl.available(): print("Using {} event loop!".format(impl)) return impl() raise RuntimeError("No event loop implementation is available. " "Install tornado or twisted.")
def start(self, session): with enamlnative.imports(): import tornado.ioloop import tornado.web import tornado.websocket server = self class DevWebSocketHandler(tornado.websocket.WebSocketHandler): def open(self): print("Dev server client connected!") def on_message(self, message): #: Delegate r = session.handle_message(message) self.write_message(json.dumps(r)) def on_close(self): print("Dev server client lost!") class MainHandler(tornado.web.RequestHandler): def get(self): #: Delegate self.write(server.render_editor()) def post(self): #: Allow posting events r = session.handle_message(self.request.body) self.write(json.dumps(r)) app = tornado.web.Application([ (r"/", MainHandler), (r"/dev", DevWebSocketHandler), ( r"/tmp/(.*)", tornado.web.StaticFileHandler, { "path": os.environ.get("TMP", sys.path[0]) }, ), (r"/source/(.*)", tornado.web.StaticFileHandler, { "path": sys.path[0] }), ]) #: Start listening app.listen(session.port) print("Tornado dev server started on {}".format(session.port))
def start(self, session): server = self with enamlnative.imports(): from twisted.internet import reactor from twisted.web import resource from twisted.web.static import File from twisted.web.server import Site from autobahn.twisted.websocket import (WebSocketServerFactory, WebSocketServerProtocol) from autobahn.twisted.resource import WebSocketResource class DevWebSocketHandler(WebSocketServerProtocol): def onConnect(self, request): print("Client connecting: {}".format(request.peer)) def onOpen(self): print("WebSocket connection open.") def onMessage(self, payload, isBinary): r = session.handle_message(payload) self.sendMessage(json.dumps(r)) def onClose(self, wasClean, code, reason): print("WebSocket connection closed: {}".format(reason)) class MainHandler(resource.Resource): def render_GET(self, req): return server.render_editor() def render_POST(self, req): #: Allow posting events r = session.handle_message(req.content.getvalue()) return json.dumps(r) factory = WebSocketServerFactory(u"ws://0.0.0.0:{}".format( session.port)) factory.protocol = DevWebSocketHandler root = resource.Resource() root.putChild("", MainHandler()) root.putChild("dev", WebSocketResource(factory)) root.putChild("source", File(sys.path[0])) root.putChild("tmp", File(os.environ.get('TMP', sys.path[0]))) site = Site(root) reactor.listenTCP(session.port, site) print("Twisted dev server started on {}".format(session.port))
@author jrm """ import os import sys import json import shutil import inspect import traceback import enamlnative from atom.api import (Atom, Instance, List, Subclass, ForwardInstance, Enum, Unicode, Int, Bool) from contextlib import contextmanager from .bridge import Command with enamlnative.imports(): from .hotswap.api import Hotswapper @contextmanager def cd(newdir): prevdir = os.getcwd() os.chdir(os.path.expanduser(newdir)) try: print("Entering into {}".format(newdir)) yield print("Returning to {}".format(prevdir)) finally: os.chdir(prevdir)