PLCOpenEditor.py
changeset 118 0c53d6a36013
parent 114 06454545e5d0
child 120 add8e391e00c
equal deleted inserted replaced
117:bbe0697cf1ea 118:0c53d6a36013
   363         self._init_ctrls(parent)
   363         self._init_ctrls(parent)
   364         
   364         
   365         if wx.Platform != '__WXMSW__':
   365         if wx.Platform != '__WXMSW__':
   366             self.TreeImageList = wx.ImageList(16, 16)
   366             self.TreeImageList = wx.ImageList(16, 16)
   367             for language in LANGUAGES:
   367             for language in LANGUAGES:
   368                 self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images','%s.png'%language)))
   368                 self.TreeImageList.Add(wx.Bitmap(os.path.join(CWD, 'Images', '%s.png'%language)))
   369             self.ProjectTree.AssignImageList(self.TreeImageList)
   369             self.ProjectTree.AssignImageList(self.TreeImageList)
   370         
   370         
   371         if self.ModeSolo:
   371         if self.ModeSolo:
   372             self.Controler = PLCControler()
   372             self.Controler = PLCControler()
   373             if fileOpen:
   373             if fileOpen:
   812                 message = "\"%s\" is not a valid identifier!"%new_name
   812                 message = "\"%s\" is not a valid identifier!"%new_name
   813             elif new_name.upper() in IEC_KEYWORDS:
   813             elif new_name.upper() in IEC_KEYWORDS:
   814                 message = "\"%s\" is a keyword. It can't be used!"%new_name
   814                 message = "\"%s\" is a keyword. It can't be used!"%new_name
   815             else:
   815             else:
   816                 item = event.GetItem()
   816                 item = event.GetItem()
       
   817                 old_name = self.ProjectTree.GetItemText(item)
   817                 itemtype = self.ProjectTree.GetPyData(item)
   818                 itemtype = self.ProjectTree.GetPyData(item)
   818                 if itemtype == ITEM_PROJECT:
   819                 if itemtype == ITEM_PROJECT:
   819                     self.Controler.SetProjectProperties(name = new_name)
   820                     self.Controler.SetProjectProperties(name = new_name)
   820                 elif itemtype == ITEM_POU:
   821                 elif itemtype == ITEM_POU:
   821                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   822                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames() if name != old_name]:
   822                         message = "\"%s\" pou already exists!"%new_name
   823                         message = "\"%s\" pou already exists!"%new_name
   823                         abort = True
   824                         abort = True
   824                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables()]:
   825                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables()]:
   825                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   826                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   826                         if messageDialog.ShowModal() == wx.ID_NO:
   827                         if messageDialog.ShowModal() == wx.ID_NO:
   827                             abort = True
   828                             abort = True
   828                         messageDialog.Destroy()
   829                         messageDialog.Destroy()
   829                     if not abort:
   830                     if not abort:
   830                         old_name = self.ProjectTree.GetItemText(item)
       
   831                         self.Controler.ChangePouName(old_name, new_name)
   831                         self.Controler.ChangePouName(old_name, new_name)
   832                         self.RefreshEditorNames(itemtype, old_name, new_name)
   832                         self.RefreshEditorNames(itemtype, old_name, new_name)
   833                         self.RefreshTabsOpenedTitles()
   833                         self.RefreshTabsOpenedTitles()
   834                 elif itemtype == ITEM_TRANSITION:
   834                 elif itemtype == ITEM_TRANSITION:
   835                     parent = self.ProjectTree.GetItemParent(item)
   835                     parent = self.ProjectTree.GetItemParent(item)
   838                         parent = self.ProjectTree.GetItemParent(parent)
   838                         parent = self.ProjectTree.GetItemParent(parent)
   839                         parent_type = self.ProjectTree.GetPyData(parent)
   839                         parent_type = self.ProjectTree.GetPyData(parent)
   840                     pou_name = self.ProjectTree.GetItemText(parent)
   840                     pou_name = self.ProjectTree.GetItemText(parent)
   841                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   841                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   842                         message = "A pou with \"%s\" as name exists!"%new_name
   842                         message = "A pou with \"%s\" as name exists!"%new_name
   843                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name)]:
   843                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name) if name != old_name]:
   844                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   844                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   845                     else:
   845                     else:
   846                         old_name = self.ProjectTree.GetItemText(item)
       
   847                         self.Controler.ChangePouTransitionName(pou_name, old_name, new_name)
   846                         self.Controler.ChangePouTransitionName(pou_name, old_name, new_name)
   848                         self.RefreshEditorNames(itemtype, old_name, new_name)
   847                         self.RefreshEditorNames(itemtype, old_name, new_name)
   849                         self.RefreshTabsOpenedTitles()
   848                         self.RefreshTabsOpenedTitles()
   850                 elif itemtype == ITEM_ACTION:
   849                 elif itemtype == ITEM_ACTION:
   851                     parent = self.ProjectTree.GetItemParent(item)
   850                     parent = self.ProjectTree.GetItemParent(item)
   854                         parent = self.ProjectTree.GetItemParent(parent)
   853                         parent = self.ProjectTree.GetItemParent(parent)
   855                         parent_type = self.ProjectTree.GetPyData(parent)
   854                         parent_type = self.ProjectTree.GetPyData(parent)
   856                     pou_name = self.ProjectTree.GetItemText(parent)
   855                     pou_name = self.ProjectTree.GetItemText(parent)
   857                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   856                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   858                         message = "A pou with \"%s\" as name exists!"%new_name
   857                         message = "A pou with \"%s\" as name exists!"%new_name
   859                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name)]:
   858                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name) if name != old_name]:
   860                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   859                         message = "A variable with \"%s\" as name already exists in this pou!"%new_name
   861                     else:
   860                     else:
   862                         old_name = self.ProjectTree.GetItemText(item)
       
   863                         self.Controler.ChangePouActionName(pou_name, old_name, new_name)
   861                         self.Controler.ChangePouActionName(pou_name, old_name, new_name)
   864                         self.RefreshEditorNames(itemtype, old_name, new_name)
   862                         self.RefreshEditorNames(itemtype, old_name, new_name)
   865                         self.RefreshTabsOpenedTitles()
   863                         self.RefreshTabsOpenedTitles()
   866                 elif itemtype == ITEM_CONFIGURATION:
   864                 elif itemtype == ITEM_CONFIGURATION:
   867                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectConfigNames()]:
   865                     if new_name.upper() in [name.upper() for name in self.Controler.GetProjectConfigNames() if name != old_name]:
   868                         message = "\"%s\" config already exists!"%new_name
   866                         message = "\"%s\" config already exists!"%new_name
   869                         abort = True
   867                         abort = True
   870                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   868                     elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]:
   871                         messageDialog = wx.MessageDialog(self, "A pou is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   869                         messageDialog = wx.MessageDialog(self, "A pou is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   872                         if messageDialog.ShowModal() == wx.ID_NO:
   870                         if messageDialog.ShowModal() == wx.ID_NO:
   876                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   874                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   877                         if messageDialog.ShowModal() == wx.ID_NO:
   875                         if messageDialog.ShowModal() == wx.ID_NO:
   878                             abort = True
   876                             abort = True
   879                         messageDialog.Destroy()
   877                         messageDialog.Destroy()
   880                     if not abort:
   878                     if not abort:
   881                         old_name = self.ProjectTree.GetItemText(item)
       
   882                         self.Controler.ChangeConfigurationName(old_name, new_name)
   879                         self.Controler.ChangeConfigurationName(old_name, new_name)
   883                         self.RefreshEditorNames(itemtype, old_name, new_name)
   880                         self.RefreshEditorNames(itemtype, old_name, new_name)
   884                         self.RefreshTabsOpenedTitles()
   881                         self.RefreshTabsOpenedTitles()
   885                 elif itemtype == ITEM_RESOURCE:
   882                 elif itemtype == ITEM_RESOURCE:
   886                     parent = self.ProjectTree.GetItemParent(item)
   883                     parent = self.ProjectTree.GetItemParent(item)
   901                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   898                         messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION)
   902                         if messageDialog.ShowModal() == wx.ID_NO:
   899                         if messageDialog.ShowModal() == wx.ID_NO:
   903                             abort = True
   900                             abort = True
   904                         messageDialog.Destroy()
   901                         messageDialog.Destroy()
   905                     if not abort:
   902                     if not abort:
   906                         old_name = self.ProjectTree.GetItemText(item)
       
   907                         self.Controler.ChangeConfigurationResourceName(config_name, old_name, new_name)
   903                         self.Controler.ChangeConfigurationResourceName(config_name, old_name, new_name)
   908                         self.RefreshEditorNames(itemtype, old_name, new_name)
   904                         self.RefreshEditorNames(itemtype, old_name, new_name)
   909                         self.RefreshTabsOpenedTitles()
   905                         self.RefreshTabsOpenedTitles()
   910             if message or abort:
   906             if message or abort:
   911                 if message:
   907                 if message:
   916                 wx.CallAfter(self.ProjectTree.EditLabel, item)
   912                 wx.CallAfter(self.ProjectTree.EditLabel, item)
   917                 event.Veto()
   913                 event.Veto()
   918             else:
   914             else:
   919                 wx.CallAfter(self.RefreshProjectTree)
   915                 wx.CallAfter(self.RefreshProjectTree)
   920                 window = self.TabsOpened.GetCurrentPage()
   916                 window = self.TabsOpened.GetCurrentPage()
   921                 window.RefreshView()
   917                 if window:
       
   918                     window.RefreshView()
   922                 event.Skip()
   919                 event.Skip()
   923 
   920 
   924     def OnProjectTreeItemBeginEdit(self, event):
   921     def OnProjectTreeItemBeginEdit(self, event):
   925         selected = event.GetItem()
   922         selected = event.GetItem()
   926         if self.ProjectTree.GetPyData(selected) == ITEM_UNEDITABLE:
   923         if self.ProjectTree.GetPyData(selected) == ITEM_UNEDITABLE:
  1379     def _init_coll_flexGridSizer1_Growables(self, parent):
  1376     def _init_coll_flexGridSizer1_Growables(self, parent):
  1380         parent.AddGrowableCol(0)
  1377         parent.AddGrowableCol(0)
  1381         parent.AddGrowableRow(0)
  1378         parent.AddGrowableRow(0)
  1382     
  1379     
  1383     def _init_coll_MainSizer_Items(self, parent):
  1380     def _init_coll_MainSizer_Items(self, parent):
  1384         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
  1381         parent.AddWindow(self.staticText1, 0, border=4, flag=wx.GROW|wx.TOP)
  1385         parent.AddWindow(self.ProjectName, 0, border=0, flag=wx.GROW)
  1382         parent.AddWindow(self.ProjectName, 0, border=0, flag=wx.GROW)
  1386         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
  1383         parent.AddWindow(self.staticText2, 0, border=4, flag=wx.GROW|wx.TOP)
  1387         parent.AddWindow(self.CompanyName, 0, border=0, flag=wx.GROW)
  1384         parent.AddWindow(self.CompanyName, 0, border=0, flag=wx.GROW)
  1388         parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
  1385         parent.AddWindow(self.staticText3, 0, border=4, flag=wx.GROW|wx.TOP)
  1389         parent.AddWindow(self.CompanyURL, 0, border=0, flag=wx.GROW)
  1386         parent.AddWindow(self.CompanyURL, 0, border=0, flag=wx.GROW)
  1390         parent.AddWindow(self.staticText4, 0, border=0, flag=wx.GROW)
  1387         parent.AddWindow(self.staticText4, 0, border=4, flag=wx.GROW|wx.TOP)
  1391         parent.AddWindow(self.ProductName, 0, border=0, flag=wx.GROW)
  1388         parent.AddWindow(self.ProductName, 0, border=0, flag=wx.GROW)
  1392         parent.AddWindow(self.staticText5, 0, border=0, flag=wx.GROW)
  1389         parent.AddWindow(self.staticText5, 0, border=4, flag=wx.GROW|wx.TOP)
  1393         parent.AddWindow(self.ProductVersion, 0, border=0, flag=wx.GROW)
  1390         parent.AddWindow(self.ProductVersion, 0, border=0, flag=wx.GROW)
  1394         parent.AddWindow(self.staticText6, 0, border=0, flag=wx.GROW)
  1391         parent.AddWindow(self.staticText6, 0, border=4, flag=wx.GROW|wx.TOP)
  1395         parent.AddWindow(self.ProductRelease, 0, border=0, flag=wx.GROW)
  1392         parent.AddWindow(self.ProductRelease, 0, border=0, flag=wx.GROW)
  1396         parent.AddWindow(self.staticText7, 0, border=0, flag=wx.GROW)
  1393         parent.AddWindow(self.staticText7, 0, border=4, flag=wx.GROW|wx.TOP)
  1397         parent.AddWindow(self.ContentDescription, 0, border=0, flag=wx.GROW)
  1394         parent.AddWindow(self.ContentDescription, 0, border=0, flag=wx.GROW)
  1398         
  1395         
  1399     def _init_coll_MainSizer_Growables(self, parent):
  1396     def _init_coll_MainSizer_Growables(self, parent):
  1400         parent.AddGrowableCol(1)
  1397         parent.AddGrowableCol(1)
  1401         parent.AddGrowableRow(6)
  1398         parent.AddGrowableRow(6)
  1562     def _init_coll_flexGridSizer1_Growables(self, parent):
  1559     def _init_coll_flexGridSizer1_Growables(self, parent):
  1563         parent.AddGrowableCol(0)
  1560         parent.AddGrowableCol(0)
  1564         parent.AddGrowableRow(0)
  1561         parent.AddGrowableRow(0)
  1565     
  1562     
  1566     def _init_coll_MainSizer_Items(self, parent):
  1563     def _init_coll_MainSizer_Items(self, parent):
  1567         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
  1564         parent.AddWindow(self.staticText1, 0, border=4, flag=wx.GROW|wx.TOP)
  1568         parent.AddWindow(self.PouName, 0, border=0, flag=wx.GROW)
  1565         parent.AddWindow(self.PouName, 0, border=0, flag=wx.GROW)
  1569         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
  1566         parent.AddWindow(self.staticText2, 0, border=4, flag=wx.GROW|wx.TOP)
  1570         parent.AddWindow(self.PouType, 0, border=0, flag=wx.GROW)
  1567         parent.AddWindow(self.PouType, 0, border=0, flag=wx.GROW)
  1571         parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW)
  1568         parent.AddWindow(self.staticText3, 0, border=4, flag=wx.GROW|wx.TOP)
  1572         parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
  1569         parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
  1573         
  1570         
  1574     def _init_coll_MainSizer_Growables(self, parent):
  1571     def _init_coll_MainSizer_Growables(self, parent):
  1575         parent.AddGrowableCol(1)
  1572         parent.AddGrowableCol(1)
  1576         
  1573         
  1734     def _init_coll_flexGridSizer1_Growables(self, parent):
  1731     def _init_coll_flexGridSizer1_Growables(self, parent):
  1735         parent.AddGrowableCol(0)
  1732         parent.AddGrowableCol(0)
  1736         parent.AddGrowableRow(0)
  1733         parent.AddGrowableRow(0)
  1737     
  1734     
  1738     def _init_coll_MainSizer_Items(self, parent):
  1735     def _init_coll_MainSizer_Items(self, parent):
  1739         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
  1736         parent.AddWindow(self.staticText1, 0, border=4, flag=wx.GROW|wx.TOP)
  1740         parent.AddWindow(self.TransitionName, 0, border=0, flag=wx.GROW)
  1737         parent.AddWindow(self.TransitionName, 0, border=0, flag=wx.GROW)
  1741         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
  1738         parent.AddWindow(self.staticText2, 0, border=4, flag=wx.GROW|wx.TOP)
  1742         parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
  1739         parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
  1743         
  1740         
  1744     def _init_coll_MainSizer_Growables(self, parent):
  1741     def _init_coll_MainSizer_Growables(self, parent):
  1745         parent.AddGrowableCol(1)
  1742         parent.AddGrowableCol(1)
  1746         
  1743         
  1873     def _init_coll_flexGridSizer1_Growables(self, parent):
  1870     def _init_coll_flexGridSizer1_Growables(self, parent):
  1874         parent.AddGrowableCol(0)
  1871         parent.AddGrowableCol(0)
  1875         parent.AddGrowableRow(0)
  1872         parent.AddGrowableRow(0)
  1876     
  1873     
  1877     def _init_coll_MainSizer_Items(self, parent):
  1874     def _init_coll_MainSizer_Items(self, parent):
  1878         parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW)
  1875         parent.AddWindow(self.staticText1, 0, border=4, flag=wx.GROW|wx.TOP)
  1879         parent.AddWindow(self.ActionName, 0, border=0, flag=wx.GROW)
  1876         parent.AddWindow(self.ActionName, 0, border=0, flag=wx.GROW)
  1880         parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW)
  1877         parent.AddWindow(self.staticText2, 0, border=4, flag=wx.GROW|wx.TOP)
  1881         parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
  1878         parent.AddWindow(self.Language, 0, border=0, flag=wx.GROW)
  1882         
  1879         
  1883     def _init_coll_MainSizer_Growables(self, parent):
  1880     def _init_coll_MainSizer_Growables(self, parent):
  1884         parent.AddGrowableCol(1)
  1881         parent.AddGrowableCol(1)
  1885         
  1882