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