def outlineView_child_ofItem_(self, outlineView, itemIndex, item): """ NSOutlineViewDataSource method for layer view outlineView_child_ofItem_(outlineView, itemIndex, item) """ _item = Globals.unwrap(item) if _item is None: return Globals.wrap(self.document().getImage().getTopLayer()) _children = _item.getSublayers() return Globals.wrap(_children[itemIndex])
def outlineViewItemDidCollapse_(self, note): _doc = self.document() _active_layer = _doc.getImage().getActiveLayer() _ov = note.object() _row = _ov.rowForItem_(Globals.wrap(_active_layer)) if -1 == _row: _item = note.userInfo()["NSObject"] _row = _ov.rowForItem_(_item) _ov.selectRow_byExtendingSelection_(_row, False)
def layerChanged_(self, note): _doc = self.document() _doc.getDA().setNeedsDisplay_(True) _dict = note.userInfo() _parent = Globals.wrap(_dict["parent"]) _ov = _doc.getOutlineView() _image = _doc.getImage() _l = _activeLayer = _image.getActiveLayer() # _ov.reloadItem_reloadChildren_(_parent, True) _ov.reloadData() _topLayer = _image.getTopLayer() _stack = [] while _l is not _topLayer: _l = _l.getParentLayer() _stack.append(_l) while len(_stack): _item = Globals.wrap(_stack.pop()) _ov.expandItem_(_item) _al = Globals.wrap(_activeLayer) _row = _ov.rowForItem_(_al) _ov.selectRow_byExtendingSelection_(_row, False)
def removed_child_event(self, obj, *args): """ Notification of deletion of a layer. object is Image object, userinfo dict stores layer under key "layer", parent layer under key "parent" """ _nq = NSNotificationQueue.defaultQueue() if len(args) != 2: raise ValueError, "Invalid number of items in deleted_layer_event" _info = {"layer" : args[0], "parent" : args[0].getParent()} _obj = Globals.wrap(obj) _note = NSNotification.notificationWithName_object_userInfo_(Globals.LayerDeletedNotification, _obj, _info) _nq.enqueueNotification_postingStyle_coalesceMask_forModes_(_note, NSPostASAP, NSNotificationNoCoalescing, None)
def deleted_object_event(self, obj, *args): """ Notification of point, line, etc. removed from a layer. object is Image object, userinfo dict stores object under key "item", layer it was removed from under "layer" """ _nq = NSNotificationQueue.defaultQueue() if len(args) != 2: raise ValueError, "Invalid number of items in deleted_object_event" _info = {"layer" : args[0], "item": args[1]} _obj = Globals.wrap(obj) _note = NSNotification.notificationWithName_object_userInfo_("deleted_object", _obj, _info) _nq.enqueueNotification_postingStyle_coalesceMask_forModes_(_note, NSPostASAP, NSNotificationNoCoalescing, None)
def added_child_event(self, obj, *args): """ Notification of new layer added to drawing. object is Image object, userinfo dict stores new layer under key "layer", parent layer under key "parent" """ _nq = NSNotificationQueue.defaultQueue() if len(args) != 2: raise ValueError, "Invalid number of new items in added_layer_event" _info = {"layer": args[0], "parent": args[0].getParent()} _obj = Globals.wrap(obj) _note = NSNotification.notificationWithName_object_userInfo_( Globals.LayerAddedNotification, _obj, _info) _nq.enqueueNotification_postingStyle_coalesceMask_forModes_( _note, NSPostASAP, NSNotificationNoCoalescing, None)
def deleted_object_event(self, obj, *args): """ Notification of point, line, etc. removed from a layer. object is Image object, userinfo dict stores object under key "item", layer it was removed from under "layer" """ _nq = NSNotificationQueue.defaultQueue() if len(args) != 2: raise ValueError, "Invalid number of items in deleted_object_event" _info = {"layer": args[0], "item": args[1]} _obj = Globals.wrap(obj) _note = NSNotification.notificationWithName_object_userInfo_( "deleted_object", _obj, _info) _nq.enqueueNotification_postingStyle_coalesceMask_forModes_( _note, NSPostASAP, NSNotificationNoCoalescing, None)
def windowDidLoad(self): _doc = self.document() _sv = _doc.getSplitView() _ov = _doc.getOutlineView() _text = _doc.getEntry() _win = self.window() _text.setDelegate_(self) _sv.setDelegate_(self) _win.setDelegate_(self) _win.setFrameUsingName_(WinFrameName) _ov.setDataSource_(self) _ov.setDelegate_(self) _ov.sizeLastColumnToFit() _ov.setAutoresizesOutlineColumn_(True) _da = _doc.getDA() _scrv = _da.enclosingScrollView() _scrvSize = _scrv.contentSize() _scrv.setCopiesOnScroll_(False) _da.setFrameSize_(_scrvSize) # # ensure selected layer is active # _item = _ov.itemAtRow_(0) _ov.expandItem_expandChildren_(_item, True) _endRow = _ov.numberOfRows() - 1 _ov.selectRow_byExtendingSelection_(_endRow, False) _ov.selectRow_byExtendingSelection_(0, False) # # Register for notifications of changes to the document # _img = _doc.getImage() _obj = Globals.wrap(_img) _nc = NSNotificationCenter.defaultCenter() _nc.addObserver_selector_name_object_(self, "layerChanged:", LayerAddedNotification, _obj) _nc.addObserver_selector_name_object_(self, "layerChanged:", LayerDeletedNotification, _obj) _nc.addObserver_selector_name_object_(self, "toolChanged:", ToolChangedNotification, _doc)