예제 #1
0
 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))
예제 #2
0
def newQScriptEngine():
    engine = QScriptEngine()
    update_qs_namespace(engine, {
        "Application": qApp,
        "Scripter": Scripter.qt,
        "alert": alert
    })
    return engine
예제 #3
0
파일: console.py 프로젝트: moceap/scribus
 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
예제 #4
0
    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 (?)");
예제 #5
0
    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")