svgui/pyjs/lib/sys.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Wed, 27 Jun 2018 13:57:03 +0300
changeset 2233 32445e3c9cfc
parent 1879 4d81c3bcac82
permissions -rw-r--r--
Catch 'clipboard already open' errors in editors

Apparently following commits have not fixed the problem completely,
because it still happens (although not so often).

changeset: 2019:b8f795bdfe9f
user: Andrey Skvortsov <andrej.skvortzov@gmail.com>
date: Fri May 25 17:40:29 2018 +0300
summary: fix hangs on mouse selection in case if wxPython uses wxWidgets with GTK3+ support

changeset: 2018:5ce6d08ff2c7
user: Andrey Skvortsov <andrej.skvortzov@gmail.com>
date: Fri May 25 17:23:15 2018 +0300
summary: make clipboard open minimal time as wxPython documentation recommends
# the platform name (PyV8, smjs, Mozilla, IE6, Opera, Safari etc.)
platform = ''  # to be updated by app, on compile

# a dictionary of module override names (platform-specific)
overrides = {}  # to be updated by app, on compile

# the remote path for loading modules
loadpath = None

stacktrace = None

appname = None


def setloadpath(lp):
    global loadpath
    loadpath = lp


def setappname(an):
    global appname
    appname = an


def getloadpath():
    return loadpath


def addoverride(module_name, path):
    overrides[module_name] = path


def addstack(linedebug):
    JS("""
        if (pyjslib.bool((sys.stacktrace === null))) {
            sys.stacktrace = new pyjslib.List([]);
        }
        sys.stacktrace.append(linedebug);
    """)


def popstack():
    JS("""
        sys.stacktrace.pop()
    """)


def printstack():
    JS("""
        var res = '';

        var __l = sys.stacktrace.__iter__();
        try {
            while (true) {
                var l = __l.next();
                res +=  ( l + '\\n' ) ;
            }
        } catch (e) {
            if (e != pyjslib.StopIteration) {
                throw e;
            }
        }

        return res;
    """)