--- a/PLCOpenEditor.py Sat Jul 07 11:35:17 2007 +0200
+++ b/PLCOpenEditor.py Mon Jul 09 11:10:14 2007 +0200
@@ -29,9 +29,10 @@
import wx
from SFCViewer import *
-from FBDViewer import *
from LDViewer import *
from Viewer import *
+from TextViewer import *
+from RessourceEditor import *
from PLCControler import *
from plcopen import OpenPDFDoc
from plcopen.structures import *
@@ -74,25 +75,6 @@
wxID_PLCOPENEDITORFBDTOOLBAR, wxID_PLCOPENEDITORLDTOOLBAR,
] = [wx.NewId() for _init_ctrls in range(10)]
-[wxID_PLCOPENEDITORTOOLBARITEMS0,
-] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(1)]
-
-SFC_ITEMS = [wxID_PLCOPENEDITORSFCTOOLBARITEMS1,
- wxID_PLCOPENEDITORSFCTOOLBARITEMS2, wxID_PLCOPENEDITORSFCTOOLBARITEMS3,
- wxID_PLCOPENEDITORSFCTOOLBARITEMS4, wxID_PLCOPENEDITORSFCTOOLBARITEMS5,
- wxID_PLCOPENEDITORSFCTOOLBARITEMS6,
-] = [wx.NewId() for _init_coll_SFCToolBar_Items in range(6)]
-
-FBD_ITEMS = [wxID_PLCOPENEDITORFBDTOOLBARITEMS1,
- wxID_PLCOPENEDITORFBDTOOLBARITEMS2, wxID_PLCOPENEDITORFBDTOOLBARITEMS3,
- wxID_PLCOPENEDITORFBDTOOLBARITEMS4, wxID_PLCOPENEDITORFBDTOOLBARITEMS5,
-] = [wx.NewId() for _init_coll_FBDToolBar_Items in range(5)]
-
-LD_ITEMS = [wxID_PLCOPENEDITORLDTOOLBARITEMS1,
- wxID_PLCOPENEDITORLDTOOLBARITEMS2, wxID_PLCOPENEDITORLDTOOLBARITEMS3,
- wxID_PLCOPENEDITORLDTOOLBARITEMS4,
-] = [wx.NewId() for _init_coll_LDToolBar_Items in range(4)]
-
[wxID_PLCOPENEDITORFILEMENUITEMS0, wxID_PLCOPENEDITORFILEMENUITEMS1,
wxID_PLCOPENEDITORFILEMENUITEMS2, wxID_PLCOPENEDITORFILEMENUITEMS3,
wxID_PLCOPENEDITORFILEMENUITEMS5, wxID_PLCOPENEDITORFILEMENUITEMS6,
@@ -125,6 +107,56 @@
[wxID_PLCOPENEDITORCONFIGMENUITEMS0, wxID_PLCOPENEDITORCONFIGMENUITEMS1,
] = [wx.NewId() for _init_coll_ConfigMenu_Items in range(2)]
+
+#-------------------------------------------------------------------------------
+# ToolBars definitions
+#-------------------------------------------------------------------------------
+
+
+[wxID_PLCOPENEDITORTOOLBARSELECTION, wxID_PLCOPENEDITORTOOLBARCOMMENT,
+ wxID_PLCOPENEDITORTOOLBARVARIABLE, wxID_PLCOPENEDITORTOOLBARBLOCK,
+ wxID_PLCOPENEDITORTOOLBARCONNECTION, wxID_PLCOPENEDITORTOOLBARWIRE,
+ wxID_PLCOPENEDITORTOOLBARPOWERRAIL, wxID_PLCOPENEDITORTOOLBARRUNG,
+ wxID_PLCOPENEDITORTOOLBARCOIL, wxID_PLCOPENEDITORTOOLBARCONTACT,
+ wxID_PLCOPENEDITORTOOLBARBRANCH, wxID_PLCOPENEDITORTOOLBARINITIALSTEP,
+ wxID_PLCOPENEDITORTOOLBARSTEP, wxID_PLCOPENEDITORTOOLBARTRANSITION,
+ wxID_PLCOPENEDITORTOOLBARACTIONBLOCK, wxID_PLCOPENEDITORTOOLBARDIVERGENCE,
+ wxID_PLCOPENEDITORTOOLBARJUMP,
+] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(17)]
+
+ToolBarItems = {
+ "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
+ (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
+ (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
+ (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
+ (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+ "LD" : [(True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
+ (False, DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"),
+ (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
+ (False, DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
+ (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+ "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"),
+ (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "Images/initial_step.png", "Create a new initial step"),
+ (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "Images/step.png", "Create a new step"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "Images/transition.png", "Create a new transition"),
+ (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "Images/action.png", "Create a new action block"),
+ (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "Images/divergence.png", "Create a new divergence"),
+ (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "Images/jump.png", "Create a new jump"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"),
+ (True, FREEDRAWING_MODE, wxID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")],
+ "ST" : [],
+ "IL" : []
+}
+
class PLCOpenEditor(wx.Frame):
_custom_classes = {'wx.SashWindow' : ['Viewer']}
@@ -242,6 +274,8 @@
id=wxID_PLCOPENEDITORFILEMENUITEMS6)
self.Bind(wx.EVT_MENU, self.OnGenerateProgramMenu,
id=wxID_PLCOPENEDITORFILEMENUITEMS7)
+ self.Bind(wx.EVT_MENU, self.OnPropertiesMenu,
+ id=wxID_PLCOPENEDITORFILEMENUITEMS9)
self.Bind(wx.EVT_MENU, self.OnQuitMenu,
id=wxID_PLCOPENEDITORFILEMENUITEMS11)
@@ -351,16 +385,16 @@
self.ToolBar = wxToolBar(id=wxID_PLCOPENEDITORTOOLBAR, name='ToolBar',
parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40),
style=wxTB_HORIZONTAL | wxNO_BORDER)
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORTOOLBARITEMS0,
+ self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORTOOLBARSELECTION,
wxBitmap(os.path.join(CWD, 'Images/select.png')), wxNullBitmap, "Select an object")
self.Bind(wx.EVT_TOOL, self.OnSelectionTool,
- id=wxID_PLCOPENEDITORTOOLBARITEMS0)
+ id=wxID_PLCOPENEDITORTOOLBARSELECTION)
self.ProjectTree = wx.TreeCtrl(id=wxID_PLCOPENEDITORPROJECTTREE,
name='treeCtrl1', parent=self.splitterWindow1, pos=wx.Point(0, 0),
size=wx.Size(-1, -1),
style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER)
- self.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
+ self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp)
self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag,
id=wxID_PLCOPENEDITORPROJECTTREE)
self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit,
@@ -391,11 +425,16 @@
self.RefreshProjectTree()
self.CurrentToolBar = []
+ self.CurrentLanguage = ""
+ self.DrawingMode = DRIVENDRAWING_MODE
self.RefreshFileMenu()
self.RefreshEditMenu()
self.RefreshToolBar()
+ def GetDrawingMode(self):
+ return self.DrawingMode
+
def RefreshFileMenu(self):
if self.FileMenu:
if self.Controler.HasOpenedProject():
@@ -441,6 +480,20 @@
self.EditMenu.FindItemByPosition(5).Enable(False)
self.EditMenu.FindItemByPosition(6).Enable(False)
+ def ShowProperties(self):
+ old_values = self.Controler.GetProjectProperties()
+ old_values["projectName"] = self.Controler.GetProjectName()
+ dialog = ProjectDialog(self)
+ dialog.SetValues(old_values)
+ if dialog.ShowModal() == wxID_OK:
+ new_values = dialog.GetValues()
+ projectname = new_values.pop("projectName")
+ new_values["creationDateTime"] = old_values["creationDateTime"]
+ self.Controler.SetProjectName(projectname)
+ self.Controler.SetProjectProperties(new_values)
+ self.RefreshProjectTree()
+ dialog.Destroy()
+
def OnNewProjectMenu(self, event):
dialog = ProjectDialog(self)
if dialog.ShowModal() == wxID_OK:
@@ -529,7 +582,7 @@
if filepath != "":
directory, filename = os.path.split(filepath)
else:
- directory, filename = os.getcwd(), "%s.od"%self.Controler.GetProjectName()
+ directory, filename = os.getcwd(), "%s.xml"%self.Controler.GetProjectName()
dialog = wxFileDialog(self, "Choose a file", directory, filename, "PLCOpen files (*.xml)|*.xml|All files|*.*", wxSAVE|wxOVERWRITE_PROMPT)
if dialog.ShowModal() == wxID_OK:
filepath = dialog.GetPath()
@@ -545,6 +598,10 @@
message.Destroy()
dialog.Destroy()
+ def OnPropertiesMenu(self, event):
+ self.ShowProperties()
+ event.Skip()
+
def OnQuitMenu(self, event):
self.ToolBar.Reparent(self)
self.Controler.Reset()
@@ -557,7 +614,7 @@
window = self.TabsOpened.GetPage(selected)
if not isinstance(window, TextViewer):
window.SetMode(MODE_SELECTION)
- self.ToolBar.ToggleTool(wxID_PLCOPENEDITORTOOLBARITEMS0, True)
+ self.ToolBar.ToggleTool(wxID_PLCOPENEDITORTOOLBARSELECTION, True)
def ResetToolToggle(self, id):
tool = self.ToolBar.FindById(id)
@@ -569,101 +626,134 @@
self.TabsOpened.GetPage(selected).SetMode(MODE_SELECTION)
event.Skip()
- def OnSFCCommentTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORSFCTOOLBARITEMS1)
+ def OnCommentTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCOMMENT)
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).SetMode(MODE_COMMENT)
event.Skip()
- def OnSFCInitialStepTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORSFCTOOLBARITEMS2)
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- self.TabsOpened.GetPage(selected).SetMode(MODE_INITIAL_STEP)
- event.Skip()
-
- def OnSFCStepTool(self, event):
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- self.TabsOpened.GetPage(selected).AddStep()
- event.Skip()
-
- def OnSFCActionBlockTool(self, event):
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- self.TabsOpened.GetPage(selected).AddStepAction()
- event.Skip()
-
- def OnSFCDivergenceTool(self, event):
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- self.TabsOpened.GetPage(selected).AddDivergence()
- event.Skip()
-
- def OnSFCJumpTool(self, event):
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- self.TabsOpened.GetPage(selected).AddJump()
- event.Skip()
-
- def OnFBDCommentTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORFBDTOOLBARITEMS1)
- selected = self.TabsOpened.GetSelection()
- if selected != -1:
- self.TabsOpened.GetPage(selected).SetMode(MODE_COMMENT)
- event.Skip()
-
- def OnFBDVariableTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORFBDTOOLBARITEMS2)
+ def OnVariableTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARVARIABLE)
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).SetMode(MODE_VARIABLE)
event.Skip()
- def OnFBDBlockTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORFBDTOOLBARITEMS3)
+ def OnBlockTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARBLOCK)
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).SetMode(MODE_BLOCK)
event.Skip()
- def OnFBDConnectionTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORFBDTOOLBARITEMS4)
+ def OnConnectionTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCONNECTION)
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).SetMode(MODE_CONNECTION)
event.Skip()
- def OnFBDWireTool(self, event):
- self.ResetToolToggle(wxID_PLCOPENEDITORFBDTOOLBARITEMS5)
+ def OnWireTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARWIRE)
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).SetMode(MODE_WIRE)
event.Skip()
- def OnLDCoilTool(self, event):
+ def OnPowerRailTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARPOWERRAIL)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_POWERRAIL)
+ event.Skip()
+
+ def OnRungTool(self, event):
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).AddRung()
event.Skip()
- def OnLDContactTool(self, event):
+ def OnCoilTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCOIL)
selected = self.TabsOpened.GetSelection()
if selected != -1:
- self.TabsOpened.GetPage(selected).AddContact()
- event.Skip()
-
- def OnLDBlockTool(self, event):
+ self.TabsOpened.GetPage(selected).SetMode(MODE_COIL)
+ event.Skip()
+
+ def OnContactTool(self, event):
+ if self.DrawingMode == FREEDRAWING_MODE:
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARCONTACT)
selected = self.TabsOpened.GetSelection()
if selected != -1:
- self.TabsOpened.GetPage(selected).AddBlock()
- event.Skip()
-
- def OnLDBranchTool(self, event):
+ if self.DrawingMode == FREEDRAWING_MODE:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_CONTACT)
+ else:
+ self.TabsOpened.GetPage(selected).AddContact()
+ event.Skip()
+
+ def OnBranchTool(self, event):
selected = self.TabsOpened.GetSelection()
if selected != -1:
self.TabsOpened.GetPage(selected).AddBranch()
+ event.Skip()
+
+ def OnInitialStepTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARINITIALSTEP)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_INITIALSTEP)
+ event.Skip()
+
+ def OnStepTool(self, event):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARSTEP)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_STEP)
+ else:
+ self.TabsOpened.GetPage(selected).AddStep()
+ event.Skip()
+
+ def OnActionBlockTool(self, event):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARACTIONBLOCK)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_ACTION)
+ else:
+ self.TabsOpened.GetPage(selected).AddStepAction()
+ event.Skip()
+
+ def OnTransitionTool(self, event):
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARTRANSITION)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_TRANSITION)
+ event.Skip()
+
+ def OnDivergenceTool(self, event):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARDIVERGENCE)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_DIVERGENCE)
+ else:
+ self.TabsOpened.GetPage(selected).AddDivergence()
+ event.Skip()
+
+ def OnJumpTool(self, event):
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.ResetToolToggle(wxID_PLCOPENEDITORTOOLBARJUMP)
+ selected = self.TabsOpened.GetSelection()
+ if selected != -1:
+ if self.GetDrawingMode() == FREEDRAWING_MODE:
+ self.TabsOpened.GetPage(selected).SetMode(MODE_JUMP)
+ else:
+ self.TabsOpened.GetPage(selected).AddJump()
event.Skip()
def OnPouSelectedChanged(self, event):
@@ -785,18 +875,7 @@
name = self.ProjectTree.GetItemText(selected)
data = self.ProjectTree.GetPyData(selected)
if name == "Properties":
- old_values = self.Controler.GetProjectProperties()
- old_values["projectName"] = self.Controler.GetProjectName()
- dialog = ProjectDialog(self)
- dialog.SetValues(old_values)
- if dialog.ShowModal() == wxID_OK:
- new_values = dialog.GetValues()
- projectname = new_values.pop("projectName")
- new_values["creationDateTime"] = old_values["creationDateTime"]
- self.Controler.SetProjectName(projectname)
- self.Controler.SetProjectProperties(new_values)
- self.RefreshProjectTree()
- dialog.Destroy()
+ self.ShowProperties()
elif data == ITEM_CLASS:
item = self.ProjectTree.GetItemParent(selected)
item_type = self.ProjectTree.GetPyData(item)
@@ -889,7 +968,7 @@
varlist.append(var["Name"])
if idx != None:
if language == "FBD":
- new_window = FBD_Viewer(self.TabsOpened, self, self.Controler)
+ new_window = Viewer(self.TabsOpened, self, self.Controler)
elif language == "LD":
new_window = LD_Viewer(self.TabsOpened, self, self.Controler)
elif language == "SFC":
@@ -1017,92 +1096,29 @@
item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
while item.IsOk():
to_delete.append(item)
- item, root_cookie = self.ProjectTree.GetNextChild(item, root_cookie)
+ item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie)
for item in to_delete:
self.ProjectTree.Delete(item)
-
+
def ResetToolBar(self):
for item in self.CurrentToolBar:
+ self.Unbind(wx.EVT_MENU, id=item)
self.ToolBar.DeleteTool(item)
def RefreshToolBar(self):
language = self.Controler.GetCurrentElementEditingBodyType()
- if language == "SFC":
- if self.CurrentToolBar != SFC_ITEMS:
- self.ResetToolBar()
- self.CurrentToolBar = SFC_ITEMS
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORSFCTOOLBARITEMS1,
- wxBitmap(os.path.join(CWD, 'Images/comment.png')), wxNullBitmap, "Create a new comment")
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORSFCTOOLBARITEMS2,
- wxBitmap(os.path.join(CWD, 'Images/initial_step.png')), wxNullBitmap, "Create a new initial step")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORSFCTOOLBARITEMS3,
- wxBitmap(os.path.join(CWD, 'Images/step.png')), "Create a new step")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORSFCTOOLBARITEMS4,
- wxBitmap(os.path.join(CWD, 'Images/action.png')), "Add action block to step")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORSFCTOOLBARITEMS5,
- wxBitmap(os.path.join(CWD, 'Images/divergence.png')), "Create a new divergence")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORSFCTOOLBARITEMS6,
- wxBitmap(os.path.join(CWD, 'Images/jump.png')), "Create a new jump")
- self.Bind(wx.EVT_TOOL, self.OnSFCCommentTool,
- id=wxID_PLCOPENEDITORSFCTOOLBARITEMS1)
- self.Bind(wx.EVT_TOOL, self.OnSFCInitialStepTool,
- id=wxID_PLCOPENEDITORSFCTOOLBARITEMS2)
- self.Bind(wx.EVT_TOOL, self.OnSFCStepTool,
- id=wxID_PLCOPENEDITORSFCTOOLBARITEMS3)
- self.Bind(wx.EVT_TOOL, self.OnSFCActionBlockTool,
- id=wxID_PLCOPENEDITORSFCTOOLBARITEMS4)
- self.Bind(wx.EVT_TOOL, self.OnSFCDivergenceTool,
- id=wxID_PLCOPENEDITORSFCTOOLBARITEMS5)
- self.Bind(wx.EVT_TOOL, self.OnSFCJumpTool,
- id=wxID_PLCOPENEDITORSFCTOOLBARITEMS6)
- elif language == "FBD":
- if self.CurrentToolBar != FBD_ITEMS:
- self.ResetToolBar()
- self.CurrentToolBar = FBD_ITEMS
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORFBDTOOLBARITEMS1,
- wxBitmap(os.path.join(CWD, 'Images/comment.png')), wxNullBitmap, "Create a new comment")
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORFBDTOOLBARITEMS2,
- wxBitmap(os.path.join(CWD, 'Images/variable.png')), wxNullBitmap, "Create a new variable")
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORFBDTOOLBARITEMS3,
- wxBitmap(os.path.join(CWD, 'Images/block.png')), wxNullBitmap, "Create a new block")
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORFBDTOOLBARITEMS4,
- wxBitmap(os.path.join(CWD, 'Images/connection.png')), wxNullBitmap, "Create a new connection")
- self.ToolBar.AddRadioTool(wxID_PLCOPENEDITORFBDTOOLBARITEMS5,
- wxBitmap(os.path.join(CWD, 'Images/wire.png')), wxNullBitmap, "Create a new wire")
- self.Bind(wx.EVT_TOOL, self.OnFBDCommentTool,
- id=wxID_PLCOPENEDITORFBDTOOLBARITEMS1)
- self.Bind(wx.EVT_TOOL, self.OnFBDVariableTool,
- id=wxID_PLCOPENEDITORFBDTOOLBARITEMS2)
- self.Bind(wx.EVT_TOOL, self.OnFBDBlockTool,
- id=wxID_PLCOPENEDITORFBDTOOLBARITEMS3)
- self.Bind(wx.EVT_TOOL, self.OnFBDConnectionTool,
- id=wxID_PLCOPENEDITORFBDTOOLBARITEMS4)
- self.Bind(wx.EVT_TOOL, self.OnFBDWireTool,
- id=wxID_PLCOPENEDITORFBDTOOLBARITEMS5)
- elif language == "LD":
- if self.CurrentToolBar != LD_ITEMS:
- self.ResetToolBar()
- self.CurrentToolBar = LD_ITEMS
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORLDTOOLBARITEMS1,
- wxBitmap(os.path.join(CWD, 'Images/coil.png')), "Create a new rung")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORLDTOOLBARITEMS2,
- wxBitmap(os.path.join(CWD, 'Images/contact.png')), "Create a new contact")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORLDTOOLBARITEMS3,
- wxBitmap(os.path.join(CWD, 'Images/block.png')), "Create a new block")
- self.ToolBar.AddSimpleTool(wxID_PLCOPENEDITORLDTOOLBARITEMS4,
- wxBitmap(os.path.join(CWD, 'Images/branch.png')), "Create a new branch")
- self.Bind(wx.EVT_TOOL, self.OnLDCoilTool,
- id=wxID_PLCOPENEDITORLDTOOLBARITEMS1)
- self.Bind(wx.EVT_TOOL, self.OnLDContactTool,
- id=wxID_PLCOPENEDITORLDTOOLBARITEMS2)
- self.Bind(wx.EVT_TOOL, self.OnLDBlockTool,
- id=wxID_PLCOPENEDITORLDTOOLBARITEMS3)
- self.Bind(wx.EVT_TOOL, self.OnLDBranchTool,
- id=wxID_PLCOPENEDITORLDTOOLBARITEMS4)
- else:
- if len(self.CurrentToolBar) > 0:
- self.ResetToolBar()
- self.CurrentToolBar = []
+ if language and language != self.CurrentLanguage:
+ self.ResetToolBar()
+ self.CurrentLanguage = language
+ self.CurrentToolBar = []
+ for radio, modes, id, method, picture, help in ToolBarItems[language]:
+ if modes & self.DrawingMode:
+ if radio or self.DrawingMode == FREEDRAWING_MODE:
+ self.ToolBar.AddRadioTool(id, wxBitmap(os.path.join(CWD, picture)), wxNullBitmap, help)
+ else:
+ self.ToolBar.AddSimpleTool(id, wxBitmap(os.path.join(CWD, picture)), help)
+ self.Bind(wx.EVT_TOOL, getattr(self, method), id=id)
+ self.CurrentToolBar.append(id)
self.ResetCurrentMode()
def RefreshTabsOpenedTitles(self):
@@ -2063,7 +2079,7 @@
self.OptionList = "Yes,No"
self.TypeList = ""
- for value in TypeHierarchy.keys():
+ for value, parent in TypeHierarchy_list:
if not value.startswith("ANY"):
self.TypeList += "%s,"%value
self.TypeList = self.TypeList[:-1]
@@ -2208,6 +2224,7 @@
self.RefreshValues()
def RefreshValues(self):
+ self.VariablesGrid.SetGridCursor(0, 0)
data = []
for variable in self.Values:
if variable["Class"] in self.ClassList: