def OnMenuPaste(self, evt):
     '''wx.ID_PASTE handler (for XMLTreeMenu).'''
     state = self.tree.GetFullState()  # state just before
     item = Presenter.paste()
     if not item: return  # error in paste()
     itemIndex = self.tree.ItemFullIndex(item)
     g.undoMan.RegisterUndo(undo.UndoPasteCreate(itemIndex, state))
 def OnPasteSibling(self, evt):
     '''ID.PASTE_SIBLING handler.'''
     forceSibling = True
     state = wx.GetMouseState()
     forceInsert = state.ShiftDown()
     g.Presenter.updateCreateState(forceSibling, forceInsert)
     treeState = self.tree.GetFullState()  # state just before
     item = Presenter.paste()
     itemIndex = self.tree.ItemFullIndex(item)
     g.undoMan.RegisterUndo(undo.UndoPasteCreate(itemIndex, treeState))
 def OnComponentCreate(self, evt):
     '''Hadnler for creating new elements.'''
     state = self.tree.GetFullState()  # state just before
     comp = Manager.findById(evt.GetId())
     if comp.groups[0] == 'component':
         node = Model.createComponentNode('Component')
         item = Presenter.create(comp, node)
     else:
         item = Presenter.create(comp)
     itemIndex = self.tree.ItemFullIndex(item)
     g.undoMan.RegisterUndo(undo.UndoPasteCreate(itemIndex, state))
 def OnCmdPaste(self, evt):
     '''ID.PASTE handler (for Edit menu and shortcuts).'''
     TRACE('OnCmdPaste')
     state = wx.GetMouseState()
     forceSibling = state.AltDown()
     forceInsert = state.ShiftDown()
     g.Presenter.updateCreateState(forceSibling, forceInsert)
     state = self.tree.GetFullState()  # state just before
     item = Presenter.paste()
     if not item: return  # error in paste()
     itemIndex = self.tree.ItemFullIndex(item)
     g.undoMan.RegisterUndo(undo.UndoPasteCreate(itemIndex, state))
 def OnToolPaste(self, evt):
     '''frame.ID_TOOL_PASTE handler.'''
     state = wx.GetMouseState()
     # Ctrl+click does not work with tools on Mac, Alt+click often
     # bound to window move on wxGTK
     if wx.Platform == '__WXMAC__':
         forceSibling = state.AltDown()
     else:
         forceSibling = state.ControlDown()
     forceInsert = state.ShiftDown()
     g.Presenter.updateCreateState(forceSibling, forceInsert)
     treeState = self.tree.GetFullState()  # state just before
     item = Presenter.paste()
     if not item: return  # error in paste()
     itemIndex = self.tree.ItemFullIndex(item)
     g.undoMan.RegisterUndo(undo.UndoPasteCreate(itemIndex, treeState))