示例#1
0
    def runCode(self, liveCoding=False):
        # get the code
        code = self.code()
        # save the code in the defaults, if something goes wrong
        setDefault("DrawBotCodeBackup", code)
        # get te path of the document (will be None for an untitled document)
        path = self.path()
        # reset the internal warning system
        warnings.resetWarnings()
        # reset the drawing tool
        _drawBotDrawingTool._reset()
        # create a namespace
        namespace = DrawBotNamespace(_drawBotDrawingTool, _drawBotDrawingTool._magicVariables)
        # add the tool callbacks in the name space
        _drawBotDrawingTool._addToNamespace(namespace)
        # when enabled clear the output text view
        if getDefault("DrawBotClearOutput", True):
            self.outPutView.clear()
        # create a new std output, catching all print statements and tracebacks
        self.output = []
        self.stdout = StdOutput(self.output)
        self.stderr = StdOutput(self.output, True)
        # warnings should show the warnings
        warnings.shouldShowWarnings = True
        # run the code
        ScriptRunner(code, path, namespace=namespace, stdout=self.stdout, stderr=self.stderr)
        # warnings should stop posting them
        warnings.shouldShowWarnings = False
        # set context, only when the panes are visible
        if self.w.split.isPaneVisible("drawView") or self.w.split.isPaneVisible("thumbnails"):
            def createContext(context):
                # draw the tool in to the context
                _drawBotDrawingTool._drawInContext(context)
            # create a context to draw in
            context = DrawBotContext()
            # savely run the callback and track all traceback back the the output
            CallbackRunner(createContext, stdout=self.stdout, stderr=self.stderr, args=[context])
            # get the pdf document and set in the draw view
            pdfDocument = context.getNSPDFDocument()
            if not liveCoding or (pdfDocument and pdfDocument.pageCount()):
                self.drawView.setPDFDocument(pdfDocument)
            # scroll down
            self.drawView.scrollDown()
        else:
            # if the panes are not visible, clear the draw view
            self.drawView.setPDFDocument(None)

        # set the catched print statements and tracebacks in the the output text view
        for text, isError in self.output:
            if liveCoding and isError:
                continue
            self.outPutView.append(text, isError)

        # reset the code backup if the script runs with any crashes
        setDefault("DrawBotCodeBackup", None)
        # clean up
        
        self.output = None
        self.stdout = None
        self.stderr = None
 def checkNowCallback(self, sender):
     from drawBot.updater import Updater
     oldValue = getDefault("DrawBotCheckForUpdatesAtStartup", True)
     setDefault("DrawBotCheckForUpdatesAtStartup", True)
     updater = Updater(self.w)
     if not updater.needsUpdate:
         self.showMessage("You have the latest version!", "DrawBot %s is currently the newest version" % updater.__version__)
     setDefault("DrawBotCheckForUpdatesAtStartup", oldValue)
    def setToDefaults(self, sender=None):
        if self._initializing:
            return
        setColorDefault("PyDEBackgroundColor", self.backgroundColor.get())
        setColorDefault("PyDEHightLightColor", self.hightLightColor.get())

        tokens = dict()
        for item in self.tokenList:
            tokens[item.token()] = item.tokenValue()
        setDefault("PyDETokenColors", tokens)

        self.tokenList.getNSTableView().setNeedsDisplay_(True)
        self.preferencesChanged()
示例#4
0
 def setToDefaults(self, sender=None):
     setDefault("DrawBotClearOutput", self.w.clearOutPut.get())
     setDefault("DrawButLiveUpdateStdoutStderr", self.w.liveOutPut.get())
     setDefault("DrawBotUseFutureDivision", self.w.useFutureDivision.get())
     setDefault("DrawBotAnimateIcon", self.w.animateIcon.get())
     setDefault("DrawBotCheckForUpdatesAtStartup",
                self.w.checkForUpdates.get())
     setDefault("shouldOpenUntitledFile",
                self.w.shouldOpenUntitledFile.get())
     setDefault("DrawBotAddToolbar", self.w.showToolbar.get())
