Viewer.py
changeset 56 7187e1c00975
parent 54 6688829ce624
child 58 39cd981ff242
equal deleted inserted replaced
55:e24d2f917c7e 56:7187e1c00975
   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 
   975             block.SetPosition(bbox.x, bbox.y)
   999             block.SetPosition(bbox.x, bbox.y)
   976             block.SetSize(values["width"], values["height"])
  1000             block.SetSize(values["width"], values["height"])
   977             self.AddBlock(block)
  1001             self.AddBlock(block)
   978             self.Controler.AddCurrentElementEditingBlock(id)
  1002             self.Controler.AddCurrentElementEditingBlock(id)
   979             self.RefreshBlockModel(block)
  1003             self.RefreshBlockModel(block)
       
  1004             self.RefreshBuffer()
   980             self.RefreshScrollBars()
  1005             self.RefreshScrollBars()
   981             self.Refresh()
  1006             self.Refresh()
   982         dialog.Destroy()
  1007         dialog.Destroy()
   983     
  1008     
   984     def AddNewVariable(self, bbox):
  1009     def AddNewVariable(self, bbox):
  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):
  1083             coil.SetPosition(bbox.x, bbox.y)
  1112             coil.SetPosition(bbox.x, bbox.y)
  1084             coil.SetSize(values["width"], values["height"])
  1113             coil.SetSize(values["width"], values["height"])
  1085             self.AddBlock(coil)
  1114             self.AddBlock(coil)
  1086             self.Controler.AddCurrentElementEditingCoil(id)
  1115             self.Controler.AddCurrentElementEditingCoil(id)
  1087             self.RefreshCoilModel(contact)
  1116             self.RefreshCoilModel(contact)
       
  1117             self.RefreshBuffer()
  1088             self.RefreshScrollBars()
  1118             self.RefreshScrollBars()
  1089             self.Refresh()
  1119             self.Refresh()
  1090         dialog.Destroy()
  1120         dialog.Destroy()
  1091 
  1121 
  1092     def AddNewPowerRail(self, bbox):
  1122     def AddNewPowerRail(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):
  1185             if old_type != values["type"]:
  1219             if old_type != values["type"]:
  1186                 id = variable.GetId()
  1220                 id = variable.GetId()
  1187                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1221                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1188                 self.Controler.AddCurrentElementEditingVariable(id, values["type"])
  1222                 self.Controler.AddCurrentElementEditingVariable(id, values["type"])
  1189             self.RefreshVariableModel(variable)
  1223             self.RefreshVariableModel(variable)
       
  1224             self.RefreshBuffer()
  1190             self.RefreshScrollBars()
  1225             self.RefreshScrollBars()
  1191             self.Refresh()
  1226             self.Refresh()
  1192         dialog.Destroy()
  1227         dialog.Destroy()
  1193 
  1228 
  1194     def EditConnectionContent(self, connection):
  1229     def EditConnectionContent(self, connection):
  1205             if old_type != values["type"]:
  1240             if old_type != values["type"]:
  1206                 id = connection.GetId()
  1241                 id = connection.GetId()
  1207                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1242                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1208                 self.Controler.AddCurrentElementEditingConnection(id, values["type"])
  1243                 self.Controler.AddCurrentElementEditingConnection(id, values["type"])
  1209             self.RefreshConnectionModel(connection)
  1244             self.RefreshConnectionModel(connection)
       
  1245             self.RefreshBuffer()
  1210             self.RefreshScrollBars()
  1246             self.RefreshScrollBars()
  1211             self.Refresh()
  1247             self.Refresh()
  1212         dialog.Destroy()
  1248         dialog.Destroy()
  1213 
  1249 
  1214     def EditContactContent(self, contact):
  1250     def EditContactContent(self, contact):
  1227             values = dialog.GetValues()
  1263             values = dialog.GetValues()
  1228             contact.SetName(values["name"])
  1264             contact.SetName(values["name"])
  1229             contact.SetType(values["type"])
  1265             contact.SetType(values["type"])
  1230             contact.SetSize(values["width"], values["height"])
  1266             contact.SetSize(values["width"], values["height"])
  1231             self.RefreshContactModel(contact)
  1267             self.RefreshContactModel(contact)
       
  1268             self.RefreshBuffer()
  1232             self.RefreshScrollBars()
  1269             self.RefreshScrollBars()
  1233             self.Refresh()
  1270             self.Refresh()
  1234         dialog.Destroy()
  1271         dialog.Destroy()
  1235 
  1272 
  1236     def EditCoilContent(self, coil):
  1273     def EditCoilContent(self, coil):
  1252             values = dialog.GetValues()
  1289             values = dialog.GetValues()
  1253             coil.SetName(values["name"])
  1290             coil.SetName(values["name"])
  1254             coil.SetType(values["type"])
  1291             coil.SetType(values["type"])
  1255             coil.SetSize(values["width"], values["height"])
  1292             coil.SetSize(values["width"], values["height"])
  1256             self.RefreshContactModel(coil)
  1293             self.RefreshContactModel(coil)
       
  1294             self.RefreshBuffer()
  1257             self.RefreshScrollBars()
  1295             self.RefreshScrollBars()
  1258             self.Refresh()
  1296             self.Refresh()
  1259         dialog.Destroy()
  1297         dialog.Destroy()
  1260 
  1298 
  1261     def EditPowerRailContent(self, powerrail):
  1299     def EditPowerRailContent(self, powerrail):
  1269             if old_type != values["type"]:
  1307             if old_type != values["type"]:
  1270                 id = powerrail.GetId()
  1308                 id = powerrail.GetId()
  1271                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1309                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1272                 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"])
  1310                 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"])
  1273             self.RefreshPowerRailModel(powerrail)
  1311             self.RefreshPowerRailModel(powerrail)
       
  1312             self.RefreshBuffer()
  1274             self.RefreshScrollBars()
  1313             self.RefreshScrollBars()
  1275             self.Refresh()
  1314             self.Refresh()
  1276         dialog.Destroy()
  1315         dialog.Destroy()
  1277 ##
  1316 ##
  1278 ##
  1317 ##