96 ID_PLCOPENEDITORTOOLBARACTIONBLOCK, ID_PLCOPENEDITORTOOLBARDIVERGENCE, |
96 ID_PLCOPENEDITORTOOLBARACTIONBLOCK, ID_PLCOPENEDITORTOOLBARDIVERGENCE, |
97 ID_PLCOPENEDITORTOOLBARJUMP, |
97 ID_PLCOPENEDITORTOOLBARJUMP, |
98 ] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(17)] |
98 ] = [wx.NewId() for _init_coll_DefaultToolBar_Items in range(17)] |
99 |
99 |
100 ToolBarItems = { |
100 ToolBarItems = { |
101 "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"), |
101 "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"), |
102 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"), |
102 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"), |
103 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"), |
103 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"), |
104 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"), |
104 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"), |
105 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")], |
105 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")], |
106 "LD" : [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"), |
106 "LD" : [(True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"), |
107 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"), |
107 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "powerrail.png", "Create a new power rail"), |
108 (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "Images/rung.png", "Create a new rung"), |
108 (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARRUNG, "OnRungTool", "rung.png", "Create a new rung"), |
109 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "Images/coil.png", "Create a new coil"), |
109 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOIL, "OnCoilTool", "coil.png", "Create a new coil"), |
110 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"), |
110 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "contact.png", "Create a new contact"), |
111 (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "Images/branch.png", "Create a new branch"), |
111 (False, DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBRANCH, "OnBranchTool", "branch.png", "Create a new branch"), |
112 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"), |
112 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"), |
113 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"), |
113 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"), |
114 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"), |
114 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"), |
115 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")], |
115 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")], |
116 "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "Images/comment.png", "Create a new comment"), |
116 "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCOMMENT, "OnCommentTool", "comment.png", "Create a new comment"), |
117 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "Images/initial_step.png", "Create a new initial step"), |
117 (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARINITIALSTEP, "OnInitialStepTool", "initial_step.png", "Create a new initial step"), |
118 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "Images/step.png", "Create a new step"), |
118 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARSTEP, "OnStepTool", "step.png", "Create a new step"), |
119 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "Images/transition.png", "Create a new transition"), |
119 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARTRANSITION, "OnTransitionTool", "transition.png", "Create a new transition"), |
120 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "Images/action.png", "Create a new action block"), |
120 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARACTIONBLOCK, "OnActionBlockTool", "action.png", "Create a new action block"), |
121 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "Images/divergence.png", "Create a new divergence"), |
121 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARDIVERGENCE, "OnDivergenceTool", "divergence.png", "Create a new divergence"), |
122 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "Images/jump.png", "Create a new jump"), |
122 (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE, ID_PLCOPENEDITORTOOLBARJUMP, "OnJumpTool", "jump.png", "Create a new jump"), |
123 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "Images/variable.png", "Create a new variable"), |
123 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARVARIABLE, "OnVariableTool", "variable.png", "Create a new variable"), |
124 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "Images/block.png", "Create a new block"), |
124 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARBLOCK, "OnBlockTool", "block.png", "Create a new block"), |
125 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "Images/connection.png", "Create a new connection"), |
125 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONNECTION, "OnConnectionTool", "connection.png", "Create a new connection"), |
126 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "Images/powerrail.png", "Create a new power rail"), |
126 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARPOWERRAIL, "OnPowerRailTool", "powerrail.png", "Create a new power rail"), |
127 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "Images/contact.png", "Create a new contact"), |
127 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARCONTACT, "OnContactTool", "contact.png", "Create a new contact"), |
128 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "Images/wire.png", "Create a new wire")], |
128 (True, FREEDRAWING_MODE, ID_PLCOPENEDITORTOOLBARWIRE, "OnWireTool", "wire.png", "Create a new wire")], |
129 "ST" : [], |
129 "ST" : [], |
130 "IL" : [] |
130 "IL" : [] |
131 } |
131 } |
132 |
132 |
133 class PLCOpenEditor(wx.Frame): |
133 class PLCOpenEditor(wx.Frame): |
284 self._init_coll_EditMenu_Items(self.EditMenu) |
284 self._init_coll_EditMenu_Items(self.EditMenu) |
285 self._init_coll_HelpMenu_Items(self.HelpMenu) |
285 self._init_coll_HelpMenu_Items(self.HelpMenu) |
286 self._init_coll_SFCMenu_Items(self.SFCMenu) |
286 self._init_coll_SFCMenu_Items(self.SFCMenu) |
287 self._init_coll_ConfigMenu_Items(self.ConfigMenu) |
287 self._init_coll_ConfigMenu_Items(self.ConfigMenu) |
288 |
288 |
289 def _init_coll_MainGridSizer_Items(self, parent): |
|
290 parent.AddWindow(self.MainSplitter, 0, border=0, flag=wx.GROW) |
|
291 |
|
292 def _init_coll_EditorGridSizer_Items(self, parent): |
289 def _init_coll_EditorGridSizer_Items(self, parent): |
293 parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW) |
290 parent.AddWindow(self.ToolBar, 0, border=0, flag=wx.GROW) |
294 parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW) |
291 parent.AddWindow(self.TabsOpened, 0, border=0, flag=wx.GROW) |
295 |
292 |
296 def _init_coll_MainGridSizer_Growables(self, parent): |
|
297 parent.AddGrowableCol(0) |
|
298 parent.AddGrowableRow(0) |
|
299 |
|
300 def _init_coll_EditorGridSizer_Growables(self, parent): |
293 def _init_coll_EditorGridSizer_Growables(self, parent): |
301 parent.AddGrowableCol(0) |
294 parent.AddGrowableCol(0) |
302 parent.AddGrowableRow(1) |
295 parent.AddGrowableRow(1) |
303 |
296 |
304 def _init_sizers(self): |
297 def _init_sizers(self): |
305 self.MainGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=1, vgap=0) |
298 if wx.Platform != '__WXMSW__': |
306 self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) |
299 self.EditorGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=0) |
307 |
300 |
308 self._init_coll_MainGridSizer_Growables(self.MainGridSizer) |
301 self._init_coll_EditorGridSizer_Growables(self.EditorGridSizer) |
309 self._init_coll_MainGridSizer_Items(self.MainGridSizer) |
302 self._init_coll_EditorGridSizer_Items(self.EditorGridSizer) |
310 self._init_coll_EditorGridSizer_Growables(self.EditorGridSizer) |
303 |
311 self._init_coll_EditorGridSizer_Items(self.EditorGridSizer) |
304 self.EditorPanel.SetSizer(self.EditorGridSizer) |
312 |
|
313 self.SetSizer(self.MainGridSizer) |
|
314 self.EditorPanel.SetSizer(self.EditorGridSizer) |
|
315 |
305 |
316 def _init_ctrls(self, prnt): |
306 def _init_ctrls(self, prnt): |
317 wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor', |
307 wx.Frame.__init__(self, id=ID_PLCOPENEDITOR, name=u'PLCOpenEditor', |
318 parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600), |
308 parent=prnt, pos=wx.Point(235, 287), size=wx.Size(1000, 600), |
319 style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor') |
309 style=wx.DEFAULT_FRAME_STYLE, title=u'PLCOpenEditor') |
330 self.MainSplitter = wx.SplitterWindow(id=ID_PLCOPENEDITORMAINSPLITTER, |
320 self.MainSplitter = wx.SplitterWindow(id=ID_PLCOPENEDITORMAINSPLITTER, |
331 name='MainSplitter', parent=self, point=wx.Point(0, 0), |
321 name='MainSplitter', parent=self, point=wx.Point(0, 0), |
332 size=wx.Size(0, 0), style=wx.SP_3D) |
322 size=wx.Size(0, 0), style=wx.SP_3D) |
333 self.MainSplitter.SetNeedUpdating(True) |
323 self.MainSplitter.SetNeedUpdating(True) |
334 self.MainSplitter.SetMinimumPaneSize(1) |
324 self.MainSplitter.SetMinimumPaneSize(1) |
335 |
|
336 self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, |
|
337 name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0), |
|
338 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
|
339 |
|
340 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED, |
|
341 name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0, |
|
342 0), size=wx.Size(0, 0), style=0) |
|
343 self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
|
344 self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED) |
|
345 |
|
346 self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar', |
|
347 parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40), |
|
348 style=wx.TB_HORIZONTAL|wx.NO_BORDER) |
|
349 self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, |
|
350 wx.Bitmap(os.path.join(CWD, 'Images/select.png')), wx.NullBitmap, "Select an object") |
|
351 self.Bind(wx.EVT_TOOL, self.OnSelectionTool, |
|
352 id=ID_PLCOPENEDITORTOOLBARSELECTION) |
|
353 |
325 |
354 self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE, |
326 self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE, |
355 name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0), |
327 name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0), |
356 size=wx.Size(-1, -1), |
328 size=wx.Size(-1, -1), |
357 style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER) |
329 style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER) |
364 id=ID_PLCOPENEDITORPROJECTTREE) |
336 id=ID_PLCOPENEDITORPROJECTTREE) |
365 self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated, |
337 self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated, |
366 id=ID_PLCOPENEDITORPROJECTTREE) |
338 id=ID_PLCOPENEDITORPROJECTTREE) |
367 self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected, |
339 self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected, |
368 id=ID_PLCOPENEDITORPROJECTTREE) |
340 id=ID_PLCOPENEDITORPROJECTTREE) |
369 self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel, |
341 |
370 200) |
342 if wx.Platform == '__WXMSW__': |
|
343 self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, |
|
344 ID_PLCOPENEDITORTOOLBAR, 'ToolBar') |
|
345 self.ToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
|
346 self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, |
|
347 wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object") |
|
348 self.ToolBar.Realize() |
|
349 self.Bind(wx.EVT_TOOL, self.OnSelectionTool, |
|
350 id=ID_PLCOPENEDITORTOOLBARSELECTION) |
|
351 |
|
352 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED, |
|
353 name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0, |
|
354 0), size=wx.Size(0, 0), style=0) |
|
355 self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
|
356 self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED) |
|
357 |
|
358 self.MainSplitter.SplitVertically(self.ProjectTree, self.TabsOpened, 200) |
|
359 |
|
360 else: |
|
361 self.EditorPanel = wx.Panel(id=ID_PLCOPENEDITOREDITORPANEL, |
|
362 name='TabPanel', parent=self.MainSplitter, pos=wx.Point(0, 0), |
|
363 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
|
364 |
|
365 self.ToolBar = wx.ToolBar(id=ID_PLCOPENEDITORTOOLBAR, name='ToolBar', |
|
366 parent=self.EditorPanel, pos=wx.Point(0, 0), size=wx.Size(0, 40), |
|
367 style=wx.TB_HORIZONTAL|wx.NO_BORDER) |
|
368 self.ToolBar.AddRadioTool(ID_PLCOPENEDITORTOOLBARSELECTION, |
|
369 wx.Bitmap(os.path.join(CWD, 'Images', 'select.png')), wx.NullBitmap, "Select an object") |
|
370 self.ToolBar.Realize() |
|
371 self.Bind(wx.EVT_TOOL, self.OnSelectionTool, |
|
372 id=ID_PLCOPENEDITORTOOLBARSELECTION) |
|
373 |
|
374 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED, |
|
375 name='TabsOpened', parent=self.EditorPanel, pos=wx.Point(0, |
|
376 0), size=wx.Size(0, 0), style=0) |
|
377 self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
|
378 self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED) |
|
379 |
|
380 self.MainSplitter.SplitVertically(self.ProjectTree, self.EditorPanel, 200) |
371 |
381 |
372 self._init_sizers() |
382 self._init_sizers() |
373 |
383 |
374 def __init__(self, parent, controler = None, fileOpen = None): |
384 def __init__(self, parent, controler = None, fileOpen = None): |
375 self.ModeSolo = controler == None |
385 self.ModeSolo = controler == None |
376 self._init_ctrls(parent) |
386 self._init_ctrls(parent) |
377 |
387 |
378 self.TreeImageList = wx.ImageList(16, 16) |
388 if wx.Platform != '__WXMSW__': |
379 for language in LANGUAGES: |
389 self.TreeImageList = wx.ImageList(16, 16) |
380 self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images/%s.png'%language))) |
390 for language in LANGUAGES: |
381 self.ProjectTree.SetImageList(self.TreeImageList) |
391 self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images','%s.png'%language))) |
|
392 self.ProjectTree.AssignImageList(self.TreeImageList) |
382 |
393 |
383 if self.ModeSolo: |
394 if self.ModeSolo: |
384 self.Controler = PLCControler() |
395 self.Controler = PLCControler() |
385 if fileOpen: |
396 if fileOpen: |
386 self.Controler.OpenXMLFile(fileOpen) |
397 self.Controler.OpenXMLFile(fileOpen) |