47 |
47 |
48 class ViewerDropTarget(wx.TextDropTarget): |
48 class ViewerDropTarget(wx.TextDropTarget): |
49 |
49 |
50 def __init__(self, parent): |
50 def __init__(self, parent): |
51 wx.TextDropTarget.__init__(self) |
51 wx.TextDropTarget.__init__(self) |
52 self.Parent = parent |
52 self.ParentWindow = parent |
53 |
53 |
54 def OnDropText(self, x, y, data): |
54 def OnDropText(self, x, y, data): |
55 values = eval(data) |
55 values = eval(data) |
56 if values[1] in ["function", "functionBlock", "program"]: |
56 if values[1] in ["function", "functionBlock", "program"]: |
57 id = self.Parent.GetNewId() |
57 id = self.ParentWindow.GetNewId() |
58 block = FBD_Block(self.Parent, values[0], values[2], id) |
58 block = FBD_Block(self.ParentWindow, values[0], values[2], id) |
59 block.SetPosition(x, y) |
59 block.SetPosition(x, y) |
60 width, height = block.GetMinSize() |
60 width, height = block.GetMinSize() |
61 block.SetSize(width, height) |
61 block.SetSize(width, height) |
62 self.Parent.AddBlock(block) |
62 self.ParentWindow.AddBlock(block) |
63 self.Parent.Controler.AddCurrentElementEditingBlock(id) |
63 self.ParentWindow.Controler.AddCurrentElementEditingBlock(id) |
64 self.Parent.RefreshBlockModel(block) |
64 self.ParentWindow.RefreshBlockModel(block) |
65 self.Parent.RefreshScrollBars() |
65 self.ParentWindow.RefreshScrollBars() |
66 self.Parent.Refresh() |
66 self.ParentWindow.Update() |
67 elif values[1] != "location": |
67 elif values[1] != "location": |
68 id = self.Parent.GetNewId() |
68 id = self.ParentWindow.GetNewId() |
69 if values[1] == "Output": |
69 if values[1] == "Output": |
70 var_type = OUTPUT |
70 var_type = OUTPUT |
71 elif values[1] == "InOut": |
71 elif values[1] == "InOut": |
72 var_type = INPUT |
72 var_type = INPUT |
73 else: |
73 else: |
74 var_type = INPUT |
74 var_type = INPUT |
75 variable = FBD_Variable(self.Parent, var_type, values[0], values[2], id) |
75 variable = FBD_Variable(self.ParentWindow, var_type, values[0], values[2], id) |
76 variable.SetPosition(x, y) |
76 variable.SetPosition(x, y) |
77 width, height = variable.GetMinSize() |
77 width, height = variable.GetMinSize() |
78 variable.SetSize(width, height) |
78 variable.SetSize(width, height) |
79 self.Parent.AddBlock(variable) |
79 self.ParentWindow.AddBlock(variable) |
80 self.Parent.Controler.AddCurrentElementEditingVariable(id, var_type) |
80 self.ParentWindow.Controler.AddCurrentElementEditingVariable(id, var_type) |
81 self.Parent.RefreshVariableModel(variable) |
81 self.ParentWindow.RefreshVariableModel(variable) |
82 self.Parent.RefreshScrollBars() |
82 self.ParentWindow.RefreshScrollBars() |
83 self.Parent.Refresh() |
83 self.ParentWindow.Update() |
84 |
84 |
85 |
85 |
86 """ |
86 """ |
87 Class that implements a Viewer based on a wx.ScrolledWindow for drawing and |
87 Class that implements a Viewer based on a wx.ScrolledWindow for drawing and |
88 manipulating graphic elements |
88 manipulating graphic elements |
172 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
172 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
173 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
173 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
174 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
174 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
175 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
175 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
176 self.Bind(wx.EVT_CHAR, self.OnChar) |
176 self.Bind(wx.EVT_CHAR, self.OnChar) |
177 self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
177 if wx.VERSION < (2, 7, 0): |
178 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
178 self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
|
179 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
179 |
180 |
180 # Returns a new id |
181 # Returns a new id |
181 def GetNewId(self): |
182 def GetNewId(self): |
182 self.current_id += 1 |
183 self.current_id += 1 |
183 return self.current_id |
184 return self.current_id |
184 |
185 |
185 # Destructor |
186 # Destructor |
186 def __del__(self): |
187 def __del__(self): |
187 self.ResetView() |
188 self.ResetView() |
188 |
189 |
189 def GetLogicalDC(self): |
190 def GetLogicalDC(self, buffered=False): |
190 dc = wx.ClientDC(self) |
191 if buffered: |
|
192 dc = wx.BufferedPaintDC(self) |
|
193 else: |
|
194 dc = wx.ClientDC(self) |
|
195 dc.SetFont(wx.NORMAL_FONT) |
191 self.DoPrepareDC(dc) |
196 self.DoPrepareDC(dc) |
192 return dc |
197 return dc |
193 |
198 |
194 #------------------------------------------------------------------------------- |
199 #------------------------------------------------------------------------------- |
195 # Element management functions |
200 # Element management functions |
263 self.SavedMode = True |
268 self.SavedMode = True |
264 # Reset selection |
269 # Reset selection |
265 if self.Mode != MODE_SELECTION and self.SelectedElement: |
270 if self.Mode != MODE_SELECTION and self.SelectedElement: |
266 self.SelectedElement.SetSelected(False) |
271 self.SelectedElement.SetSelected(False) |
267 self.SelectedElement = None |
272 self.SelectedElement = None |
268 self.Refresh() |
273 self.Refresh(False) |
269 |
274 |
270 # Return current drawing mode |
275 # Return current drawing mode |
271 def GetDrawingMode(self): |
276 def GetDrawingMode(self): |
272 return self.Parent.GetDrawingMode() |
277 return self.ParentWindow.GetDrawingMode() |
273 |
278 |
274 # Buffer the last model state |
279 # Buffer the last model state |
275 def RefreshBuffer(self): |
280 def RefreshBuffer(self): |
276 self.Controler.BufferProject() |
281 self.Controler.BufferProject() |
277 self.Parent.RefreshTitle() |
282 self.ParentWindow.RefreshTitle() |
278 self.Parent.RefreshEditMenu() |
283 self.ParentWindow.RefreshEditMenu() |
279 |
284 |
280 #------------------------------------------------------------------------------- |
285 #------------------------------------------------------------------------------- |
281 # Refresh functions |
286 # Refresh functions |
282 #------------------------------------------------------------------------------- |
287 #------------------------------------------------------------------------------- |
283 |
288 |
516 self.AddBlock(actionBlock) |
521 self.AddBlock(actionBlock) |
517 connector = actionBlock.GetConnector() |
522 connector = actionBlock.GetConnector() |
518 connector.SetPosition(wx.Point(*instance["connector"]["position"])) |
523 connector.SetPosition(wx.Point(*instance["connector"]["position"])) |
519 self.CreateWires(connector, instance["connector"]["links"], ids) |
524 self.CreateWires(connector, instance["connector"]["links"], ids) |
520 else: |
525 else: |
|
526 connectors = {"inputs" : [], "outputs" : []} |
|
527 for input in instance["connectors"]["inputs"]: |
|
528 if input["negated"]: |
|
529 connectors["inputs"].append((input["name"], None, "negated")) |
|
530 elif input["edge"]: |
|
531 connectors["inputs"].append((input["name"], None, input["edge"])) |
|
532 else: |
|
533 connectors["inputs"].append((input["name"], None, "none")) |
|
534 for output in instance["connectors"]["outputs"]: |
|
535 if output["negated"]: |
|
536 connectors["outputs"].append((output["name"], None, "negated")) |
|
537 elif output["edge"]: |
|
538 connectors["outputs"].append((output["name"], None, output["edge"])) |
|
539 else: |
|
540 connectors["outputs"].append((output["name"], None, "none")) |
521 if instance["name"] != None: |
541 if instance["name"] != None: |
522 block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"])) |
542 block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors) |
523 else: |
543 else: |
524 block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"])) |
544 block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors) |
525 block.SetPosition(instance["x"], instance["y"]) |
545 block.SetPosition(instance["x"], instance["y"]) |
526 block.SetSize(instance["width"], instance["height"]) |
546 block.SetSize(instance["width"], instance["height"]) |
527 self.AddBlock(block) |
547 self.AddBlock(block) |
528 connectors = block.GetConnectors() |
548 connectors = block.GetConnectors() |
529 for i, input_connector in enumerate(instance["connectors"]["inputs"]): |
549 for i, input_connector in enumerate(instance["connectors"]["inputs"]): |
682 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
702 self.ContextualMenu.FindItemByPosition(5).Enable(False) |
683 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
703 self.ContextualMenu.FindItemByPosition(6).Enable(False) |
684 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
704 self.ContextualMenu.FindItemByPosition(8).Enable(False) |
685 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
705 self.ContextualMenu.FindItemByPosition(9).Enable(False) |
686 self.PopupMenu(self.ContextualMenu) |
706 self.PopupMenu(self.ContextualMenu) |
687 |
|
688 def EditCommentContent(self, comment): |
|
689 dialog = wx.TextEntryDialog(self.Parent, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL|wx.TE_MULTILINE) |
|
690 if dialog.ShowModal() == wx.ID_OK: |
|
691 value = dialog.GetValue() |
|
692 comment.SetContent(value) |
|
693 infos = {"content" : value} |
|
694 infos["width"], infos["height"] = comment.GetSize() |
|
695 self.Controler.SetCurrentElementEditingCommentInfos(comment.GetId(), infos) |
|
696 self.Refresh() |
|
697 dialog.Destroy() |
|
698 |
707 |
699 #------------------------------------------------------------------------------- |
708 #------------------------------------------------------------------------------- |
700 # Menu items functions |
709 # Menu items functions |
701 #------------------------------------------------------------------------------- |
710 #------------------------------------------------------------------------------- |
702 |
711 |
781 else: |
790 else: |
782 element = self.FindElement(pos) |
791 element = self.FindElement(pos) |
783 if self.SelectedElement and self.SelectedElement != element: |
792 if self.SelectedElement and self.SelectedElement != element: |
784 self.SelectedElement.SetSelected(False) |
793 self.SelectedElement.SetSelected(False) |
785 self.SelectedElement = None |
794 self.SelectedElement = None |
786 self.Refresh() |
795 self.Refresh(False) |
787 if element: |
796 if element: |
788 self.SelectedElement = element |
797 self.SelectedElement = element |
789 self.SelectedElement.OnLeftDown(event, dc, self.Scaling) |
798 self.SelectedElement.OnLeftDown(event, dc, self.Scaling) |
790 self.Refresh() |
799 self.Refresh(False) |
791 else: |
800 else: |
792 self.rubberBand.Reset() |
801 self.rubberBand.Reset() |
793 self.rubberBand.OnLeftDown(event, dc, self.Scaling) |
802 self.rubberBand.OnLeftDown(event, dc, self.Scaling) |
794 elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT, |
803 elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT, |
795 MODE_CONTACT, MODE_COIL, MODE_POWERRAIL, MODE_INITIALSTEP, |
804 MODE_CONTACT, MODE_COIL, MODE_POWERRAIL, MODE_INITIALSTEP, |
813 self.SelectedElement.SetSelected(False) |
822 self.SelectedElement.SetSelected(False) |
814 self.SelectedElement = wire |
823 self.SelectedElement = wire |
815 elif self.SelectedElement: |
824 elif self.SelectedElement: |
816 self.SelectedElement.SetSelected(False) |
825 self.SelectedElement.SetSelected(False) |
817 self.SelectedElement = None |
826 self.SelectedElement = None |
818 self.Refresh() |
827 self.Refresh(False) |
819 event.Skip() |
828 event.Skip() |
820 |
829 |
821 def OnViewerLeftUp(self, event): |
830 def OnViewerLeftUp(self, event): |
822 if self.rubberBand.IsShown(): |
831 if self.rubberBand.IsShown(): |
823 if self.Mode == MODE_SELECTION: |
832 if self.Mode == MODE_SELECTION: |
824 elements = self.SearchElements(self.rubberBand.GetCurrentExtent()) |
833 elements = self.SearchElements(self.rubberBand.GetCurrentExtent()) |
825 self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
834 self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
826 if len(elements) == 1: |
835 if len(elements) == 1: |
827 self.SelectedElement = elements[0] |
836 self.SelectedElement = elements[0] |
828 self.SelectedElement.SetSelected(True) |
837 self.SelectedElement.SetSelected(True) |
829 self.Refresh() |
838 self.Refresh(False) |
830 elif len(elements) > 1: |
839 elif len(elements) > 1: |
831 self.SelectedElement = Graphic_Group(self) |
840 self.SelectedElement = Graphic_Group(self) |
832 self.SelectedElement.SetElements(elements) |
841 self.SelectedElement.SetElements(elements) |
833 self.SelectedElement.SetSelected(True) |
842 self.SelectedElement.SetSelected(True) |
834 self.Refresh() |
843 self.Refresh(False) |
835 else: |
844 else: |
836 bbox = self.rubberBand.GetCurrentExtent() |
845 bbox = self.rubberBand.GetCurrentExtent() |
837 self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
846 self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
838 if self.Mode == MODE_BLOCK: |
847 if self.Mode == MODE_BLOCK: |
839 wx.CallAfter(self.AddNewBlock, bbox) |
848 wx.CallAfter(self.AddNewBlock, bbox) |
862 elif self.Mode == MODE_ACTION: |
871 elif self.Mode == MODE_ACTION: |
863 wx.CallAfter(self.AddNewActionBlock, bbox) |
872 wx.CallAfter(self.AddNewActionBlock, bbox) |
864 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
873 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
865 self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
874 self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) |
866 wx.CallAfter(self.SetCursor, wx.NullCursor) |
875 wx.CallAfter(self.SetCursor, wx.NullCursor) |
867 self.ReleaseMouse() |
876 self.Refresh(False) |
868 self.Refresh() |
|
869 elif self.Mode == MODE_WIRE and self.SelectedElement: |
877 elif self.Mode == MODE_WIRE and self.SelectedElement: |
870 if self.SelectedElement.EndConnected != None: |
878 if self.SelectedElement.EndConnected != None: |
871 self.SelectedElement.ResetPoints() |
879 self.SelectedElement.ResetPoints() |
872 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
880 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
873 self.SelectedElement.GeneratePoints() |
881 self.SelectedElement.GeneratePoints() |
892 self.SelectedElement = element |
900 self.SelectedElement = element |
893 self.SelectedElement.SetSelected(True) |
901 self.SelectedElement.SetSelected(True) |
894 self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling) |
902 self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling) |
895 wx.CallAfter(self.SetCursor, wx.NullCursor) |
903 wx.CallAfter(self.SetCursor, wx.NullCursor) |
896 self.ReleaseMouse() |
904 self.ReleaseMouse() |
897 self.Refresh() |
905 self.Refresh(False) |
898 event.Skip() |
906 event.Skip() |
899 |
907 |
900 def OnViewerLeftDClick(self, event): |
908 def OnViewerLeftDClick(self, event): |
901 if self.Mode == MODE_SELECTION and self.SelectedElement: |
909 if self.Mode == MODE_SELECTION and self.SelectedElement: |
902 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
910 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
903 self.Refresh() |
911 self.Refresh(False) |
904 event.Skip() |
912 event.Skip() |
905 |
913 |
906 def OnViewerMotion(self, event): |
914 def OnViewerMotion(self, event): |
907 if self.rubberBand.IsShown(): |
915 if self.rubberBand.IsShown(): |
908 self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
916 self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
909 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
917 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
910 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
918 if self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling): |
911 self.Refresh() |
919 self.Refresh(False) |
912 elif self.Mode == MODE_WIRE and self.SelectedElement: |
920 elif self.Mode == MODE_WIRE and self.SelectedElement: |
913 dc = self.GetLogicalDC() |
921 dc = self.GetLogicalDC() |
914 pos = GetScaledEventPosition(event, dc, self.Scaling) |
922 pos = GetScaledEventPosition(event, dc, self.Scaling) |
915 connector = self.FindBlockConnector(pos, False) |
923 connector = self.FindBlockConnector(pos, False) |
916 if not connector or self.SelectedElement.EndConnected == None: |
924 if not connector or self.SelectedElement.EndConnected == None: |
917 self.SelectedElement.ResetPoints() |
925 self.SelectedElement.ResetPoints() |
918 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
926 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
919 self.SelectedElement.GeneratePoints() |
927 self.SelectedElement.GeneratePoints() |
920 self.Refresh() |
928 self.Refresh(False) |
921 event.Skip() |
929 event.Skip() |
922 |
930 |
923 def UpdateScrollPos(self, event): |
931 def UpdateScrollPos(self, event): |
924 if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown(): |
932 if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown(): |
925 position = event.GetPosition() |
933 position = event.GetPosition() |
955 self.SelectedElement.Clean() |
963 self.SelectedElement.Clean() |
956 self.SelectedElement.Delete() |
964 self.SelectedElement.Delete() |
957 self.SelectedElement = None |
965 self.SelectedElement = None |
958 self.RefreshBuffer() |
966 self.RefreshBuffer() |
959 self.RefreshScrollBars() |
967 self.RefreshScrollBars() |
960 self.Refresh() |
968 self.Refresh(False) |
961 elif keycode == wx.WXK_LEFT: |
969 elif keycode == wx.WXK_LEFT: |
962 if event.ControlDown() and event.ShiftDown(): |
970 if event.ControlDown() and event.ShiftDown(): |
963 self.Scroll(0, ypos) |
971 self.Scroll(0, ypos) |
964 elif event.ControlDown(): |
972 elif event.ControlDown(): |
965 self.Scroll(max(0, xpos - 1), ypos) |
973 self.Scroll(max(0, xpos - 1), ypos) |
966 elif self.SelectedElement: |
974 elif self.SelectedElement: |
967 self.SelectedElement.Move(-scaling[0], 0) |
975 self.SelectedElement.Move(-scaling[0], 0) |
968 self.SelectedElement.RefreshModel() |
976 self.SelectedElement.RefreshModel() |
969 self.RefreshBuffer() |
977 self.RefreshBuffer() |
970 self.RefreshScrollBars() |
978 self.RefreshScrollBars() |
971 self.Refresh() |
979 self.Refresh(False) |
972 elif keycode == wx.WXK_RIGHT: |
980 elif keycode == wx.WXK_RIGHT: |
973 if event.ControlDown() and event.ShiftDown(): |
981 if event.ControlDown() and event.ShiftDown(): |
974 self.Scroll(xmax, ypos) |
982 self.Scroll(xmax, ypos) |
975 elif event.ControlDown(): |
983 elif event.ControlDown(): |
976 self.Scroll(min(xpos + 1, xmax), ypos) |
984 self.Scroll(min(xpos + 1, xmax), ypos) |
977 elif self.SelectedElement: |
985 elif self.SelectedElement: |
978 self.SelectedElement.Move(scaling[0], 0) |
986 self.SelectedElement.Move(scaling[0], 0) |
979 self.SelectedElement.RefreshModel() |
987 self.SelectedElement.RefreshModel() |
980 self.RefreshBuffer() |
988 self.RefreshBuffer() |
981 self.RefreshScrollBars() |
989 self.RefreshScrollBars() |
982 self.Refresh() |
990 self.Refresh(False) |
983 elif keycode == wx.WXK_UP: |
991 elif keycode == wx.WXK_UP: |
984 if event.ControlDown() and event.ShiftDown(): |
992 if event.ControlDown() and event.ShiftDown(): |
985 self.Scroll(xpos, 0) |
993 self.Scroll(xpos, 0) |
986 elif event.ControlDown(): |
994 elif event.ControlDown(): |
987 self.Scroll(xpos, max(0, ypos - 1)) |
995 self.Scroll(xpos, max(0, ypos - 1)) |
988 elif self.SelectedElement: |
996 elif self.SelectedElement: |
989 self.SelectedElement.Move(0, -scaling[1]) |
997 self.SelectedElement.Move(0, -scaling[1]) |
990 self.SelectedElement.RefreshModel() |
998 self.SelectedElement.RefreshModel() |
991 self.RefreshBuffer() |
999 self.RefreshBuffer() |
992 self.RefreshScrollBars() |
1000 self.RefreshScrollBars() |
993 self.Refresh() |
1001 self.Refresh(False) |
994 elif keycode == wx.WXK_DOWN: |
1002 elif keycode == wx.WXK_DOWN: |
995 if event.ControlDown() and event.ShiftDown(): |
1003 if event.ControlDown() and event.ShiftDown(): |
996 self.Scroll(xpos, ymax) |
1004 self.Scroll(xpos, ymax) |
997 elif event.ControlDown(): |
1005 elif event.ControlDown(): |
998 self.Scroll(xpos, min(ypos + 1, ymax)) |
1006 self.Scroll(xpos, min(ypos + 1, ymax)) |
999 elif self.SelectedElement: |
1007 elif self.SelectedElement: |
1000 self.SelectedElement.Move(0, scaling[1]) |
1008 self.SelectedElement.Move(0, scaling[1]) |
1001 self.SelectedElement.RefreshModel() |
1009 self.SelectedElement.RefreshModel() |
1002 self.RefreshBuffer() |
1010 self.RefreshBuffer() |
1003 self.RefreshScrollBars() |
1011 self.RefreshScrollBars() |
1004 self.Refresh() |
1012 self.Refresh(False) |
1005 |
1013 |
1006 #------------------------------------------------------------------------------- |
1014 #------------------------------------------------------------------------------- |
1007 # Model adding functions |
1015 # Model adding functions |
1008 #------------------------------------------------------------------------------- |
1016 #------------------------------------------------------------------------------- |
1009 |
1017 |
1010 def AddNewBlock(self, bbox): |
1018 def AddNewBlock(self, bbox): |
1011 dialog = BlockPropertiesDialog(self.Parent) |
1019 dialog = BlockPropertiesDialog(self.ParentWindow) |
1012 dialog.SetBlockList(self.Controler.GetBlockTypes()) |
1020 dialog.SetBlockList(self.Controler.GetBlockTypes()) |
1013 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1021 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1014 dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables()) |
1022 dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables()) |
1015 dialog.SetMinBlockSize((bbox.width, bbox.height)) |
1023 dialog.SetMinBlockSize((bbox.width, bbox.height)) |
1016 if dialog.ShowModal() == wx.ID_OK: |
1024 if dialog.ShowModal() == wx.ID_OK: |
1025 self.AddBlock(block) |
1033 self.AddBlock(block) |
1026 self.Controler.AddCurrentElementEditingBlock(id, values["type"], values.get("name", None)) |
1034 self.Controler.AddCurrentElementEditingBlock(id, values["type"], values.get("name", None)) |
1027 self.RefreshBlockModel(block) |
1035 self.RefreshBlockModel(block) |
1028 self.RefreshBuffer() |
1036 self.RefreshBuffer() |
1029 self.RefreshScrollBars() |
1037 self.RefreshScrollBars() |
1030 self.Parent.RefreshEditor() |
1038 self.ParentWindow.RefreshEditor() |
1031 self.Refresh() |
1039 self.Refresh(False) |
1032 dialog.Destroy() |
1040 dialog.Destroy() |
1033 |
1041 |
1034 def AddNewVariable(self, bbox): |
1042 def AddNewVariable(self, bbox): |
1035 dialog = VariablePropertiesDialog(self.Parent) |
1043 dialog = VariablePropertiesDialog(self.ParentWindow) |
1036 dialog.SetMinVariableSize((bbox.width, bbox.height)) |
1044 dialog.SetMinVariableSize((bbox.width, bbox.height)) |
1037 varlist = [] |
1045 varlist = [] |
1038 vars = self.Controler.GetCurrentElementEditingInterfaceVars() |
1046 vars = self.Controler.GetCurrentElementEditingInterfaceVars() |
1039 if vars: |
1047 if vars: |
1040 for var in vars: |
1048 for var in vars: |
1053 self.AddBlock(variable) |
1061 self.AddBlock(variable) |
1054 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
1062 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
1055 self.RefreshVariableModel(variable) |
1063 self.RefreshVariableModel(variable) |
1056 self.RefreshBuffer() |
1064 self.RefreshBuffer() |
1057 self.RefreshScrollBars() |
1065 self.RefreshScrollBars() |
1058 self.Refresh() |
1066 self.Refresh(False) |
1059 dialog.Destroy() |
1067 dialog.Destroy() |
1060 |
1068 |
1061 def AddNewConnection(self, bbox): |
1069 def AddNewConnection(self, bbox): |
1062 dialog = ConnectionPropertiesDialog(self.Parent) |
1070 dialog = ConnectionPropertiesDialog(self.ParentWindow) |
1063 dialog.SetMinConnectionSize((bbox.width, bbox.height)) |
1071 dialog.SetMinConnectionSize((bbox.width, bbox.height)) |
1064 if dialog.ShowModal() == wx.ID_OK: |
1072 if dialog.ShowModal() == wx.ID_OK: |
1065 id = self.GetNewId() |
1073 id = self.GetNewId() |
1066 values = dialog.GetValues() |
1074 values = dialog.GetValues() |
1067 connection = FBD_Connector(self, values["type"], values["name"], id) |
1075 connection = FBD_Connector(self, values["type"], values["name"], id) |
1070 self.AddBlock(connection) |
1078 self.AddBlock(connection) |
1071 self.Controler.AddCurrentElementEditingConnection(id, values["type"]) |
1079 self.Controler.AddCurrentElementEditingConnection(id, values["type"]) |
1072 self.RefreshConnectionModel(connection) |
1080 self.RefreshConnectionModel(connection) |
1073 self.RefreshBuffer() |
1081 self.RefreshBuffer() |
1074 self.RefreshScrollBars() |
1082 self.RefreshScrollBars() |
1075 self.Refresh() |
1083 self.Refresh(False) |
1076 dialog.Destroy() |
1084 dialog.Destroy() |
1077 |
1085 |
1078 def AddNewComment(self, bbox): |
1086 def AddNewComment(self, bbox): |
1079 dialog = wx.TextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wx.OK|wx.CANCEL|wx.TE_MULTILINE) |
1087 dialog = wx.TextEntryDialog(self.ParentWindow, "Add a new comment", "Please enter comment text", "", wx.OK|wx.CANCEL|wx.TE_MULTILINE) |
1080 if dialog.ShowModal() == wx.ID_OK: |
1088 if dialog.ShowModal() == wx.ID_OK: |
1081 value = dialog.GetValue() |
1089 value = dialog.GetValue() |
1082 id = self.GetNewId() |
1090 id = self.GetNewId() |
1083 comment = Comment(self, value, id) |
1091 comment = Comment(self, value, id) |
1084 comment.SetPosition(bbox.x, bbox.y) |
1092 comment.SetPosition(bbox.x, bbox.y) |
1140 self.AddBlock(coil) |
1148 self.AddBlock(coil) |
1141 self.Controler.AddCurrentElementEditingCoil(id) |
1149 self.Controler.AddCurrentElementEditingCoil(id) |
1142 self.RefreshCoilModel(coil) |
1150 self.RefreshCoilModel(coil) |
1143 self.RefreshBuffer() |
1151 self.RefreshBuffer() |
1144 self.RefreshScrollBars() |
1152 self.RefreshScrollBars() |
1145 self.Refresh() |
1153 self.Refresh(False) |
1146 dialog.Destroy() |
1154 dialog.Destroy() |
1147 |
1155 |
1148 def AddNewPowerRail(self, bbox): |
1156 def AddNewPowerRail(self, bbox): |
1149 dialog = LDPowerRailDialog(self.Parent) |
1157 dialog = LDPowerRailDialog(self.ParentWindow) |
1150 dialog.SetMinSize((bbox.width, bbox.height)) |
1158 dialog.SetMinSize((bbox.width, bbox.height)) |
1151 if dialog.ShowModal() == wx.ID_OK: |
1159 if dialog.ShowModal() == wx.ID_OK: |
1152 id = self.GetNewId() |
1160 id = self.GetNewId() |
1153 values = dialog.GetValues() |
1161 values = dialog.GetValues() |
1154 powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])]) |
1162 powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])]) |
1157 self.AddBlock(powerrail) |
1165 self.AddBlock(powerrail) |
1158 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"]) |
1166 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"]) |
1159 self.RefreshPowerRailModel(powerrail) |
1167 self.RefreshPowerRailModel(powerrail) |
1160 self.RefreshBuffer() |
1168 self.RefreshBuffer() |
1161 self.RefreshScrollBars() |
1169 self.RefreshScrollBars() |
1162 self.Refresh() |
1170 self.Refresh(False) |
1163 dialog.Destroy() |
1171 dialog.Destroy() |
1164 |
1172 |
1165 def AddNewStep(self, bbox, initial = False): |
1173 def AddNewStep(self, bbox, initial = False): |
1166 dialog = StepContentDialog(self.Parent, initial) |
1174 dialog = StepContentDialog(self.ParentWindow, initial) |
1167 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1175 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1168 dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars()) |
1176 dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars()) |
1169 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)]) |
1177 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)]) |
1170 dialog.SetMinStepSize((bbox.width, bbox.height)) |
1178 dialog.SetMinStepSize((bbox.width, bbox.height)) |
1171 if dialog.ShowModal() == wx.ID_OK: |
1179 if dialog.ShowModal() == wx.ID_OK: |
1190 self.AddBlock(step) |
1198 self.AddBlock(step) |
1191 self.Controler.AddCurrentElementEditingStep(id) |
1199 self.Controler.AddCurrentElementEditingStep(id) |
1192 self.RefreshStepModel(step) |
1200 self.RefreshStepModel(step) |
1193 self.RefreshBuffer() |
1201 self.RefreshBuffer() |
1194 self.RefreshScrollBars() |
1202 self.RefreshScrollBars() |
1195 self.Refresh() |
1203 self.Refresh(False) |
1196 dialog.Destroy() |
1204 dialog.Destroy() |
1197 |
1205 |
1198 def AddNewTransition(self, bbox): |
1206 def AddNewTransition(self, bbox): |
1199 dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE) |
1207 dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE) |
1200 dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) |
1208 dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) |
1201 if dialog.ShowModal() == wx.ID_OK: |
1209 if dialog.ShowModal() == wx.ID_OK: |
1202 id = self.GetNewId() |
1210 id = self.GetNewId() |
1203 values = dialog.GetValues() |
1211 values = dialog.GetValues() |
1204 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
1212 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
1208 self.AddBlock(transition) |
1216 self.AddBlock(transition) |
1209 self.Controler.AddCurrentElementEditingTransition(id) |
1217 self.Controler.AddCurrentElementEditingTransition(id) |
1210 self.RefreshTransitionModel(transition) |
1218 self.RefreshTransitionModel(transition) |
1211 self.RefreshBuffer() |
1219 self.RefreshBuffer() |
1212 self.RefreshScrollBars() |
1220 self.RefreshScrollBars() |
1213 self.Refresh() |
1221 self.Refresh(False) |
1214 dialog.Destroy() |
1222 dialog.Destroy() |
1215 |
1223 |
1216 def AddNewDivergence(self, bbox): |
1224 def AddNewDivergence(self, bbox): |
1217 dialog = DivergenceCreateDialog(self.Parent) |
1225 dialog = DivergenceCreateDialog(self.ParentWindow) |
1218 dialog.SetMinSize((bbox.width, bbox.height)) |
1226 dialog.SetMinSize((bbox.width, bbox.height)) |
1219 if dialog.ShowModal() == wx.ID_OK: |
1227 if dialog.ShowModal() == wx.ID_OK: |
1220 id = self.GetNewId() |
1228 id = self.GetNewId() |
1221 values = dialog.GetValues() |
1229 values = dialog.GetValues() |
1222 divergence = SFC_Divergence(self, values["type"], values["number"], id) |
1230 divergence = SFC_Divergence(self, values["type"], values["number"], id) |
1226 self.AddBlock(divergence) |
1234 self.AddBlock(divergence) |
1227 self.Controler.AddCurrentElementEditingDivergence(id, values["type"]) |
1235 self.Controler.AddCurrentElementEditingDivergence(id, values["type"]) |
1228 self.RefreshDivergenceModel(divergence) |
1236 self.RefreshDivergenceModel(divergence) |
1229 self.RefreshBuffer() |
1237 self.RefreshBuffer() |
1230 self.RefreshScrollBars() |
1238 self.RefreshScrollBars() |
1231 self.Refresh() |
1239 self.Refresh(False) |
1232 dialog.Destroy() |
1240 dialog.Destroy() |
1233 |
1241 |
1234 |
1242 |
1235 #------------------------------------------------------------------------------- |
1243 #------------------------------------------------------------------------------- |
1236 # Edit element content functions |
1244 # Edit element content functions |
1237 #------------------------------------------------------------------------------- |
1245 #------------------------------------------------------------------------------- |
1238 |
1246 |
1239 def EditBlockContent(self, block): |
1247 def EditBlockContent(self, block): |
1240 dialog = BlockPropertiesDialog(self.Parent) |
1248 dialog = BlockPropertiesDialog(self.ParentWindow) |
1241 dialog.SetBlockList(self.Controler.GetBlockTypes()) |
1249 dialog.SetBlockList(self.Controler.GetBlockTypes()) |
1242 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1250 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1243 dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables()) |
1251 dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables()) |
1244 dialog.SetMinBlockSize(block.GetSize()) |
1252 dialog.SetMinBlockSize(block.GetSize()) |
1245 values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes()} |
1253 values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes()} |
1283 self.Controler.RemoveCurrentElementEditingInstance(id) |
1291 self.Controler.RemoveCurrentElementEditingInstance(id) |
1284 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
1292 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
1285 self.RefreshVariableModel(variable) |
1293 self.RefreshVariableModel(variable) |
1286 self.RefreshBuffer() |
1294 self.RefreshBuffer() |
1287 self.RefreshScrollBars() |
1295 self.RefreshScrollBars() |
1288 self.Refresh() |
1296 self.Refresh(False) |
1289 dialog.Destroy() |
1297 dialog.Destroy() |
1290 |
1298 |
1291 def EditConnectionContent(self, connection): |
1299 def EditConnectionContent(self, connection): |
1292 dialog = ConnectionPropertiesDialog(self.Parent) |
1300 dialog = ConnectionPropertiesDialog(self.ParentWindow) |
1293 dialog.SetMinConnectionSize(connection.GetSize()) |
1301 dialog.SetMinConnectionSize(connection.GetSize()) |
1294 values = {"name" : connection.GetName(), "type" : connection.GetType()} |
1302 values = {"name" : connection.GetName(), "type" : connection.GetType()} |
1295 dialog.SetValues(values) |
1303 dialog.SetValues(values) |
1296 if dialog.ShowModal() == wx.ID_OK: |
1304 if dialog.ShowModal() == wx.ID_OK: |
1297 old_type = connection.GetType() |
1305 old_type = connection.GetType() |
1353 coil.SetType(values["type"]) |
1361 coil.SetType(values["type"]) |
1354 coil.SetSize(values["width"], values["height"]) |
1362 coil.SetSize(values["width"], values["height"]) |
1355 self.RefreshCoilModel(coil) |
1363 self.RefreshCoilModel(coil) |
1356 self.RefreshBuffer() |
1364 self.RefreshBuffer() |
1357 self.RefreshScrollBars() |
1365 self.RefreshScrollBars() |
1358 self.Refresh() |
1366 self.Refresh(False) |
1359 dialog.Destroy() |
1367 dialog.Destroy() |
1360 |
1368 |
1361 def EditPowerRailContent(self, powerrail): |
1369 def EditPowerRailContent(self, powerrail): |
1362 dialog = LDPowerRailDialog(self.Parent, powerrail.GetType(), len(powerrail.GetConnectors())) |
1370 dialog = LDPowerRailDialog(self.ParentWindow, powerrail.GetType(), len(powerrail.GetConnectors())) |
1363 dialog.SetMinSize(powerrail.GetSize()) |
1371 dialog.SetMinSize(powerrail.GetSize()) |
1364 if dialog.ShowModal() == wx.ID_OK: |
1372 if dialog.ShowModal() == wx.ID_OK: |
1365 old_type = powerrail.GetType() |
1373 old_type = powerrail.GetType() |
1366 values = dialog.GetValues() |
1374 values = dialog.GetValues() |
1367 powerrail.SetType(values["type"], [True for i in xrange(values["number"])]) |
1375 powerrail.SetType(values["type"], [True for i in xrange(values["number"])]) |
1371 self.Controler.RemoveCurrentElementEditingInstance(id) |
1379 self.Controler.RemoveCurrentElementEditingInstance(id) |
1372 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"]) |
1380 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"]) |
1373 self.RefreshPowerRailModel(powerrail) |
1381 self.RefreshPowerRailModel(powerrail) |
1374 self.RefreshBuffer() |
1382 self.RefreshBuffer() |
1375 self.RefreshScrollBars() |
1383 self.RefreshScrollBars() |
1376 self.Refresh() |
1384 self.Refresh(False) |
1377 dialog.Destroy() |
1385 dialog.Destroy() |
1378 |
1386 |
1379 def EditStepContent(self, step): |
1387 def EditStepContent(self, step): |
1380 dialog = StepContentDialog(self.Parent, step.GetInitial()) |
1388 dialog = StepContentDialog(self.ParentWindow, step.GetInitial()) |
1381 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1389 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1382 dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars()) |
1390 dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars()) |
1383 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()]) |
1391 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()]) |
1384 dialog.SetMinStepSize(step.GetSize()) |
1392 dialog.SetMinStepSize(step.GetSize()) |
1385 values = {"name" : step.GetName()} |
1393 values = {"name" : step.GetName()} |
1405 step.RemoveAction() |
1413 step.RemoveAction() |
1406 step.UpdateSize(values["width"], values["height"]) |
1414 step.UpdateSize(values["width"], values["height"]) |
1407 step.RefreshModel() |
1415 step.RefreshModel() |
1408 self.RefreshBuffer() |
1416 self.RefreshBuffer() |
1409 self.RefreshScrollBars() |
1417 self.RefreshScrollBars() |
1410 self.Refresh() |
1418 self.Refresh(False) |
1411 |
1419 |
1412 def EditTransitionContent(self, transition): |
1420 def EditTransitionContent(self, transition): |
1413 dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE) |
1421 dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE) |
1414 dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) |
1422 dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) |
1415 dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()}) |
1423 dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()}) |
1416 dialog.SetElementSize(transition.GetSize()) |
1424 dialog.SetElementSize(transition.GetSize()) |
1417 if dialog.ShowModal() == wx.ID_OK: |
1425 if dialog.ShowModal() == wx.ID_OK: |
1418 values = dialog.GetValues() |
1426 values = dialog.GetValues() |
1419 transition.SetType(values["type"],values["value"]) |
1427 transition.SetType(values["type"],values["value"]) |
1420 transition.SetPriority(values["priority"]) |
1428 transition.SetPriority(values["priority"]) |
1421 transition.RefreshModel() |
1429 transition.RefreshModel() |
1422 self.RefreshBuffer() |
1430 self.RefreshBuffer() |
1423 self.RefreshScrollBars() |
1431 self.RefreshScrollBars() |
1424 self.Refresh() |
1432 self.Refresh(False) |
1425 dialog.Destroy() |
1433 dialog.Destroy() |
1426 |
1434 |
1427 def EditJumpContent(self, jump): |
1435 def EditJumpContent(self, jump): |
1428 choices = [] |
1436 choices = [] |
1429 for block in self.Blocks: |
1437 for block in self.Blocks: |
1430 if isinstance(block, SFC_Step): |
1438 if isinstance(block, SFC_Step): |
1431 choices.append(block.GetName()) |
1439 choices.append(block.GetName()) |
1432 dialog = wx.SingleChoiceDialog(self.Parent, "Edit jump target", "Please choose a target", choices, wx.OK|wx.CANCEL) |
1440 dialog = wx.SingleChoiceDialog(self.ParentWindow, "Edit jump target", "Please choose a target", choices, wx.OK|wx.CANCEL) |
1433 dialog.SetSelection(choices.index(jump.GetTarget())) |
1441 dialog.SetSelection(choices.index(jump.GetTarget())) |
1434 if dialog.ShowModal() == wx.ID_OK: |
1442 if dialog.ShowModal() == wx.ID_OK: |
1435 value = dialog.GetStringSelection() |
1443 value = dialog.GetStringSelection() |
1436 jump.SetTarget(value) |
1444 jump.SetTarget(value) |
1437 jump.RefreshModel() |
1445 jump.RefreshModel() |
1438 self.RefreshBuffer() |
1446 self.RefreshBuffer() |
1439 self.RefreshScrollBars() |
1447 self.RefreshScrollBars() |
1440 self.Refresh() |
1448 self.Refresh(False) |
1441 dialog.Destroy() |
1449 dialog.Destroy() |
1442 |
1450 |
1443 def EditActionBlockContent(self, actionblock): |
1451 def EditActionBlockContent(self, actionblock): |
1444 dialog = ActionBlockDialog(self.Parent) |
1452 dialog = ActionBlockDialog(self.ParentWindow) |
1445 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
1453 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
1446 dialog.SetActionList(self.Controler.GetCurrentElementEditingActions()) |
1454 dialog.SetActionList(self.Controler.GetCurrentElementEditingActions()) |
1447 dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars()) |
1455 dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars()) |
1448 dialog.SetValues(actionblock.GetActions()) |
1456 dialog.SetValues(actionblock.GetActions()) |
1449 if dialog.ShowModal() == wx.ID_OK: |
1457 if dialog.ShowModal() == wx.ID_OK: |
1450 actions = dialog.GetValues() |
1458 actions = dialog.GetValues() |
1451 actionblock.SetActions(actions) |
1459 actionblock.SetActions(actions) |
1452 actionblock.RefreshModel() |
1460 actionblock.RefreshModel() |
1453 self.RefreshBuffer() |
1461 self.RefreshBuffer() |
1454 self.RefreshScrollBars() |
1462 self.RefreshScrollBars() |
1455 self.Refresh() |
1463 self.Refresh(False) |
|
1464 dialog.Destroy() |
|
1465 |
|
1466 def EditCommentContent(self, comment): |
|
1467 dialog = wx.TextEntryDialog(self.ParentWindow, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL|wx.TE_MULTILINE) |
|
1468 if dialog.ShowModal() == wx.ID_OK: |
|
1469 value = dialog.GetValue() |
|
1470 comment.SetContent(value) |
|
1471 comment.RefreshModel() |
|
1472 self.RefreshBuffer() |
|
1473 self.RefreshScrollBars() |
|
1474 self.Refresh(False) |
1456 dialog.Destroy() |
1475 dialog.Destroy() |
1457 |
1476 |
1458 #------------------------------------------------------------------------------- |
1477 #------------------------------------------------------------------------------- |
1459 # Model update functions |
1478 # Model update functions |
1460 #------------------------------------------------------------------------------- |
1479 #------------------------------------------------------------------------------- |
1730 self.GetBestSize() |
1749 self.GetBestSize() |
1731 self.RefreshScrollBars() |
1750 self.RefreshScrollBars() |
1732 event.Skip() |
1751 event.Skip() |
1733 |
1752 |
1734 def OnPaint(self, event): |
1753 def OnPaint(self, event): |
1735 dc = self.GetLogicalDC() |
1754 dc = self.GetLogicalDC(True) |
1736 dc.Clear() |
1755 dc.Clear() |
1737 dc.SetPen(wx.Pen(wx.Colour(230, 230, 230))) |
1756 dc.SetPen(wx.Pen(wx.Colour(230, 230, 230))) |
|
1757 dc.BeginDrawing() |
1738 if self.Scaling and self.DrawGrid: |
1758 if self.Scaling and self.DrawGrid: |
1739 width, height = dc.GetSize() |
1759 width, height = dc.GetSize() |
1740 for i in xrange(1, width / self.Scaling[0] + 1): |
1760 for i in xrange(1, width / self.Scaling[0] + 1): |
1741 dc.DrawLine(i * self.Scaling[0], 0, i * self.Scaling[0], height) |
1761 dc.DrawLine(i * self.Scaling[0], 0, i * self.Scaling[0], height) |
1742 for i in xrange(1, height / self.Scaling[1] + 1): |
1762 for i in xrange(1, height / self.Scaling[1] + 1): |