--- a/LDViewer.py Mon Sep 10 16:12:29 2007 +0200
+++ b/LDViewer.py Mon Sep 10 18:16:07 2007 +0200
@@ -448,7 +448,7 @@
#-------------------------------------------------------------------------------
def AddLadderRung(self):
- dialog = LDElementDialog(self.Parent, "coil")
+ dialog = LDElementDialog(self.ParentWindow, "coil")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -537,7 +537,7 @@
for element in self.SelectedElement.GetElements():
wires.append(element)
if len(wires) > 0:
- dialog = LDElementDialog(self.Parent, "contact")
+ dialog = LDElementDialog(self.ParentWindow, "contact")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -758,7 +758,7 @@
new_wire.ConnectEndPoint(None, connectors[index + 1])
right_elements.reverse()
elif right_powerrail:
- dialog = LDElementDialog(self.Parent, "coil")
+ dialog = LDElementDialog(self.ParentWindow, "coil")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -1179,7 +1179,7 @@
if self.GetDrawingMode() == FREEDRAWING_MODE:
Viewer.EditContactContent(self, contact)
else:
- dialog = LDElementDialog(self.Parent, "contact")
+ dialog = LDElementDialog(self.ParentWindow, "contact")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -1202,7 +1202,7 @@
if self.GetDrawingMode() == FREEDRAWING_MODE:
Viewer.EditCoilContent(self, coil)
else:
- dialog = LDElementDialog(self.Parent, "coil")
+ dialog = LDElementDialog(self.ParentWindow, "coil")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
--- a/PLCControler.py Mon Sep 10 16:12:29 2007 +0200
+++ b/PLCControler.py Mon Sep 10 18:16:07 2007 +0200
@@ -1213,6 +1213,7 @@
infos["connectors"] = {"inputs":[],"outputs":[]}
for variable in instance.inputVariables.getVariable():
connector = {}
+ connector["name"] = variable.getFormalParameter()
connector["position"] = variable.connectionPointIn.getRelPosition()
connector["negated"] = variable.getNegated()
connector["edge"] = variable.getConnectorEdge()
@@ -1225,6 +1226,7 @@
infos["connectors"]["inputs"].append(connector)
for variable in instance.outputVariables.getVariable():
connector = {}
+ connector["name"] = variable.getFormalParameter()
connector["position"] = variable.connectionPointOut.getRelPosition()
connector["negated"] = variable.getNegated()
connector["edge"] = variable.getConnectorEdge()
--- a/PLCOpenEditor.py Mon Sep 10 16:12:29 2007 +0200
+++ b/PLCOpenEditor.py Mon Sep 10 18:16:07 2007 +0200
@@ -346,6 +346,10 @@
self.SetClientSize(wx.Size(1000, 600))
self.SetMenuBar(self.menuBar1)
self.Bind(wx.EVT_CLOSE, self.OnCloseFrame, id=ID_PLCOPENEDITOR)
+ if not self.ModeSolo:
+ self.Bind(wx.EVT_MENU, self.OnSaveProjectMenu, id=ID_PLCOPENEDITORFILEMENUITEMS5)
+ accel = wx.AcceleratorTable([wx.AcceleratorEntry(wx.ACCEL_CTRL, 83, ID_PLCOPENEDITORFILEMENUITEMS5)])
+ self.SetAcceleratorTable(accel)
self.MainSplitter = wx.SplitterWindow(id=ID_PLCOPENEDITORMAINSPLITTER,
name='MainSplitter', parent=self, point=wx.Point(0, 0),
@@ -365,7 +369,7 @@
self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar',
parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
- style=wx.TB_HORIZONTAL | wx.NO_BORDER)
+ style=wx.TB_HORIZONTAL|wx.NO_BORDER)
self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION,
wx.Bitmap(os.path.join(CWD, 'Images/select.png')), wx.NullBitmap, "Select an object")
self.Bind(wx.EVT_TOOL, self.OnSelectionTool,
@@ -496,7 +500,10 @@
dialog.Destroy()
def OnCloseFrame(self, event):
- if not self.Controler.ProjectIsSaved():
+ if not self.ModeSolo and getattr(self, "_onclose", None) != None:
+ self._onclose()
+ event.Skip()
+ elif not self.Controler.ProjectIsSaved():
dialog = wx.MessageDialog(self, "There are changes, do you want to save?", "Close Application", wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION)
answer = dialog.ShowModal()
dialog.Destroy()
@@ -570,7 +577,10 @@
event.Skip()
def OnSaveProjectMenu(self, event):
- self.SaveProject()
+ if not self.ModeSolo and getattr(self, "_onsave", None) != None:
+ self._onsave()
+ else:
+ self.SaveProject()
event.Skip()
def OnSaveProjectAsMenu(self, event):
@@ -1015,26 +1025,25 @@
def RefreshProjectTree(self):
infos = self.Controler.GetProjectInfos()
root = self.ProjectTree.GetRootItem()
+ if not root.IsOk():
+ root = self.ProjectTree.AddRoot(infos["name"])
self.GenerateTreeBranch(root, infos)
self.ProjectTree.Expand(self.ProjectTree.GetRootItem())
def GenerateTreeBranch(self, root, infos):
to_delete = []
- if root.IsOk():
- self.ProjectTree.SetItemText(root, infos["name"])
- else:
- root = self.ProjectTree.AddRoot(infos["name"])
+ self.ProjectTree.SetItemText(root, infos["name"])
self.ProjectTree.SetPyData(root, infos["type"])
if infos["type"] == ITEM_POU:
self.ProjectTree.SetItemImage(root, LANGUAGES.index(self.Controler.GetPouBodyType(infos["name"])))
item, root_cookie = self.ProjectTree.GetFirstChild(root)
- if len(infos["values"]) > 0:
- for values in infos["values"]:
- if not item.IsOk():
- item = self.ProjectTree.AppendItem(root, "")
+ for values in infos["values"]:
+ if not item.IsOk():
+ item = self.ProjectTree.AppendItem(root, "")
+ if wx.VERSION < (2, 7, 0):
item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
- self.GenerateTreeBranch(item, values)
- item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
+ self.GenerateTreeBranch(item, values)
+ item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
while item.IsOk():
to_delete.append(item)
item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
@@ -2187,20 +2196,20 @@
def __init__(self, parent):
wx.TextDropTarget.__init__(self)
- self.Parent = parent
+ self.ParentWindow = parent
def OnDropText(self, x, y, data):
- col = self.Parent.VariablesGrid.XToCol(x)
- row = self.Parent.VariablesGrid.YToRow(y)
+ col = self.ParentWindow.VariablesGrid.XToCol(x)
+ row = self.ParentWindow.VariablesGrid.YToRow(y)
if col != wx.NOT_FOUND and row != wx.NOT_FOUND:
- if self.Parent.Table.GetColLabelValue(col) != "Location":
+ if self.ParentWindow.Table.GetColLabelValue(col) != "Location":
return
try:
values = eval(data)
except:
values = None
if values and values[1] == "location":
- dialog = wx.SingleChoiceDialog(self.Parent, "Select a variable class:", "Variable class", ["Input", "Output", "Memory"], wx.OK|wx.CANCEL)
+ dialog = wx.SingleChoiceDialog(self.ParentWindow, "Select a variable class:", "Variable class", ["Input", "Output", "Memory"], wx.OK|wx.CANCEL)
if dialog.ShowModal() == wx.ID_OK:
selected = dialog.GetSelection()
if selected == 0:
@@ -2209,9 +2218,9 @@
location = "%Q" + values[0]
else:
location = "%M" + values[0]
- self.Parent.Table.SetValue(row - 1, col, location)
- self.Parent.Table.ResetView(self.Parent.VariablesGrid)
- self.Parent.SaveValues()
+ self.ParentWindow.Table.SetValue(row - 1, col, location)
+ self.ParentWindow.Table.ResetView(self.ParentWindow.VariablesGrid)
+ self.ParentWindow.SaveValues()
dialog.Destroy()
[ID_POUEDITORPANEL, ID_POUEDITORPANELVIEWER,
@@ -2290,15 +2299,15 @@
self.Viewer.ResetBuffer = lambda: None
self.Viewer.RefreshView = lambda: None
elif element_type == "resource":
- self.Viewer = ResourceEditor(self, self.Parent, self.Controler)
+ self.Viewer = ResourceEditor(self, self.ParentWindow, self.Controler)
elif element_type == "FBD":
- self.Viewer = Viewer(self, self.Parent, self.Controler)
+ self.Viewer = Viewer(self, self.ParentWindow, self.Controler)
elif element_type == "LD":
- self.Viewer = LD_Viewer(self, self.Parent, self.Controler)
+ self.Viewer = LD_Viewer(self, self.ParentWindow, self.Controler)
elif element_type == "SFC":
- self.Viewer = SFC_Viewer(self, self.Parent, self.Controler)
+ self.Viewer = SFC_Viewer(self, self.ParentWindow, self.Controler)
else:
- self.Viewer = TextViewer(self, self.Parent, self.Controler)
+ self.Viewer = TextViewer(self, self.ParentWindow, self.Controler)
self.Viewer.SetTextSyntax(element_type)
if element_type == "IL":
self.Viewer.SetKeywords(IL_KEYWORDS)
@@ -2365,7 +2374,7 @@
self._init_sizers()
def __init__(self, parent, window, controler, element_type, pou_name = None, transition_name = None, action_name = None, config_name = None, resource_name = None):
- self.Parent = window
+ self.ParentWindow = window
self.Controler = controler
self.ElementType = element_type
self.PouName = pou_name
@@ -2496,8 +2505,8 @@
def OnReturnTypeChanged(self, event):
self.Controler.SetPouInterfaceReturnType(self.PouName, self.ReturnType.GetStringSelection())
self.Controler.BufferProject()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
event.Skip()
def OnClassFilter(self, event):
@@ -2590,8 +2599,8 @@
if old_value != "":
self.Controler.UpdateCurrentPouEditingUsedVariable(old_value, value)
self.Controler.BufferProject()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
self.RefreshViewerVarList()
self.Viewer.RefreshView()
event.Skip()
@@ -2690,8 +2699,8 @@
self.Controler.SetPouInterfaceVars(self.PouName, self.Values)
if buffer:
self.Controler.BufferProject()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
#-------------------------------------------------------------------------------
# Exception Handler
--- a/RessourceEditor.py Mon Sep 10 16:12:29 2007 +0200
+++ b/RessourceEditor.py Mon Sep 10 18:16:07 2007 +0200
@@ -351,7 +351,7 @@
def __init__(self, parent, window, controler):
self._init_ctrls(parent)
- self.Parent = window
+ self.ParentWindow = window
self.Controler = controler
self.TasksDefaultValue = {"Name" : "", "Single" : "", "Interval" : "", "Priority" : 0}
@@ -399,8 +399,8 @@
# Buffer the last model state
def RefreshBuffer(self):
self.Controler.BufferProject()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
def RefreshView(self):
tasks, instances = self.Controler.GetCurrentResourceEditingInfos()
--- a/SFCViewer.py Mon Sep 10 16:12:29 2007 +0200
+++ b/SFCViewer.py Mon Sep 10 18:16:07 2007 +0200
@@ -369,7 +369,7 @@
#-------------------------------------------------------------------------------
def AddInitialStep(self, pos):
- dialog = StepNameDialog(self.Parent, "Add a new initial step", "Please enter step name", "", wx.OK|wx.CANCEL)
+ dialog = StepNameDialog(self.ParentWindow, "Add a new initial step", "Please enter step name", "", wx.OK|wx.CANCEL)
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
@@ -391,7 +391,7 @@
def AddStep(self):
if self.SelectedElement in self.Wires or isinstance(self.SelectedElement, SFC_Step):
- dialog = StepNameDialog(self.Parent, "Add a new step", "Please enter step name", "", wx.OK|wx.CANCEL)
+ dialog = StepNameDialog(self.ParentWindow, "Add a new step", "Please enter step name", "", wx.OK|wx.CANCEL)
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
@@ -447,7 +447,7 @@
if isinstance(self.SelectedElement, SFC_Step):
connectors = self.SelectedElement.GetConnectors()
if not connectors["action"]:
- dialog = ActionBlockDialog(self.Parent)
+ dialog = ActionBlockDialog(self.ParentWindow)
dialog.SetQualifierList(self.Controler.GetQualifierTypes())
dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
@@ -474,7 +474,7 @@
def AddDivergence(self):
if self.SelectedElement in self.Wires or isinstance(self.SelectedElement, Graphic_Group) or isinstance(self.SelectedElement, SFC_Step):
- dialog = DivergenceCreateDialog(self.Parent)
+ dialog = DivergenceCreateDialog(self.ParentWindow)
if dialog.ShowModal() == wx.ID_OK:
value = dialog.GetValues()
if value["type"] == SELECTION_DIVERGENCE:
@@ -702,7 +702,7 @@
for block in self.Blocks:
if isinstance(block, SFC_Step):
choices.append(block.GetName())
- dialog = wx.SingleChoiceDialog(self.Parent, "Add a new jump", "Please choose a target", choices, wx.OK|wx.CANCEL)
+ dialog = wx.SingleChoiceDialog(self.ParentWindow, "Add a new jump", "Please choose a target", choices, wx.OK|wx.CANCEL)
if dialog.ShowModal() == wx.ID_OK:
value = dialog.GetStringSelection()
self.SelectedElement.AddOutput()
@@ -730,7 +730,7 @@
if self.GetDrawingMode() == FREEDRAWING_MODE:
Viewer.EditStepContent(self, step)
else:
- dialog = StepNameDialog(self.Parent, "Edit step name", "Please enter step name", step.GetName(), wx.OK|wx.CANCEL)
+ dialog = StepNameDialog(self.ParentWindow, "Edit step name", "Please enter step name", step.GetName(), wx.OK|wx.CANCEL)
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()])
--- a/TextViewer.py Mon Sep 10 16:12:29 2007 +0200
+++ b/TextViewer.py Mon Sep 10 18:16:07 2007 +0200
@@ -118,7 +118,10 @@
# Indicators styles
self.IndicatorSetStyle(0, wx.stc.STC_INDIC_SQUIGGLE)
- self.IndicatorSetForeground(0, wx.RED)
+ if window and controler:
+ self.IndicatorSetForeground(0, wx.RED)
+ else:
+ self.IndicatorSetForeground(0, wx.WHITE)
# Line numbers in the margin
self.SetMarginType(1, wx.stc.STC_MARGIN_NUMBER)
@@ -137,13 +140,13 @@
self.TextSyntax = "ST"
self.CurrentAction = None
- self.Parent = window
+ self.ParentWindow = window
self.Controler = controler
self.SetModEventMask(wx.stc.STC_MOD_BEFOREINSERT|wx.stc.STC_MOD_BEFOREDELETE)
self.Bind(wx.stc.EVT_STC_STYLENEEDED, self.OnStyleNeeded, id=ID_TEXTVIEWER)
- if window and controler :
+ if window and controler:
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.Bind(wx.stc.EVT_STC_DO_DROP, self.OnDoDrop, id=ID_TEXTVIEWER)
self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
@@ -207,13 +210,13 @@
# Buffer the last model state
def RefreshBuffer(self):
self.Controler.BufferProject()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
def StartBuffering(self):
self.Controler.StartBuffering()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
def ResetBuffer(self):
if self.CurrentAction != None:
--- a/Viewer.py Mon Sep 10 16:12:29 2007 +0200
+++ b/Viewer.py Mon Sep 10 18:16:07 2007 +0200
@@ -49,38 +49,38 @@
def __init__(self, parent):
wx.TextDropTarget.__init__(self)
- self.Parent = parent
+ self.ParentWindow = parent
def OnDropText(self, x, y, data):
values = eval(data)
if values[1] in ["function", "functionBlock", "program"]:
- id = self.Parent.GetNewId()
- block = FBD_Block(self.Parent, values[0], values[2], id)
+ id = self.ParentWindow.GetNewId()
+ block = FBD_Block(self.ParentWindow, values[0], values[2], id)
block.SetPosition(x, y)
width, height = block.GetMinSize()
block.SetSize(width, height)
- self.Parent.AddBlock(block)
- self.Parent.Controler.AddCurrentElementEditingBlock(id)
- self.Parent.RefreshBlockModel(block)
- self.Parent.RefreshScrollBars()
- self.Parent.Refresh()
+ self.ParentWindow.AddBlock(block)
+ self.ParentWindow.Controler.AddCurrentElementEditingBlock(id)
+ self.ParentWindow.RefreshBlockModel(block)
+ self.ParentWindow.RefreshScrollBars()
+ self.ParentWindow.Update()
elif values[1] != "location":
- id = self.Parent.GetNewId()
+ id = self.ParentWindow.GetNewId()
if values[1] == "Output":
var_type = OUTPUT
elif values[1] == "InOut":
var_type = INPUT
else:
var_type = INPUT
- variable = FBD_Variable(self.Parent, var_type, values[0], values[2], id)
+ variable = FBD_Variable(self.ParentWindow, var_type, values[0], values[2], id)
variable.SetPosition(x, y)
width, height = variable.GetMinSize()
variable.SetSize(width, height)
- self.Parent.AddBlock(variable)
- self.Parent.Controler.AddCurrentElementEditingVariable(id, var_type)
- self.Parent.RefreshVariableModel(variable)
- self.Parent.RefreshScrollBars()
- self.Parent.Refresh()
+ self.ParentWindow.AddBlock(variable)
+ self.ParentWindow.Controler.AddCurrentElementEditingVariable(id, var_type)
+ self.ParentWindow.RefreshVariableModel(variable)
+ self.ParentWindow.RefreshScrollBars()
+ self.ParentWindow.Update()
"""
@@ -161,7 +161,7 @@
self.Mode = MODE_SELECTION
self.SavedMode = False
- self.Parent = window
+ self.ParentWindow = window
self.Controler = controler
self.SetDropTarget(ViewerDropTarget(self))
@@ -174,8 +174,9 @@
self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp)
self.Bind(wx.EVT_MOTION, self.OnViewerMotion)
self.Bind(wx.EVT_CHAR, self.OnChar)
- self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow)
- self.Bind(wx.EVT_SIZE, self.OnMoveWindow)
+ if wx.VERSION < (2, 7, 0):
+ self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow)
+ self.Bind(wx.EVT_SIZE, self.OnMoveWindow)
# Returns a new id
def GetNewId(self):
@@ -186,8 +187,12 @@
def __del__(self):
self.ResetView()
- def GetLogicalDC(self):
- dc = wx.ClientDC(self)
+ def GetLogicalDC(self, buffered=False):
+ if buffered:
+ dc = wx.BufferedPaintDC(self)
+ else:
+ dc = wx.ClientDC(self)
+ dc.SetFont(wx.NORMAL_FONT)
self.DoPrepareDC(dc)
return dc
@@ -265,17 +270,17 @@
if self.Mode != MODE_SELECTION and self.SelectedElement:
self.SelectedElement.SetSelected(False)
self.SelectedElement = None
- self.Refresh()
+ self.Refresh(False)
# Return current drawing mode
def GetDrawingMode(self):
- return self.Parent.GetDrawingMode()
+ return self.ParentWindow.GetDrawingMode()
# Buffer the last model state
def RefreshBuffer(self):
self.Controler.BufferProject()
- self.Parent.RefreshTitle()
- self.Parent.RefreshEditMenu()
+ self.ParentWindow.RefreshTitle()
+ self.ParentWindow.RefreshEditMenu()
#-------------------------------------------------------------------------------
# Refresh functions
@@ -298,7 +303,7 @@
if instance:
self.loadInstance(instance, ids)
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
def RefreshScrollBars(self):
xstart, ystart = self.GetViewStart()
@@ -518,10 +523,25 @@
connector.SetPosition(wx.Point(*instance["connector"]["position"]))
self.CreateWires(connector, instance["connector"]["links"], ids)
else:
+ connectors = {"inputs" : [], "outputs" : []}
+ for input in instance["connectors"]["inputs"]:
+ if input["negated"]:
+ connectors["inputs"].append((input["name"], None, "negated"))
+ elif input["edge"]:
+ connectors["inputs"].append((input["name"], None, input["edge"]))
+ else:
+ connectors["inputs"].append((input["name"], None, "none"))
+ for output in instance["connectors"]["outputs"]:
+ if output["negated"]:
+ connectors["outputs"].append((output["name"], None, "negated"))
+ elif output["edge"]:
+ connectors["outputs"].append((output["name"], None, output["edge"]))
+ else:
+ connectors["outputs"].append((output["name"], None, "none"))
if instance["name"] != None:
- block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"]))
- else:
- block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"]))
+ block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors)
+ else:
+ block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors)
block.SetPosition(instance["x"], instance["y"])
block.SetSize(instance["width"], instance["height"])
self.AddBlock(block)
@@ -685,17 +705,6 @@
self.ContextualMenu.FindItemByPosition(9).Enable(False)
self.PopupMenu(self.ContextualMenu)
- def EditCommentContent(self, comment):
- dialog = wx.TextEntryDialog(self.Parent, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL|wx.TE_MULTILINE)
- if dialog.ShowModal() == wx.ID_OK:
- value = dialog.GetValue()
- comment.SetContent(value)
- infos = {"content" : value}
- infos["width"], infos["height"] = comment.GetSize()
- self.Controler.SetCurrentElementEditingCommentInfos(comment.GetId(), infos)
- self.Refresh()
- dialog.Destroy()
-
#-------------------------------------------------------------------------------
# Menu items functions
#-------------------------------------------------------------------------------
@@ -783,11 +792,11 @@
if self.SelectedElement and self.SelectedElement != element:
self.SelectedElement.SetSelected(False)
self.SelectedElement = None
- self.Refresh()
+ self.Refresh(False)
if element:
self.SelectedElement = element
self.SelectedElement.OnLeftDown(event, dc, self.Scaling)
- self.Refresh()
+ self.Refresh(False)
else:
self.rubberBand.Reset()
self.rubberBand.OnLeftDown(event, dc, self.Scaling)
@@ -815,7 +824,7 @@
elif self.SelectedElement:
self.SelectedElement.SetSelected(False)
self.SelectedElement = None
- self.Refresh()
+ self.Refresh(False)
event.Skip()
def OnViewerLeftUp(self, event):
@@ -826,12 +835,12 @@
if len(elements) == 1:
self.SelectedElement = elements[0]
self.SelectedElement.SetSelected(True)
- self.Refresh()
+ self.Refresh(False)
elif len(elements) > 1:
self.SelectedElement = Graphic_Group(self)
self.SelectedElement.SetElements(elements)
self.SelectedElement.SetSelected(True)
- self.Refresh()
+ self.Refresh(False)
else:
bbox = self.rubberBand.GetCurrentExtent()
self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)
@@ -864,8 +873,7 @@
elif self.Mode == MODE_SELECTION and self.SelectedElement:
self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling)
wx.CallAfter(self.SetCursor, wx.NullCursor)
- self.ReleaseMouse()
- self.Refresh()
+ self.Refresh(False)
elif self.Mode == MODE_WIRE and self.SelectedElement:
if self.SelectedElement.EndConnected != None:
self.SelectedElement.ResetPoints()
@@ -877,9 +885,9 @@
else:
self.SelectedElement.Delete()
self.SelectedElement = None
- self.Refresh()
+ self.Refresh(False)
if not self.SavedMode:
- wx.CallAfter(self.Parent.ResetCurrentMode)
+ wx.CallAfter(self.ParentWindow.ResetCurrentMode)
event.Skip()
def OnViewerRightUp(self, event):
@@ -894,21 +902,21 @@
self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling)
wx.CallAfter(self.SetCursor, wx.NullCursor)
self.ReleaseMouse()
- self.Refresh()
+ self.Refresh(False)
event.Skip()
def OnViewerLeftDClick(self, event):
if self.Mode == MODE_SELECTION and self.SelectedElement:
self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling)
- self.Refresh()
+ self.Refresh(False)
event.Skip()
def OnViewerMotion(self, event):
if self.rubberBand.IsShown():
self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling)
elif self.Mode == MODE_SELECTION and self.SelectedElement:
- self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling)
- self.Refresh()
+ if self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling):
+ self.Refresh(False)
elif self.Mode == MODE_WIRE and self.SelectedElement:
dc = self.GetLogicalDC()
pos = GetScaledEventPosition(event, dc, self.Scaling)
@@ -917,7 +925,7 @@
self.SelectedElement.ResetPoints()
self.SelectedElement.OnMotion(event, dc, self.Scaling)
self.SelectedElement.GeneratePoints()
- self.Refresh()
+ self.Refresh(False)
event.Skip()
def UpdateScrollPos(self, event):
@@ -957,7 +965,7 @@
self.SelectedElement = None
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
elif keycode == wx.WXK_LEFT:
if event.ControlDown() and event.ShiftDown():
self.Scroll(0, ypos)
@@ -968,7 +976,7 @@
self.SelectedElement.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
elif keycode == wx.WXK_RIGHT:
if event.ControlDown() and event.ShiftDown():
self.Scroll(xmax, ypos)
@@ -979,7 +987,7 @@
self.SelectedElement.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
elif keycode == wx.WXK_UP:
if event.ControlDown() and event.ShiftDown():
self.Scroll(xpos, 0)
@@ -990,7 +998,7 @@
self.SelectedElement.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
elif keycode == wx.WXK_DOWN:
if event.ControlDown() and event.ShiftDown():
self.Scroll(xpos, ymax)
@@ -1001,14 +1009,14 @@
self.SelectedElement.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
#-------------------------------------------------------------------------------
# Model adding functions
#-------------------------------------------------------------------------------
def AddNewBlock(self, bbox):
- dialog = BlockPropertiesDialog(self.Parent)
+ dialog = BlockPropertiesDialog(self.ParentWindow)
dialog.SetBlockList(self.Controler.GetBlockTypes())
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables())
@@ -1027,12 +1035,12 @@
self.RefreshBlockModel(block)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Parent.RefreshEditor()
- self.Refresh()
+ self.ParentWindow.RefreshEditor()
+ self.Refresh(False)
dialog.Destroy()
def AddNewVariable(self, bbox):
- dialog = VariablePropertiesDialog(self.Parent)
+ dialog = VariablePropertiesDialog(self.ParentWindow)
dialog.SetMinVariableSize((bbox.width, bbox.height))
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
@@ -1055,11 +1063,11 @@
self.RefreshVariableModel(variable)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewConnection(self, bbox):
- dialog = ConnectionPropertiesDialog(self.Parent)
+ dialog = ConnectionPropertiesDialog(self.ParentWindow)
dialog.SetMinConnectionSize((bbox.width, bbox.height))
if dialog.ShowModal() == wx.ID_OK:
id = self.GetNewId()
@@ -1072,11 +1080,11 @@
self.RefreshConnectionModel(connection)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewComment(self, bbox):
- dialog = wx.TextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wx.OK|wx.CANCEL|wx.TE_MULTILINE)
+ dialog = wx.TextEntryDialog(self.ParentWindow, "Add a new comment", "Please enter comment text", "", wx.OK|wx.CANCEL|wx.TE_MULTILINE)
if dialog.ShowModal() == wx.ID_OK:
value = dialog.GetValue()
id = self.GetNewId()
@@ -1089,11 +1097,11 @@
self.RefreshCommentModel(comment)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewContact(self, bbox):
- dialog = LDElementDialog(self.Parent, "contact")
+ dialog = LDElementDialog(self.ParentWindow, "contact")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -1114,11 +1122,11 @@
self.RefreshContactModel(contact)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewCoil(self, bbox):
- dialog = LDElementDialog(self.Parent, "coil")
+ dialog = LDElementDialog(self.ParentWindow, "coil")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -1142,11 +1150,11 @@
self.RefreshCoilModel(coil)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewPowerRail(self, bbox):
- dialog = LDPowerRailDialog(self.Parent)
+ dialog = LDPowerRailDialog(self.ParentWindow)
dialog.SetMinSize((bbox.width, bbox.height))
if dialog.ShowModal() == wx.ID_OK:
id = self.GetNewId()
@@ -1159,11 +1167,11 @@
self.RefreshPowerRailModel(powerrail)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewStep(self, bbox, initial = False):
- dialog = StepContentDialog(self.Parent, initial)
+ dialog = StepContentDialog(self.ParentWindow, initial)
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
@@ -1192,11 +1200,11 @@
self.RefreshStepModel(step)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewTransition(self, bbox):
- dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE)
+ dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE)
dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
if dialog.ShowModal() == wx.ID_OK:
id = self.GetNewId()
@@ -1210,11 +1218,11 @@
self.RefreshTransitionModel(transition)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def AddNewDivergence(self, bbox):
- dialog = DivergenceCreateDialog(self.Parent)
+ dialog = DivergenceCreateDialog(self.ParentWindow)
dialog.SetMinSize((bbox.width, bbox.height))
if dialog.ShowModal() == wx.ID_OK:
id = self.GetNewId()
@@ -1228,7 +1236,7 @@
self.RefreshDivergenceModel(divergence)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
@@ -1237,7 +1245,7 @@
#-------------------------------------------------------------------------------
def EditBlockContent(self, block):
- dialog = BlockPropertiesDialog(self.Parent)
+ dialog = BlockPropertiesDialog(self.ParentWindow)
dialog.SetBlockList(self.Controler.GetBlockTypes())
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables())
@@ -1254,11 +1262,11 @@
self.RefreshBlockModel(block)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditVariableContent(self, variable):
- dialog = VariablePropertiesDialog(self.Parent)
+ dialog = VariablePropertiesDialog(self.ParentWindow)
dialog.SetMinVariableSize(variable.GetSize())
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
@@ -1285,11 +1293,11 @@
self.RefreshVariableModel(variable)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditConnectionContent(self, connection):
- dialog = ConnectionPropertiesDialog(self.Parent)
+ dialog = ConnectionPropertiesDialog(self.ParentWindow)
dialog.SetMinConnectionSize(connection.GetSize())
values = {"name" : connection.GetName(), "type" : connection.GetType()}
dialog.SetValues(values)
@@ -1306,11 +1314,11 @@
self.RefreshConnectionModel(connection)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditContactContent(self, contact):
- dialog = LDElementDialog(self.Parent, "contact")
+ dialog = LDElementDialog(self.ParentWindow, "contact")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -1329,11 +1337,11 @@
self.RefreshContactModel(contact)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditCoilContent(self, coil):
- dialog = LDElementDialog(self.Parent, "coil")
+ dialog = LDElementDialog(self.ParentWindow, "coil")
varlist = []
vars = self.Controler.GetCurrentElementEditingInterfaceVars()
if vars:
@@ -1355,11 +1363,11 @@
self.RefreshCoilModel(coil)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditPowerRailContent(self, powerrail):
- dialog = LDPowerRailDialog(self.Parent, powerrail.GetType(), len(powerrail.GetConnectors()))
+ dialog = LDPowerRailDialog(self.ParentWindow, powerrail.GetType(), len(powerrail.GetConnectors()))
dialog.SetMinSize(powerrail.GetSize())
if dialog.ShowModal() == wx.ID_OK:
old_type = powerrail.GetType()
@@ -1373,11 +1381,11 @@
self.RefreshPowerRailModel(powerrail)
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditStepContent(self, step):
- dialog = StepContentDialog(self.Parent, step.GetInitial())
+ dialog = StepContentDialog(self.ParentWindow, step.GetInitial())
dialog.SetPouNames(self.Controler.GetProjectPouNames())
dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()])
@@ -1407,10 +1415,10 @@
step.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
def EditTransitionContent(self, transition):
- dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE)
+ dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE)
dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()})
dialog.SetElementSize(transition.GetSize())
@@ -1421,7 +1429,7 @@
transition.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditJumpContent(self, jump):
@@ -1429,7 +1437,7 @@
for block in self.Blocks:
if isinstance(block, SFC_Step):
choices.append(block.GetName())
- dialog = wx.SingleChoiceDialog(self.Parent, "Edit jump target", "Please choose a target", choices, wx.OK|wx.CANCEL)
+ dialog = wx.SingleChoiceDialog(self.ParentWindow, "Edit jump target", "Please choose a target", choices, wx.OK|wx.CANCEL)
dialog.SetSelection(choices.index(jump.GetTarget()))
if dialog.ShowModal() == wx.ID_OK:
value = dialog.GetStringSelection()
@@ -1437,11 +1445,11 @@
jump.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
dialog.Destroy()
def EditActionBlockContent(self, actionblock):
- dialog = ActionBlockDialog(self.Parent)
+ dialog = ActionBlockDialog(self.ParentWindow)
dialog.SetQualifierList(self.Controler.GetQualifierTypes())
dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
@@ -1452,7 +1460,18 @@
actionblock.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
- self.Refresh()
+ self.Refresh(False)
+ dialog.Destroy()
+
+ def EditCommentContent(self, comment):
+ dialog = wx.TextEntryDialog(self.ParentWindow, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL|wx.TE_MULTILINE)
+ if dialog.ShowModal() == wx.ID_OK:
+ value = dialog.GetValue()
+ comment.SetContent(value)
+ comment.RefreshModel()
+ self.RefreshBuffer()
+ self.RefreshScrollBars()
+ self.Refresh(False)
dialog.Destroy()
#-------------------------------------------------------------------------------
@@ -1587,7 +1606,7 @@
self.Controler.RemoveCurrentElementEditingInstance(block.GetId())
for element in elements:
element.RefreshModel()
- wx.CallAfter(self.Parent.RefreshEditor)
+ wx.CallAfter(self.ParentWindow.RefreshEditor)
def DeleteVariable(self, variable):
connectors = variable.GetConnectors()
@@ -1732,9 +1751,10 @@
event.Skip()
def OnPaint(self, event):
- dc = self.GetLogicalDC()
+ dc = self.GetLogicalDC(True)
dc.Clear()
dc.SetPen(wx.Pen(wx.Colour(230, 230, 230)))
+ dc.BeginDrawing()
if self.Scaling and self.DrawGrid:
width, height = dc.GetSize()
for i in xrange(1, width / self.Scaling[0] + 1):
@@ -1753,7 +1773,8 @@
if self.SelectedElement:
self.SelectedElement.Draw(dc)
if self.rubberBand.IsShown():
- self.rubberBand.Draw()
+ self.rubberBand.Draw(dc)
+ dc.EndDrawing()
event.Skip()
--- a/graphics/FBD_Objects.py Mon Sep 10 16:12:29 2007 +0200
+++ b/graphics/FBD_Objects.py Mon Sep 10 18:16:07 2007 +0200
@@ -39,7 +39,7 @@
class FBD_Block(Graphic_Element):
# Create a new block
- def __init__(self, parent, type, name, id = None, extension = 0, inputs = None):
+ def __init__(self, parent, type, name, id = None, extension = 0, inputs = None, connectors = {}):
Graphic_Element.__init__(self, parent)
self.Type = None
self.Extension = None
@@ -48,7 +48,9 @@
self.Inputs = []
self.Outputs = []
self.RefreshNameSize()
- self.SetType(type, extension, inputs)
+ self.Colour = wx.BLACK
+ self.Pen = wx.BLACK_PEN
+ self.SetType(type, extension, inputs, connectors)
# Destructor
def __del__(self):
@@ -153,7 +155,7 @@
return None
# Changes the block type
- def SetType(self, type, extension, inputs = None):
+ def SetType(self, type, extension, inputs = None, connectors = {}):
if type != self.Type or self.Extension != extension:
if type != self.Type:
self.Type = type
@@ -164,6 +166,7 @@
# inputs and outputs
blocktype = GetBlockType(type, inputs)
if blocktype:
+ self.Colour = wx.BLACK
inputs = [input for input in blocktype["inputs"]]
outputs = [output for output in blocktype["outputs"]]
if blocktype["extensible"]:
@@ -172,7 +175,16 @@
start += 1
inputs.append(("IN%d"%start, inputs[-1][1], inputs[-1][2]))
else:
- raise ValueError, "This block type isn't defined"
+ self.Colour = wx.RED
+ if "inputs" in connectors:
+ inputs = connectors["inputs"]
+ else:
+ inputs = []
+ if "outputs" in connectors:
+ outputs = connectors["outputs"]
+ else:
+ outputs = []
+ self.Pen = wx.Pen(self.Colour)
self.Clean()
# Extract the inputs properties and create the corresponding connector
self.Inputs = []
@@ -277,8 +289,9 @@
# Draws block
def Draw(self, dc):
- dc.SetPen(wx.BLACK_PEN)
+ dc.SetPen(self.Pen)
dc.SetBrush(wx.WHITE_BRUSH)
+ dc.SetTextForeground(self.Colour)
# Draw a rectangle with the block size
dc.DrawRectangle(self.Pos.x, self.Pos.y, self.Size[0] + 1, self.Size[1] + 1)
# Draw block name and block type
@@ -292,6 +305,7 @@
for output in self.Outputs:
output.Draw(dc)
Graphic_Element.Draw(self, dc)
+ dc.SetTextForeground(wx.BLACK)
#-------------------------------------------------------------------------------
--- a/graphics/GraphicCommons.py Mon Sep 10 16:12:29 2007 +0200
+++ b/graphics/GraphicCommons.py Mon Sep 10 18:16:07 2007 +0200
@@ -229,8 +229,9 @@
self.Redraw()
# Method that erase the last box and draw the new box
- def Redraw(self):
- dc = self.drawingSurface.GetLogicalDC()
+ def Redraw(self, dc = None):
+ if not dc:
+ dc = self.drawingSurface.GetLogicalDC()
dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
dc.SetBrush(wx.TRANSPARENT_BRUSH)
dc.SetLogicalFunction(wx.XOR)
@@ -242,20 +243,22 @@
# Draw current box
dc.DrawRectangle(self.currentBox.x, self.currentBox.y, self.currentBox.width,
self.currentBox.height)
-
+
# Erase last box
- def Erase(self):
- dc = self.drawingSurface.GetLogicalDC()
+ def Erase(self, dc = None):
+ if not dc:
+ dc = self.drawingSurface.GetLogicalDC()
dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
dc.SetBrush(wx.TRANSPARENT_BRUSH)
dc.SetLogicalFunction(wx.XOR)
if self.lastBox:
dc.DrawRectangle(self.lastBox.x, self.lastBox.y, self.lastBox.width,
self.lastBox.height)
-
+
# Draw current box
- def Draw(self):
- dc = self.drawingSurface.GetLogicalDC()
+ def Draw(self, dc = None):
+ if not dc:
+ dc = self.drawingSurface.GetLogicalDC()
dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
dc.SetBrush(wx.TRANSPARENT_BRUSH)
dc.SetLogicalFunction(wx.XOR)
@@ -264,7 +267,6 @@
dc.DrawRectangle(self.currentBox.x, self.currentBox.y, self.currentBox.width,
self.currentBox.height)
-
#-------------------------------------------------------------------------------
# Graphic element base class
#-------------------------------------------------------------------------------
@@ -451,6 +453,7 @@
if self.Dragging:
self.oldPos = pos
self.ProcessDragging(movex, movey)
+ return True
# If cursor just pass over the element, changes the cursor if it is on a handle
else:
pos = event.GetLogicalPosition(dc)
@@ -461,6 +464,7 @@
if cursor != self.CurrentCursor:
self.Parent.SetCursor(CURSORS[cursor])
self.CurrentCursor = cursor
+ return False
# Moves the element
def Move(self, dx, dy, exclude = []):
@@ -1578,6 +1582,7 @@
if self.CurrentCursor != 5:
self.CurrentCursor = 5
wx.CallAfter(self.Parent.SetCursor, CURSORS[5])
+ return False
else:
# Test if a point has been handled
#result = self.TestPoint(pos)
@@ -1590,10 +1595,10 @@
# self.OverStart = False
# self.OverEnd = False
# Execute the default method for a graphic element
- Graphic_Element.OnMotion(self, event, dc, scaling)
+ return Graphic_Element.OnMotion(self, event, dc, scaling)
else:
# Execute the default method for a graphic element
- Graphic_Element.OnMotion(self, event, dc, scaling)
+ return Graphic_Element.OnMotion(self, event, dc, scaling)
# Refreshes the wire state according to move defined and handle selected
def ProcessDragging(self, movex, movey):
--- a/xmlclass/xmlclass.py Mon Sep 10 16:12:29 2007 +0200
+++ b/xmlclass/xmlclass.py Mon Sep 10 18:16:07 2007 +0200
@@ -42,6 +42,12 @@
date_model = re.compile('([0-9]{4})-([0-9]{2})-([0-9]{2})')
datetime_model = re.compile('([0-9]{4})-([0-9]{2})-([0-9]{2})[ T]([0-9]{2}):([0-9]{2}):([0-9]{2}(?:.[0-9]*)?)')
+XSD_INTEGER_TYPES = ["integer","nonPositiveInteger","negativeInteger","long",
+ "int","short","byte","nonNegativeInteger","unsignedLong","unsignedInt",
+ "unsignedShort","unsignedByte","positiveInteger"]
+
+XSD_STRING_TYPES = ["string","normalizedString","token","anyURI","NMTOKEN","language"]
+
"""
This function calculates the number of whitespace for indentation
"""
@@ -88,14 +94,14 @@
return False
else:
raise ValueError, "\"%s\" is not a valid boolean!"%value
- elif type_compute in ["unsignedLong","long","integer"]:
+ elif type_compute in XSD_INTEGER_TYPES:
return int(value)
- elif type_compute == "decimal":
+ elif type_compute in ["decimal", "float", "double"]:
computed_value = float(value)
if computed_value % 1 == 0:
return int(computed_value)
return computed_value
- elif type_compute in ["string","anyURI","NMTOKEN","language"]:
+ elif type_compute in XSD_STRING_TYPES:
return value
elif type_compute == "time":
result = time_model.match(value)