--- 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()