1066 for element in self.GetElements(): |
1066 for element in self.GetElements(): |
1067 if element.IsInSelection(bbox): |
1067 if element.IsInSelection(bbox): |
1068 elements.append(element) |
1068 elements.append(element) |
1069 return elements |
1069 return elements |
1070 |
1070 |
|
1071 def SelectAll(self): |
|
1072 if self.SelectedElement is not None: |
|
1073 self.SelectedElement.SetSelected(False) |
|
1074 self.SelectedElement = Graphic_Group(self) |
|
1075 for element in self.GetElements(): |
|
1076 self.SelectedElement.SelectElement(element) |
|
1077 self.SelectedElement.SetSelected(True) |
|
1078 |
1071 #------------------------------------------------------------------------------- |
1079 #------------------------------------------------------------------------------- |
1072 # Popup menu functions |
1080 # Popup menu functions |
1073 #------------------------------------------------------------------------------- |
1081 #------------------------------------------------------------------------------- |
1074 |
1082 |
1075 def PopupBlockMenu(self, connector = None): |
1083 def PopupBlockMenu(self, connector = None): |
1283 |
1291 |
1284 def OnViewerLeftDown(self, event): |
1292 def OnViewerLeftDown(self, event): |
1285 if self.Mode == MODE_SELECTION: |
1293 if self.Mode == MODE_SELECTION: |
1286 dc = self.GetLogicalDC() |
1294 dc = self.GetLogicalDC() |
1287 pos = event.GetLogicalPosition(dc) |
1295 pos = event.GetLogicalPosition(dc) |
1288 if event.ShiftDown() and self.SelectedElement is not None: |
1296 if event.ShiftDown() and not event.ControlDown() and self.SelectedElement is not None: |
1289 element = self.FindElement(pos, True) |
1297 element = self.FindElement(pos, True) |
1290 if element is not None: |
1298 if element is not None: |
1291 if isinstance(self.SelectedElement, Graphic_Group): |
1299 if isinstance(self.SelectedElement, Graphic_Group): |
1292 self.SelectedElement.SetSelected(False) |
1300 self.SelectedElement.SetSelected(False) |
1293 self.SelectedElement.SelectElement(element) |
1301 self.SelectedElement.SelectElement(element) |
1485 |
1493 |
1486 def OnViewerLeftDClick(self, event): |
1494 def OnViewerLeftDClick(self, event): |
1487 if self.Mode == MODE_SELECTION and self.SelectedElement is not None: |
1495 if self.Mode == MODE_SELECTION and self.SelectedElement is not None: |
1488 if self.Debug: |
1496 if self.Debug: |
1489 Graphic_Element.OnLeftDClick(self.SelectedElement, event, self.GetLogicalDC(), self.Scaling) |
1497 Graphic_Element.OnLeftDClick(self.SelectedElement, event, self.GetLogicalDC(), self.Scaling) |
1490 elif event.ControlDown() and self.IsBlock(self.SelectedElement) and self.SelectedElement.GetType() in self.Controler.GetProjectPouNames(self.Debug): |
1498 elif event.ControlDown() and not event.ShiftDown(): |
1491 self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType()) |
1499 if self.IsBlock(self.SelectedElement) and self.SelectedElement.GetType() in self.Controler.GetProjectPouNames(self.Debug): |
|
1500 self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType()) |
|
1501 elif event.ControlDown() and event.ShiftDown(): |
|
1502 movex, movey = self.SelectedElement.AdjustToScaling(self.Scaling) |
|
1503 self.SelectedElement.RefreshModel() |
|
1504 self.RefreshBuffer() |
|
1505 if movex != 0 or movey != 0: |
|
1506 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1492 else: |
1507 else: |
1493 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1508 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1494 event.Skip() |
1509 event.Skip() |
1495 |
1510 |
1496 def OnViewerMotion(self, event): |
1511 def OnViewerMotion(self, event): |
1500 if event.MiddleIsDown(): |
1515 if event.MiddleIsDown(): |
1501 if self.StartMousePos is not None and self.StartScreenPos is not None: |
1516 if self.StartMousePos is not None and self.StartScreenPos is not None: |
1502 new_pos = event.GetPosition() |
1517 new_pos = event.GetPosition() |
1503 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
1518 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
1504 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
1519 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
1505 scrollx = max(0, self.StartScreenPos[0] + (new_pos[0] - self.StartMousePos[0]) * self.ViewScale[0] / SCROLLBAR_UNIT) |
1520 scrollx = max(0, self.StartScreenPos[0] - (new_pos[0] - self.StartMousePos[0]) / SCROLLBAR_UNIT) |
1506 scrolly = max(0, self.StartScreenPos[1] + (new_pos[1] - self.StartMousePos[1]) * self.ViewScale[1] / SCROLLBAR_UNIT) |
1521 scrolly = max(0, self.StartScreenPos[1] - (new_pos[1] - self.StartMousePos[1]) / SCROLLBAR_UNIT) |
1507 if scrollx > xmax or scrolly > ymax: |
1522 if scrollx > xmax or scrolly > ymax: |
1508 self.RefreshScrollBars(max(0, scrollx - xmax), max(0, scrolly - ymax)) |
1523 self.RefreshScrollBars(max(0, scrollx - xmax), max(0, scrolly - ymax)) |
1509 self.Scroll(scrollx, scrolly) |
1524 self.Scroll(scrollx, scrolly) |
1510 else: |
1525 else: |
1511 self.Scroll(scrollx, scrolly) |
1526 self.Scroll(scrollx, scrolly) |
2690 self.Scroll(xp, y) |
2705 self.Scroll(xp, y) |
2691 elif event.ControlDown(): |
2706 elif event.ControlDown(): |
2692 dc = self.GetLogicalDC() |
2707 dc = self.GetLogicalDC() |
2693 pos = event.GetLogicalPosition(dc) |
2708 pos = event.GetLogicalPosition(dc) |
2694 mouse_pos = event.GetPosition() |
2709 mouse_pos = event.GetPosition() |
2695 factor = 0.75 ** rotation |
2710 factor = 1.414 ** rotation |
2696 self.SetScale(self.ViewScale[0] * factor, self.ViewScale[1] * factor) |
2711 xscale = max(0.125, min(self.ViewScale[0] * factor, 8)) |
|
2712 yscale = max(0.125, min(self.ViewScale[0] * factor, 8)) |
|
2713 self.SetScale(xscale, yscale) |
2697 self.Scroll(round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT, |
2714 self.Scroll(round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT, |
2698 round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT) |
2715 round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT) |
2699 self.RefreshScrollBars() |
2716 self.RefreshScrollBars() |
2700 self.RefreshVisibleElements() |
2717 self.RefreshVisibleElements() |
2701 self.Refresh() |
2718 self.Refresh() |
2729 xstart, ystart = self.GetViewStart() |
2746 xstart, ystart = self.GetViewStart() |
2730 window_size = self.GetClientSize() |
2747 window_size = self.GetClientSize() |
2731 width, height = self.GetVirtualSize() |
2748 width, height = self.GetVirtualSize() |
2732 width = int(max(width, xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[0]) |
2749 width = int(max(width, xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[0]) |
2733 height = int(max(height, ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[1]) |
2750 height = int(max(height, ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[1]) |
2734 dc.DrawRectangle(0, 0, width, height) |
2751 dc.DrawRectangle(1, 1, width, height) |
2735 if self.PageSize is not None and not printing: |
2752 if self.PageSize is not None and not printing: |
2736 dc.SetPen(self.PagePen) |
2753 dc.SetPen(self.PagePen) |
2737 xstart, ystart = self.GetViewStart() |
2754 xstart, ystart = self.GetViewStart() |
2738 window_size = self.GetClientSize() |
2755 window_size = self.GetClientSize() |
2739 for x in xrange(self.PageSize[0] - (xstart * SCROLLBAR_UNIT) % self.PageSize[0], window_size[0], self.PageSize[0]): |
2756 for x in xrange(self.PageSize[0] - (xstart * SCROLLBAR_UNIT) % self.PageSize[0], int(window_size[0] / self.ViewScale[0]), self.PageSize[0]): |
2740 dc.DrawLine(xstart * SCROLLBAR_UNIT + x + 1, ystart * SCROLLBAR_UNIT, |
2757 dc.DrawLine(xstart * SCROLLBAR_UNIT + x + 1, int(ystart * SCROLLBAR_UNIT / self.ViewScale[0]), |
2741 xstart * SCROLLBAR_UNIT + x + 1, ystart * SCROLLBAR_UNIT + window_size[1]) |
2758 xstart * SCROLLBAR_UNIT + x + 1, int((ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[0])) |
2742 for y in xrange(self.PageSize[1] - (ystart * SCROLLBAR_UNIT) % self.PageSize[1], window_size[1], self.PageSize[1]): |
2759 for y in xrange(self.PageSize[1] - (ystart * SCROLLBAR_UNIT) % self.PageSize[1], int(window_size[1] / self.ViewScale[1]), self.PageSize[1]): |
2743 dc.DrawLine(xstart * SCROLLBAR_UNIT, ystart * SCROLLBAR_UNIT + y + 1, |
2760 dc.DrawLine(int(xstart * SCROLLBAR_UNIT / self.ViewScale[0]), ystart * SCROLLBAR_UNIT + y + 1, |
2744 xstart * SCROLLBAR_UNIT + window_size[0], ystart * SCROLLBAR_UNIT + y + 1) |
2761 int((xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[1]), ystart * SCROLLBAR_UNIT + y + 1) |
2745 |
2762 |
2746 # Draw all elements |
2763 # Draw all elements |
2747 for comment in self.Comments: |
2764 for comment in self.Comments: |
2748 if comment != self.SelectedElement and (comment.IsVisible() or printing): |
2765 if comment != self.SelectedElement and (comment.IsVisible() or printing): |
2749 comment.Draw(dc) |
2766 comment.Draw(dc) |