def newEngine(self): engine = QScriptEngine() ns = engine.globalObject() for name, value in self.locals.items(): if isinstance(value, QObject): value = engine.newQObject(value) elif callable(value): value = engine.newFunction(value) ns.setProperty(name, value) return engine
0).toString() #expects a single arg: name of .ui file ui = uic.loadUi(uifile) #, window) ui.show() uis.append(ui) #return QScriptValue(eng, 0) return engine.newQObject(ui) def debugprint(ctx, eng): #for javascript to print to console print ctx.argument(0).toString() return QScriptValue(eng, 0) engine = QScriptEngine() eprop = engine.globalObject().setProperty eprop("loadui", engine.newFunction(loadui)) eprop("print", engine.newFunction(debugprint)) engine.evaluate(""" //the javascript source ui = loadui("dialog.ui"); print(ui); function changed(v) { print("val changed to: " + v); } print(ui.doubleSpinBox.valueChanged); ui.doubleSpinBox['valueChanged(double)'].connect(changed); print("connecting to doubleSpinBox.valueChanged ok from js (?)"); """)
def loadui(ctx, eng): global uis #to keep gc from clearing this :o uifile = ctx.argument(0).toString() #expects a single arg: name of .ui file ui = uic.loadUi(uifile) #, window) ui.show() uis.append(ui) #return QScriptValue(eng, 0) return engine.newQObject(ui) def debugprint(ctx, eng): #for javascript to print to console print ctx.argument(0).toString() return QScriptValue(eng, 0) engine = QScriptEngine() eprop = engine.globalObject().setProperty eprop("loadui", engine.newFunction(loadui)) eprop("print", engine.newFunction(debugprint)) engine.evaluate(""" //the javascript source ui = loadui("dialog.ui"); print(ui); function changed(v) { print("val changed to: " + v); } print(ui.doubleSpinBox.valueChanged); ui.doubleSpinBox['valueChanged(double)'].connect(changed); print("connecting to doubleSpinBox.valueChanged ok from js (?)"); """)