262 self.ParentWindow.Controler.AddEditedElementBlock(tagname, id, values[0], blockname) |
263 self.ParentWindow.Controler.AddEditedElementBlock(tagname, id, values[0], blockname) |
263 self.ParentWindow.RefreshBlockModel(block) |
264 self.ParentWindow.RefreshBlockModel(block) |
264 self.ParentWindow.RefreshBuffer() |
265 self.ParentWindow.RefreshBuffer() |
265 self.ParentWindow.RefreshScrollBars() |
266 self.ParentWindow.RefreshScrollBars() |
266 self.ParentWindow.RefreshVisibleElements() |
267 self.ParentWindow.RefreshVisibleElements() |
267 self.ParentWindow.ParentWindow.RefreshVariablePanel(tagname) |
268 self.ParentWindow.RefreshVariablePanel() |
268 self.ParentWindow.Refresh(False) |
269 self.ParentWindow.Refresh(False) |
269 elif values[1] == "location": |
270 elif values[1] == "location": |
270 if len(values) > 2 and pou_type == "program": |
271 if len(values) > 2 and pou_type == "program": |
271 var_name = values[3] |
272 var_name = values[3] |
272 if var_name.upper() in [name.upper() for name in self.ParentWindow.Controler.GetProjectPouNames(self.ParentWindow.Debug)]: |
273 if var_name.upper() in [name.upper() for name in self.ParentWindow.Controler.GetProjectPouNames(self.ParentWindow.Debug)]: |
280 var_type = values[2] |
281 var_type = values[2] |
281 else: |
282 else: |
282 var_type = LOCATIONDATATYPES.get(values[0][2], ["BOOL"])[0] |
283 var_type = LOCATIONDATATYPES.get(values[0][2], ["BOOL"])[0] |
283 if not var_name.upper() in [name.upper() for name in self.ParentWindow.Controler.GetEditedElementVariables(tagname, self.ParentWindow.Debug)]: |
284 if not var_name.upper() in [name.upper() for name in self.ParentWindow.Controler.GetEditedElementVariables(tagname, self.ParentWindow.Debug)]: |
284 self.ParentWindow.Controler.AddEditedElementPouVar(tagname, var_type, var_name, values[0], values[4]) |
285 self.ParentWindow.Controler.AddEditedElementPouVar(tagname, var_type, var_name, values[0], values[4]) |
285 self.ParentWindow.ParentWindow.RefreshVariablePanel(tagname) |
286 self.ParentWindow.RefreshVariablePanel() |
286 self.ParentWindow.AddVariableBlock(x, y, scaling, var_class, var_name, var_type) |
287 self.ParentWindow.AddVariableBlock(x, y, scaling, var_class, var_name, var_type) |
287 elif values[3] == tagname: |
288 elif values[3] == tagname: |
288 if values[1] == "Output": |
289 if values[1] == "Output": |
289 var_class = OUTPUT |
290 var_class = OUTPUT |
290 elif values[1] == "InOut": |
291 elif values[1] == "InOut": |
444 self.ContextualMenu = wx.Menu(title='') |
445 self.ContextualMenu = wx.Menu(title='') |
445 |
446 |
446 self._init_coll_AlignmentMenu_Items(self.AlignmentMenu) |
447 self._init_coll_AlignmentMenu_Items(self.AlignmentMenu) |
447 self._init_coll_ContextualMenu_Items(self.ContextualMenu) |
448 self._init_coll_ContextualMenu_Items(self.ContextualMenu) |
448 |
449 |
|
450 def _init_Editor(self, prnt): |
|
451 self.Editor = wx.ScrolledWindow(prnt, name="Viewer", |
|
452 pos=wx.Point(0, 0), size=wx.Size(0, 0), |
|
453 style=wx.HSCROLL | wx.VSCROLL | wx.ALWAYS_SHOW_SB) |
|
454 |
449 # Create a new Viewer |
455 # Create a new Viewer |
450 def __init__(self, parent, tagname, window, controler, debug = False, instancepath = ""): |
456 def __init__(self, parent, tagname, window, controler, debug = False, instancepath = ""): |
451 wx.ScrolledWindow.__init__(self, parent, pos=wx.Point(0, 0), size=wx.Size(0, 0), |
457 self.VARIABLE_PANEL_TYPE = controler.GetPouType(tagname.split("::")[1]) |
452 style=wx.HSCROLL | wx.VSCROLL | wx.ALWAYS_SHOW_SB) |
458 |
|
459 EditorPanel.__init__(self, parent, tagname, window, controler) |
453 DebugViewer.__init__(self, controler, debug) |
460 DebugViewer.__init__(self, controler, debug) |
|
461 |
454 self._init_menus() |
462 self._init_menus() |
|
463 |
455 # Adding a rubberband to Viewer |
464 # Adding a rubberband to Viewer |
456 self.rubberBand = RubberBand(drawingSurface=self) |
465 self.rubberBand = RubberBand(viewer=self) |
457 self.SetBackgroundColour(wx.Colour(255,255,255)) |
466 self.Editor.SetBackgroundColour(wx.Colour(255,255,255)) |
458 self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) |
467 self.Editor.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) |
459 self.ResetView() |
468 self.ResetView() |
460 self.Scaling = None |
469 self.Scaling = None |
461 self.DrawGrid = True |
470 self.DrawGrid = True |
462 self.GridBrush = wx.TRANSPARENT_BRUSH |
471 self.GridBrush = wx.TRANSPARENT_BRUSH |
463 self.PageSize = None |
472 self.PageSize = None |
480 # Initialize Viewer mode to Selection mode |
489 # Initialize Viewer mode to Selection mode |
481 self.Mode = MODE_SELECTION |
490 self.Mode = MODE_SELECTION |
482 self.SavedMode = False |
491 self.SavedMode = False |
483 self.CurrentLanguage = "FBD" |
492 self.CurrentLanguage = "FBD" |
484 |
493 |
485 self.ParentWindow = window |
|
486 self.Controler = controler |
|
487 |
|
488 if not self.Debug: |
494 if not self.Debug: |
489 self.SetDropTarget(ViewerDropTarget(self)) |
495 self.Editor.SetDropTarget(ViewerDropTarget(self)) |
490 |
496 |
491 self.NewDataRefreshRect = None |
497 self.NewDataRefreshRect = None |
492 self.NewDataRefreshRect_lock = Lock() |
498 self.NewDataRefreshRect_lock = Lock() |
493 |
499 |
494 dc = wx.ClientDC(self) |
500 dc = wx.ClientDC(self.Editor) |
495 font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"]) |
501 font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"]) |
496 dc.SetFont(font) |
502 dc.SetFont(font) |
497 width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
503 width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
498 while width > 260: |
504 while width > 260: |
499 faces["size"] -= 1 |
505 faces["size"] -= 1 |
502 width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
508 width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
503 self.SetFont(font) |
509 self.SetFont(font) |
504 self.MiniTextDC = wx.MemoryDC() |
510 self.MiniTextDC = wx.MemoryDC() |
505 self.MiniTextDC.SetFont(wx.Font(faces["size"] * 0.75, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["helv"])) |
511 self.MiniTextDC.SetFont(wx.Font(faces["size"] * 0.75, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["helv"])) |
506 |
512 |
507 self.SetScale(len(ZOOM_FACTORS) / 2) |
513 self.CurrentScale = None |
|
514 self.SetScale(len(ZOOM_FACTORS) / 2, False) |
508 |
515 |
509 self.RefreshHighlightsTimer = wx.Timer(self, -1) |
516 self.RefreshHighlightsTimer = wx.Timer(self, -1) |
510 self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer) |
517 self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer) |
511 |
518 |
512 self.ResetView() |
519 self.ResetView() |
513 |
520 |
514 # Link Viewer event to corresponding methods |
521 # Link Viewer event to corresponding methods |
515 self.Bind(wx.EVT_PAINT, self.OnPaint) |
522 self.Editor.Bind(wx.EVT_PAINT, self.OnPaint) |
516 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
523 self.Editor.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
517 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
524 self.Editor.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
518 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
525 self.Editor.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
519 self.Bind(wx.EVT_RIGHT_DOWN, self.OnViewerRightDown) |
526 self.Editor.Bind(wx.EVT_RIGHT_DOWN, self.OnViewerRightDown) |
520 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
527 self.Editor.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
521 self.Bind(wx.EVT_MIDDLE_DOWN, self.OnViewerMiddleDown) |
528 self.Editor.Bind(wx.EVT_MIDDLE_DOWN, self.OnViewerMiddleDown) |
522 self.Bind(wx.EVT_MIDDLE_UP, self.OnViewerMiddleUp) |
529 self.Editor.Bind(wx.EVT_MIDDLE_UP, self.OnViewerMiddleUp) |
523 self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
530 self.Editor.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
524 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
531 self.Editor.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
525 self.Bind(wx.EVT_CHAR, self.OnChar) |
532 self.Editor.Bind(wx.EVT_CHAR, self.OnChar) |
526 self.Bind(wx.EVT_SCROLLWIN, self.OnScrollWindow) |
533 self.Editor.Bind(wx.EVT_SCROLLWIN, self.OnScrollWindow) |
527 self.Bind(wx.EVT_SCROLLWIN_THUMBRELEASE, self.OnScrollStop) |
534 self.Editor.Bind(wx.EVT_SCROLLWIN_THUMBRELEASE, self.OnScrollStop) |
528 self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheelWindow) |
535 self.Editor.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheelWindow) |
529 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
536 self.Editor.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
530 |
537 |
531 def __del__(self): |
538 def __del__(self): |
532 DebugViewer.__del__(self) |
539 DebugViewer.__del__(self) |
533 self.RefreshHighlightsTimer.Stop() |
540 self.RefreshHighlightsTimer.Stop() |
534 |
541 |
535 def SetCurrentCursor(self, cursor): |
542 def SetCurrentCursor(self, cursor): |
536 if self.Mode != MODE_MOTION: |
543 if self.Mode != MODE_MOTION: |
537 global CURSORS |
544 global CURSORS |
538 if self.CurrentCursor != cursor: |
545 if self.CurrentCursor != cursor: |
539 self.CurrentCursor = cursor |
546 self.CurrentCursor = cursor |
540 self.SetCursor(CURSORS[cursor]) |
547 self.Editor.SetCursor(CURSORS[cursor]) |
541 |
548 |
542 def GetScrolledRect(self, rect): |
549 def GetScrolledRect(self, rect): |
543 rect.x, rect.y = self.CalcScrolledPosition(int(rect.x * self.ViewScale[0]), |
550 rect.x, rect.y = self.Editor.CalcScrolledPosition(int(rect.x * self.ViewScale[0]), |
544 int(rect.y * self.ViewScale[1])) |
551 int(rect.y * self.ViewScale[1])) |
545 rect.width = int(rect.width * self.ViewScale[0]) + 2 |
552 rect.width = int(rect.width * self.ViewScale[0]) + 2 |
546 rect.height = int(rect.height * self.ViewScale[1]) + 2 |
553 rect.height = int(rect.height * self.ViewScale[1]) + 2 |
547 return rect |
554 return rect |
548 |
555 |
|
556 def GetTitle(self): |
|
557 if self.Debug: |
|
558 if len(self.InstancePath) > 15: |
|
559 return "..." + self.InstancePath[-12:] |
|
560 return self.InstancePath |
|
561 return EditorPanel.GetTitle(self) |
|
562 |
549 def GetScaling(self): |
563 def GetScaling(self): |
550 return self.Scaling |
564 return self.Scaling |
551 |
|
552 def SetTagName(self, tagname): |
|
553 self.TagName = tagname |
|
554 |
|
555 def GetTagName(self): |
|
556 return self.TagName |
|
557 |
565 |
558 def GetInstancePath(self): |
566 def GetInstancePath(self): |
559 return self.InstancePath |
567 return self.InstancePath |
560 |
568 |
561 def IsViewing(self, tagname): |
569 def IsViewing(self, tagname): |
562 if self.Debug: |
570 if self.Debug: |
563 return self.InstancePath == tagname |
571 return self.InstancePath == tagname |
564 else: |
572 return EditorPanel.IsViewing(self, tagname) |
565 return self.TagName == tagname |
|
566 |
573 |
567 # Returns a new id |
574 # Returns a new id |
568 def GetNewId(self): |
575 def GetNewId(self): |
569 self.current_id += 1 |
576 self.current_id += 1 |
570 return self.current_id |
577 return self.current_id |
573 def __del__(self): |
580 def __del__(self): |
574 DebugViewer.__del__(self) |
581 DebugViewer.__del__(self) |
575 self.Flush() |
582 self.Flush() |
576 self.ResetView() |
583 self.ResetView() |
577 |
584 |
578 def SetScale(self, scale_number, refresh=True): |
585 def SetScale(self, scale_number, refresh=True, mouse_event=None): |
579 self.CurrentScale = max(0, min(scale_number, len(ZOOM_FACTORS) - 1)) |
586 new_scale = max(0, min(scale_number, len(ZOOM_FACTORS) - 1)) |
580 self.ViewScale = (ZOOM_FACTORS[self.CurrentScale], ZOOM_FACTORS[self.CurrentScale]) |
587 if self.CurrentScale != new_scale: |
581 self.RefreshScaling(refresh) |
588 if refresh: |
582 |
589 dc = self.GetLogicalDC() |
|
590 self.CurrentScale = new_scale |
|
591 self.ViewScale = (ZOOM_FACTORS[self.CurrentScale], ZOOM_FACTORS[self.CurrentScale]) |
|
592 if refresh: |
|
593 self.Editor.Freeze() |
|
594 if mouse_event is None: |
|
595 client_size = self.Editor.GetClientSize() |
|
596 mouse_pos = wx.Point(client_size[0] / 2, client_size[1] / 2) |
|
597 mouse_event = wx.MouseEvent(wx.EVT_MOUSEWHEEL.typeId) |
|
598 mouse_event.m_x = mouse_pos.x |
|
599 mouse_event.m_y = mouse_pos.y |
|
600 else: |
|
601 mouse_pos = mouse_event.GetPosition() |
|
602 pos = mouse_event.GetLogicalPosition(dc) |
|
603 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
|
604 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
|
605 scrollx = max(0, round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT) |
|
606 scrolly = max(0, round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT) |
|
607 if scrollx > xmax or scrolly > ymax: |
|
608 self.RefreshScrollBars(max(0, scrollx - xmax), max(0, scrolly - ymax)) |
|
609 self.Scroll(scrollx, scrolly) |
|
610 else: |
|
611 self.Scroll(scrollx, scrolly) |
|
612 self.RefreshScrollBars() |
|
613 self.RefreshScaling(refresh) |
|
614 self.Editor.Thaw() |
|
615 |
583 def GetScale(self): |
616 def GetScale(self): |
584 return self.CurrentScale |
617 return self.CurrentScale |
585 |
618 |
586 def GetLogicalDC(self, buffered=False): |
619 def GetLogicalDC(self, buffered=False): |
587 if buffered: |
620 if buffered: |
588 bitmap = wx.EmptyBitmap(*self.GetClientSize()) |
621 bitmap = wx.EmptyBitmap(*self.Editor.GetClientSize()) |
589 dc = wx.MemoryDC(bitmap) |
622 dc = wx.MemoryDC(bitmap) |
590 else: |
623 else: |
591 dc = wx.ClientDC(self) |
624 dc = wx.ClientDC(self.Editor) |
592 dc.SetFont(self.GetFont()) |
625 dc.SetFont(self.GetFont()) |
593 if wx.VERSION >= (2, 6, 0): |
626 if wx.VERSION >= (2, 6, 0): |
594 self.DoPrepareDC(dc) |
627 self.Editor.DoPrepareDC(dc) |
595 else: |
628 else: |
596 self.PrepareDC(dc) |
629 self.Editor.PrepareDC(dc) |
597 dc.SetUserScale(self.ViewScale[0], self.ViewScale[1]) |
630 dc.SetUserScale(self.ViewScale[0], self.ViewScale[1]) |
598 return dc |
631 return dc |
599 |
632 |
|
633 def RefreshRect(self, rect, eraseBackground=True): |
|
634 self.Editor.RefreshRect(rect, eraseBackground) |
|
635 |
|
636 def Scroll(self, x, y): |
|
637 self.Editor.Scroll(x, y) |
|
638 |
|
639 def GetScrollPos(self, orientation): |
|
640 return self.Editor.GetScrollPos(orientation) |
|
641 |
|
642 def GetScrollRange(self, orientation): |
|
643 return self.Editor.GetScrollRange(orientation) |
|
644 |
|
645 def GetScrollThumb(self, orientation): |
|
646 return self.Editor.GetScrollThumb(orientation) |
|
647 |
|
648 def CalcUnscrolledPosition(self, x, y): |
|
649 return self.Editor.CalcUnscrolledPosition(x, y) |
|
650 |
|
651 def GetViewStart(self): |
|
652 return self.Editor.GetViewStart() |
|
653 |
|
654 def GetTextExtent(self, text): |
|
655 return self.Editor.GetTextExtent(text) |
|
656 |
|
657 def GetFont(self): |
|
658 return self.Editor.GetFont() |
|
659 |
600 def GetMiniTextExtent(self, text): |
660 def GetMiniTextExtent(self, text): |
601 return self.MiniTextDC.GetTextExtent(text) |
661 return self.MiniTextDC.GetTextExtent(text) |
602 |
662 |
603 def GetMiniFont(self): |
663 def GetMiniFont(self): |
604 return self.MiniTextDC.GetFont() |
664 return self.MiniTextDC.GetFont() |
654 block.GetName() == name: |
714 block.GetName() == name: |
655 return block |
715 return block |
656 return None |
716 return None |
657 |
717 |
658 def RefreshVisibleElements(self, xp = None, yp = None): |
718 def RefreshVisibleElements(self, xp = None, yp = None): |
659 x, y = self.CalcUnscrolledPosition(0, 0) |
719 x, y = self.Editor.CalcUnscrolledPosition(0, 0) |
660 if xp is not None: |
720 if xp is not None: |
661 x = xp * self.GetScrollPixelsPerUnit()[0] |
721 x = xp * self.Editor.GetScrollPixelsPerUnit()[0] |
662 if yp is not None: |
722 if yp is not None: |
663 y = yp * self.GetScrollPixelsPerUnit()[1] |
723 y = yp * self.Editor.GetScrollPixelsPerUnit()[1] |
664 width, height = self.GetClientSize() |
724 width, height = self.Editor.GetClientSize() |
665 screen = wx.Rect(int(x / self.ViewScale[0]), int(y / self.ViewScale[1]), |
725 screen = wx.Rect(int(x / self.ViewScale[0]), int(y / self.ViewScale[1]), |
666 int(width / self.ViewScale[0]), int(height / self.ViewScale[1])) |
726 int(width / self.ViewScale[0]), int(height / self.ViewScale[1])) |
667 for comment in self.Comments.itervalues(): |
727 for comment in self.Comments.itervalues(): |
668 comment.TestVisible(screen) |
728 comment.TestVisible(screen) |
669 for wire in self.Wires.iterkeys(): |
729 for wire in self.Wires.iterkeys(): |
730 |
790 |
731 # Changes Viewer mode |
791 # Changes Viewer mode |
732 def SetMode(self, mode): |
792 def SetMode(self, mode): |
733 if self.Mode != mode or mode == MODE_SELECTION: |
793 if self.Mode != mode or mode == MODE_SELECTION: |
734 if self.Mode == MODE_MOTION: |
794 if self.Mode == MODE_MOTION: |
735 wx.CallAfter(self.SetCursor, wx.NullCursor) |
795 wx.CallAfter(self.Editor.SetCursor, wx.NullCursor) |
736 self.Mode = mode |
796 self.Mode = mode |
737 self.SavedMode = False |
797 self.SavedMode = False |
738 else: |
798 else: |
739 self.SavedMode = True |
799 self.SavedMode = True |
740 # Reset selection |
800 # Reset selection |
741 if self.Mode != MODE_SELECTION and self.SelectedElement: |
801 if self.Mode != MODE_SELECTION and self.SelectedElement: |
742 self.SelectedElement.SetSelected(False) |
802 self.SelectedElement.SetSelected(False) |
743 self.SelectedElement = None |
803 self.SelectedElement = None |
744 if self.Mode == MODE_MOTION: |
804 if self.Mode == MODE_MOTION: |
745 wx.CallAfter(self.SetCursor, wx.StockCursor(wx.CURSOR_HAND)) |
805 wx.CallAfter(self.Editor.SetCursor, wx.StockCursor(wx.CURSOR_HAND)) |
746 self.SavedMode = True |
806 self.SavedMode = True |
747 |
807 |
748 # Return current drawing mode |
808 # Return current drawing mode |
749 def GetDrawingMode(self): |
809 def GetDrawingMode(self): |
750 return self.ParentWindow.GetDrawingMode() |
810 return self.ParentWindow.GetDrawingMode() |
753 def RefreshBuffer(self): |
813 def RefreshBuffer(self): |
754 self.Controler.BufferProject() |
814 self.Controler.BufferProject() |
755 self.ParentWindow.RefreshTitle() |
815 self.ParentWindow.RefreshTitle() |
756 self.ParentWindow.RefreshFileMenu() |
816 self.ParentWindow.RefreshFileMenu() |
757 self.ParentWindow.RefreshEditMenu() |
817 self.ParentWindow.RefreshEditMenu() |
758 |
818 |
|
819 def GetBufferState(self): |
|
820 if not self.Debug: |
|
821 return self.Controler.GetBufferState() |
|
822 return False, False |
|
823 |
|
824 def Undo(self): |
|
825 if not self.Debug: |
|
826 self.Controler.LoadPrevious() |
|
827 self.ParentWindow.CloseTabsWithoutModel() |
|
828 self.ParentWindow.RefreshEditor() |
|
829 |
|
830 def Redo(self): |
|
831 if not self.Debug: |
|
832 self.Controler.LoadNext() |
|
833 self.ParentWindow.CloseTabsWithoutModel() |
|
834 self.ParentWindow.RefreshEditor() |
|
835 |
|
836 def HasNoModel(self): |
|
837 if not self.Debug: |
|
838 return self.Controler.GetEditedElement(self.TagName) is None |
|
839 return False |
|
840 |
759 # Refresh the current scaling |
841 # Refresh the current scaling |
760 def RefreshScaling(self, refresh=True): |
842 def RefreshScaling(self, refresh=True): |
761 properties = self.Controler.GetProjectProperties(self.Debug) |
843 properties = self.Controler.GetProjectProperties(self.Debug) |
762 scaling = properties["scaling"][self.CurrentLanguage] |
844 scaling = properties["scaling"][self.CurrentLanguage] |
763 if scaling[0] != 0 and scaling[1] != 0: |
845 if scaling[0] != 0 and scaling[1] != 0: |
888 maxy = max(maxy, bbox.y + bbox.height) |
969 maxy = max(maxy, bbox.y + bbox.height) |
889 return maxx, maxy |
970 return maxx, maxy |
890 |
971 |
891 def RefreshScrollBars(self, width_incr=0, height_incr=0): |
972 def RefreshScrollBars(self, width_incr=0, height_incr=0): |
892 xstart, ystart = self.GetViewStart() |
973 xstart, ystart = self.GetViewStart() |
893 window_size = self.GetClientSize() |
974 window_size = self.Editor.GetClientSize() |
894 maxx, maxy = self.GetMaxSize() |
975 maxx, maxy = self.GetMaxSize() |
895 maxx = max(maxx + WINDOW_BORDER, (xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[0]) |
976 maxx = max(maxx + WINDOW_BORDER, (xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[0]) |
896 maxy = max(maxy + WINDOW_BORDER, (ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[1]) |
977 maxy = max(maxy + WINDOW_BORDER, (ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[1]) |
897 if self.rubberBand.IsShown(): |
978 if self.rubberBand.IsShown(): |
898 extent = self.rubberBand.GetCurrentExtent() |
979 extent = self.rubberBand.GetCurrentExtent() |
899 maxx = max(maxx, extent.x + extent.width) |
980 maxx = max(maxx, extent.x + extent.width) |
900 maxy = max(maxy, extent.y + extent.height) |
981 maxy = max(maxy, extent.y + extent.height) |
901 maxx = int(maxx * self.ViewScale[0]) |
982 maxx = int(maxx * self.ViewScale[0]) |
902 maxy = int(maxy * self.ViewScale[1]) |
983 maxy = int(maxy * self.ViewScale[1]) |
903 self.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, |
984 self.Editor.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT, |
904 round(maxx / SCROLLBAR_UNIT) + width_incr, round(maxy / SCROLLBAR_UNIT) + height_incr, |
985 round(maxx / SCROLLBAR_UNIT) + width_incr, round(maxy / SCROLLBAR_UNIT) + height_incr, |
905 xstart, ystart, True) |
986 xstart, ystart, True) |
906 |
987 |
907 def SelectInGroup(self, element): |
988 def SelectInGroup(self, element): |
908 element.SetSelected(True) |
989 element.SetSelected(True) |
1117 self.Bind(wx.EVT_MENU, self.GetReleaseVariableMenuFunction(iec_path.upper()), id=new_id) |
1198 self.Bind(wx.EVT_MENU, self.GetReleaseVariableMenuFunction(iec_path.upper()), id=new_id) |
1118 if self.SelectedElement.IsForced(): |
1199 if self.SelectedElement.IsForced(): |
1119 menu.Enable(new_id, True) |
1200 menu.Enable(new_id, True) |
1120 else: |
1201 else: |
1121 menu.Enable(new_id, False) |
1202 menu.Enable(new_id, False) |
1122 self.PopupMenu(menu) |
1203 self.Editor.PopupMenu(menu) |
1123 |
1204 |
1124 def PopupBlockMenu(self, connector = None): |
1205 def PopupBlockMenu(self, connector = None): |
1125 if connector is not None and connector.IsCompatible("BOOL"): |
1206 if connector is not None and connector.IsCompatible("BOOL"): |
1126 type = self.Controler.GetEditedElementType(self.TagName, self.Debug) |
1207 type = self.Controler.GetEditedElementType(self.TagName, self.Debug) |
1127 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, True) |
1208 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, True) |
1147 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS2, True) |
1228 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS2, True) |
1148 elif connector.GetEdge() == "falling": |
1229 elif connector.GetEdge() == "falling": |
1149 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS3, True) |
1230 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS3, True) |
1150 else: |
1231 else: |
1151 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS0, True) |
1232 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS0, True) |
1152 self.PopupMenu(self.ContextualMenu) |
1233 self.Editor.PopupMenu(self.ContextualMenu) |
1153 |
1234 |
1154 def PopupWireMenu(self, delete=True): |
1235 def PopupWireMenu(self, delete=True): |
1155 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1236 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1156 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1237 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1157 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1238 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1161 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
1242 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
1162 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
1243 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
1163 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
1244 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
1164 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1245 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1165 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
1246 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
1166 self.PopupMenu(self.ContextualMenu) |
1247 self.Editor.PopupMenu(self.ContextualMenu) |
1167 |
1248 |
1168 def PopupDivergenceMenu(self, connector): |
1249 def PopupDivergenceMenu(self, connector): |
1169 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1250 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1170 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1251 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1171 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1252 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1175 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, True) |
1256 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, True) |
1176 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, connector) |
1257 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, connector) |
1177 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
1258 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
1178 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1259 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1179 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
1260 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
1180 self.PopupMenu(self.ContextualMenu) |
1261 self.Editor.PopupMenu(self.ContextualMenu) |
1181 |
1262 |
1182 def PopupGroupMenu(self): |
1263 def PopupGroupMenu(self): |
1183 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1264 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1184 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1265 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1185 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1266 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1189 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
1270 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
1190 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
1271 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
1191 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, True) |
1272 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, True) |
1192 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1273 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1193 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
1274 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
1194 self.PopupMenu(self.ContextualMenu) |
1275 self.Editor.PopupMenu(self.ContextualMenu) |
1195 |
1276 |
1196 def PopupDefaultMenu(self, block = True): |
1277 def PopupDefaultMenu(self, block = True): |
1197 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1278 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS0, False) |
1198 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1279 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS1, False) |
1199 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1280 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS2, False) |
1203 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
1284 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
1204 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
1285 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
1205 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
1286 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
1206 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1287 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, False) |
1207 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, block) |
1288 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, block) |
1208 self.PopupMenu(self.ContextualMenu) |
1289 self.Editor.PopupMenu(self.ContextualMenu) |
1209 |
1290 |
1210 #------------------------------------------------------------------------------- |
1291 #------------------------------------------------------------------------------- |
1211 # Menu items functions |
1292 # Menu items functions |
1212 #------------------------------------------------------------------------------- |
1293 #------------------------------------------------------------------------------- |
1213 |
1294 |
1317 def OnViewerLeftDown(self, event): |
1398 def OnViewerLeftDown(self, event): |
1318 if self.Mode == MODE_SELECTION: |
1399 if self.Mode == MODE_SELECTION: |
1319 dc = self.GetLogicalDC() |
1400 dc = self.GetLogicalDC() |
1320 pos = event.GetLogicalPosition(dc) |
1401 pos = event.GetLogicalPosition(dc) |
1321 if event.ShiftDown() and not event.ControlDown() and self.SelectedElement is not None: |
1402 if event.ShiftDown() and not event.ControlDown() and self.SelectedElement is not None: |
1322 element = self.FindElement(pos, True) |
1403 element = self.FindElement(event, True) |
1323 if element is not None: |
1404 if element is not None: |
1324 if isinstance(self.SelectedElement, Graphic_Group): |
1405 if isinstance(self.SelectedElement, Graphic_Group): |
1325 self.SelectedElement.SetSelected(False) |
1406 self.SelectedElement.SetSelected(False) |
1326 self.SelectedElement.SelectElement(element) |
1407 self.SelectedElement.SelectElement(element) |
1327 elif self.SelectedElement is not None: |
1408 elif self.SelectedElement is not None: |
1731 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(0, scaling[1])), False) |
1812 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(0, scaling[1])), False) |
1732 elif not self.Debug and keycode == wx.WXK_SPACE and self.SelectedElement is not None and self.SelectedElement.Dragging: |
1813 elif not self.Debug and keycode == wx.WXK_SPACE and self.SelectedElement is not None and self.SelectedElement.Dragging: |
1733 if self.IsBlock(self.SelectedElement) or self.IsComment(self.SelectedElement): |
1814 if self.IsBlock(self.SelectedElement) or self.IsComment(self.SelectedElement): |
1734 block = self.CopyBlock(self.SelectedElement, wx.Point(*self.SelectedElement.GetPosition())) |
1815 block = self.CopyBlock(self.SelectedElement, wx.Point(*self.SelectedElement.GetPosition())) |
1735 event = wx.MouseEvent() |
1816 event = wx.MouseEvent() |
1736 event.m_x, event.m_y = self.ScreenToClient(wx.GetMousePosition()) |
1817 event.m_x, event.m_y = self.Editor.ScreenToClient(wx.GetMousePosition()) |
1737 dc = self.GetLogicalDC() |
1818 dc = self.GetLogicalDC() |
1738 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1819 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1739 self.SelectedElement.SetSelected(False) |
1820 self.SelectedElement.SetSelected(False) |
1740 block.OnLeftDown(event, dc, self.Scaling) |
1821 block.OnLeftDown(event, dc, self.Scaling) |
1741 self.SelectedElement = block |
1822 self.SelectedElement = block |
1742 self.SelectedElement.SetSelected(True) |
1823 self.SelectedElement.SetSelected(True) |
1743 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1824 self.RefreshVariablePanel() |
1744 self.RefreshVisibleElements() |
1825 self.RefreshVisibleElements() |
1745 else: |
1826 else: |
1746 event.Skip() |
1827 event.Skip() |
|
1828 elif keycode == ord("+"): |
|
1829 self.SetScale(self.CurrentScale + 1) |
|
1830 self.ParentWindow.RefreshDisplayMenu() |
|
1831 elif keycode == ord("-"): |
|
1832 self.SetScale(self.CurrentScale - 1) |
|
1833 self.ParentWindow.RefreshDisplayMenu() |
1747 else: |
1834 else: |
1748 event.Skip() |
1835 event.Skip() |
1749 |
1836 |
1750 #------------------------------------------------------------------------------- |
1837 #------------------------------------------------------------------------------- |
1751 # Model adding functions from Drop Target |
1838 # Model adding functions from Drop Target |
2676 self.ParentWindow.SetCopyBuffer(text) |
2763 self.ParentWindow.SetCopyBuffer(text) |
2677 |
2764 |
2678 def Paste(self): |
2765 def Paste(self): |
2679 if not self.Debug: |
2766 if not self.Debug: |
2680 element = self.ParentWindow.GetCopyBuffer() |
2767 element = self.ParentWindow.GetCopyBuffer() |
2681 mouse_pos = self.ScreenToClient(wx.GetMousePosition()) |
2768 mouse_pos = self.Editor.ScreenToClient(wx.GetMousePosition()) |
2682 middle = wx.Rect(0, 0, *self.GetClientSize()).InsideXY(mouse_pos.x, mouse_pos.y) |
2769 middle = wx.Rect(0, 0, *self.Editor.GetClientSize()).InsideXY(mouse_pos.x, mouse_pos.y) |
2683 if middle: |
2770 if middle: |
2684 x, y = self.CalcUnscrolledPosition(mouse_pos.x, mouse_pos.y) |
2771 x, y = self.CalcUnscrolledPosition(mouse_pos.x, mouse_pos.y) |
2685 else: |
2772 else: |
2686 x, y = self.CalcUnscrolledPosition(0, 0) |
2773 x, y = self.CalcUnscrolledPosition(0, 0) |
2687 new_pos = [int(x / self.ViewScale[0]), int(y / self.ViewScale[1])] |
2774 new_pos = [int(x / self.ViewScale[0]), int(y / self.ViewScale[1])] |
2688 result = self.Controler.PasteEditedElementInstances(self.TagName, element, new_pos, middle, self.Debug) |
2775 result = self.Controler.PasteEditedElementInstances(self.TagName, element, new_pos, middle, self.Debug) |
2689 if not isinstance(result, (StringType, UnicodeType)): |
2776 if not isinstance(result, (StringType, UnicodeType)): |
2690 self.RefreshBuffer() |
2777 self.RefreshBuffer() |
2691 self.RefreshView(result) |
2778 self.RefreshView(selection=result) |
2692 self.ParentWindow.RefreshVariablePanel(self.TagName) |
2779 self.RefreshVariablePanel() |
2693 self.ParentWindow.RefreshInstancesTree() |
2780 self.ParentWindow.RefreshInstancesTree() |
2694 else: |
2781 else: |
2695 message = wx.MessageDialog(self, result, "Error", wx.OK|wx.ICON_ERROR) |
2782 message = wx.MessageDialog(self.Editor, result, "Error", wx.OK|wx.ICON_ERROR) |
2696 message.ShowModal() |
2783 message.ShowModal() |
2697 message.Destroy() |
2784 message.Destroy() |
2698 |
2785 |
2699 def CanAddElement(self, block): |
2786 def CanAddElement(self, block): |
2700 if isinstance(block, Graphic_Group): |
2787 if isinstance(block, Graphic_Group): |
2817 def OnMouseWheelWindow(self, event): |
2904 def OnMouseWheelWindow(self, event): |
2818 if self.StartMousePos is None or self.StartScreenPos is None: |
2905 if self.StartMousePos is None or self.StartScreenPos is None: |
2819 rotation = event.GetWheelRotation() / event.GetWheelDelta() |
2906 rotation = event.GetWheelRotation() / event.GetWheelDelta() |
2820 if event.ShiftDown(): |
2907 if event.ShiftDown(): |
2821 x, y = self.GetViewStart() |
2908 x, y = self.GetViewStart() |
2822 xp = max(0, min(x - rotation * 3, self.GetVirtualSize()[0] / self.GetScrollPixelsPerUnit()[0])) |
2909 xp = max(0, min(x - rotation * 3, self.Editor.GetVirtualSize()[0] / self.Editor.GetScrollPixelsPerUnit()[0])) |
2823 self.RefreshVisibleElements(xp = xp) |
2910 self.RefreshVisibleElements(xp = xp) |
2824 self.Scroll(xp, y) |
2911 self.Scroll(xp, y) |
2825 elif event.ControlDown(): |
2912 elif event.ControlDown(): |
2826 dc = self.GetLogicalDC() |
2913 dc = self.GetLogicalDC() |
2827 self.Freeze() |
2914 self.SetScale(self.CurrentScale + rotation, mouse_event = event) |
2828 pos = event.GetLogicalPosition(dc) |
|
2829 mouse_pos = event.GetPosition() |
|
2830 self.SetScale(self.CurrentScale + rotation, False) |
|
2831 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
|
2832 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
|
2833 scrollx = max(0, round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT) |
|
2834 scrolly = max(0, round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT) |
|
2835 if scrollx > xmax or scrolly > ymax: |
|
2836 self.RefreshScrollBars(max(0, scrollx - xmax), max(0, scrolly - ymax)) |
|
2837 self.Scroll(scrollx, scrolly) |
|
2838 else: |
|
2839 self.Scroll(scrollx, scrolly) |
|
2840 self.RefreshScrollBars() |
|
2841 self.RefreshVisibleElements() |
|
2842 self.Refresh() |
|
2843 self.Thaw() |
|
2844 self.ParentWindow.RefreshDisplayMenu() |
2915 self.ParentWindow.RefreshDisplayMenu() |
2845 else: |
2916 else: |
2846 x, y = self.GetViewStart() |
2917 x, y = self.GetViewStart() |
2847 yp = max(0, min(y - rotation * 3, self.GetVirtualSize()[1] / self.GetScrollPixelsPerUnit()[1])) |
2918 yp = max(0, min(y - rotation * 3, self.Editor.GetVirtualSize()[1] / self.Editor.GetScrollPixelsPerUnit()[1])) |
2848 self.RefreshVisibleElements(yp = yp) |
2919 self.RefreshVisibleElements(yp = yp) |
2849 self.Scroll(x, yp) |
2920 self.Scroll(x, yp) |
2850 |
2921 |
2851 def OnMoveWindow(self, event): |
2922 def OnMoveWindow(self, event): |
2852 if not USE_AUI: |
2923 if not USE_AUI: |
2853 self.GetBestSize() |
2924 self.Editor.GetBestSize() |
2854 self.RefreshScrollBars() |
2925 self.RefreshScrollBars() |
2855 self.RefreshVisibleElements() |
2926 self.RefreshVisibleElements() |
2856 event.Skip() |
2927 event.Skip() |
2857 |
2928 |
2858 def DoDrawing(self, dc, printing = False): |
2929 def DoDrawing(self, dc, printing = False): |
2861 font = wx.Font(self.GetFont().GetPointSize(), wx.MODERN, wx.NORMAL, wx.NORMAL) |
2932 font = wx.Font(self.GetFont().GetPointSize(), wx.MODERN, wx.NORMAL, wx.NORMAL) |
2862 dc.SetFont(font) |
2933 dc.SetFont(font) |
2863 else: |
2934 else: |
2864 dc.SetFont(self.GetFont()) |
2935 dc.SetFont(self.GetFont()) |
2865 else: |
2936 else: |
2866 dc.SetBackground(wx.Brush(self.GetBackgroundColour())) |
2937 dc.SetBackground(wx.Brush(self.Editor.GetBackgroundColour())) |
2867 dc.Clear() |
2938 dc.Clear() |
2868 dc.BeginDrawing() |
2939 dc.BeginDrawing() |
2869 if self.Scaling is not None and self.DrawGrid and not printing: |
2940 if self.Scaling is not None and self.DrawGrid and not printing: |
2870 dc.SetPen(wx.TRANSPARENT_PEN) |
2941 dc.SetPen(wx.TRANSPARENT_PEN) |
2871 dc.SetBrush(self.GridBrush) |
2942 dc.SetBrush(self.GridBrush) |
2872 xstart, ystart = self.GetViewStart() |
2943 xstart, ystart = self.GetViewStart() |
2873 window_size = self.GetClientSize() |
2944 window_size = self.Editor.GetClientSize() |
2874 width, height = self.GetVirtualSize() |
2945 width, height = self.Editor.GetVirtualSize() |
2875 width = int(max(width, xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[0]) |
2946 width = int(max(width, xstart * SCROLLBAR_UNIT + window_size[0]) / self.ViewScale[0]) |
2876 height = int(max(height, ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[1]) |
2947 height = int(max(height, ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[1]) |
2877 dc.DrawRectangle(1, 1, width, height) |
2948 dc.DrawRectangle(1, 1, width, height) |
2878 if self.PageSize is not None and not printing: |
2949 if self.PageSize is not None and not printing: |
2879 dc.SetPen(self.PagePen) |
2950 dc.SetPen(self.PagePen) |
2880 xstart, ystart = self.GetViewStart() |
2951 xstart, ystart = self.GetViewStart() |
2881 window_size = self.GetClientSize() |
2952 window_size = self.Editor.GetClientSize() |
2882 for x in xrange(self.PageSize[0] - (xstart * SCROLLBAR_UNIT) % self.PageSize[0], int(window_size[0] / self.ViewScale[0]), self.PageSize[0]): |
2953 for x in xrange(self.PageSize[0] - (xstart * SCROLLBAR_UNIT) % self.PageSize[0], int(window_size[0] / self.ViewScale[0]), self.PageSize[0]): |
2883 dc.DrawLine(xstart * SCROLLBAR_UNIT + x + 1, int(ystart * SCROLLBAR_UNIT / self.ViewScale[0]), |
2954 dc.DrawLine(xstart * SCROLLBAR_UNIT + x + 1, int(ystart * SCROLLBAR_UNIT / self.ViewScale[0]), |
2884 xstart * SCROLLBAR_UNIT + x + 1, int((ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[0])) |
2955 xstart * SCROLLBAR_UNIT + x + 1, int((ystart * SCROLLBAR_UNIT + window_size[1]) / self.ViewScale[0])) |
2885 for y in xrange(self.PageSize[1] - (ystart * SCROLLBAR_UNIT) % self.PageSize[1], int(window_size[1] / self.ViewScale[1]), self.PageSize[1]): |
2956 for y in xrange(self.PageSize[1] - (ystart * SCROLLBAR_UNIT) % self.PageSize[1], int(window_size[1] / self.ViewScale[1]), self.PageSize[1]): |
2886 dc.DrawLine(int(xstart * SCROLLBAR_UNIT / self.ViewScale[0]), ystart * SCROLLBAR_UNIT + y + 1, |
2957 dc.DrawLine(int(xstart * SCROLLBAR_UNIT / self.ViewScale[0]), ystart * SCROLLBAR_UNIT + y + 1, |