from mojo.drawingTools import * from mojo.events import addObserver class DrawTest: def __init__(self): ## add an observer for the draw event addObserver(self, "drawSomething", "draw") def drawSomething(self, info): ## draw something the glyph view rect(100, 100, 100, 100) DrawTest()
import vanilla from defconAppKit.windows.baseWindow import BaseWindowController from mojo.events import addObserver, removeObserver from mojo.drawingTools import * class SimpleWindowObserver(BaseWindowController): def __init__(self): # create a window self.w = vanilla.Window((300, 45), "Simple Observer") # add a button with a title and a callback self.w.startStopButton = vanilla.Button((10, 10, -10, 22), "Start", callback=self.startStopButtonCallback) # setup basic windwo behavoir (this is an method from the BaseWindowController) self.setUpBaseWindowBehavior() # open the window self.w.open() def startStopButtonCallback(self, sender): # button callback, check the title if sender.getTitle() == "Start": # set "Stop" as title for the button sender.setTitle("Stop") # add an observer addObserver(self, "draw", "draw") else: # set "Start" as title for the button sender.setTitle("Start") # remove the observser removeObserver(self, "draw") def draw(self, notification): # get the glyph glyph = notification["glyph"] # save the state of the canvas save() # translate the canvase translate(glyph.width * 2, 0) # scale (flip) the canvas scale(-1, 1) # set a fill color fill(0) # draw the glyph drawGlyph(glyph) # restore the canvas restore() def windowCloseCallback(self, sender): # this receives a notification whenever the window is closed # remove the observer removeObserver(self, "draw") # and send the notification to the super super(SimpleWindowObserver, self).windowCloseCallback(sender) SimpleWindowObserver()