Viewer.py
changeset 381 98890d848701
parent 380 9ca678ee827f
child 383 25ffba02b6a8
equal deleted inserted replaced
380:9ca678ee827f 381:98890d848701
    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():