364 name='MainSplitter', parent=self, point=wx.Point(0, 0), |
355 name='MainSplitter', parent=self, point=wx.Point(0, 0), |
365 size=wx.Size(0, 0), style=wx.SP_3D) |
356 size=wx.Size(0, 0), style=wx.SP_3D) |
366 self.MainSplitter.SetNeedUpdating(True) |
357 self.MainSplitter.SetNeedUpdating(True) |
367 self.MainSplitter.SetMinimumPaneSize(1) |
358 self.MainSplitter.SetMinimumPaneSize(1) |
368 |
359 |
369 self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE, |
360 self.TreeNoteBook = wx.Notebook(id=ID_PLCOPENEDITORTREENOTEBOOK, |
370 name='treeCtrl1', parent=self.MainSplitter, pos=wx.Point(0, 0), |
361 name='TreeNoteBook', parent=self.MainSplitter, pos=wx.Point(0, |
371 size=wx.Size(-1, -1), |
362 0), size=wx.Size(0, 0), style=0) |
|
363 else: |
|
364 self.TreeNoteBook = wx.aui.AuiNotebook(self) |
|
365 self.AUIManager.AddPane(self.TreeNoteBook, wx.aui.AuiPaneInfo().Caption("Project").Left().Layer(1).BestSize(wx.Size(200, 500)).CloseButton(False)) |
|
366 |
|
367 self.TypesTree = wx.TreeCtrl(id=ID_PLCOPENEDITORTYPESTREE, |
|
368 name='TypesTree', parent=self.TreeNoteBook, |
|
369 pos=wx.Point(0, 0), size=wx.Size(0, 0), |
372 style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER) |
370 style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER) |
373 else: |
371 self.TreeNoteBook.AddPage(self.TypesTree, "Types") |
374 self.ProjectTree = wx.TreeCtrl(id=ID_PLCOPENEDITORPROJECTTREE, |
372 |
375 name='treeCtrl1', parent=self, pos=wx.Point(0, 0), |
373 if wx.Platform == '__WXMSW__': |
376 size=wx.Size(200, -1), |
374 self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnTypesTreeRightUp, |
|
375 id=ID_PLCOPENEDITORTYPESTREE) |
|
376 self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnTypesTreeItemSelected, |
|
377 id=ID_PLCOPENEDITORTYPESTREE) |
|
378 else: |
|
379 if wx.VERSION >= (2, 6, 0): |
|
380 self.TypesTree.Bind(wx.EVT_RIGHT_UP, self.OnTypesTreeRightUp) |
|
381 self.TypesTree.Bind(wx.EVT_LEFT_UP, self.OnTypesTreeLeftUp) |
|
382 else: |
|
383 wx.EVT_RIGHT_UP(self.TypesTree, self.OnTypesTreeRightUp) |
|
384 wx.EVT_LEFT_UP(self.TypesTree, self.OnTypesTreeLeftUp) |
|
385 self.Bind(wx.EVT_TREE_SEL_CHANGING, self.OnTypesTreeItemChanging, |
|
386 id=ID_PLCOPENEDITORTYPESTREE) |
|
387 self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnTypesTreeBeginDrag, |
|
388 id=ID_PLCOPENEDITORTYPESTREE) |
|
389 self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnTypesTreeItemBeginEdit, |
|
390 id=ID_PLCOPENEDITORTYPESTREE) |
|
391 self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnTypesTreeItemEndEdit, |
|
392 id=ID_PLCOPENEDITORTYPESTREE) |
|
393 self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnTypesTreeItemActivated, |
|
394 id=ID_PLCOPENEDITORTYPESTREE) |
|
395 |
|
396 self.InstancesTree = wx.TreeCtrl(id=ID_PLCOPENEDITORINSTANCESTREE, |
|
397 name='InstancesTree', parent=self.TreeNoteBook, |
|
398 pos=wx.Point(0, 0), size=wx.Size(0, 0), |
377 style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER) |
399 style=wx.TR_HAS_BUTTONS|wx.TR_EDIT_LABELS|wx.TR_SINGLE|wx.SUNKEN_BORDER) |
378 self.AUIManager.AddPane(self.ProjectTree, wx.aui.AuiPaneInfo().Caption("Project Tree").Left().Layer(1).BestSize(wx.Size(200, 500)).CloseButton(False)) |
400 self.TreeNoteBook.AddPage(self.InstancesTree, "Instances") |
379 if wx.Platform == '__WXMSW__': |
|
380 self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnProjectTreeRightUp, |
|
381 id=ID_PLCOPENEDITORPROJECTTREE) |
|
382 self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnProjectTreeItemSelected, |
|
383 id=ID_PLCOPENEDITORPROJECTTREE) |
|
384 else: |
|
385 if wx.VERSION >= (2, 6, 0): |
|
386 self.ProjectTree.Bind(wx.EVT_RIGHT_UP, self.OnProjectTreeRightUp) |
|
387 self.ProjectTree.Bind(wx.EVT_LEFT_UP, self.OnProjectTreeLeftUp) |
|
388 else: |
|
389 wx.EVT_RIGHT_UP(self.ProjectTree, self.OnProjectTreeRightUp) |
|
390 wx.EVT_LEFT_UP(self.ProjectTree, self.OnProjectTreeLeftUp) |
|
391 self.Bind(wx.EVT_TREE_SEL_CHANGING, self.OnProjectTreeItemChanging, |
|
392 id=ID_PLCOPENEDITORPROJECTTREE) |
|
393 self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnProjectTreeBeginDrag, |
|
394 id=ID_PLCOPENEDITORPROJECTTREE) |
|
395 self.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnProjectTreeItemBeginEdit, |
|
396 id=ID_PLCOPENEDITORPROJECTTREE) |
|
397 self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnProjectTreeItemEndEdit, |
|
398 id=ID_PLCOPENEDITORPROJECTTREE) |
|
399 self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnProjectTreeItemActivated, |
|
400 id=ID_PLCOPENEDITORPROJECTTREE) |
|
401 |
401 |
402 if wx.VERSION < (2, 8, 0): |
402 if wx.VERSION < (2, 8, 0): |
403 self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, |
403 self.ToolBar = self.CreateToolBar(wx.TB_HORIZONTAL|wx.TB_FLAT|wx.NO_BORDER, |
404 ID_PLCOPENEDITORTOOLBAR, 'ToolBar') |
404 ID_PLCOPENEDITORTOOLBAR, 'ToolBar') |
405 self.ToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
405 self.ToolBar.SetToolBitmapSize(wx.Size(25, 25)) |
426 self.SecondSplitter = wx.SplitterWindow(id=ID_PLCOPENEDITORSECONDSPLITTER, |
426 self.SecondSplitter = wx.SplitterWindow(id=ID_PLCOPENEDITORSECONDSPLITTER, |
427 name='SecondSplitter', parent=self.MainSplitter, point=wx.Point(0, 0), |
427 name='SecondSplitter', parent=self.MainSplitter, point=wx.Point(0, 0), |
428 size=wx.Size(0, 0), style=wx.SP_3D) |
428 size=wx.Size(0, 0), style=wx.SP_3D) |
429 self.SecondSplitter.SetMinimumPaneSize(1) |
429 self.SecondSplitter.SetMinimumPaneSize(1) |
430 |
430 |
431 self.MainSplitter.SplitVertically(self.ProjectTree, self.SecondSplitter, 200) |
431 self.MainSplitter.SplitVertically(self.TreeNoteBook, self.SecondSplitter, 200) |
432 |
432 |
433 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED, |
433 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED, |
434 name='TabsOpened', parent=self.SecondSplitter, pos=wx.Point(0, |
434 name='TabsOpened', parent=self.SecondSplitter, pos=wx.Point(0, |
435 0), size=wx.Size(0, 0), style=0) |
435 0), size=wx.Size(0, 0), style=0) |
436 if wx.VERSION >= (2, 6, 0): |
436 if wx.VERSION >= (2, 6, 0): |
437 self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
437 self.TabsOpened.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, |
438 self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED) |
438 self.OnPouSelectedChanged, id=ID_PLCOPENEDITORTABSOPENED) |
439 else: |
439 else: |
440 wx.EVT_NOTEBOOK_PAGE_CHANGED(self.TabsOpened, ID_PLCOPENEDITORTABSOPENED, |
440 wx.EVT_NOTEBOOK_PAGE_CHANGED(self.TabsOpened, ID_PLCOPENEDITORTABSOPENED, |
441 self.OnPouSelectedChanged) |
441 self.OnPouSelectedChanged) |
442 |
442 else: |
|
443 self.TabsOpened = wx.aui.AuiNotebook(self) |
|
444 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED, |
|
445 self.OnPouSelectedChanged) |
|
446 self.AUIManager.AddPane(self.TabsOpened, wx.aui.AuiPaneInfo().CentrePane()) |
|
447 |
443 if wx.VERSION < (2, 8, 0): |
448 if wx.VERSION < (2, 8, 0): |
444 self.VariablePanelIndexer = VariablePanelIndexer(self.SecondSplitter, self, self.Controler) |
449 self.VariablePanelIndexer = VariablePanelIndexer(self.SecondSplitter, self, self.Controler) |
445 |
450 |
446 self.SecondSplitter.SplitHorizontally(self.TabsOpened, self.VariablePanelIndexer, -200) |
451 self.SecondSplitter.SplitHorizontally(self.TabsOpened, self.VariablePanelIndexer, -200) |
447 else: |
452 else: |
448 self.VariablePanelIndexer = VariablePanelIndexer(self, self, self.Controler) |
453 self.VariablePanelIndexer = VariablePanelIndexer(self, self, self.Controler) |
449 self.AUIManager.AddPane(self.VariablePanelIndexer, wx.aui.AuiPaneInfo().Caption("Variable Panel").Bottom().Layer(0).BestSize(wx.Size(800, 200)).CloseButton(False)) |
454 self.AUIManager.AddPane(self.VariablePanelIndexer, wx.aui.AuiPaneInfo().Caption("Variables").Bottom().Layer(0).BestSize(wx.Size(800, 200)).CloseButton(False)) |
450 |
455 |
451 self.AUIManager.Update() |
456 self.AUIManager.Update() |
452 |
457 |
453 def __init__(self, parent, controler = None, fileOpen = None): |
458 def __init__(self, parent, controler = None, fileOpen = None): |
454 self.ModeSolo = controler == None |
459 self.ModeSolo = controler == None |
589 |
607 |
590 #------------------------------------------------------------------------------- |
608 #------------------------------------------------------------------------------- |
591 # Notebook Unified Functions |
609 # Notebook Unified Functions |
592 #------------------------------------------------------------------------------- |
610 #------------------------------------------------------------------------------- |
593 |
611 |
594 def GetPageCount(self): |
|
595 if wx.VERSION >= (2, 8, 0): |
|
596 notebook = self.GetNotebook() |
|
597 if notebook is not None: |
|
598 return notebook.GetPageCount() |
|
599 else: |
|
600 return 0 |
|
601 else: |
|
602 return self.TabsOpened.GetPageCount() |
|
603 |
|
604 def GetPage(self, idx): |
|
605 if wx.VERSION >= (2, 8, 0): |
|
606 notebook = self.GetNotebook() |
|
607 if notebook is not None: |
|
608 return notebook.GetPage(idx).GetViewer() |
|
609 else: |
|
610 return None |
|
611 else: |
|
612 return self.TabsOpened.GetPage(idx) |
|
613 |
|
614 def GetPageSelection(self): |
|
615 if wx.VERSION >= (2, 8, 0): |
|
616 notebook = self.GetNotebook() |
|
617 if notebook is not None: |
|
618 return notebook.GetSelection() |
|
619 else: |
|
620 return -1 |
|
621 else: |
|
622 return self.TabsOpened.GetSelection() |
|
623 |
|
624 def SetPageSelection(self, idx): |
|
625 if wx.VERSION >= (2, 8, 0): |
|
626 notebook = self.GetNotebook() |
|
627 if notebook is not None: |
|
628 notebook.SetSelection(idx) |
|
629 else: |
|
630 self.TabsOpened.SetSelection(idx) |
|
631 |
|
632 def DeletePage(self, idx): |
|
633 if wx.VERSION >= (2, 8, 0): |
|
634 notebook = self.GetNotebook() |
|
635 if notebook is not None: |
|
636 notebook.DeletePage(idx) |
|
637 else: |
|
638 self.TabsOpened.DeletePage(idx) |
|
639 |
|
640 def DeleteAllPages(self): |
612 def DeleteAllPages(self): |
641 if wx.VERSION >= (2, 8, 0): |
613 if wx.VERSION >= (2, 8, 0): |
642 notebook = self.GetNotebook() |
614 for idx in xrange(self.TabsOpened.GetPageCount()): |
643 if notebook is not None: |
615 self.TabsOpened.DeletePage(0) |
644 for idx in xrange(notebook.GetPageCount()): |
|
645 notebook.DeletePage(0) |
|
646 else: |
616 else: |
647 self.TabsOpened.DeleteAllPages() |
617 self.TabsOpened.DeleteAllPages() |
648 |
|
649 def SetPageText(self, idx, text): |
|
650 if wx.VERSION >= (2, 8, 0): |
|
651 notebook = self.GetNotebook() |
|
652 if notebook is not None: |
|
653 return notebook.SetPageText(idx, text) |
|
654 else: |
|
655 return self.TabsOpened.SetPageText(idx, text) |
|
656 |
618 |
657 def SetPageBitmap(self, idx, bitmap): |
619 def SetPageBitmap(self, idx, bitmap): |
658 if wx.VERSION >= (2, 8, 0): |
620 if wx.VERSION >= (2, 8, 0): |
659 notebook = self.GetNotebook() |
621 return self.TabsOpened.SetPageBitmap(idx, bitmap) |
660 if notebook is not None: |
|
661 return notebook.SetPageBitmap(idx, bitmap) |
|
662 else: |
622 else: |
663 return self.TabsOpened.SetPageImage(idx, bitmap) |
623 return self.TabsOpened.SetPageImage(idx, bitmap) |
664 |
|
665 def GetPageText(self, idx): |
|
666 if wx.VERSION >= (2, 8, 0): |
|
667 notebook = self.GetNotebook() |
|
668 if notebook is not None: |
|
669 return notebook.GetPageText(idx) |
|
670 else: |
|
671 return "" |
|
672 else: |
|
673 return self.TabsOpened.GetPageText(idx) |
|
674 |
624 |
675 |
625 |
676 #------------------------------------------------------------------------------- |
626 #------------------------------------------------------------------------------- |
677 # File Menu Functions |
627 # File Menu Functions |
678 #------------------------------------------------------------------------------- |
628 #------------------------------------------------------------------------------- |
679 |
629 |
680 def RefreshFileMenu(self): |
630 def RefreshFileMenu(self): |
681 if self.Controler.HasOpenedProject(): |
631 if self.Controler.HasOpenedProject(): |
682 selected = self.GetPageSelection() |
632 selected = self.TabsOpened.GetSelection() |
683 if selected >= 0: |
633 if selected >= 0: |
684 graphic_viewer = isinstance(self.GetPage(selected), Viewer) |
634 graphic_viewer = isinstance(self.TabsOpened.GetPage(selected), Viewer) |
685 else: |
635 else: |
686 graphic_viewer = False |
636 graphic_viewer = False |
687 if self.GetPageCount() > 0: |
637 if self.TabsOpened.GetPageCount() > 0: |
688 self.FileMenu.Enable(wx.ID_CLOSE, True) |
638 self.FileMenu.Enable(wx.ID_CLOSE, True) |
689 if graphic_viewer: |
639 if graphic_viewer: |
690 self.FileMenu.Enable(wx.ID_PREVIEW, True) |
640 self.FileMenu.Enable(wx.ID_PREVIEW, True) |
691 self.FileMenu.Enable(wx.ID_PRINT, True) |
641 self.FileMenu.Enable(wx.ID_PRINT, True) |
692 else: |
642 else: |
1008 control.ProcessEvent(event) |
961 control.ProcessEvent(event) |
1009 event.Skip() |
962 event.Skip() |
1010 |
963 |
1011 def OnDeleteMenu(self, event): |
964 def OnDeleteMenu(self, event): |
1012 window = self.FindFocus() |
965 window = self.FindFocus() |
1013 if window == self.ProjectTree: |
966 if window == self.TypesTree: |
1014 selected = self.ProjectTree.GetSelection() |
967 selected = self.TypesTree.GetSelection() |
1015 if selected.IsOk(): |
968 if selected.IsOk(): |
1016 type = self.ProjectTree.GetPyData(selected) |
969 type = self.TypesTree.GetPyData(selected) |
1017 tagname = "" |
970 tagname = "" |
1018 if type == ITEM_DATATYPE: |
971 if type == ITEM_DATATYPE: |
1019 name = self.ProjectTree.GetItemText(selected) |
972 name = self.TypesTree.GetItemText(selected) |
1020 if not self.Controler.DataTypeIsUsed(name): |
973 if not self.Controler.DataTypeIsUsed(name): |
1021 self.Controler.ProjectRemoveDataType(name) |
974 self.Controler.ProjectRemoveDataType(name) |
1022 tagname = self.Controler.ComputeDataTypeName(name) |
975 tagname = self.Controler.ComputeDataTypeName(name) |
1023 else: |
976 else: |
1024 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
977 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
1025 message.ShowModal() |
978 message.ShowModal() |
1026 message.Destroy() |
979 message.Destroy() |
1027 elif type == ITEM_POU: |
980 elif type == ITEM_POU: |
1028 name = self.ProjectTree.GetItemText(selected) |
981 name = self.TypesTree.GetItemText(selected) |
1029 if not self.Controler.DataTypeIsUsed(name): |
982 if not self.Controler.DataTypeIsUsed(name): |
1030 self.Controler.ProjectRemoveDataType(name) |
983 self.Controler.ProjectRemoveDataType(name) |
1031 tagname = self.Controler.ComputeDataTypeName(name) |
984 tagname = self.Controler.ComputeDataTypeName(name) |
1032 else: |
985 else: |
1033 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
986 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
1034 message.ShowModal() |
987 message.ShowModal() |
1035 message.Destroy() |
988 message.Destroy() |
1036 elif type in [ITEM_TRANSITION, ITEM_ACTION]: |
989 elif type in [ITEM_TRANSITION, ITEM_ACTION]: |
1037 item = self.ProjectTree.GetItemParent(selected) |
990 item = self.TypesTree.GetItemParent(selected) |
1038 item_type = self.ProjectTree.GetPyData(item) |
991 item_type = self.TypesTree.GetPyData(item) |
1039 while item_type != ITEM_POU: |
992 while item_type != ITEM_POU: |
1040 item = self.ProjectTree.GetItemParent(item) |
993 item = self.TypesTree.GetItemParent(item) |
1041 item_type = self.ProjectTree.GetPyData(item) |
994 item_type = self.TypesTree.GetPyData(item) |
1042 pou_name = self.ProjectTree.GetItemText(item) |
995 pou_name = self.TypesTree.GetItemText(item) |
1043 if type == ITEM_TRANSITION: |
996 if type == ITEM_TRANSITION: |
1044 transition = self.ProjectTree.GetItemText(selected) |
997 transition = self.TypesTree.GetItemText(selected) |
1045 self.Controler.ProjectRemovePouTransition(pou_name, transition) |
998 self.Controler.ProjectRemovePouTransition(pou_name, transition) |
1046 tagname = self.Controler.ComputePouTransitionName(pou_name, transition) |
999 tagname = self.Controler.ComputePouTransitionName(pou_name, transition) |
1047 elif type == ITEM_ACTION: |
1000 elif type == ITEM_ACTION: |
1048 action = self.ProjectTree.GetItemText(selected) |
1001 action = self.TypesTree.GetItemText(selected) |
1049 self.Controler.ProjectRemovePouAction(pou_name, action) |
1002 self.Controler.ProjectRemovePouAction(pou_name, action) |
1050 tagname = self.Controler.ComputePouActionName(pou_name, action) |
1003 tagname = self.Controler.ComputePouActionName(pou_name, action) |
1051 elif type == ITEM_CONFIGURATION: |
1004 elif type == ITEM_CONFIGURATION: |
1052 name = self.ProjectTree.GetItemText(selected) |
1005 name = self.TypesTree.GetItemText(selected) |
1053 self.Controler.ProjectRemoveConfiguration(name) |
1006 self.Controler.ProjectRemoveConfiguration(name) |
1054 tagname = self.Controler.ComputeConfigurationName(name) |
1007 tagname = self.Controler.ComputeConfigurationName(name) |
1055 elif type == ITEM_RESOURCE: |
1008 elif type == ITEM_RESOURCE: |
1056 resource = self.ProjectTree.GetItemText(selected) |
1009 resource = self.TypesTree.GetItemText(selected) |
1057 item = self.ProjectTree.GetItemParent(selected) |
1010 item = self.TypesTree.GetItemParent(selected) |
1058 item_type = self.ProjectTree.GetPyData(item) |
1011 item_type = self.TypesTree.GetPyData(item) |
1059 while item_type != ITEM_CONFIGURATION: |
1012 while item_type != ITEM_CONFIGURATION: |
1060 item = self.ProjectTree.GetItemParent(item) |
1013 item = self.TypesTree.GetItemParent(item) |
1061 item_type = self.ProjectTree.GetPyData(item) |
1014 item_type = self.TypesTree.GetPyData(item) |
1062 config_name = self.ProjectTree.GetItemText(item) |
1015 config_name = self.TypesTree.GetItemText(item) |
1063 self.Controler.ProjectRemoveConfigurationResource(config_name, resource) |
1016 self.Controler.ProjectRemoveConfigurationResource(config_name, resource) |
1064 tagname = self.Controler.ComputeConfigurationResourceName(config_name, selected) |
1017 tagname = self.Controler.ComputeConfigurationResourceName(config_name, selected) |
1065 idx = self.IsOpened(tagname) |
1018 idx = self.IsOpened(tagname) |
1066 if idx is not None: |
1019 if idx is not None: |
1067 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
1020 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
1068 self.DeletePage(idx) |
1021 self.TabsOpened.DeletePage(idx) |
1069 self.RefreshTitle() |
1022 self.RefreshTitle() |
1070 self.RefreshEditMenu() |
1023 self.RefreshEditMenu() |
1071 self.RefreshProjectTree() |
1024 self.RefreshTypesTree() |
1072 self.RefreshToolBar() |
1025 self.RefreshToolBar() |
1073 elif isinstance(window, (Viewer, TextViewer)): |
1026 elif isinstance(window, (Viewer, TextViewer)): |
1074 event = wx.KeyEvent(wx.EVT_CHAR._getEvtType()) |
1027 event = wx.KeyEvent(wx.EVT_CHAR._getEvtType()) |
1075 event.m_keyCode = wx.WXK_DELETE |
1028 event.m_keyCode = wx.WXK_DELETE |
1076 window.ProcessEvent(event) |
1029 window.ProcessEvent(event) |
1080 #------------------------------------------------------------------------------- |
1033 #------------------------------------------------------------------------------- |
1081 # Project Editor Panels Management Functions |
1034 # Project Editor Panels Management Functions |
1082 #------------------------------------------------------------------------------- |
1035 #------------------------------------------------------------------------------- |
1083 |
1036 |
1084 def OnPouSelectedChanged(self, event): |
1037 def OnPouSelectedChanged(self, event): |
1085 if wx.VERSION < (2, 8, 0) or event.GetActive(): |
1038 old_selected = self.TabsOpened.GetSelection() |
1086 old_selected = self.GetPageSelection() |
1039 if old_selected >= 0: |
1087 if old_selected >= 0: |
1040 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
1088 self.GetPage(old_selected).ResetBuffer() |
1041 selected = event.GetSelection() |
1089 if wx.VERSION >= (2, 8, 0): |
1042 if selected >= 0: |
1090 window = event.GetEventObject().GetViewer() |
1043 window = self.TabsOpened.GetPage(selected) |
1091 else: |
1044 self.SelectTypesTreeItem(window.GetTagName()) |
1092 selected = event.GetSelection() |
1045 window.RefreshView() |
1093 if selected >= 0: |
1046 self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName()) |
1094 window = self.GetPage(selected) |
1047 self.RefreshFileMenu() |
1095 else: |
1048 self.RefreshEditMenu() |
1096 window = None |
1049 self.RefreshToolBar() |
1097 if window: |
|
1098 self.SelectProjectTreeItem(window.GetTagName()) |
|
1099 window.RefreshView() |
|
1100 self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName()) |
|
1101 self.RefreshFileMenu() |
|
1102 self.RefreshEditMenu() |
|
1103 self.RefreshToolBar() |
|
1104 event.Skip() |
1050 event.Skip() |
1105 |
1051 |
1106 def RefreshEditor(self, variablepanel = True): |
1052 def RefreshEditor(self, variablepanel = True): |
1107 selected = self.GetPageSelection() |
1053 selected = self.TabsOpened.GetSelection() |
1108 if selected != -1: |
1054 if selected != -1: |
1109 window = self.GetPage(selected) |
1055 window = self.TabsOpened.GetPage(selected) |
1110 window.RefreshView() |
1056 window.RefreshView() |
1111 if variablepanel: |
1057 if variablepanel: |
1112 self.RefreshVariablePanel(window.GetTagName()) |
1058 self.RefreshVariablePanel(window.GetTagName()) |
1113 |
1059 |
1114 def RefreshVariablePanel(self, tagname): |
1060 def RefreshVariablePanel(self, tagname): |
1115 self.VariablePanelIndexer.RefreshVariablePanel(tagname) |
1061 self.VariablePanelIndexer.RefreshVariablePanel(tagname) |
1116 |
1062 |
1117 def RefreshEditorNames(self, old_tagname, new_tagname): |
1063 def RefreshEditorNames(self, old_tagname, new_tagname): |
1118 for i in xrange(self.GetPageCount()): |
1064 for i in xrange(self.TabsOpened.GetPageCount()): |
1119 editor = self.GetPage(i) |
1065 editor = self.TabsOpened.GetPage(i) |
1120 if editor.GetTagName() == old_tagname: |
1066 if editor.GetTagName() == old_tagname: |
1121 editor.SetTagName(new_tagname) |
1067 editor.SetTagName(new_tagname) |
1122 self.VariablePanelIndexer.UpdateVariablePanelTagName(old_tagname, new_tagname) |
1068 self.VariablePanelIndexer.UpdateVariablePanelTagName(old_tagname, new_tagname) |
1123 |
1069 |
1124 def IsOpened(self, tagname): |
1070 def IsOpened(self, tagname): |
1125 for idx in xrange(self.GetPageCount()): |
1071 for idx in xrange(self.TabsOpened.GetPageCount()): |
1126 if self.GetPage(idx).IsViewing(tagname): |
1072 if self.TabsOpened.GetPage(idx).IsViewing(tagname): |
1127 return idx |
1073 return idx |
1128 return None |
1074 return None |
1129 |
1075 |
1130 def RefreshPageTitles(self): |
1076 def RefreshPageTitles(self): |
1131 for idx in xrange(self.GetPageCount()): |
1077 for idx in xrange(self.TabsOpened.GetPageCount()): |
1132 window = self.GetPage(idx) |
1078 window = self.TabsOpened.GetPage(idx) |
1133 words = window.GetTagName().split("::") |
1079 words = window.GetTagName().split("::") |
1134 if words[0] == "P": |
1080 if words[0] == "P": |
1135 pou_type = self.Controler.GetEditedElementType(window.GetTagName())[1].upper() |
1081 pou_type = self.Controler.GetEditedElementType(window.GetTagName())[1].upper() |
1136 pou_body_type = self.Controler.GetEditedElementBodyType(window.GetTagName()) |
1082 pou_body_type = self.Controler.GetEditedElementBodyType(window.GetTagName()) |
1137 self.SetPageBitmap(idx, GenerateBitmap(pou_type, pou_body_type)) |
1083 self.SetPageBitmap(idx, GenerateBitmap(pou_type, pou_body_type)) |
1145 self.SetPageBitmap(idx, GenerateBitmap("CONFIGURATION")) |
1091 self.SetPageBitmap(idx, GenerateBitmap("CONFIGURATION")) |
1146 elif words[0] == "R": |
1092 elif words[0] == "R": |
1147 self.SetPageBitmap(idx, GenerateBitmap("RESOURCE")) |
1093 self.SetPageBitmap(idx, GenerateBitmap("RESOURCE")) |
1148 elif words[0] == "D": |
1094 elif words[0] == "D": |
1149 self.SetPageBitmap(idx, GenerateBitmap("DATATYPE")) |
1095 self.SetPageBitmap(idx, GenerateBitmap("DATATYPE")) |
1150 self.SetPageText(idx, "-".join(words[1:])) |
1096 self.TabsOpened.SetPageText(idx, "-".join(words[1:])) |
1151 |
1097 |
1152 |
1098 |
1153 #------------------------------------------------------------------------------- |
1099 #------------------------------------------------------------------------------- |
1154 # Project Tree Management Functions |
1100 # Project Tree Management Functions |
1155 #------------------------------------------------------------------------------- |
1101 #------------------------------------------------------------------------------- |
1156 |
1102 |
1157 def RefreshProjectTree(self): |
1103 def RefreshTypesTree(self): |
1158 infos = self.Controler.GetProjectInfos() |
1104 infos = self.Controler.GetProjectInfos() |
1159 root = self.ProjectTree.GetRootItem() |
1105 root = self.TypesTree.GetRootItem() |
1160 if not root.IsOk(): |
1106 if not root.IsOk(): |
1161 root = self.ProjectTree.AddRoot(infos["name"]) |
1107 root = self.TypesTree.AddRoot(infos["name"]) |
1162 self.GenerateTreeBranch(root, infos) |
1108 self.GenerateTypesTreeBranch(root, infos) |
1163 self.ProjectTree.Expand(self.ProjectTree.GetRootItem()) |
1109 self.TypesTree.Expand(self.TypesTree.GetRootItem()) |
1164 |
1110 |
1165 def GenerateTreeBranch(self, root, infos): |
1111 def GenerateTypesTreeBranch(self, root, infos, topology=False): |
1166 to_delete = [] |
1112 to_delete = [] |
1167 self.ProjectTree.SetItemText(root, infos["name"]) |
1113 self.TypesTree.SetItemText(root, infos["name"]) |
1168 self.ProjectTree.SetPyData(root, infos["type"]) |
1114 self.TypesTree.SetPyData(root, infos["type"]) |
1169 if infos["tagname"] in self.Errors: |
1115 if infos.get("tagname", None) in self.Errors: |
1170 self.ProjectTree.SetItemBackgroundColour(root, wx.Colour(255, 255, 0)) |
1116 self.TypesTree.SetItemBackgroundColour(root, wx.Colour(255, 255, 0)) |
1171 self.ProjectTree.SetItemTextColour(root, wx.RED) |
1117 self.TypesTree.SetItemTextColour(root, wx.RED) |
1172 else: |
1118 else: |
1173 self.ProjectTree.SetItemBackgroundColour(root, wx.WHITE) |
1119 self.TypesTree.SetItemBackgroundColour(root, wx.WHITE) |
1174 self.ProjectTree.SetItemTextColour(root, wx.BLACK) |
1120 self.TypesTree.SetItemTextColour(root, wx.BLACK) |
1175 if infos["type"] == ITEM_POU : |
1121 if infos["type"] == ITEM_POU: |
1176 self.ProjectTree.SetItemImage(root,self.TreeImageDict[self.Controler.GetPouBodyType(infos["name"])]) |
1122 self.TypesTree.SetItemImage(root, self.TypesTreeImageDict[self.Controler.GetPouBodyType(infos["name"])]) |
1177 else: |
1123 else: |
1178 self.ProjectTree.SetItemImage(root,self.TreeImageDict[infos["type"]]) |
1124 self.TypesTree.SetItemImage(root, self.TypesTreeImageDict[infos["type"]]) |
1179 |
1125 |
1180 if wx.VERSION >= (2, 6, 0): |
1126 if wx.VERSION >= (2, 6, 0): |
1181 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1127 item, root_cookie = self.TypesTree.GetFirstChild(root) |
1182 else: |
1128 else: |
1183 item, root_cookie = self.ProjectTree.GetFirstChild(root, 0) |
1129 item, root_cookie = self.TypesTree.GetFirstChild(root, 0) |
1184 for values in infos["values"]: |
1130 for values in infos["values"]: |
1185 if not item.IsOk(): |
1131 if not item.IsOk(): |
1186 item = self.ProjectTree.AppendItem(root, "") |
1132 item = self.TypesTree.AppendItem(root, "") |
1187 if wx.Platform != '__WXMSW__': |
1133 if wx.Platform != '__WXMSW__': |
1188 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1134 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie) |
1189 self.GenerateTreeBranch(item, values) |
1135 self.GenerateTypesTreeBranch(item, values) |
1190 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1136 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie) |
1191 while item.IsOk(): |
1137 while item.IsOk(): |
1192 to_delete.append(item) |
1138 to_delete.append(item) |
1193 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1139 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie) |
1194 for item in to_delete: |
1140 for item in to_delete: |
1195 self.ProjectTree.Delete(item) |
1141 self.TypesTree.Delete(item) |
1196 |
1142 |
1197 def SelectProjectTreeItem(self, tagname): |
1143 def SelectTypesTreeItem(self, tagname): |
1198 if self.ProjectTree: |
1144 if self.TypesTree: |
1199 root = self.ProjectTree.GetRootItem() |
1145 root = self.TypesTree.GetRootItem() |
1200 words = tagname.split("::") |
1146 words = tagname.split("::") |
1201 if words[0] == "D": |
1147 if words[0] == "D": |
1202 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_DATATYPE)]) |
1148 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_DATATYPE)]) |
1203 elif words[0] == "P": |
1149 elif words[0] == "P": |
1204 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU)]) |
1150 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU)]) |
1205 elif words[0] == "T": |
1151 elif words[0] == "T": |
1206 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)]) |
1152 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_TRANSITION)]) |
1207 elif words[0] == "A": |
1153 elif words[0] == "A": |
1208 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)]) |
1154 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_POU), (words[2], ITEM_ACTION)]) |
1209 elif words[0] == "C": |
1155 elif words[0] == "C": |
1210 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)]) |
1156 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION)]) |
1211 elif words[0] == "R": |
1157 elif words[0] == "R": |
1212 return self.RecursiveProjectTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)]) |
1158 return self.RecursiveTypesTreeItemSelection(root, [(words[1], ITEM_CONFIGURATION), (words[2], ITEM_RESOURCE)]) |
1213 return False |
1159 return False |
1214 |
1160 |
1215 def RecursiveProjectTreeItemSelection(self, root, items): |
1161 def RecursiveTypesTreeItemSelection(self, root, items): |
1216 found = False |
1162 found = False |
1217 if self.ProjectTree: |
1163 if self.TypesTree: |
1218 if wx.VERSION >= (2, 6, 0): |
1164 if wx.VERSION >= (2, 6, 0): |
1219 item, root_cookie = self.ProjectTree.GetFirstChild(root) |
1165 item, root_cookie = self.TypesTree.GetFirstChild(root) |
1220 else: |
1166 else: |
1221 item, root_cookie = self.ProjectTree.GetFirstChild(root, 0) |
1167 item, root_cookie = self.TypesTree.GetFirstChild(root, 0) |
1222 while item.IsOk() and not found: |
1168 while item.IsOk() and not found: |
1223 if (self.ProjectTree.GetItemText(item), self.ProjectTree.GetPyData(item)) == items[0]: |
1169 if (self.TypesTree.GetItemText(item), self.TypesTree.GetPyData(item)) == items[0]: |
1224 if len(items) == 1: |
1170 if len(items) == 1: |
1225 self.SelectedItem = item |
1171 self.SelectedItem = item |
1226 self.ProjectTree.SelectItem(item) |
1172 self.TypesTree.SelectItem(item) |
1227 wx.CallAfter(self.ResetSelectedItem) |
1173 wx.CallAfter(self.ResetSelectedItem) |
1228 return True |
1174 return True |
1229 else: |
1175 else: |
1230 found = self.RecursiveProjectTreeItemSelection(item, items[1:]) |
1176 found = self.RecursiveTypesTreeItemSelection(item, items[1:]) |
1231 else: |
1177 else: |
1232 found = self.RecursiveProjectTreeItemSelection(item, items) |
1178 found = self.RecursiveTypesTreeItemSelection(item, items) |
1233 item, root_cookie = self.ProjectTree.GetNextChild(root, root_cookie) |
1179 item, root_cookie = self.TypesTree.GetNextChild(root, root_cookie) |
1234 return found |
1180 return found |
1235 |
1181 |
1236 def OnProjectTreeBeginDrag(self, event): |
1182 def OnTypesTreeBeginDrag(self, event): |
1237 if wx.Platform == '__WXMSW__': |
1183 if wx.Platform == '__WXMSW__': |
1238 self.SelectedItem = event.GetItem() |
1184 self.SelectedItem = event.GetItem() |
1239 if self.SelectedItem is not None and self.ProjectTree.GetPyData(self.SelectedItem) == ITEM_POU: |
1185 if self.SelectedItem is not None and self.TypesTree.GetPyData(self.SelectedItem) == ITEM_POU: |
1240 block_name = self.ProjectTree.GetItemText(self.SelectedItem) |
1186 block_name = self.TypesTree.GetItemText(self.SelectedItem) |
1241 block_type = self.Controler.GetPouType(block_name) |
1187 block_type = self.Controler.GetPouType(block_name) |
1242 if block_type != "program": |
1188 if block_type != "program": |
1243 data = wx.TextDataObject(str((block_name, block_type, ""))) |
1189 data = wx.TextDataObject(str((block_name, block_type, ""))) |
1244 dragSource = wx.DropSource(self.ProjectTree) |
1190 dragSource = wx.DropSource(self.TypesTree) |
1245 dragSource.SetData(data) |
1191 dragSource.SetData(data) |
1246 dragSource.DoDragDrop() |
1192 dragSource.DoDragDrop() |
1247 self.ResetSelectedItem() |
1193 self.ResetSelectedItem() |
1248 |
1194 |
1249 def OnProjectTreeItemBeginEdit(self, event): |
1195 def OnTypesTreeItemBeginEdit(self, event): |
1250 selected = event.GetItem() |
1196 selected = event.GetItem() |
1251 if self.ProjectTree.GetPyData(selected) in ITEMS_UNEDITABLE: |
1197 if self.TypesTree.GetPyData(selected) in ITEMS_UNEDITABLE: |
1252 event.Veto() |
1198 event.Veto() |
1253 else: |
1199 else: |
1254 event.Skip() |
1200 event.Skip() |
1255 |
1201 |
1256 def OnProjectTreeItemEndEdit(self, event): |
1202 def OnTypesTreeItemEndEdit(self, event): |
1257 message = None |
1203 message = None |
1258 abort = False |
1204 abort = False |
1259 new_name = event.GetLabel() |
1205 new_name = event.GetLabel() |
1260 if new_name != "": |
1206 if new_name != "": |
1261 if not TestIdentifier(new_name): |
1207 if not TestIdentifier(new_name): |
1262 message = "\"%s\" is not a valid identifier!"%new_name |
1208 message = "\"%s\" is not a valid identifier!"%new_name |
1263 elif new_name.upper() in IEC_KEYWORDS: |
1209 elif new_name.upper() in IEC_KEYWORDS: |
1264 message = "\"%s\" is a keyword. It can't be used!"%new_name |
1210 message = "\"%s\" is a keyword. It can't be used!"%new_name |
1265 else: |
1211 else: |
1266 item = event.GetItem() |
1212 item = event.GetItem() |
1267 old_name = self.ProjectTree.GetItemText(item) |
1213 old_name = self.TypesTree.GetItemText(item) |
1268 itemtype = self.ProjectTree.GetPyData(item) |
1214 itemtype = self.TypesTree.GetPyData(item) |
1269 if itemtype == ITEM_PROJECT: |
1215 if itemtype == ITEM_PROJECT: |
1270 self.Controler.SetProjectProperties(name = new_name) |
1216 self.Controler.SetProjectProperties(name = new_name) |
1271 elif itemtype == ITEM_DATATYPE: |
1217 elif itemtype == ITEM_DATATYPE: |
1272 if new_name.upper() in [name.upper() for name in self.Controler.GetProjectDataTypeNames() if name != old_name]: |
1218 if new_name.upper() in [name.upper() for name in self.Controler.GetProjectDataTypeNames() if name != old_name]: |
1273 message = "\"%s\" data type already exists!"%new_name |
1219 message = "\"%s\" data type already exists!"%new_name |
1371 if message: |
1317 if message: |
1372 messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR) |
1318 messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR) |
1373 messageDialog.ShowModal() |
1319 messageDialog.ShowModal() |
1374 messageDialog.Destroy() |
1320 messageDialog.Destroy() |
1375 item = event.GetItem() |
1321 item = event.GetItem() |
1376 wx.CallAfter(self.ProjectTree.EditLabel, item) |
1322 wx.CallAfter(self.TypesTree.EditLabel, item) |
1377 event.Veto() |
1323 event.Veto() |
1378 else: |
1324 else: |
1379 wx.CallAfter(self.RefreshProjectTree) |
1325 wx.CallAfter(self.RefreshTypesTree) |
1380 selected = self.GetPageSelection() |
1326 selected = self.TabsOpened.GetSelection() |
1381 if selected != -1: |
1327 if selected != -1: |
1382 self.GetPage(selected).RefreshView() |
1328 self.TabsOpened.GetPage(selected).RefreshView() |
1383 event.Skip() |
1329 event.Skip() |
1384 |
1330 |
1385 def OnProjectTreeItemActivated(self, event): |
1331 def OnTypesTreeItemActivated(self, event): |
1386 selected = event.GetItem() |
1332 selected = event.GetItem() |
1387 if self.ProjectTree.IsExpanded(selected): |
1333 if self.TypesTree.IsExpanded(selected): |
1388 self.ProjectTree.Collapse(selected) |
1334 self.TypesTree.Collapse(selected) |
1389 else: |
1335 else: |
1390 self.ProjectTree.Expand(selected) |
1336 self.TypesTree.Expand(selected) |
1391 name = self.ProjectTree.GetItemText(selected) |
1337 name = self.TypesTree.GetItemText(selected) |
1392 data = self.ProjectTree.GetPyData(selected) |
1338 data = self.TypesTree.GetPyData(selected) |
1393 if name == "Properties": |
1339 if name == "Properties": |
1394 self.ShowProperties() |
1340 self.ShowProperties() |
1395 if data == ITEM_DATATYPE: |
1341 if data == ITEM_DATATYPE: |
1396 self.EditProjectElement(data, self.Controler.ComputeDataTypeName(name)) |
1342 self.EditProjectElement(data, self.Controler.ComputeDataTypeName(name)) |
1397 elif data == ITEM_POU: |
1343 elif data == ITEM_POU: |
1398 self.EditProjectElement(data, self.Controler.ComputePouName(name)) |
1344 self.EditProjectElement(data, self.Controler.ComputePouName(name)) |
1399 elif data == ITEM_CONFIGURATION: |
1345 elif data == ITEM_CONFIGURATION: |
1400 self.EditProjectElement(data, self.Controler.ComputeConfigurationName(name)) |
1346 self.EditProjectElement(data, self.Controler.ComputeConfigurationName(name)) |
1401 elif data == ITEM_RESOURCE: |
1347 elif data == ITEM_RESOURCE: |
1402 item = self.ProjectTree.GetItemParent(selected) |
1348 item = self.TypesTree.GetItemParent(selected) |
1403 item_type = self.ProjectTree.GetPyData(item) |
1349 item_type = self.TypesTree.GetPyData(item) |
1404 while item_type != ITEM_CONFIGURATION: |
1350 while item_type != ITEM_CONFIGURATION: |
1405 item = self.ProjectTree.GetItemParent(item) |
1351 item = self.TypesTree.GetItemParent(item) |
1406 item_type = self.ProjectTree.GetPyData(item) |
1352 item_type = self.TypesTree.GetPyData(item) |
1407 config_name = self.ProjectTree.GetItemText(item) |
1353 config_name = self.TypesTree.GetItemText(item) |
1408 self.EditProjectElement(data, self.Controler.ComputeConfigurationResourceName(config_name, name)) |
1354 self.EditProjectElement(data, self.Controler.ComputeConfigurationResourceName(config_name, name)) |
1409 elif data in [ITEM_TRANSITION, ITEM_ACTION]: |
1355 elif data in [ITEM_TRANSITION, ITEM_ACTION]: |
1410 item = self.ProjectTree.GetItemParent(selected) |
1356 item = self.TypesTree.GetItemParent(selected) |
1411 item_type = self.ProjectTree.GetPyData(item) |
1357 item_type = self.TypesTree.GetPyData(item) |
1412 while item_type != ITEM_POU: |
1358 while item_type != ITEM_POU: |
1413 item = self.ProjectTree.GetItemParent(item) |
1359 item = self.TypesTree.GetItemParent(item) |
1414 item_type = self.ProjectTree.GetPyData(item) |
1360 item_type = self.TypesTree.GetPyData(item) |
1415 pou_name = self.ProjectTree.GetItemText(item) |
1361 pou_name = self.TypesTree.GetItemText(item) |
1416 if data == ITEM_TRANSITION: |
1362 if data == ITEM_TRANSITION: |
1417 tagname = self.Controler.ComputePouTransitionName(pou_name, name) |
1363 tagname = self.Controler.ComputePouTransitionName(pou_name, name) |
1418 elif data == ITEM_ACTION: |
1364 elif data == ITEM_ACTION: |
1419 tagname = self.Controler.ComputePouActionName(pou_name, name) |
1365 tagname = self.Controler.ComputePouActionName(pou_name, name) |
1420 self.EditProjectElement(data, tagname) |
1366 self.EditProjectElement(data, tagname) |
1421 event.Skip() |
1367 event.Skip() |
1422 |
1368 |
1423 def ProjectTreeItemSelect(self, select_item): |
1369 def TypesTreeItemSelect(self, select_item): |
1424 name = self.ProjectTree.GetItemText(select_item) |
1370 name = self.TypesTree.GetItemText(select_item) |
1425 data = self.ProjectTree.GetPyData(select_item) |
1371 data = self.TypesTree.GetPyData(select_item) |
1426 if data == ITEM_DATATYPE: |
1372 if data == ITEM_DATATYPE: |
1427 self.EditProjectElement(data, self.Controler.ComputeDataTypeName(name), True) |
1373 self.EditProjectElement(data, self.Controler.ComputeDataTypeName(name), True) |
1428 elif data == ITEM_POU: |
1374 elif data == ITEM_POU: |
1429 self.EditProjectElement(data, self.Controler.ComputePouName(name), True) |
1375 self.EditProjectElement(data, self.Controler.ComputePouName(name), True) |
1430 elif data == ITEM_CONFIGURATION: |
1376 elif data == ITEM_CONFIGURATION: |
1431 self.EditProjectElement(data, self.Controler.ComputeConfigurationName(name), True) |
1377 self.EditProjectElement(data, self.Controler.ComputeConfigurationName(name), True) |
1432 elif data == ITEM_RESOURCE: |
1378 elif data == ITEM_RESOURCE: |
1433 item = self.ProjectTree.GetItemParent(select_item) |
1379 item = self.TypesTree.GetItemParent(select_item) |
1434 item_type = self.ProjectTree.GetPyData(item) |
1380 item_type = self.TypesTree.GetPyData(item) |
1435 while item_type != ITEM_CONFIGURATION: |
1381 while item_type != ITEM_CONFIGURATION: |
1436 item = self.ProjectTree.GetItemParent(item) |
1382 item = self.TypesTree.GetItemParent(item) |
1437 item_type = self.ProjectTree.GetPyData(item) |
1383 item_type = self.TypesTree.GetPyData(item) |
1438 config_name = self.ProjectTree.GetItemText(item) |
1384 config_name = self.TypesTree.GetItemText(item) |
1439 self.EditProjectElement(data, self.Controler.ComputeConfigurationResourceName(config_name, name), True) |
1385 self.EditProjectElement(data, self.Controler.ComputeConfigurationResourceName(config_name, name), True) |
1440 elif data in [ITEM_TRANSITION, ITEM_ACTION]: |
1386 elif data in [ITEM_TRANSITION, ITEM_ACTION]: |
1441 item = self.ProjectTree.GetItemParent(select_item) |
1387 item = self.TypesTree.GetItemParent(select_item) |
1442 item_type = self.ProjectTree.GetPyData(item) |
1388 item_type = self.TypesTree.GetPyData(item) |
1443 while item_type != ITEM_POU: |
1389 while item_type != ITEM_POU: |
1444 item = self.ProjectTree.GetItemParent(item) |
1390 item = self.TypesTree.GetItemParent(item) |
1445 item_type = self.ProjectTree.GetPyData(item) |
1391 item_type = self.TypesTree.GetPyData(item) |
1446 pou_name = self.ProjectTree.GetItemText(item) |
1392 pou_name = self.TypesTree.GetItemText(item) |
1447 if data == ITEM_TRANSITION: |
1393 if data == ITEM_TRANSITION: |
1448 tagname = self.Controler.ComputePouTransitionName(pou_name, name) |
1394 tagname = self.Controler.ComputePouTransitionName(pou_name, name) |
1449 elif data == ITEM_ACTION: |
1395 elif data == ITEM_ACTION: |
1450 tagname = self.Controler.ComputePouActionName(pou_name, name) |
1396 tagname = self.Controler.ComputePouActionName(pou_name, name) |
1451 self.EditProjectElement(data, tagname, True) |
1397 self.EditProjectElement(data, tagname, True) |
1452 |
1398 |
1453 def OnProjectTreeLeftUp(self, event): |
1399 def OnTypesTreeLeftUp(self, event): |
1454 if self.SelectedItem is not None: |
1400 if self.SelectedItem is not None: |
1455 self.ProjectTree.SelectItem(self.SelectedItem) |
1401 self.TypesTree.SelectItem(self.SelectedItem) |
1456 self.ProjectTreeItemSelect(self.SelectedItem) |
1402 self.TypesTreeItemSelect(self.SelectedItem) |
1457 wx.CallAfter(self.ResetSelectedItem) |
1403 wx.CallAfter(self.ResetSelectedItem) |
1458 event.Skip() |
1404 event.Skip() |
1459 |
1405 |
1460 def OnProjectTreeItemSelected(self, event): |
1406 def OnTypesTreeItemSelected(self, event): |
1461 self.ProjectTreeItemSelect(event.GetItem()) |
1407 self.TypesTreeItemSelect(event.GetItem()) |
1462 event.Skip() |
1408 event.Skip() |
1463 |
1409 |
1464 def OnProjectTreeItemChanging(self, event): |
1410 def OnTypesTreeItemChanging(self, event): |
1465 if self.ProjectTree.GetPyData(event.GetItem()) not in ITEMS_UNEDITABLE and self.SelectedItem is None: |
1411 if self.TypesTree.GetPyData(event.GetItem()) not in ITEMS_UNEDITABLE and self.SelectedItem is None: |
1466 self.SelectedItem = event.GetItem() |
1412 self.SelectedItem = event.GetItem() |
1467 event.Veto() |
1413 event.Veto() |
1468 else: |
1414 else: |
1469 event.Skip() |
1415 event.Skip() |
1470 |
1416 |
1471 def EditProjectElement(self, elementtype, tagname, onlyopened = False): |
1417 def EditProjectElement(self, elementtype, tagname, onlyopened = False): |
1472 openedidx = self.IsOpened(tagname) |
1418 openedidx = self.IsOpened(tagname) |
1473 if openedidx is not None: |
1419 if openedidx is not None: |
1474 old_selected = self.GetPageSelection() |
1420 old_selected = self.TabsOpened.GetSelection() |
1475 if old_selected != openedidx: |
1421 if old_selected != openedidx: |
1476 if old_selected >= 0: |
1422 if old_selected >= 0: |
1477 self.GetPage(old_selected).ResetBuffer() |
1423 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
1478 self.SetPageSelection(openedidx) |
1424 self.TabsOpened.SetSelection(openedidx) |
1479 self.GetPage(openedidx).RefreshView() |
1425 self.TabsOpened.GetPage(openedidx).RefreshView() |
1480 self.VariablePanelIndexer.ChangeVariablePanel(tagname) |
1426 self.VariablePanelIndexer.ChangeVariablePanel(tagname) |
1481 self.RefreshPageTitles() |
1427 self.RefreshPageTitles() |
1482 self.RefreshFileMenu() |
1428 self.RefreshFileMenu() |
1483 self.RefreshEditMenu() |
1429 self.RefreshEditMenu() |
1484 self.RefreshToolBar() |
1430 self.RefreshToolBar() |
1485 elif not onlyopened: |
1431 elif not onlyopened: |
1486 if wx.VERSION >= (2, 8, 0): |
|
1487 if elementtype == ITEM_CONFIGURATION: |
|
1488 new_window = MDIConfigurationEditor(self, tagname, self, self.Controler) |
|
1489 elif elementtype == ITEM_RESOURCE: |
|
1490 new_window = MDIResourceEditor(self, tagname, self, self.Controler) |
|
1491 elif elementtype in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]: |
|
1492 bodytype = self.Controler.GetEditedElementBodyType(tagname) |
|
1493 if bodytype == "FBD": |
|
1494 new_window = MDIViewer(self, tagname, self, self.Controler) |
|
1495 new_window.GetViewer().RefreshScaling(False) |
|
1496 elif bodytype == "LD": |
|
1497 new_window = LD_MDIViewer(self, tagname, self, self.Controler) |
|
1498 new_window.GetViewer().RefreshScaling(False) |
|
1499 elif bodytype == "SFC": |
|
1500 new_window = SFC_MDIViewer(self, tagname, self, self.Controler) |
|
1501 new_window.GetViewer().RefreshScaling(False) |
|
1502 else: |
|
1503 new_window = TextMDIViewer(self, tagname, self, self.Controler) |
|
1504 viewer = new_window.GetViewer() |
|
1505 viewer.SetTextSyntax(elementtype) |
|
1506 if bodytype == "IL": |
|
1507 viewer.SetKeywords(IL_KEYWORDS) |
|
1508 else: |
|
1509 viewer.SetKeywords(ST_KEYWORDS) |
|
1510 elif elementtype == ITEM_DATATYPE: |
|
1511 new_window = MDIDataTypeEditor(self, tagname, self, self.Controler) |
|
1512 new_window.Bind(wx.EVT_ACTIVATE, self.OnPouSelectedChanged) |
|
1513 new_window.Bind(wx.EVT_CLOSE, self.OnPageClose) |
|
1514 new_window.Layout() |
|
1515 else: |
|
1516 if elementtype == ITEM_CONFIGURATION: |
|
1517 new_window = ConfigurationEditor(self.TabsOpened, tagname, self, self.Controler) |
|
1518 self.TabsOpened.AddPage(new_window, "") |
|
1519 elif elementtype == ITEM_RESOURCE: |
|
1520 new_window = ResourceEditor(self.TabsOpened, tagname, self, self.Controler) |
|
1521 self.TabsOpened.AddPage(new_window, "") |
|
1522 elif elementtype in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]: |
|
1523 bodytype = self.Controler.GetEditedElementBodyType(tagname) |
|
1524 if bodytype == "FBD": |
|
1525 new_window = Viewer(self.TabsOpened, tagname, self, self.Controler) |
|
1526 new_window.RefreshScaling(False) |
|
1527 elif bodytype == "LD": |
|
1528 new_window = LD_Viewer(self.TabsOpened, tagname, self, self.Controler) |
|
1529 new_window.RefreshScaling(False) |
|
1530 elif bodytype == "SFC": |
|
1531 new_window = SFC_Viewer(self.TabsOpened, tagname, self, self.Controler) |
|
1532 new_window.RefreshScaling(False) |
|
1533 else: |
|
1534 new_window = TextViewer(self.TabsOpened, tagname, self, self.Controler) |
|
1535 new_window.SetTextSyntax(elementtype) |
|
1536 if bodytype == "IL": |
|
1537 new_window.SetKeywords(IL_KEYWORDS) |
|
1538 else: |
|
1539 new_window.SetKeywords(ST_KEYWORDS) |
|
1540 self.TabsOpened.AddPage(new_window, "") |
|
1541 elif elementtype == ITEM_DATATYPE: |
|
1542 new_window = DataTypeEditor(self.TabsOpened, tagname, self, self.Controler) |
|
1543 self.TabsOpened.AddPage(new_window, "") |
|
1544 if elementtype == ITEM_CONFIGURATION: |
1432 if elementtype == ITEM_CONFIGURATION: |
|
1433 new_window = ConfigurationEditor(self.TabsOpened, tagname, self, self.Controler) |
|
1434 self.TabsOpened.AddPage(new_window, "") |
1545 self.VariablePanelIndexer.AddVariablePanel(tagname, "config") |
1435 self.VariablePanelIndexer.AddVariablePanel(tagname, "config") |
1546 elif elementtype == ITEM_RESOURCE: |
1436 elif elementtype == ITEM_RESOURCE: |
|
1437 new_window = ResourceEditor(self.TabsOpened, tagname, self, self.Controler) |
|
1438 self.TabsOpened.AddPage(new_window, "") |
1547 self.VariablePanelIndexer.AddVariablePanel(tagname, "resource") |
1439 self.VariablePanelIndexer.AddVariablePanel(tagname, "resource") |
1548 elif elementtype in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]: |
1440 elif elementtype in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]: |
|
1441 bodytype = self.Controler.GetEditedElementBodyType(tagname) |
|
1442 if bodytype == "FBD": |
|
1443 new_window = Viewer(self.TabsOpened, tagname, self, self.Controler) |
|
1444 new_window.RefreshScaling(False) |
|
1445 elif bodytype == "LD": |
|
1446 new_window = LD_Viewer(self.TabsOpened, tagname, self, self.Controler) |
|
1447 new_window.RefreshScaling(False) |
|
1448 elif bodytype == "SFC": |
|
1449 new_window = SFC_Viewer(self.TabsOpened, tagname, self, self.Controler) |
|
1450 new_window.RefreshScaling(False) |
|
1451 else: |
|
1452 new_window = TextViewer(self.TabsOpened, tagname, self, self.Controler) |
|
1453 new_window.SetTextSyntax(elementtype) |
|
1454 if bodytype == "IL": |
|
1455 new_window.SetKeywords(IL_KEYWORDS) |
|
1456 else: |
|
1457 new_window.SetKeywords(ST_KEYWORDS) |
|
1458 self.TabsOpened.AddPage(new_window, "") |
1549 words = tagname.split("::") |
1459 words = tagname.split("::") |
1550 self.VariablePanelIndexer.AddVariablePanel(tagname, self.Controler.GetPouType(words[1])) |
1460 self.VariablePanelIndexer.AddVariablePanel(tagname, self.Controler.GetPouType(words[1])) |
|
1461 elif elementtype == ITEM_DATATYPE: |
|
1462 new_window = DataTypeEditor(self.TabsOpened, tagname, self, self.Controler) |
|
1463 self.TabsOpened.AddPage(new_window, "") |
1551 self.VariablePanelIndexer.ChangeVariablePanel(tagname) |
1464 self.VariablePanelIndexer.ChangeVariablePanel(tagname) |
1552 openedidx = self.IsOpened(tagname) |
1465 openedidx = self.IsOpened(tagname) |
1553 old_selected = self.GetPageSelection() |
1466 old_selected = self.TabsOpened.GetSelection() |
1554 if old_selected != openedidx: |
1467 if old_selected != openedidx: |
1555 if old_selected >= 0: |
1468 if old_selected >= 0: |
1556 self.GetPage(old_selected).ResetBuffer() |
1469 self.TabsOpened.GetPage(old_selected).ResetBuffer() |
1557 for i in xrange(self.GetPageCount()): |
1470 for i in xrange(self.TabsOpened.GetPageCount()): |
1558 window = self.GetPage(i) |
1471 window = self.TabsOpened.GetPage(i) |
1559 if window.GetTagName() == tagname: |
1472 if window.GetTagName() == tagname: |
1560 self.SetPageSelection(i) |
1473 self.TabsOpened.SetSelection(i) |
1561 window.RefreshView() |
1474 window.RefreshView() |
1562 window.SetFocus() |
1475 window.SetFocus() |
1563 self.RefreshPageTitles() |
1476 self.RefreshPageTitles() |
1564 self.RefreshFileMenu() |
1477 self.RefreshFileMenu() |
1565 self.RefreshEditMenu() |
1478 self.RefreshEditMenu() |
1566 self.RefreshToolBar() |
1479 self.RefreshToolBar() |
1567 |
1480 |
1568 def OnProjectTreeRightUp(self, event): |
1481 def OnTypesTreeRightUp(self, event): |
1569 if wx.Platform == '__WXMSW__': |
1482 if wx.Platform == '__WXMSW__': |
1570 item = event.GetItem() |
1483 item = event.GetItem() |
1571 else: |
1484 else: |
1572 item = self.ProjectTree.GetSelection() |
1485 item = self.TypesTree.GetSelection() |
1573 name = self.ProjectTree.GetItemText(item) |
1486 name = self.TypesTree.GetItemText(item) |
1574 type = self.ProjectTree.GetPyData(item) |
1487 type = self.TypesTree.GetPyData(item) |
1575 if type == ITEM_POU: |
1488 if type == ITEM_POU: |
1576 menu = wx.Menu(title='') |
1489 menu = wx.Menu(title='') |
1577 if self.Controler.GetPouBodyType(name) == "SFC": |
1490 if self.Controler.GetPouBodyType(name) == "SFC": |
1578 new_id = wx.NewId() |
1491 new_id = wx.NewId() |
1579 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Transition") |
1492 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Transition") |
1629 self.PopupMenu(menu) |
1542 self.PopupMenu(menu) |
1630 elif name == "Transitions": |
1543 elif name == "Transitions": |
1631 menu = wx.Menu(title='') |
1544 menu = wx.Menu(title='') |
1632 new_id = wx.NewId() |
1545 new_id = wx.NewId() |
1633 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Transition") |
1546 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Transition") |
1634 parent = self.ProjectTree.GetItemParent(item) |
1547 parent = self.TypesTree.GetItemParent(item) |
1635 parent_type = self.ProjectTree.GetPyData(parent) |
1548 parent_type = self.TypesTree.GetPyData(parent) |
1636 while parent_type != ITEM_POU: |
1549 while parent_type != ITEM_POU: |
1637 parent = self.ProjectTree.GetItemParent(parent) |
1550 parent = self.TypesTree.GetItemParent(parent) |
1638 parent_type = self.ProjectTree.GetPyData(parent) |
1551 parent_type = self.TypesTree.GetPyData(parent) |
1639 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.ProjectTree.GetItemText(parent)), id=new_id) |
1552 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1640 self.PopupMenu(menu) |
1553 self.PopupMenu(menu) |
1641 elif name == "Actions": |
1554 elif name == "Actions": |
1642 menu = wx.Menu(title='') |
1555 menu = wx.Menu(title='') |
1643 new_id = wx.NewId() |
1556 new_id = wx.NewId() |
1644 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Action") |
1557 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Action") |
1645 parent = self.ProjectTree.GetItemParent(item) |
1558 parent = self.TypesTree.GetItemParent(item) |
1646 parent_type = self.ProjectTree.GetPyData(parent) |
1559 parent_type = self.TypesTree.GetPyData(parent) |
1647 while parent_type != ITEM_POU: |
1560 while parent_type != ITEM_POU: |
1648 parent = self.ProjectTree.GetItemParent(parent) |
1561 parent = self.TypesTree.GetItemParent(parent) |
1649 parent_type = self.ProjectTree.GetPyData(parent) |
1562 parent_type = self.TypesTree.GetPyData(parent) |
1650 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.ProjectTree.GetItemText(parent)), id=new_id) |
1563 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1651 self.PopupMenu(menu) |
1564 self.PopupMenu(menu) |
1652 elif name == "Resources": |
1565 elif name == "Resources": |
1653 menu = wx.Menu(title='') |
1566 menu = wx.Menu(title='') |
1654 new_id = wx.NewId() |
1567 new_id = wx.NewId() |
1655 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Resource") |
1568 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text="Add Resource") |
1656 parent = self.ProjectTree.GetItemParent(item) |
1569 parent = self.TypesTree.GetItemParent(item) |
1657 parent_type = self.ProjectTree.GetPyData(parent) |
1570 parent_type = self.TypesTree.GetPyData(parent) |
1658 while parent_type != ITEM_CONFIGURATION: |
1571 while parent_type != ITEM_CONFIGURATION: |
1659 parent = self.ProjectTree.GetItemParent(parent) |
1572 parent = self.TypesTree.GetItemParent(parent) |
1660 parent_type = self.ProjectTree.GetPyData(parent) |
1573 parent_type = self.TypesTree.GetPyData(parent) |
1661 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.ProjectTree.GetItemText(parent)), id=new_id) |
1574 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(self.TypesTree.GetItemText(parent)), id=new_id) |
1662 self.PopupMenu(menu) |
1575 self.PopupMenu(menu) |
1663 event.Skip() |
1576 event.Skip() |
1664 |
1577 |
|
1578 |
|
1579 #------------------------------------------------------------------------------- |
|
1580 # Topology Tree Management Functions |
|
1581 #------------------------------------------------------------------------------- |
|
1582 |
|
1583 def RefreshInstancesTree(self): |
|
1584 infos = self.Controler.GetProjectTopology() |
|
1585 root = self.InstancesTree.GetRootItem() |
|
1586 if not root.IsOk(): |
|
1587 root = self.InstancesTree.AddRoot(infos["name"]) |
|
1588 self.GenerateInstancesTreeBranch(root, infos) |
|
1589 self.InstancesTree.Expand(self.InstancesTree.GetRootItem()) |
|
1590 |
|
1591 def GenerateInstancesTreeBranch(self, root, infos): |
|
1592 to_delete = [] |
|
1593 if infos.get("elmt_type", None) is not None: |
|
1594 self.InstancesTree.SetItemText(root, "%s(%s)"%(infos["name"], infos["elmt_type"])) |
|
1595 else: |
|
1596 self.InstancesTree.SetItemText(root, infos["name"]) |
|
1597 self.InstancesTree.SetPyData(root, infos["type"]) |
|
1598 self.InstancesTree.SetItemImage(root, self.InstancesTreeImageDict[infos["type"]]) |
|
1599 |
|
1600 if wx.VERSION >= (2, 6, 0): |
|
1601 item, root_cookie = self.InstancesTree.GetFirstChild(root) |
|
1602 else: |
|
1603 item, root_cookie = self.InstancesTree.GetFirstChild(root, 0) |
|
1604 for values in infos["values"]: |
|
1605 if not item.IsOk(): |
|
1606 item = self.InstancesTree.AppendItem(root, "") |
|
1607 if wx.Platform != '__WXMSW__': |
|
1608 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
|
1609 self.GenerateInstancesTreeBranch(item, values) |
|
1610 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
|
1611 while item.IsOk(): |
|
1612 to_delete.append(item) |
|
1613 item, root_cookie = self.InstancesTree.GetNextChild(root, root_cookie) |
|
1614 for item in to_delete: |
|
1615 self.InstancesTree.Delete(item) |
1665 |
1616 |
1666 #------------------------------------------------------------------------------- |
1617 #------------------------------------------------------------------------------- |
1667 # ToolBar Management Functions |
1618 # ToolBar Management Functions |
1668 #------------------------------------------------------------------------------- |
1619 #------------------------------------------------------------------------------- |
1669 |
1620 |
1740 else: |
1691 else: |
1741 tool = self.Panes["ToolBar"].FindById(id) |
1692 tool = self.Panes["ToolBar"].FindById(id) |
1742 tool.SetToggle(False) |
1693 tool.SetToggle(False) |
1743 |
1694 |
1744 def OnSelectionTool(self, event): |
1695 def OnSelectionTool(self, event): |
1745 selected = self.GetPageSelection() |
1696 selected = self.TabsOpened.GetSelection() |
1746 if selected != -1: |
1697 if selected != -1: |
1747 self.GetPage(selected).SetMode(MODE_SELECTION) |
1698 self.TabsOpened.GetPage(selected).SetMode(MODE_SELECTION) |
1748 event.Skip() |
1699 event.Skip() |
1749 |
1700 |
1750 def OnCommentTool(self, event): |
1701 def OnCommentTool(self, event): |
1751 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCOMMENT) |
1702 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCOMMENT) |
1752 selected = self.GetPageSelection() |
1703 selected = self.TabsOpened.GetSelection() |
1753 if selected != -1: |
1704 if selected != -1: |
1754 self.GetPage(selected).SetMode(MODE_COMMENT) |
1705 self.TabsOpened.GetPage(selected).SetMode(MODE_COMMENT) |
1755 event.Skip() |
1706 event.Skip() |
1756 |
1707 |
1757 def OnVariableTool(self, event): |
1708 def OnVariableTool(self, event): |
1758 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARVARIABLE) |
1709 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARVARIABLE) |
1759 selected = self.GetPageSelection() |
1710 selected = self.TabsOpened.GetSelection() |
1760 if selected != -1: |
1711 if selected != -1: |
1761 self.GetPage(selected).SetMode(MODE_VARIABLE) |
1712 self.TabsOpened.GetPage(selected).SetMode(MODE_VARIABLE) |
1762 event.Skip() |
1713 event.Skip() |
1763 |
1714 |
1764 def OnBlockTool(self, event): |
1715 def OnBlockTool(self, event): |
1765 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARBLOCK) |
1716 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARBLOCK) |
1766 selected = self.GetPageSelection() |
1717 selected = self.TabsOpened.GetSelection() |
1767 if selected != -1: |
1718 if selected != -1: |
1768 self.GetPage(selected).SetMode(MODE_BLOCK) |
1719 self.TabsOpened.GetPage(selected).SetMode(MODE_BLOCK) |
1769 event.Skip() |
1720 event.Skip() |
1770 |
1721 |
1771 def OnConnectionTool(self, event): |
1722 def OnConnectionTool(self, event): |
1772 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCONNECTION) |
1723 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCONNECTION) |
1773 selected = self.GetPageSelection() |
1724 selected = self.TabsOpened.GetSelection() |
1774 if selected != -1: |
1725 if selected != -1: |
1775 self.GetPage(selected).SetMode(MODE_CONNECTION) |
1726 self.TabsOpened.GetPage(selected).SetMode(MODE_CONNECTION) |
1776 event.Skip() |
1727 event.Skip() |
1777 |
1728 |
1778 def OnPowerRailTool(self, event): |
1729 def OnPowerRailTool(self, event): |
1779 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARPOWERRAIL) |
1730 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARPOWERRAIL) |
1780 selected = self.GetPageSelection() |
1731 selected = self.TabsOpened.GetSelection() |
1781 if selected != -1: |
1732 if selected != -1: |
1782 self.GetPage(selected).SetMode(MODE_POWERRAIL) |
1733 self.TabsOpened.GetPage(selected).SetMode(MODE_POWERRAIL) |
1783 event.Skip() |
1734 event.Skip() |
1784 |
1735 |
1785 def OnRungTool(self, event): |
1736 def OnRungTool(self, event): |
1786 selected = self.GetPageSelection() |
1737 selected = self.TabsOpened.GetSelection() |
1787 if selected != -1: |
1738 if selected != -1: |
1788 self.GetPage(selected).AddLadderRung() |
1739 self.TabsOpened.GetPage(selected).AddLadderRung() |
1789 event.Skip() |
1740 event.Skip() |
1790 |
1741 |
1791 def OnCoilTool(self, event): |
1742 def OnCoilTool(self, event): |
1792 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCOIL) |
1743 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCOIL) |
1793 selected = self.GetPageSelection() |
1744 selected = self.TabsOpened.GetSelection() |
1794 if selected != -1: |
1745 if selected != -1: |
1795 self.GetPage(selected).SetMode(MODE_COIL) |
1746 self.TabsOpened.GetPage(selected).SetMode(MODE_COIL) |
1796 event.Skip() |
1747 event.Skip() |
1797 |
1748 |
1798 def OnContactTool(self, event): |
1749 def OnContactTool(self, event): |
1799 if self.DrawingMode == FREEDRAWING_MODE: |
1750 if self.DrawingMode == FREEDRAWING_MODE: |
1800 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCONTACT) |
1751 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARCONTACT) |
1801 selected = self.GetPageSelection() |
1752 selected = self.TabsOpened.GetSelection() |
1802 if selected != -1: |
1753 if selected != -1: |
1803 if self.DrawingMode == FREEDRAWING_MODE: |
1754 if self.DrawingMode == FREEDRAWING_MODE: |
1804 self.GetPage(selected).SetMode(MODE_CONTACT) |
1755 self.TabsOpened.GetPage(selected).SetMode(MODE_CONTACT) |
1805 else: |
1756 else: |
1806 self.GetPage(selected).AddLadderContact() |
1757 self.TabsOpened.GetPage(selected).AddLadderContact() |
1807 event.Skip() |
1758 event.Skip() |
1808 |
1759 |
1809 def OnBranchTool(self, event): |
1760 def OnBranchTool(self, event): |
1810 selected = self.GetPageSelection() |
1761 selected = self.TabsOpened.GetSelection() |
1811 if selected != -1: |
1762 if selected != -1: |
1812 self.GetPage(selected).AddLadderBranch() |
1763 self.TabsOpened.GetPage(selected).AddLadderBranch() |
1813 event.Skip() |
1764 event.Skip() |
1814 |
1765 |
1815 def OnInitialStepTool(self, event): |
1766 def OnInitialStepTool(self, event): |
1816 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARINITIALSTEP) |
1767 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARINITIALSTEP) |
1817 selected = self.GetPageSelection() |
1768 selected = self.TabsOpened.GetSelection() |
1818 if selected != -1: |
1769 if selected != -1: |
1819 self.GetPage(selected).SetMode(MODE_INITIALSTEP) |
1770 self.TabsOpened.GetPage(selected).SetMode(MODE_INITIALSTEP) |
1820 event.Skip() |
1771 event.Skip() |
1821 |
1772 |
1822 def OnStepTool(self, event): |
1773 def OnStepTool(self, event): |
1823 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1774 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1824 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARSTEP) |
1775 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARSTEP) |
1825 selected = self.GetPageSelection() |
1776 selected = self.TabsOpened.GetSelection() |
1826 if selected != -1: |
1777 if selected != -1: |
1827 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1778 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1828 self.GetPage(selected).SetMode(MODE_STEP) |
1779 self.TabsOpened.GetPage(selected).SetMode(MODE_STEP) |
1829 else: |
1780 else: |
1830 self.GetPage(selected).AddStep() |
1781 self.TabsOpened.GetPage(selected).AddStep() |
1831 event.Skip() |
1782 event.Skip() |
1832 |
1783 |
1833 def OnActionBlockTool(self, event): |
1784 def OnActionBlockTool(self, event): |
1834 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1785 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1835 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARACTIONBLOCK) |
1786 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARACTIONBLOCK) |
1836 selected = self.GetPageSelection() |
1787 selected = self.TabsOpened.GetSelection() |
1837 if selected != -1: |
1788 if selected != -1: |
1838 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1789 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1839 self.GetPage(selected).SetMode(MODE_ACTION) |
1790 self.TabsOpened.GetPage(selected).SetMode(MODE_ACTION) |
1840 else: |
1791 else: |
1841 self.GetPage(selected).AddStepAction() |
1792 self.TabsOpened.GetPage(selected).AddStepAction() |
1842 event.Skip() |
1793 event.Skip() |
1843 |
1794 |
1844 def OnTransitionTool(self, event): |
1795 def OnTransitionTool(self, event): |
1845 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARTRANSITION) |
1796 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARTRANSITION) |
1846 selected = self.GetPageSelection() |
1797 selected = self.TabsOpened.GetSelection() |
1847 if selected != -1: |
1798 if selected != -1: |
1848 self.GetPage(selected).SetMode(MODE_TRANSITION) |
1799 self.TabsOpened.GetPage(selected).SetMode(MODE_TRANSITION) |
1849 event.Skip() |
1800 event.Skip() |
1850 |
1801 |
1851 def OnDivergenceTool(self, event): |
1802 def OnDivergenceTool(self, event): |
1852 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1803 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1853 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARDIVERGENCE) |
1804 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARDIVERGENCE) |
1854 selected = self.GetPageSelection() |
1805 selected = self.TabsOpened.GetSelection() |
1855 if selected != -1: |
1806 if selected != -1: |
1856 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1807 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1857 self.GetPage(selected).SetMode(MODE_DIVERGENCE) |
1808 self.TabsOpened.GetPage(selected).SetMode(MODE_DIVERGENCE) |
1858 else: |
1809 else: |
1859 self.GetPage(selected).AddDivergence() |
1810 self.TabsOpened.GetPage(selected).AddDivergence() |
1860 event.Skip() |
1811 event.Skip() |
1861 |
1812 |
1862 def OnJumpTool(self, event): |
1813 def OnJumpTool(self, event): |
1863 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1814 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1864 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARJUMP) |
1815 self.ResetToolToggle(ID_PLCOPENEDITORTOOLBARJUMP) |
1865 selected = self.GetPageSelection() |
1816 selected = self.TabsOpened.GetSelection() |
1866 if selected != -1: |
1817 if selected != -1: |
1867 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1818 if self.GetDrawingMode() == FREEDRAWING_MODE: |
1868 self.GetPage(selected).SetMode(MODE_JUMP) |
1819 self.TabsOpened.GetPage(selected).SetMode(MODE_JUMP) |
1869 else: |
1820 else: |
1870 self.GetPage(selected).AddJump() |
1821 self.TabsOpened.GetPage(selected).AddJump() |
1871 event.Skip() |
1822 event.Skip() |
1872 |
1823 |
1873 |
1824 |
1874 #------------------------------------------------------------------------------- |
1825 #------------------------------------------------------------------------------- |
1875 # Add Project Elements Functions |
1826 # Add Project Elements Functions |
1952 if dialog.ShowModal() == wx.ID_OK: |
1903 if dialog.ShowModal() == wx.ID_OK: |
1953 value = dialog.GetValue() |
1904 value = dialog.GetValue() |
1954 self.Controler.ProjectAddConfigurationResource(config_name, value) |
1905 self.Controler.ProjectAddConfigurationResource(config_name, value) |
1955 self.RefreshTitle() |
1906 self.RefreshTitle() |
1956 self.RefreshEditMenu() |
1907 self.RefreshEditMenu() |
1957 self.RefreshProjectTree() |
1908 self.RefreshTypesTree() |
1958 dialog.Destroy() |
1909 dialog.Destroy() |
1959 event.Skip() |
1910 event.Skip() |
1960 return OnAddResourceMenu |
1911 return OnAddResourceMenu |
1961 |
1912 |
1962 |
1913 |
1963 #------------------------------------------------------------------------------- |
1914 #------------------------------------------------------------------------------- |
1964 # Remove Project Elements Functions |
1915 # Remove Project Elements Functions |
1965 #------------------------------------------------------------------------------- |
1916 #------------------------------------------------------------------------------- |
1966 |
1917 |
1967 def OnRemoveDataTypeMenu(self, event): |
1918 def OnRemoveDataTypeMenu(self, event): |
1968 selected = self.ProjectTree.GetSelection() |
1919 selected = self.TypesTree.GetSelection() |
1969 if self.ProjectTree.GetPyData(selected) == ITEM_DATATYPE: |
1920 if self.TypesTree.GetPyData(selected) == ITEM_DATATYPE: |
1970 name = self.ProjectTree.GetItemText(selected) |
1921 name = self.TypesTree.GetItemText(selected) |
1971 if not self.Controler.DataTypeIsUsed(name): |
1922 if not self.Controler.DataTypeIsUsed(name): |
1972 self.Controler.ProjectRemoveDataType(name) |
1923 self.Controler.ProjectRemoveDataType(name) |
1973 tagname = self.Controler.ComputeDataTypeName(name) |
1924 tagname = self.Controler.ComputeDataTypeName(name) |
1974 idx = self.IsOpened(tagname) |
1925 idx = self.IsOpened(tagname) |
1975 if idx is not None: |
1926 if idx is not None: |
1976 self.DeletePage(idx) |
1927 self.TabsOpened.DeletePage(idx) |
1977 self.RefreshTitle() |
1928 self.RefreshTitle() |
1978 self.RefreshEditMenu() |
1929 self.RefreshEditMenu() |
1979 self.RefreshProjectTree() |
1930 self.RefreshTypesTree() |
1980 self.RefreshToolBar() |
1931 self.RefreshToolBar() |
1981 else: |
1932 else: |
1982 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
1933 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
1983 message.ShowModal() |
1934 message.ShowModal() |
1984 message.Destroy() |
1935 message.Destroy() |
1985 event.Skip() |
1936 event.Skip() |
1986 |
1937 |
1987 def OnRemovePouMenu(self, event): |
1938 def OnRemovePouMenu(self, event): |
1988 selected = self.ProjectTree.GetSelection() |
1939 selected = self.TypesTree.GetSelection() |
1989 if self.ProjectTree.GetPyData(selected) == ITEM_POU: |
1940 if self.TypesTree.GetPyData(selected) == ITEM_POU: |
1990 name = self.ProjectTree.GetItemText(selected) |
1941 name = self.TypesTree.GetItemText(selected) |
1991 if not self.Controler.PouIsUsed(name): |
1942 if not self.Controler.PouIsUsed(name): |
1992 self.Controler.ProjectRemovePou(name) |
1943 self.Controler.ProjectRemovePou(name) |
1993 tagname = self.Controler.ComputePouName(name) |
1944 tagname = self.Controler.ComputePouName(name) |
1994 idx = self.IsOpened(tagname) |
1945 idx = self.IsOpened(tagname) |
1995 if idx is not None: |
1946 if idx is not None: |
1996 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
1947 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
1997 self.DeletePage(idx) |
1948 self.TabsOpened.DeletePage(idx) |
1998 self.RefreshTitle() |
1949 self.RefreshTitle() |
1999 self.RefreshEditMenu() |
1950 self.RefreshEditMenu() |
2000 self.RefreshProjectTree() |
1951 self.RefreshTypesTree() |
2001 self.RefreshToolBar() |
1952 self.RefreshToolBar() |
2002 else: |
1953 else: |
2003 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
1954 message = wx.MessageDialog(self, "%s is used by one or more POUs. It can't be removed!"%selected, "Error", wx.OK|wx.ICON_ERROR) |
2004 message.ShowModal() |
1955 message.ShowModal() |
2005 message.Destroy() |
1956 message.Destroy() |
2006 event.Skip() |
1957 event.Skip() |
2007 |
1958 |
2008 def OnRemoveConfigurationMenu(self, event): |
1959 def OnRemoveConfigurationMenu(self, event): |
2009 selected = self.ProjectTree.GetSelection() |
1960 selected = self.TypesTree.GetSelection() |
2010 if self.ProjectTree.GetPyData(selected) == ITEM_CONFIGURATION: |
1961 if self.TypesTree.GetPyData(selected) == ITEM_CONFIGURATION: |
2011 name = self.ProjectTree.GetItemText(selected) |
1962 name = self.TypesTree.GetItemText(selected) |
2012 self.Controler.ProjectRemoveConfiguration(name) |
1963 self.Controler.ProjectRemoveConfiguration(name) |
2013 tagname = self.Controler.ComputeConfigurationName(name) |
1964 tagname = self.Controler.ComputeConfigurationName(name) |
2014 idx = self.IsOpened(tagname) |
1965 idx = self.IsOpened(tagname) |
2015 if idx is not None: |
1966 if idx is not None: |
2016 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
1967 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
2017 self.DeletePage(idx) |
1968 self.TabsOpened.DeletePage(idx) |
2018 self.RefreshTitle() |
1969 self.RefreshTitle() |
2019 self.RefreshEditMenu() |
1970 self.RefreshEditMenu() |
2020 self.RefreshProjectTree() |
1971 self.RefreshTypesTree() |
2021 event.Skip() |
1972 event.Skip() |
2022 |
1973 |
2023 def OnRemoveTransitionMenu(self, event): |
1974 def OnRemoveTransitionMenu(self, event): |
2024 selected = self.ProjectTree.GetSelection() |
1975 selected = self.TypesTree.GetSelection() |
2025 if self.ProjectTree.GetPyData(selected) == ITEM_TRANSITION: |
1976 if self.TypesTree.GetPyData(selected) == ITEM_TRANSITION: |
2026 transition = self.ProjectTree.GetItemText(selected) |
1977 transition = self.TypesTree.GetItemText(selected) |
2027 item = self.ProjectTree.GetItemParent(selected) |
1978 item = self.TypesTree.GetItemParent(selected) |
2028 item_type = self.ProjectTree.GetPyData(item) |
1979 item_type = self.TypesTree.GetPyData(item) |
2029 while item_type != ITEM_POU: |
1980 while item_type != ITEM_POU: |
2030 item = self.ProjectTree.GetItemParent(item) |
1981 item = self.TypesTree.GetItemParent(item) |
2031 item_type = self.ProjectTree.GetPyData(item) |
1982 item_type = self.TypesTree.GetPyData(item) |
2032 pou_name = self.ProjectTree.GetItemText(item) |
1983 pou_name = self.TypesTree.GetItemText(item) |
2033 self.Controler.ProjectRemovePouTransition(pou_name, transition) |
1984 self.Controler.ProjectRemovePouTransition(pou_name, transition) |
2034 tagname = self.Controler.ComputePouTransitionName(pou_name, transition) |
1985 tagname = self.Controler.ComputePouTransitionName(pou_name, transition) |
2035 idx = self.IsOpened(tagname) |
1986 idx = self.IsOpened(tagname) |
2036 if idx is not None: |
1987 if idx is not None: |
2037 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
1988 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
2038 self.DeletePage(idx) |
1989 self.TabsOpened.DeletePage(idx) |
2039 self.RefreshTitle() |
1990 self.RefreshTitle() |
2040 self.RefreshEditMenu() |
1991 self.RefreshEditMenu() |
2041 self.RefreshProjectTree() |
1992 self.RefreshTypesTree() |
2042 event.Skip() |
1993 event.Skip() |
2043 |
1994 |
2044 def OnRemoveActionMenu(self, event): |
1995 def OnRemoveActionMenu(self, event): |
2045 selected = self.ProjectTree.GetSelection() |
1996 selected = self.TypesTree.GetSelection() |
2046 if self.ProjectTree.GetPyData(selected) == ITEM_ACTION: |
1997 if self.TypesTree.GetPyData(selected) == ITEM_ACTION: |
2047 action = self.ProjectTree.GetItemText(selected) |
1998 action = self.TypesTree.GetItemText(selected) |
2048 item = self.ProjectTree.GetItemParent(selected) |
1999 item = self.TypesTree.GetItemParent(selected) |
2049 item_type = self.ProjectTree.GetPyData(item) |
2000 item_type = self.TypesTree.GetPyData(item) |
2050 while item_type != ITEM_POU: |
2001 while item_type != ITEM_POU: |
2051 item = self.ProjectTree.GetItemParent(item) |
2002 item = self.TypesTree.GetItemParent(item) |
2052 item_type = self.ProjectTree.GetPyData(item) |
2003 item_type = self.TypesTree.GetPyData(item) |
2053 pou_name = self.ProjectTree.GetItemText(item) |
2004 pou_name = self.TypesTree.GetItemText(item) |
2054 self.Controler.ProjectRemovePouAction(pou_name, action) |
2005 self.Controler.ProjectRemovePouAction(pou_name, action) |
2055 tagname = self.Controler.ComputePouActionName(pou_name, action) |
2006 tagname = self.Controler.ComputePouActionName(pou_name, action) |
2056 idx = self.IsOpened(tagname) |
2007 idx = self.IsOpened(tagname) |
2057 if idx is not None: |
2008 if idx is not None: |
2058 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
2009 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
2059 self.DeletePage(idx) |
2010 self.TabsOpened.DeletePage(idx) |
2060 self.RefreshTitle() |
2011 self.RefreshTitle() |
2061 self.RefreshEditMenu() |
2012 self.RefreshEditMenu() |
2062 self.RefreshProjectTree() |
2013 self.RefreshTypesTree() |
2063 event.Skip() |
2014 event.Skip() |
2064 |
2015 |
2065 def OnRemoveResourceMenu(self, event): |
2016 def OnRemoveResourceMenu(self, event): |
2066 selected = self.ProjectTree.GetSelection() |
2017 selected = self.TypesTree.GetSelection() |
2067 if self.ProjectTree.GetPyData(selected) == ITEM_RESOURCE: |
2018 if self.TypesTree.GetPyData(selected) == ITEM_RESOURCE: |
2068 resource = self.ProjectTree.GetItemText(selected) |
2019 resource = self.TypesTree.GetItemText(selected) |
2069 item = self.ProjectTree.GetItemParent(selected) |
2020 item = self.TypesTree.GetItemParent(selected) |
2070 item_type = self.ProjectTree.GetPyData(item) |
2021 item_type = self.TypesTree.GetPyData(item) |
2071 while item_type != ITEM_CONFIGURATION: |
2022 while item_type != ITEM_CONFIGURATION: |
2072 item = self.ProjectTree.GetItemParent(item) |
2023 item = self.TypesTree.GetItemParent(item) |
2073 item_type = self.ProjectTree.GetPyData(item) |
2024 item_type = self.TypesTree.GetPyData(item) |
2074 config_name = self.ProjectTree.GetItemText(item) |
2025 config_name = self.TypesTree.GetItemText(item) |
2075 self.Controler.ProjectRemoveConfigurationResource(config_name, resource) |
2026 self.Controler.ProjectRemoveConfigurationResource(config_name, resource) |
2076 tagname = self.Controler.ComputeConfigurationResourceName(config_name, selected) |
2027 tagname = self.Controler.ComputeConfigurationResourceName(config_name, selected) |
2077 idx = self.IsOpened(tagname) |
2028 idx = self.IsOpened(tagname) |
2078 if idx is not None: |
2029 if idx is not None: |
2079 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
2030 self.VariablePanelIndexer.RemoveVariablePanel(tagname) |
2080 self.DeletePage(idx) |
2031 self.TabsOpened.DeletePage(idx) |
2081 self.RefreshTitle() |
2032 self.RefreshTitle() |
2082 self.RefreshEditMenu() |
2033 self.RefreshEditMenu() |
2083 self.RefreshProjectTree() |
2034 self.RefreshTypesTree() |
2084 event.Skip() |
2035 event.Skip() |
2085 |
2036 |
2086 def OnPLCOpenEditorMenu(self, event): |
2037 def OnPLCOpenEditorMenu(self, event): |
2087 wx.MessageBox("No documentation available.\nComing soon.") |
2038 wx.MessageBox("No documentation available.\nComing soon.") |
2088 #event.Skip() |
2039 #event.Skip() |