51 wx.TextDropTarget.__init__(self) |
51 wx.TextDropTarget.__init__(self) |
52 self.ParentWindow = 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] == "program": |
57 id = self.ParentWindow.GetNewId() |
57 message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR) |
58 block = FBD_Block(self.ParentWindow, values[0], values[2], id) |
58 message.ShowModal() |
59 block.SetPosition(x, y) |
59 message.Destroy() |
60 width, height = block.GetMinSize() |
60 elif values[1] in ["function", "functionBlock", "program"]: |
61 block.SetSize(width, height) |
61 name, type = self.ParentWindow.Controler.GetCurrentElementEditingType() |
62 self.ParentWindow.AddBlock(block) |
62 if name == values[0]: |
63 self.ParentWindow.Controler.AddCurrentElementEditingBlock(id,values[0], values[2]) |
63 message = wx.MessageDialog(self.ParentWindow, "\"%s\" can't use itself!"%name, "Error", wx.OK|wx.ICON_ERROR) |
64 self.ParentWindow.RefreshBlockModel(block) |
64 message.ShowModal() |
65 self.ParentWindow.RefreshScrollBars() |
65 message.Destroy() |
66 self.ParentWindow.Refresh() |
66 elif type == "function" and values[1] != "function": |
|
67 message = wx.MessageDialog(self.ParentWindow, "Function Blocks can't be used by Functions!", "Error", wx.OK|wx.ICON_ERROR) |
|
68 message.ShowModal() |
|
69 message.Destroy() |
|
70 elif self.ParentWindow.Controler.PouIsUsedBy(name, values[0]): |
|
71 message = wx.MessageDialog(self.ParentWindow, "\"%s\" is already used by \"%s\"!"%(name, values[0]), "Error", wx.OK|wx.ICON_ERROR) |
|
72 message.ShowModal() |
|
73 message.Destroy() |
|
74 else: |
|
75 id = self.ParentWindow.GetNewId() |
|
76 block = FBD_Block(self.ParentWindow, values[0], values[2], id) |
|
77 block.SetPosition(x, y) |
|
78 width, height = block.GetMinSize() |
|
79 block.SetSize(width, height) |
|
80 self.ParentWindow.AddBlock(block) |
|
81 self.ParentWindow.Controler.AddCurrentElementEditingBlock(id, values[0], values[2]) |
|
82 self.ParentWindow.RefreshBlockModel(block) |
|
83 self.ParentWindow.RefreshScrollBars() |
|
84 self.ParentWindow.Refresh() |
67 elif values[1] != "location": |
85 elif values[1] != "location": |
68 id = self.ParentWindow.GetNewId() |
86 id = self.ParentWindow.GetNewId() |
69 if values[1] == "Output": |
87 if values[1] == "Output": |
70 var_type = OUTPUT |
88 var_type = OUTPUT |
71 elif values[1] == "InOut": |
89 elif values[1] == "InOut": |
974 self.Refresh(False) |
992 self.Refresh(False) |
975 elif keycode == wx.WXK_LEFT: |
993 elif keycode == wx.WXK_LEFT: |
976 if event.ControlDown() and event.ShiftDown(): |
994 if event.ControlDown() and event.ShiftDown(): |
977 self.Scroll(0, ypos) |
995 self.Scroll(0, ypos) |
978 elif event.ControlDown(): |
996 elif event.ControlDown(): |
979 self.Scroll(max(0, xpos - 1), ypos) |
997 event.Skip() |
980 elif self.SelectedElement: |
998 elif self.SelectedElement: |
981 self.SelectedElement.Move(-scaling[0], 0) |
999 self.SelectedElement.Move(-scaling[0], 0) |
982 self.SelectedElement.RefreshModel() |
1000 self.SelectedElement.RefreshModel() |
983 self.RefreshBuffer() |
1001 self.RefreshBuffer() |
984 self.RefreshScrollBars() |
1002 self.RefreshScrollBars() |
985 self.Refresh(False) |
1003 self.Refresh(False) |
986 elif keycode == wx.WXK_RIGHT: |
1004 elif keycode == wx.WXK_RIGHT: |
987 if event.ControlDown() and event.ShiftDown(): |
1005 if event.ControlDown() and event.ShiftDown(): |
988 self.Scroll(xmax, ypos) |
1006 self.Scroll(xmax, ypos) |
989 elif event.ControlDown(): |
1007 elif event.ControlDown(): |
990 self.Scroll(min(xpos + 1, xmax), ypos) |
1008 event.Skip() |
991 elif self.SelectedElement: |
1009 elif self.SelectedElement: |
992 self.SelectedElement.Move(scaling[0], 0) |
1010 self.SelectedElement.Move(scaling[0], 0) |
993 self.SelectedElement.RefreshModel() |
1011 self.SelectedElement.RefreshModel() |
994 self.RefreshBuffer() |
1012 self.RefreshBuffer() |
995 self.RefreshScrollBars() |
1013 self.RefreshScrollBars() |
996 self.Refresh(False) |
1014 self.Refresh(False) |
997 elif keycode == wx.WXK_UP: |
1015 elif keycode == wx.WXK_UP: |
998 if event.ControlDown() and event.ShiftDown(): |
1016 if event.ControlDown() and event.ShiftDown(): |
999 self.Scroll(xpos, 0) |
1017 self.Scroll(xpos, 0) |
1000 elif event.ControlDown(): |
1018 elif event.ControlDown(): |
1001 self.Scroll(xpos, max(0, ypos - 1)) |
1019 event.Skip() |
1002 elif self.SelectedElement: |
1020 elif self.SelectedElement: |
1003 self.SelectedElement.Move(0, -scaling[1]) |
1021 self.SelectedElement.Move(0, -scaling[1]) |
1004 self.SelectedElement.RefreshModel() |
1022 self.SelectedElement.RefreshModel() |
1005 self.RefreshBuffer() |
1023 self.RefreshBuffer() |
1006 self.RefreshScrollBars() |
1024 self.RefreshScrollBars() |
1007 self.Refresh(False) |
1025 self.Refresh(False) |
1008 elif keycode == wx.WXK_DOWN: |
1026 elif keycode == wx.WXK_DOWN: |
1009 if event.ControlDown() and event.ShiftDown(): |
1027 if event.ControlDown() and event.ShiftDown(): |
1010 self.Scroll(xpos, ymax) |
1028 self.Scroll(xpos, ymax) |
1011 elif event.ControlDown(): |
1029 elif event.ControlDown(): |
1012 self.Scroll(xpos, min(ypos + 1, ymax)) |
1030 event.Skip() |
1013 elif self.SelectedElement: |
1031 elif self.SelectedElement: |
1014 self.SelectedElement.Move(0, scaling[1]) |
1032 self.SelectedElement.Move(0, scaling[1]) |
1015 self.SelectedElement.RefreshModel() |
1033 self.SelectedElement.RefreshModel() |
1016 self.RefreshBuffer() |
1034 self.RefreshBuffer() |
1017 self.RefreshScrollBars() |
1035 self.RefreshScrollBars() |
1018 self.Refresh(False) |
1036 self.Refresh(False) |
|
1037 else: |
|
1038 event.Skip() |
1019 |
1039 |
1020 #------------------------------------------------------------------------------- |
1040 #------------------------------------------------------------------------------- |
1021 # Model adding functions |
1041 # Model adding functions |
1022 #------------------------------------------------------------------------------- |
1042 #------------------------------------------------------------------------------- |
1023 |
1043 |