264 # Reset selection |
264 # Reset selection |
265 if self.Mode != MODE_SELECTION and self.SelectedElement: |
265 if self.Mode != MODE_SELECTION and self.SelectedElement: |
266 self.SelectedElement.SetSelected(False) |
266 self.SelectedElement.SetSelected(False) |
267 self.SelectedElement = None |
267 self.SelectedElement = None |
268 self.Refresh() |
268 self.Refresh() |
269 |
269 |
270 # Return current drawing mode |
270 # Return current drawing mode |
271 def GetDrawingMode(self): |
271 def GetDrawingMode(self): |
272 return self.Parent.GetDrawingMode() |
272 return self.Parent.GetDrawingMode() |
|
273 |
|
274 # Buffer the last model state |
|
275 def RefreshBuffer(self): |
|
276 self.Controler.BufferProject() |
|
277 self.Parent.RefreshTitle() |
|
278 self.Parent.RefreshEditMenu() |
273 |
279 |
274 #------------------------------------------------------------------------------- |
280 #------------------------------------------------------------------------------- |
275 # Refresh functions |
281 # Refresh functions |
276 #------------------------------------------------------------------------------- |
282 #------------------------------------------------------------------------------- |
|
283 |
|
284 def ResetBuffer(self): |
|
285 pass |
277 |
286 |
278 # Refresh Viewer elements |
287 # Refresh Viewer elements |
279 def RefreshView(self): |
288 def RefreshView(self): |
280 self.current_id = 0 |
289 self.current_id = 0 |
281 # Start by reseting Viewer |
290 # Start by reseting Viewer |
847 self.SelectedElement.ResetPoints() |
856 self.SelectedElement.ResetPoints() |
848 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
857 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
849 self.SelectedElement.GeneratePoints() |
858 self.SelectedElement.GeneratePoints() |
850 self.SelectedElement.RefreshModel() |
859 self.SelectedElement.RefreshModel() |
851 self.SelectedElement.SetSelected(True) |
860 self.SelectedElement.SetSelected(True) |
|
861 self.RefreshBuffer() |
852 else: |
862 else: |
853 self.SelectedElement.Delete() |
863 self.SelectedElement.Delete() |
854 self.SelectedElement = None |
864 self.SelectedElement = None |
855 self.Refresh() |
865 self.Refresh() |
856 if not self.SavedMode: |
866 if not self.SavedMode: |
925 scaling = (8, 8) |
935 scaling = (8, 8) |
926 if keycode == WXK_DELETE and self.SelectedElement: |
936 if keycode == WXK_DELETE and self.SelectedElement: |
927 self.SelectedElement.Clean() |
937 self.SelectedElement.Clean() |
928 self.SelectedElement.Delete() |
938 self.SelectedElement.Delete() |
929 self.SelectedElement = None |
939 self.SelectedElement = None |
|
940 self.RefreshBuffer() |
|
941 self.RefreshScrollBars() |
|
942 self.Refresh() |
930 elif keycode == WXK_LEFT: |
943 elif keycode == WXK_LEFT: |
931 if event.ControlDown() and event.ShiftDown(): |
944 if event.ControlDown() and event.ShiftDown(): |
932 self.Scroll(0, ypos) |
945 self.Scroll(0, ypos) |
933 elif event.ControlDown(): |
946 elif event.ControlDown(): |
934 self.Scroll(max(0, xpos - 1), ypos) |
947 self.Scroll(max(0, xpos - 1), ypos) |
935 elif self.SelectedElement: |
948 elif self.SelectedElement: |
936 self.SelectedElement.Move(-scaling[0], 0) |
949 self.SelectedElement.Move(-scaling[0], 0) |
|
950 self.RefreshBuffer() |
|
951 self.RefreshScrollBars() |
|
952 self.Refresh() |
937 elif keycode == WXK_RIGHT: |
953 elif keycode == WXK_RIGHT: |
938 if event.ControlDown() and event.ShiftDown(): |
954 if event.ControlDown() and event.ShiftDown(): |
939 self.Scroll(xmax, ypos) |
955 self.Scroll(xmax, ypos) |
940 elif event.ControlDown(): |
956 elif event.ControlDown(): |
941 self.Scroll(min(xpos + 1, xmax), ypos) |
957 self.Scroll(min(xpos + 1, xmax), ypos) |
942 elif self.SelectedElement: |
958 elif self.SelectedElement: |
943 self.SelectedElement.Move(scaling[0], 0) |
959 self.SelectedElement.Move(scaling[0], 0) |
|
960 self.RefreshBuffer() |
|
961 self.RefreshScrollBars() |
|
962 self.Refresh() |
944 elif keycode == WXK_UP: |
963 elif keycode == WXK_UP: |
945 if event.ControlDown() and event.ShiftDown(): |
964 if event.ControlDown() and event.ShiftDown(): |
946 self.Scroll(xpos, 0) |
965 self.Scroll(xpos, 0) |
947 elif event.ControlDown(): |
966 elif event.ControlDown(): |
948 self.Scroll(xpos, max(0, ypos - 1)) |
967 self.Scroll(xpos, max(0, ypos - 1)) |
949 elif self.SelectedElement: |
968 elif self.SelectedElement: |
950 self.SelectedElement.Move(0, -scaling[1]) |
969 self.SelectedElement.Move(0, -scaling[1]) |
|
970 self.RefreshBuffer() |
|
971 self.RefreshScrollBars() |
|
972 self.Refresh() |
951 elif keycode == WXK_DOWN: |
973 elif keycode == WXK_DOWN: |
952 if event.ControlDown() and event.ShiftDown(): |
974 if event.ControlDown() and event.ShiftDown(): |
953 self.Scroll(xpos, ymax) |
975 self.Scroll(xpos, ymax) |
954 elif event.ControlDown(): |
976 elif event.ControlDown(): |
955 self.Scroll(xpos, min(ypos + 1, ymax)) |
977 self.Scroll(xpos, min(ypos + 1, ymax)) |
956 elif self.SelectedElement: |
978 elif self.SelectedElement: |
957 self.SelectedElement.Move(0, scaling[1]) |
979 self.SelectedElement.Move(0, scaling[1]) |
958 self.Refresh() |
980 self.RefreshBuffer() |
|
981 self.RefreshScrollBars() |
|
982 self.Refresh() |
959 |
983 |
960 #------------------------------------------------------------------------------- |
984 #------------------------------------------------------------------------------- |
961 # Model adding functions |
985 # Model adding functions |
962 #------------------------------------------------------------------------------- |
986 #------------------------------------------------------------------------------- |
963 |
987 |
1000 variable.SetPosition(bbox.x, bbox.y) |
1025 variable.SetPosition(bbox.x, bbox.y) |
1001 variable.SetSize(values["width"], values["height"]) |
1026 variable.SetSize(values["width"], values["height"]) |
1002 self.AddBlock(variable) |
1027 self.AddBlock(variable) |
1003 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
1028 self.Controler.AddCurrentElementEditingVariable(id, values["type"]) |
1004 self.RefreshVariableModel(variable) |
1029 self.RefreshVariableModel(variable) |
|
1030 self.RefreshBuffer() |
1005 self.RefreshScrollBars() |
1031 self.RefreshScrollBars() |
1006 self.Refresh() |
1032 self.Refresh() |
1007 dialog.Destroy() |
1033 dialog.Destroy() |
1008 |
1034 |
1009 def AddNewConnection(self, bbox): |
1035 def AddNewConnection(self, bbox): |
1016 connection.SetPosition(bbox.x, bbox.y) |
1042 connection.SetPosition(bbox.x, bbox.y) |
1017 connection.SetSize(values["width"], values["height"]) |
1043 connection.SetSize(values["width"], values["height"]) |
1018 self.AddBlock(connection) |
1044 self.AddBlock(connection) |
1019 self.Controler.AddCurrentElementEditingConnection(id, values["type"]) |
1045 self.Controler.AddCurrentElementEditingConnection(id, values["type"]) |
1020 self.RefreshConnectionModel(connection) |
1046 self.RefreshConnectionModel(connection) |
|
1047 self.RefreshBuffer() |
1021 self.RefreshScrollBars() |
1048 self.RefreshScrollBars() |
1022 self.Refresh() |
1049 self.Refresh() |
1023 dialog.Destroy() |
1050 dialog.Destroy() |
1024 |
1051 |
1025 def AddNewComment(self, bbox): |
1052 def AddNewComment(self, bbox): |
1032 min_width, min_height = comment.GetMinSize() |
1059 min_width, min_height = comment.GetMinSize() |
1033 comment.SetSize(max(min_width,bbox.width),max(min_height,bbox.height)) |
1060 comment.SetSize(max(min_width,bbox.width),max(min_height,bbox.height)) |
1034 self.AddComment(comment) |
1061 self.AddComment(comment) |
1035 self.Controler.AddCurrentElementEditingComment(id) |
1062 self.Controler.AddCurrentElementEditingComment(id) |
1036 self.RefreshCommentModel(comment) |
1063 self.RefreshCommentModel(comment) |
|
1064 self.RefreshBuffer() |
1037 self.RefreshScrollBars() |
1065 self.RefreshScrollBars() |
1038 self.Refresh() |
1066 self.Refresh() |
1039 dialog.Destroy() |
1067 dialog.Destroy() |
1040 |
1068 |
1041 def AddNewContact(self, bbox): |
1069 def AddNewContact(self, bbox): |
1056 contact.SetPosition(bbox.x, bbox.y) |
1084 contact.SetPosition(bbox.x, bbox.y) |
1057 contact.SetSize(values["width"], values["height"]) |
1085 contact.SetSize(values["width"], values["height"]) |
1058 self.AddBlock(contact) |
1086 self.AddBlock(contact) |
1059 self.Controler.AddCurrentElementEditingContact(id) |
1087 self.Controler.AddCurrentElementEditingContact(id) |
1060 self.RefreshContactModel(contact) |
1088 self.RefreshContactModel(contact) |
|
1089 self.RefreshBuffer() |
1061 self.RefreshScrollBars() |
1090 self.RefreshScrollBars() |
1062 self.Refresh() |
1091 self.Refresh() |
1063 dialog.Destroy() |
1092 dialog.Destroy() |
1064 |
1093 |
1065 def AddNewCoil(self, bbox): |
1094 def AddNewCoil(self, bbox): |
1099 powerrail.SetPosition(bbox.x, bbox.y) |
1129 powerrail.SetPosition(bbox.x, bbox.y) |
1100 powerrail.SetSize(values["width"], values["height"]) |
1130 powerrail.SetSize(values["width"], values["height"]) |
1101 self.AddBlock(powerrail) |
1131 self.AddBlock(powerrail) |
1102 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"]) |
1132 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"]) |
1103 self.RefreshPowerRailModel(powerrail) |
1133 self.RefreshPowerRailModel(powerrail) |
|
1134 self.RefreshBuffer() |
1104 self.RefreshScrollBars() |
1135 self.RefreshScrollBars() |
1105 self.Refresh() |
1136 self.Refresh() |
1106 dialog.Destroy() |
1137 dialog.Destroy() |
1107 |
1138 |
1108 def AddNewTransition(self, bbox): |
1139 def AddNewTransition(self, bbox): |
1116 min_width, min_height = transition.GetMinSize() |
1147 min_width, min_height = transition.GetMinSize() |
1117 transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1148 transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1118 self.AddBlock(transition) |
1149 self.AddBlock(transition) |
1119 self.Controler.AddCurrentElementEditingTransition(id) |
1150 self.Controler.AddCurrentElementEditingTransition(id) |
1120 self.RefreshTransitionModel(transition) |
1151 self.RefreshTransitionModel(transition) |
|
1152 self.RefreshBuffer() |
1121 self.RefreshScrollBars() |
1153 self.RefreshScrollBars() |
1122 self.Refresh() |
1154 self.Refresh() |
1123 dialog.Destroy() |
1155 dialog.Destroy() |
1124 |
1156 |
1125 def AddNewDivergence(self, bbox): |
1157 def AddNewDivergence(self, bbox): |
1133 min_width, min_height = divergence.GetMinSize() |
1165 min_width, min_height = divergence.GetMinSize() |
1134 divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1166 divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1135 self.AddBlock(divergence) |
1167 self.AddBlock(divergence) |
1136 self.Controler.AddCurrentElementEditingDivergence(id, values["type"]) |
1168 self.Controler.AddCurrentElementEditingDivergence(id, values["type"]) |
1137 self.RefreshDivergenceModel(divergence) |
1169 self.RefreshDivergenceModel(divergence) |
|
1170 self.RefreshBuffer() |
1138 self.RefreshScrollBars() |
1171 self.RefreshScrollBars() |
1139 self.Refresh() |
1172 self.Refresh() |
1140 dialog.Destroy() |
1173 dialog.Destroy() |
1141 |
1174 |
1142 |
1175 |
1156 if "name" in values: |
1189 if "name" in values: |
1157 block.SetName(values["name"]) |
1190 block.SetName(values["name"]) |
1158 block.SetSize(values["width"], values["height"]) |
1191 block.SetSize(values["width"], values["height"]) |
1159 block.SetType(values["type"], values["extension"]) |
1192 block.SetType(values["type"], values["extension"]) |
1160 self.RefreshBlockModel(block) |
1193 self.RefreshBlockModel(block) |
|
1194 self.RefreshBuffer() |
1161 self.RefreshScrollBars() |
1195 self.RefreshScrollBars() |
1162 self.Refresh() |
1196 self.Refresh() |
1163 dialog.Destroy() |
1197 dialog.Destroy() |
1164 |
1198 |
1165 def EditVariableContent(self, variable): |
1199 def EditVariableContent(self, variable): |