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()
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())
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
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())