SOLVED Observe point changes/movements?
- 
					
					
					
					
 I'm hoping to record the changes made to points in glyphs. My current plan is to make a dictionary of point locations when a glyph is opened (or possibly just accessing the glif data), then comparing point locations when points are moved, and making a dictionary of point movements. Is there an observer that can send a notification when points are moved? I'm hoping for something along the lines of pointMovedInCurrentGlyph, so I could add something like this to my code...addObserver(self, 'recordPointMovement', "pointMovedInCurrentGlyph") # fake code...but I'm not finding anything obvious. Am I missing something? How might I best approach this? 
 
- 
					
					
					
					
 Makes sense. Thanks so much for your help! 
 
- 
					
					
					
					
 a script or something else like fe a transormation from the inspector 
 
- 
					
					
					
					
 Ohh of course, that is simpler than I was thinking! I suppose that the only time points would move without being selected is if they were moved by a script, right? 
 
- 
					
					
					
					
 the Contour.PointsChangedcalls your callback with a notification object:notification.object # in this case the contour object notification.data # optional data related to the event, in this case it will be Nonethis notification is sent on different events: inserting, removing, changing start point... in most cases the moved points are the selected ones: glyph.selectedPoints
 
- 
					
					
					
					
 It's working nicely to show that a point moved! Is there a simple way to know which point moved, once I get the notification? The notification I receive is: Contour.PointsChanged --> <lib.fontObjects.doodleContour.DoodleContour object at 0x112f24320>Ideally, I'd want to get to data which was the point index with its parent contour index. If I print notification.data, it only givesNone.Does the object at 0x112f24320mean anything?Would I have to do something like looping through all points to compare them to a "before" state (possibly in another layer), then assign changed points a unique identifier with generateIdentifierForPoint(point)? 
 
- 
					
					
					
					
 @frederik said in Observe point changes/movements?: Contour.PointsChanged Amazing, thank you! I'll give this a shot tonight and see where it gets me. 
 
- 
					
					
					
					
 There is a Contour.PointsChangednotification for a contour object.There are no notifications for each point object. a tiny script that shows all font level notifications: import vanilla class AllNotifications(object): def __init__(self): self.w = vanilla.Window((400, 400), minSize=(200, 200)) self.w.e = vanilla.TextEditor((0, 0, 0, 0)) # keep a ref otherwise weak ref will not work self.w._ref = self self.w.bind("close", self.windowClose) self.w.open() self.font = CurrentFont().naked() self.font.dispatcher.addObserver(self, "callback", notification=None, observable=None) def windowClose(self, sender): # remove the observer self.font.dispatcher.removeObserver(self, notification=None, observable=None) # remove the references del self.w._ref del self.font def callback(self, notification): txt = "\n%s --> %s" % (notification.name, notification.object) self.w.e.set(self.w.e.get() + txt) AllNotifications()
 
