58 |
58 |
59 def ResetCursors(): |
59 def ResetCursors(): |
60 global CURSORS |
60 global CURSORS |
61 if CURSORS is None: |
61 if CURSORS is None: |
62 CURSORS = [wx.NullCursor, |
62 CURSORS = [wx.NullCursor, |
63 wx.StockCursor(wx.CURSOR_HAND), |
63 wx.Cursor(wx.CURSOR_HAND), |
64 wx.StockCursor(wx.CURSOR_SIZENWSE), |
64 wx.Cursor(wx.CURSOR_SIZENWSE), |
65 wx.StockCursor(wx.CURSOR_SIZENESW), |
65 wx.Cursor(wx.CURSOR_SIZENESW), |
66 wx.StockCursor(wx.CURSOR_SIZEWE), |
66 wx.Cursor(wx.CURSOR_SIZEWE), |
67 wx.StockCursor(wx.CURSOR_SIZENS)] |
67 wx.Cursor(wx.CURSOR_SIZENS)] |
68 |
68 |
69 |
69 |
70 if wx.Platform == '__WXMSW__': |
70 if wx.Platform == '__WXMSW__': |
71 faces = { |
71 faces = { |
72 'times': 'Times New Roman', |
72 'times': 'Times New Roman', |
408 tree = dict([(var.Name, var.Tree) for var in self.ParentWindow.Controler.GetEditedElementInterfaceVars(tagname, True, self.ParentWindow.Debug)]).get(values[0], None) |
408 tree = dict([(var.Name, var.Tree) for var in self.ParentWindow.Controler.GetEditedElementInterfaceVars(tagname, True, self.ParentWindow.Debug)]).get(values[0], None) |
409 if tree is not None: |
409 if tree is not None: |
410 if len(tree[0]) > 0: |
410 if len(tree[0]) > 0: |
411 menu = wx.Menu(title='') |
411 menu = wx.Menu(title='') |
412 self.GenerateTreeMenu(x, y, scaling, menu, "", var_class, [(values[0], values[2], tree)]) |
412 self.GenerateTreeMenu(x, y, scaling, menu, "", var_class, [(values[0], values[2], tree)]) |
413 self.ParentWindow.PopupMenuXY(menu) |
413 self.ParentWindow.PopupMenu(menu) |
414 else: |
414 else: |
415 self.ParentWindow.AddVariableBlock(x, y, scaling, var_class, values[0], values[2]) |
415 self.ParentWindow.AddVariableBlock(x, y, scaling, var_class, values[0], values[2]) |
416 else: |
416 else: |
417 message = _("Unknown variable \"%s\" for this POU!") % values[0] |
417 message = _("Unknown variable \"%s\" for this POU!") % values[0] |
418 else: |
418 else: |
710 width, _height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
710 width, _height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
711 if width < 260: |
711 if width < 260: |
712 break |
712 break |
713 faces["size"] -= 1 |
713 faces["size"] -= 1 |
714 self.Editor.SetFont(font) |
714 self.Editor.SetFont(font) |
715 self.MiniTextDC = wx.MemoryDC(wx.EmptyBitmap(1, 1)) |
715 self.MiniTextDC = wx.MemoryDC(wx.Bitmap(1, 1)) |
716 self.MiniTextDC.SetFont(wx.Font(faces["size"] * 0.75, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName=faces["helv"])) |
716 self.MiniTextDC.SetFont(wx.Font(faces["size"] * 0.75, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName=faces["helv"])) |
717 |
717 |
718 self.CurrentScale = None |
718 self.CurrentScale = None |
719 self.SetScale(ZOOM_FACTORS.index(1.0), False) |
719 self.SetScale(ZOOM_FACTORS.index(1.0), False) |
720 |
720 |
825 def GetViewScale(self): |
825 def GetViewScale(self): |
826 return self.ViewScale |
826 return self.ViewScale |
827 |
827 |
828 def GetLogicalDC(self, buffered=False): |
828 def GetLogicalDC(self, buffered=False): |
829 if buffered: |
829 if buffered: |
830 bitmap = wx.EmptyBitmap(*self.Editor.GetClientSize()) |
830 bitmap = wx.Bitmap(*self.Editor.GetClientSize()) |
831 dc = wx.MemoryDC(bitmap) |
831 dc = wx.MemoryDC(bitmap) |
832 else: |
832 else: |
833 dc = wx.ClientDC(self.Editor) |
833 dc = wx.ClientDC(self.Editor) |
834 dc.SetFont(self.GetFont()) |
834 dc.SetFont(self.GetFont()) |
835 self.Editor.DoPrepareDC(dc) |
835 self.Editor.DoPrepareDC(dc) |
1056 # Reset selection |
1056 # Reset selection |
1057 if self.Mode != MODE_SELECTION and self.SelectedElement: |
1057 if self.Mode != MODE_SELECTION and self.SelectedElement: |
1058 self.SelectedElement.SetSelected(False) |
1058 self.SelectedElement.SetSelected(False) |
1059 self.SelectedElement = None |
1059 self.SelectedElement = None |
1060 if self.Mode == MODE_MOTION: |
1060 if self.Mode == MODE_MOTION: |
1061 wx.CallAfter(self.Editor.SetCursor, wx.StockCursor(wx.CURSOR_HAND)) |
1061 wx.CallAfter(self.Editor.SetCursor, wx.Cursor(wx.CURSOR_HAND)) |
1062 self.SavedMode = True |
1062 self.SavedMode = True |
1063 |
1063 |
1064 # Return current drawing mode |
1064 # Return current drawing mode |
1065 def GetDrawingMode(self): |
1065 def GetDrawingMode(self): |
1066 return self.ParentWindow.GetDrawingMode() |
1066 return self.ParentWindow.GetDrawingMode() |
1114 if scaling[0] != 0 and scaling[1] != 0: |
1114 if scaling[0] != 0 and scaling[1] != 0: |
1115 self.Scaling = scaling |
1115 self.Scaling = scaling |
1116 if self.DrawGrid: |
1116 if self.DrawGrid: |
1117 width = max(2, int(scaling[0] * self.ViewScale[0])) |
1117 width = max(2, int(scaling[0] * self.ViewScale[0])) |
1118 height = max(2, int(scaling[1] * self.ViewScale[1])) |
1118 height = max(2, int(scaling[1] * self.ViewScale[1])) |
1119 bitmap = wx.EmptyBitmap(width, height) |
1119 bitmap = wx.Bitmap(width, height) |
1120 dc = wx.MemoryDC(bitmap) |
1120 dc = wx.MemoryDC(bitmap) |
1121 dc.SetBackground(wx.Brush(self.Editor.GetBackgroundColour())) |
1121 dc.SetBackground(wx.Brush(self.Editor.GetBackgroundColour())) |
1122 dc.Clear() |
1122 dc.Clear() |
1123 dc.SetPen(MiterPen(wx.Colour(180, 180, 180))) |
1123 dc.SetPen(MiterPen(wx.Colour(180, 180, 180))) |
1124 dc.DrawPoint(0, 0) |
1124 dc.DrawPoint(0, 0) |
1125 self.GridBrush = wx.BrushFromBitmap(bitmap) |
1125 self.GridBrush = wx.Brush(bitmap) |
1126 else: |
1126 else: |
1127 self.GridBrush = wx.TRANSPARENT_BRUSH |
1127 self.GridBrush = wx.TRANSPARENT_BRUSH |
1128 else: |
1128 else: |
1129 self.Scaling = None |
1129 self.Scaling = None |
1130 self.GridBrush = wx.TRANSPARENT_BRUSH |
1130 self.GridBrush = wx.TRANSPARENT_BRUSH |
3377 def Paste(self, bbx=None): |
3377 def Paste(self, bbx=None): |
3378 if not self.Debug: |
3378 if not self.Debug: |
3379 element = self.ParentWindow.GetCopyBuffer() |
3379 element = self.ParentWindow.GetCopyBuffer() |
3380 if bbx is None: |
3380 if bbx is None: |
3381 mouse_pos = self.Editor.ScreenToClient(wx.GetMousePosition()) |
3381 mouse_pos = self.Editor.ScreenToClient(wx.GetMousePosition()) |
3382 middle = wx.Rect(0, 0, *self.Editor.GetClientSize()).InsideXY(mouse_pos.x, mouse_pos.y) |
3382 middle = wx.Rect(0, 0, *self.Editor.GetClientSize()).Contains(mouse_pos.x, mouse_pos.y) |
3383 if middle: |
3383 if middle: |
3384 x, y = self.CalcUnscrolledPosition(mouse_pos.x, mouse_pos.y) |
3384 x, y = self.CalcUnscrolledPosition(mouse_pos.x, mouse_pos.y) |
3385 else: |
3385 else: |
3386 x, y = self.CalcUnscrolledPosition(0, 0) |
3386 x, y = self.CalcUnscrolledPosition(0, 0) |
3387 new_pos = [int(x / self.ViewScale[0]), int(y / self.ViewScale[1])] |
3387 new_pos = [int(x / self.ViewScale[0]), int(y / self.ViewScale[1])] |
3631 else: |
3631 else: |
3632 dc.SetFont(self.GetFont()) |
3632 dc.SetFont(self.GetFont()) |
3633 else: |
3633 else: |
3634 dc.SetBackground(wx.Brush(self.Editor.GetBackgroundColour())) |
3634 dc.SetBackground(wx.Brush(self.Editor.GetBackgroundColour())) |
3635 dc.Clear() |
3635 dc.Clear() |
3636 dc.BeginDrawing() |
|
3637 if self.Scaling is not None and self.DrawGrid and not printing: |
3636 if self.Scaling is not None and self.DrawGrid and not printing: |
3638 dc.SetPen(wx.TRANSPARENT_PEN) |
3637 dc.SetPen(wx.TRANSPARENT_PEN) |
3639 dc.SetBrush(self.GridBrush) |
3638 dc.SetBrush(self.GridBrush) |
3640 xstart, ystart = self.GetViewStart() |
3639 xstart, ystart = self.GetViewStart() |
3641 window_size = self.Editor.GetClientSize() |
3640 window_size = self.Editor.GetClientSize() |
3678 if not printing: |
3677 if not printing: |
3679 if self.Debug: |
3678 if self.Debug: |
3680 self.InstanceName.Draw(dc) |
3679 self.InstanceName.Draw(dc) |
3681 if self.rubberBand.IsShown(): |
3680 if self.rubberBand.IsShown(): |
3682 self.rubberBand.Draw(dc) |
3681 self.rubberBand.Draw(dc) |
3683 dc.EndDrawing() |
|
3684 |
3682 |
3685 def OnPaint(self, event): |
3683 def OnPaint(self, event): |
3686 dc = self.GetLogicalDC(True) |
3684 dc = self.GetLogicalDC(True) |
3687 self.DoDrawing(dc) |
3685 self.DoDrawing(dc) |
3688 wx.BufferedPaintDC(self.Editor, dc.GetAsBitmap()) |
3686 wx.BufferedPaintDC(self.Editor, dc.GetAsBitmap()) |