diff -r b22f661cbcfb -r c798a68c5560 Viewer.py --- a/Viewer.py Thu Aug 23 09:50:35 2007 +0200 +++ b/Viewer.py Mon Aug 27 17:37:50 2007 +0200 @@ -142,7 +142,8 @@ # Create a new Viewer def __init__(self, parent, window, controler): - wx.ScrolledWindow.__init__(self, parent, style=wx.SUNKEN_BORDER | wx.HSCROLL | wx.VSCROLL) + wx.ScrolledWindow.__init__(self, parent, pos=wx.Point(0, 0), size=wx.Size(0, 0), + style=wx.SUNKEN_BORDER | wx.HSCROLL | wx.VSCROLL) self._init_menus() # Adding a rubberband to Viewer self.rubberBand = RubberBand(drawingSurface=self) @@ -384,6 +385,7 @@ elif instance["type"] == "leftPowerRail": leftpowerrail = LD_PowerRail(self, LEFTRAIL, instance["id"], [True for i in range(len(instance["connectors"]))]) leftpowerrail.SetPosition(instance["x"], instance["y"]) + leftpowerrail.SetSize(instance["width"], instance["height"]) self.AddBlock(leftpowerrail) connectors = leftpowerrail.GetConnectors() for i, connector in enumerate(instance["connectors"]): @@ -391,6 +393,7 @@ elif instance["type"] == "rightPowerRail": rightpowerrail = LD_PowerRail(self, RIGHTRAIL, instance["id"], [True for i in range(len(instance["connectors"]))]) rightpowerrail.SetPosition(instance["x"], instance["y"]) + rightpowerrail.SetSize(instance["width"], instance["height"]) self.AddBlock(rightpowerrail) connectors = rightpowerrail.GetConnectors() for i, connector in enumerate(instance["connectors"]): @@ -466,7 +469,7 @@ if connectors["action"]: connectors["action"].SetPosition(wx.Point(*instance["connectors"]["action"]["position"])) elif instance["type"] == "transition": - transition = SFC_Transition(self, instance["condition_type"], instance["condition"], instance["id"]) + transition = SFC_Transition(self, instance["condition_type"], instance["condition"], instance["priority"], instance["id"]) transition.SetPosition(instance["x"], instance["y"]) self.AddBlock(transition) connectors = transition.GetConnectors() @@ -700,47 +703,54 @@ def OnNoModifierMenu(self, event): if self.SelectedElement and self.IsBlock(self.SelectedElement): self.SelectedElement.SetConnectorNegated(False) + self.RefreshBuffer() event.Skip() def OnNegatedMenu(self, event): if self.SelectedElement and self.IsBlock(self.SelectedElement): self.SelectedElement.SetConnectorNegated(True) + self.RefreshBuffer() event.Skip() def OnRisingEdgeMenu(self, event): if self.SelectedElement and self.IsBlock(self.SelectedElement): self.SelectedElement.SetConnectorEdge("rising") + self.RefreshBuffer() event.Skip() def OnFallingEdgeMenu(self, event): if self.SelectedElement and self.IsBlock(self.SelectedElement): self.SelectedElement.SetConnectorEdge("falling") + self.RefreshBuffer() event.Skip() def OnAddSegmentMenu(self, event): - if self.SelectedElement and self.IsBlock(self.SelectedElement): + if self.SelectedElement and self.IsWire(self.SelectedElement): self.SelectedElement.AddSegment() event.Skip() def OnDeleteSegmentMenu(self, event): - if self.SelectedElement and self.IsBlock(self.SelectedElement): + if self.SelectedElement and self.IsWire(self.SelectedElement): self.SelectedElement.DeleteSegment() event.Skip() def OnAddBranchMenu(self, event): if self.SelectedElement and self.IsBlock(self.SelectedElement): self.AddDivergenceBranch(self.SelectedElement) + self.RefreshBuffer() event.Skip() def OnDeleteBranchMenu(self, event): if self.SelectedElement and self.IsBlock(self.SelectedElement): self.RemoveDivergenceBranch(self.SelectedElement) + self.RefreshBuffer() event.Skip() def OnDeleteMenu(self, event): if self.SelectedElement: self.SelectedElement.Delete() self.SelectedElement = None + self.RefreshBuffer() event.Skip() #------------------------------------------------------------------------------- @@ -813,7 +823,11 @@ if self.Mode == MODE_SELECTION: elements = self.SearchElements(self.rubberBand.GetCurrentExtent()) self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) - if len(elements) > 0: + if len(elements) == 1: + self.SelectedElement = elements[0] + self.SelectedElement.SetSelected(True) + self.Refresh() + elif len(elements) > 1: self.SelectedElement = Graphic_Group(self) self.SelectedElement.SetElements(elements) self.SelectedElement.SetSelected(True) @@ -869,7 +883,8 @@ event.Skip() def OnViewerRightUp(self, event): - pos = event.GetPosition() + dc = self.GetLogicalDC() + pos = event.GetLogicalPosition(dc) element = self.FindElement(pos) if element: if self.SelectedElement and self.SelectedElement != element: @@ -1186,7 +1201,7 @@ if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() - transition = SFC_Transition(self, values["type"], values["value"], id) + transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) transition.SetPosition(bbox.x, bbox.y) min_width, min_height = transition.GetMinSize() transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) @@ -1397,11 +1412,12 @@ def EditTransitionContent(self, transition): dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE) dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) - dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition()}) + dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()}) dialog.SetElementSize(transition.GetSize()) if dialog.ShowModal() == wx.ID_OK: values = dialog.GetValues() transition.SetType(values["type"],values["value"]) + transition.SetPriority(values["priority"]) transition.RefreshModel() self.RefreshBuffer() self.RefreshScrollBars() @@ -1521,6 +1537,7 @@ transitionid = transition.GetId() infos = {} infos["type"] = transition.GetType() + infos["priority"] = transition.GetPriority() infos["condition"] = transition.GetCondition() infos["x"], infos["y"] = transition.GetPosition() infos["width"], infos["height"] = transition.GetSize() @@ -1710,6 +1727,7 @@ #------------------------------------------------------------------------------- def OnMoveWindow(self, event): + self.GetBestSize() self.RefreshScrollBars() event.Skip()