def _create_script_engine(self): from nxdrive.scripting import DriveScript self._script_engine = QScriptEngine() if self._script_object is None: self._script_object = DriveScript(self) self._script_engine.globalObject().setProperty( "drive", self._script_engine.newQObject(self._script_object))
def newQScriptEngine(): engine = QScriptEngine() update_qs_namespace(engine, { "Application": qApp, "Scripter": Scripter.qt, "alert": alert }) return engine
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
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 (?)");
def write_table(self, f): # Prepare Strings columns = ['r'] * len(filter(QCheckBox.isChecked, self.chk_global)) header = ["Benchmark"] header.extend([ str(chk.text()) for chk in filter(QCheckBox.isChecked, self.chk_global) ]) for widget in map(self.tabWidget.widget, range(self.tabWidget.count())): columns.append('|') columns.extend([ 'r' for _ in filter(lambda x: not widget.isColumnHidden(x), range(1, widget.columnCount())) ]) header.extend([ str(widget.labels[i]) for i in filter(lambda x: not widget.isColumnHidden(x), range(1, widget.columnCount())) ]) if len(self.configure_dialog.columns()) > 0: columns.append('|') columns.extend(['r'] * len(self.configure_dialog.columns())) header.extend( [str(c) for (c, e) in self.configure_dialog.columns()]) # Items script_engine = QScriptEngine() items = [] for row in range(self.tabWidget.widget(0).rowCount()): # Benchmark item = [self.tabWidget.widget(0).item(row, 0).text()] # Sticky (global) Columns item.extend( map( lambda i: self.tabWidget.widget(0).item(row, i + 1).text(), map(self.chk_global.index, filter(QCheckBox.isChecked, self.chk_global)))) # Tables for widget in map(self.tabWidget.widget, range(self.tabWidget.count())): item.extend([ widget.item(row, i).text() for i in filter(lambda x: not widget.isColumnHidden(x), range(1, widget.columnCount())) ]) # Extra Columns for (_, e) in self.configure_dialog.columns(): e = str(e) # Modify ops = ["LINES", "GATES", "QC", "TC"] regexp = "(%s)\[(\d+)]" % '|'.join(ops) while True: m = re.search(regexp, e) if m is None: break table_index = int(m.group(2)) if table_index >= self.tabWidget.count(): e = "\"N/A\"" break column_index = ops.index(m.group(1)) + 1 e = e.replace( m.group(0), str( self.tabWidget.widget(table_index).item( row, column_index).text())) item.append(script_engine.evaluate(e).toString()) items.append(map(to_latex, map(str, item))) # Captions captions = '& ' * len(filter(QCheckBox.isChecked, self.chk_global)) for i, widget in enumerate( map(self.tabWidget.widget, range(self.tabWidget.count()))): captions += "& \\multicolumn{%d}{|c}{%s} " % (len( filter( lambda x: not widget.isColumnHidden(x), range(1, widget.columnCount()))), self.tabWidget.tabText(i)) if len(self.configure_dialog.columns()) > 0: captions += "& \\multicolumn{%d}{|c}{}" % len( self.configure_dialog.columns()) f.write("\\documentclass[10pt]{article}\n") f.write("\\topmargin=-0.25in\n") f.write("\\oddsidemargin=14.32mm\n") f.write("\\evensidemargin=14.32mm\n") f.write("\\addtolength{\\oddsidemargin}{-1in}\n") f.write("\\addtolength{\\evensidemargin}{-1in}\n") f.write("\\textheight=9.25in\n") f.write("\\textwidth=43pc\n") f.write("\\tabcolsep 6pt\n") f.write("\\renewcommand{\\sfdefault}{phv}\n") f.write("\\renewcommand{\\rmdefault}{ptm}\n") f.write("\\renewcommand{\\ttdefault}{pcr}\n") f.write("\\makeatletter\n") f.write( "\\def\\footnotesize{\\@setfontsize{\\footnotesize}{8}{9pt}}\n") f.write("\\makeatother\n") f.write("\\begin{document}\n") f.write("\\footnotesize\n") f.write("\\noindent\\begin{tabular}{l%s} \\hline\n" % ''.join(columns)) f.write(" %s \\\\\n" % captions) f.write(" %s \\\\ \\hline\n" % ' & '.join(header)) f.write('\\\\\n'.join(map(' & '.join, items))) f.write('\\\\ \\hline\n') f.write("\\end{tabular}\n") f.write("\\end{document}\n")