38 from types import TupleType |
38 from types import TupleType |
39 |
39 |
40 SCROLLBAR_UNIT = 10 |
40 SCROLLBAR_UNIT = 10 |
41 WINDOW_BORDER = 10 |
41 WINDOW_BORDER = 10 |
42 SCROLL_ZONE = 10 |
42 SCROLL_ZONE = 10 |
|
43 |
|
44 CURSORS = None |
|
45 |
|
46 def ResetCursors(): |
|
47 global CURSORS |
|
48 if CURSORS == None: |
|
49 CURSORS = [wx.NullCursor, |
|
50 wx.StockCursor(wx.CURSOR_HAND), |
|
51 wx.StockCursor(wx.CURSOR_SIZENWSE), |
|
52 wx.StockCursor(wx.CURSOR_SIZENESW), |
|
53 wx.StockCursor(wx.CURSOR_SIZEWE), |
|
54 wx.StockCursor(wx.CURSOR_SIZENS)] |
43 |
55 |
44 def AppendMenu(parent, help, id, kind, text): |
56 def AppendMenu(parent, help, id, kind, text): |
45 if wx.VERSION >= (2, 6, 0): |
57 if wx.VERSION >= (2, 6, 0): |
46 parent.Append(help=help, id=id, kind=kind, text=text) |
58 parent.Append(help=help, id=id, kind=kind, text=text) |
47 else: |
59 else: |
362 self.Errors = [] |
374 self.Errors = [] |
363 self.InstancePath = instancepath |
375 self.InstancePath = instancepath |
364 self.StartMousePos = None |
376 self.StartMousePos = None |
365 self.StartScreenPos = None |
377 self.StartScreenPos = None |
366 |
378 |
|
379 # Initialize Cursors |
|
380 ResetCursors() |
|
381 self.CurrentCursor = 0 |
|
382 |
367 # Initialize Block, Wire and Comment numbers |
383 # Initialize Block, Wire and Comment numbers |
368 self.block_id = self.wire_id = self.comment_id = 0 |
384 self.block_id = self.wire_id = self.comment_id = 0 |
369 |
385 |
370 # Initialize Viewer mode to Selection mode |
386 # Initialize Viewer mode to Selection mode |
371 self.Mode = MODE_SELECTION |
387 self.Mode = MODE_SELECTION |
411 self.Bind(wx.EVT_CHAR, self.OnChar) |
427 self.Bind(wx.EVT_CHAR, self.OnChar) |
412 self.Bind(wx.EVT_SCROLLWIN, self.OnScrollWindow) |
428 self.Bind(wx.EVT_SCROLLWIN, self.OnScrollWindow) |
413 self.Bind(wx.EVT_SCROLLWIN_THUMBRELEASE, self.OnScrollStop) |
429 self.Bind(wx.EVT_SCROLLWIN_THUMBRELEASE, self.OnScrollStop) |
414 self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheelWindow) |
430 self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheelWindow) |
415 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
431 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
|
432 |
|
433 def SetCurrentCursor(self, cursor): |
|
434 global CURSORS |
|
435 if self.CurrentCursor != cursor: |
|
436 self.CurrentCursor = cursor |
|
437 self.SetCursor(CURSORS[cursor]) |
416 |
438 |
417 def GetScrolledRect(self, rect): |
439 def GetScrolledRect(self, rect): |
418 rect.x, rect.y = self.CalcScrolledPosition(int(rect.x * self.ViewScale[0]), |
440 rect.x, rect.y = self.CalcScrolledPosition(int(rect.x * self.ViewScale[0]), |
419 int(rect.y * self.ViewScale[1])) |
441 int(rect.y * self.ViewScale[1])) |
420 rect.width = int(rect.width * self.ViewScale[0]) + 2 |
442 rect.width = int(rect.width * self.ViewScale[0]) + 2 |
1490 else: |
1512 else: |
1491 if self.Debug: |
1513 if self.Debug: |
1492 Graphic_Element.OnLeftUp(self.SelectedElement, event, dc, self.Scaling) |
1514 Graphic_Element.OnLeftUp(self.SelectedElement, event, dc, self.Scaling) |
1493 else: |
1515 else: |
1494 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1516 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1495 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1517 wx.CallAfter(self.SetCurrentCursor, 0) |
1496 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1518 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1497 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1519 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1498 event.Skip() |
1520 event.Skip() |
1499 |
1521 |
1500 def OnViewerMiddleDown(self, event): |
1522 def OnViewerMiddleDown(self, event): |
1529 if self.SelectedElement is not None: |
1551 if self.SelectedElement is not None: |
1530 if self.Debug: |
1552 if self.Debug: |
1531 Graphic_Element.OnRightUp(self.SelectedElement, event, dc, self.Scaling) |
1553 Graphic_Element.OnRightUp(self.SelectedElement, event, dc, self.Scaling) |
1532 else: |
1554 else: |
1533 self.SelectedElement.OnRightUp(event, dc, self.Scaling) |
1555 self.SelectedElement.OnRightUp(event, dc, self.Scaling) |
1534 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1556 wx.CallAfter(self.SetCurrentCursor, 0) |
1535 elif not self.Debug: |
1557 elif not self.Debug: |
1536 self.PopupDefaultMenu(False) |
1558 self.PopupDefaultMenu(False) |
1537 event.Skip() |
1559 event.Skip() |
1538 |
1560 |
1539 def OnViewerLeftDClick(self, event): |
1561 def OnViewerLeftDClick(self, event): |
1681 rect = self.SelectedElement.GetRedrawRect(1, 1) |
1703 rect = self.SelectedElement.GetRedrawRect(1, 1) |
1682 self.SelectedElement.Delete() |
1704 self.SelectedElement.Delete() |
1683 self.SelectedElement = None |
1705 self.SelectedElement = None |
1684 self.RefreshBuffer() |
1706 self.RefreshBuffer() |
1685 self.RefreshScrollBars() |
1707 self.RefreshScrollBars() |
1686 self.SetCursor(wx.NullCursor) |
1708 wx.CallAfter(self.SetCurrentCursor, 0) |
1687 self.RefreshRect(self.GetScrolledRect(rect), False) |
1709 self.RefreshRect(self.GetScrolledRect(rect), False) |
1688 elif not self.Debug and keycode == wx.WXK_RETURN and self.SelectedElement is not None: |
1710 elif not self.Debug and keycode == wx.WXK_RETURN and self.SelectedElement is not None: |
1689 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1711 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1690 elif keycode == wx.WXK_LEFT: |
1712 elif keycode == wx.WXK_LEFT: |
1691 if event.ControlDown() and event.ShiftDown(): |
1713 if event.ControlDown() and event.ShiftDown(): |