def OnFocus(self, event):
- self.SetFocus()
self.FocusColorPropertyShape(True)
event.Skip()
+ def FocusOnClick(self, event):
+ self.SetFocus()
+ event.Skip()
+
+
def OnKillFocus(self, event):
self.FocusColorPropertyShape(False)
event.Skip()
wx.EVT_KEY_DOWN(self._canvas, self.OnKeyPressed)
# need this otherwise mouse clicks don't set focus to this view
- wx.EVT_LEFT_DOWN(self._canvas, self.OnFocus)
- wx.EVT_LEFT_DCLICK(self._canvas, self.OnFocus)
- wx.EVT_RIGHT_DOWN(self._canvas, self.OnFocus)
- wx.EVT_RIGHT_DCLICK(self._canvas, self.OnFocus)
- wx.EVT_MIDDLE_DOWN(self._canvas, self.OnFocus)
- wx.EVT_MIDDLE_DCLICK(self._canvas, self.OnFocus)
+ wx.EVT_LEFT_DOWN(self._canvas, self.FocusOnClick)
+ wx.EVT_LEFT_DCLICK(self._canvas, self.FocusOnClick)
+ wx.EVT_RIGHT_DOWN(self._canvas, self.FocusOnClick)
+ wx.EVT_RIGHT_DCLICK(self._canvas, self.FocusOnClick)
+ wx.EVT_MIDDLE_DOWN(self._canvas, self.FocusOnClick)
+ wx.EVT_MIDDLE_DCLICK(self._canvas, self.FocusOnClick)
wx.EVT_KILL_FOCUS(self._canvas, self.OnKillFocus)
wx.EVT_SET_FOCUS(self._canvas, self.OnFocus)
shape.SetBrush(brush)
if text:
shape.AddText(text)
- shape.SetShadowMode(ogl.SHADOW_RIGHT)
+ shape.SetShadowMode(ogl.SHADOW_NONE)
self._diagram.AddShape(shape)
shape.Show(True)
if not eventHandler:
if shape:
shape.Select(False)
+ for line in shape.GetLines():
+ shape.RemoveLine(line)
+ self._diagram.RemoveShape(line)
+ for obj in self._diagram.GetShapeList():
+ for line in obj.GetLines():
+ if self.IsShapeContained(shape, line.GetTo()) or self.IsShapeContained(shape, line.GetFrom()):
+ obj.RemoveLine(line)
+ self._diagram.RemoveShape(line)
+ if line == shape:
+ obj.RemoveLine(line)
+
+ shape.RemoveFromCanvas(self._canvas)
self._diagram.RemoveShape(shape)
- if isinstance(shape, ogl.CompositeShape):
- shape.RemoveFromCanvas(self._canvas)
+
+
+ def IsShapeContained(self, parent, shape):
+ if parent == shape:
+ return True
+ elif shape.GetParent():
+ return self.IsShapeContained(parent, shape.GetParent())
+
+ return False
def UpdateShape(self, model):