示例#5
0
    def runCode(self, liveCoding=False):
        # get the code
        code = self.code()
        # code = code.encode("utf-8")
        # save the code in the defaults, if something goes wrong
        setDefault("DrawBotCodeBackup", code)
        # get te path of the document (will be None for an untitled document)
        path = self.path()
        # reset the internal warning system
        warnings.resetWarnings()
        # reset the drawing tool
        _drawBotDrawingTool.newDrawing()
        # create a namespace
        namespace = {}
        # add the tool callbacks in the name space
        _drawBotDrawingTool._addToNamespace(namespace)
        # when enabled clear the output text view
        if getDefault("DrawBotClearOutput", True):
            self.outPutView.clear()
        # create a new std output, catching all print statements and tracebacks
        self.output = []

        liveOutput = None
        if getDefault("DrawButLiveUpdateStdoutStderr", False):
            liveOutput = self.outPutView

        self.stdout = StdOutput(self.output, outputView=liveOutput)
        self.stderr = StdOutput(self.output, isError=True, outputView=liveOutput)
        # warnings should show the warnings
        warnings.shouldShowWarnings = True
        # run the code
        ScriptRunner(code, path, namespace=namespace, stdout=self.stdout, stderr=self.stderr)
        # warnings should stop posting them
        warnings.shouldShowWarnings = False
        # set context, only when the panes are visible
        if self.w.split.isPaneVisible("drawView") or self.w.split.isPaneVisible("thumbnails"):
            def createContext(context):
                # draw the tool in to the context
                _drawBotDrawingTool._drawInContext(context)
            # create a context to draw in
            context = DrawBotContext()
            # savely run the callback and track all traceback back the output
            CallbackRunner(createContext, stdout=self.stdout, stderr=self.stderr, args=[context])
            # get the pdf document and set in the draw view
            pdfDocument = context.getNSPDFDocument()
            selectionIndex = self.thumbnails.getSelection()
            if not liveCoding or (pdfDocument and pdfDocument.pageCount()):
                self.drawView.setPDFDocument(pdfDocument)
            # scroll to the original position
            self.drawView.scrollToPageIndex(selectionIndex)
        else:
            # if the panes are not visible, clear the draw view
            self.drawView.setPDFDocument(None)
        # drawing is done
        _drawBotDrawingTool.endDrawing()
        # set the catched print statements and tracebacks in the the output text view
        for text, isError in self.output:
            if liveCoding and isError:
                continue
            self.outPutView.append(text, isError)

        # reset the code backup if the script runs with any crashes
        setDefault("DrawBotCodeBackup", None)
        # clean up

        self.output = None
        self.stdout = None
        self.stderr = None
示例#6
0
 def setToDefaults(self, sender=None):
     setDefault("DrawBotClearOutput", self.w.clearOutPut.get())
     setDefault("DrawButLiveUpdateStdoutStderr", self.w.liveOutPut.get())
     setDefault("DrawBotAnimateIcon", self.w.animateIcon.get())
     setDefault("DrawBotCheckForUpdatesAtStartup",
                self.w.checkForUpdates.get())
 def setToDefaults(self, sender=None):
     setDefault("DrawBotClearOutput", self.w.clearOutPut.get())
     setDefault("DrawButLiveUpdateStdoutStderr", self.w.liveOutPut.get())
     setDefault("DrawBotAnimateIcon", self.w.animateIcon.get())
     setDefault("DrawBotCheckForUpdatesAtStartup", self.w.checkForUpdates.get())
 def setToDefaults(self, sender=None):
     setDefault("DrawBotClearOutput", self.w.clearOutPut.get())
     setDefault("DrawButLiveUpdateStdoutStderr", self.w.liveOutPut.get())
     setDefault("DrawBotUseFutureDivision", self.w.useFutureDivision.get())
     setDefault("DrawBotAnimateIcon", self.w.animateIcon.get())
     setDefault("DrawBotCheckForUpdatesAtStartup", self.w.checkForUpdates.get())
     setDefault("shouldOpenUntitledFile", self.w.shouldOpenUntitledFile.get())
 def setToDefaults(self, sender=None):
     setDefault("DrawBotClearOutput", self.w.clearOutPut.get())
     setDefault("DrawBotAnimateIcon", self.w.animateIcon.get())