PLCOpenEditor.py
changeset 294 4a36f2ec8967
parent 292 800e100038ae
child 298 1b1a3ee785da
equal deleted inserted replaced
293:dbc366959daf 294:4a36f2ec8967
   421             
   421             
   422             if USE_AUI:
   422             if USE_AUI:
   423                 self.TabsOpened = wx.aui.AuiNotebook(self)
   423                 self.TabsOpened = wx.aui.AuiNotebook(self)
   424                 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED,
   424                 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED,
   425                         self.OnPouSelectedChanged)
   425                         self.OnPouSelectedChanged)
       
   426                 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE,
       
   427                         self.OnPageClose)
   426                 self.AUIManager.AddPane(self.TabsOpened, wx.aui.AuiPaneInfo().CentrePane())
   428                 self.AUIManager.AddPane(self.TabsOpened, wx.aui.AuiPaneInfo().CentrePane())
   427             else:
   429             else:
   428                 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   430                 self.TabsOpened = wx.Notebook(id=ID_PLCOPENEDITORTABSOPENED,
   429                       name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
   431                       name='TabsOpened', parent=self.MainSplitter, pos=wx.Point(0,
   430                       0), size=wx.Size(0, 0), style=0)
   432                       0), size=wx.Size(0, 0), style=0)
   468                 self.AUIManager.AddPane(self.VariablePanelIndexer, wx.aui.AuiPaneInfo().Caption("Variables").Bottom().Layer(0).BestSize(wx.Size(800, 200)).CloseButton(False))
   470                 self.AUIManager.AddPane(self.VariablePanelIndexer, wx.aui.AuiPaneInfo().Caption("Variables").Bottom().Layer(0).BestSize(wx.Size(800, 200)).CloseButton(False))
   469             
   471             
   470                 self.TabsOpened = wx.aui.AuiNotebook(self)
   472                 self.TabsOpened = wx.aui.AuiNotebook(self)
   471                 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED,
   473                 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED,
   472                         self.OnPouSelectedChanged)
   474                         self.OnPouSelectedChanged)
       
   475                 self.TabsOpened.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE,
       
   476                         self.OnPageClose)
   473                 self.AUIManager.AddPane(self.TabsOpened, wx.aui.AuiPaneInfo().CentrePane().MinSize(wx.Size(0, 0)))
   477                 self.AUIManager.AddPane(self.TabsOpened, wx.aui.AuiPaneInfo().CentrePane().MinSize(wx.Size(0, 0)))
   474             
   478             
   475                 self.LibraryPanel = wx.Panel(id=ID_PLCOPENEDITORLIBRARYPANEL,
   479                 self.LibraryPanel = wx.Panel(id=ID_PLCOPENEDITORLIBRARYPANEL,
   476                       name='LibraryPanel', parent=self, pos=wx.Point(0,
   480                       name='LibraryPanel', parent=self, pos=wx.Point(0,
   477                       0), size=wx.Size(0, 0), style=0)
   481                       0), size=wx.Size(0, 0), style=0)
   615 
   619 
   616     def ResetSelectedItem(self):
   620     def ResetSelectedItem(self):
   617         self.SelectedItem = None
   621         self.SelectedItem = None
   618 
   622 
   619     def OnPageClose(self, event):
   623     def OnPageClose(self, event):
   620         selected = self.TabsOpened.GetSelection()
   624         selected = event.GetSelection()
   621         if selected >= 0:
   625         if selected >= 0:
   622             tagname = self.GetPage(selected).GetTagName()
   626             if not self.Debug:
   623             self.VariablePanelIndexer.RemoveVariablePanel(tagname)
   627                 tagname = self.TabsOpened.GetPage(selected).GetTagName()
       
   628                 self.VariablePanelIndexer.RemoveVariablePanel(tagname)
   624             if self.TabsOpened.GetPageCount() > 0:
   629             if self.TabsOpened.GetPageCount() > 0:
   625                 new_index = min(selected, self.TabsOpened.GetPageCount() - 1)
   630                 new_index = min(selected, self.TabsOpened.GetPageCount() - 1)
   626                 tagname = self.GetPage(new_index).GetTagName()
       
   627                 self.TabsOpened.SetSelection(new_index)
   631                 self.TabsOpened.SetSelection(new_index)
   628                 self.VariablePanelIndexer.ChangeVariablePanel(tagname)
   632                 if not self.Debug:
       
   633                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
       
   634                     self.VariablePanelIndexer.ChangeVariablePanel(tagname)
   629             self.RefreshTitle()
   635             self.RefreshTitle()
   630             self.RefreshFileMenu()
   636             self.RefreshFileMenu()
   631             self.RefreshEditMenu()
   637             self.RefreshEditMenu()
   632             self.RefreshToolBar()
   638             self.RefreshToolBar()
   633         event.Skip()
   639         event.Skip()
   820         event.Skip()
   826         event.Skip()
   821 
   827 
   822     def OnCloseTabMenu(self, event):
   828     def OnCloseTabMenu(self, event):
   823         selected = self.TabsOpened.GetSelection()
   829         selected = self.TabsOpened.GetSelection()
   824         if selected >= 0:
   830         if selected >= 0:
   825             self.TabsOpened.DeletePage(selected)
       
   826             if not self.Debug:
   831             if not self.Debug:
   827                 tagname = self.TabsOpened.GetPage(selected).GetTagName()
   832                 tagname = self.TabsOpened.GetPage(selected).GetTagName()
   828                 self.VariablePanelIndexer.RemoveVariablePanel(tagname)
   833                 self.VariablePanelIndexer.RemoveVariablePanel(tagname)
       
   834             self.TabsOpened.DeletePage(selected)
   829             if self.TabsOpened.GetPageCount() > 0:
   835             if self.TabsOpened.GetPageCount() > 0:
   830                 new_index = min(selected, self.TabsOpened.GetPageCount() - 1)
   836                 new_index = min(selected, self.TabsOpened.GetPageCount() - 1)
   831                 self.TabsOpened.SetSelection(new_index)
   837                 self.TabsOpened.SetSelection(new_index)
   832                 if not self.Debug:
   838                 if not self.Debug:
   833                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
   839                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
  1055         self.RefreshLibraryTree()
  1061         self.RefreshLibraryTree()
  1056         event.Skip()
  1062         event.Skip()
  1057 
  1063 
  1058     def OnCutMenu(self, event):
  1064     def OnCutMenu(self, event):
  1059         control = self.FindFocus()
  1065         control = self.FindFocus()
  1060         if isinstance(control, Viewer):
  1066         if isinstance(control, (Viewer, TextViewer)):
  1061             control.Cut()
  1067             control.Cut()
  1062         else:
  1068         elif isinstance(control, wx.TextCtrl):
  1063             control.ProcessEvent(event)
  1069             control.ProcessEvent(event)
  1064         event.Skip()
  1070         event.Skip()
  1065     
  1071     
  1066     def OnCopyMenu(self, event):
  1072     def OnCopyMenu(self, event):
  1067         control = self.FindFocus()
  1073         control = self.FindFocus()
  1068         if isinstance(control, Viewer):
  1074         if isinstance(control, (Viewer, TextViewer)):
  1069             control.Copy()
  1075             control.Copy()
  1070         else:
  1076         elif isinstance(control, wx.TextCtrl):
  1071             control.ProcessEvent(event)
  1077             control.ProcessEvent(event)
  1072         event.Skip()
  1078         event.Skip()
  1073     
  1079     
  1074     def OnPasteMenu(self, event):
  1080     def OnPasteMenu(self, event):
  1075         control = self.FindFocus()
  1081         control = self.FindFocus()
  1076         if isinstance(control, Viewer):
  1082         if isinstance(control, (Viewer, TextViewer)):
  1077             control.Paste()
  1083             control.Paste()
  1078         else:
  1084         elif isinstance(control, wx.TextCtrl):
  1079             control.ProcessEvent(event)
  1085             control.ProcessEvent(event)
  1080         event.Skip()
  1086         event.Skip()
  1081     
  1087     
  1082     def OnDeleteMenu(self, event):
  1088     def OnDeleteMenu(self, event):
  1083         window = self.FindFocus()
  1089         window = self.FindFocus()
  3521         self.VariablePanelList[tagname] = new_panel
  3527         self.VariablePanelList[tagname] = new_panel
  3522         
  3528         
  3523     def RemoveVariablePanel(self, tagname):
  3529     def RemoveVariablePanel(self, tagname):
  3524         if tagname in self.VariablePanelList:
  3530         if tagname in self.VariablePanelList:
  3525             panel = self.VariablePanelList.pop(tagname)
  3531             panel = self.VariablePanelList.pop(tagname)
  3526             panel.Hide()
       
  3527             self.MainSizer.Remove(panel)
  3532             self.MainSizer.Remove(panel)
       
  3533             panel.Destroy()
  3528             if self.CurrentPanel == tagname:
  3534             if self.CurrentPanel == tagname:
  3529                 self.CurrentPanel = None
  3535                 self.CurrentPanel = None
  3530     
  3536     
  3531     def RemoveAllPanels(self):
  3537     def RemoveAllPanels(self):
  3532         if self.CurrentPanel is not None and self.CurrentPanel in self.VariablePanelList:
  3538         for tagname in self.VariablePanelList.keys():
  3533             self.VariablePanelList[self.CurrentPanel].Hide()
  3539             self.RemoveVariablePanel(tagname)
  3534         self.VariablePanelList = {}
       
  3535         self.MainSizer.Clear()
       
  3536         self.CurrentPanel = None
       
  3537     
  3540     
  3538     def UpdateVariablePanelTagName(self, old_tagname, new_tagname):
  3541     def UpdateVariablePanelTagName(self, old_tagname, new_tagname):
  3539         if old_tagname in self.VariablePanelList:
  3542         if old_tagname in self.VariablePanelList:
  3540             self.VariablePanelList[new_tagname] = self.VariablePanelList.pop(old_tagname)
  3543             self.VariablePanelList[new_tagname] = self.VariablePanelList.pop(old_tagname)
  3541             if self.CurrentPanel == old_tagname:
  3544             if self.CurrentPanel == old_tagname:
  3937             wx.grid.EVT_GRID_CELL_LEFT_CLICK(self.VariablesGrid, self.OnVariablesGridCellLeftClick)
  3940             wx.grid.EVT_GRID_CELL_LEFT_CLICK(self.VariablesGrid, self.OnVariablesGridCellLeftClick)
  3938             wx.grid.EVT_GRID_EDITOR_SHOWN(self.VariablesGrid, self.OnVariablesGridEditorShown)
  3941             wx.grid.EVT_GRID_EDITOR_SHOWN(self.VariablesGrid, self.OnVariablesGridEditorShown)
  3939         self.VariablesGrid.SetDropTarget(VariableDropTarget(self))
  3942         self.VariablesGrid.SetDropTarget(VariableDropTarget(self))
  3940         
  3943         
  3941         self.AddButton = wx.Button(id=ID_VARIABLEEDITORPANELADDBUTTON, label='Add',
  3944         self.AddButton = wx.Button(id=ID_VARIABLEEDITORPANELADDBUTTON, label='Add',
  3942               name='AddButton', parent=self, pos=wx.Point(345, 340),
  3945               name='AddButton', parent=self, pos=wx.Point(0, 0),
  3943               size=wx.Size(72, 32), style=0)
  3946               size=wx.Size(72, 32), style=0)
  3944         self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_VARIABLEEDITORPANELADDBUTTON)
  3947         self.Bind(wx.EVT_BUTTON, self.OnAddButton, id=ID_VARIABLEEDITORPANELADDBUTTON)
  3945 
  3948 
  3946         self.DeleteButton = wx.Button(id=ID_VARIABLEEDITORPANELDELETEBUTTON, label='Delete',
  3949         self.DeleteButton = wx.Button(id=ID_VARIABLEEDITORPANELDELETEBUTTON, label='Delete',
  3947               name='DeleteButton', parent=self, pos=wx.Point(425, 340),
  3950               name='DeleteButton', parent=self, pos=wx.Point(0, 0),
  3948               size=wx.Size(72, 32), style=0)
  3951               size=wx.Size(72, 32), style=0)
  3949         self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_VARIABLEEDITORPANELDELETEBUTTON)
  3952         self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, id=ID_VARIABLEEDITORPANELDELETEBUTTON)
  3950 
  3953 
  3951         self.UpButton = wx.Button(id=ID_VARIABLEEDITORPANELUPBUTTON, label='^',
  3954         self.UpButton = wx.Button(id=ID_VARIABLEEDITORPANELUPBUTTON, label='^',
  3952               name='UpButton', parent=self, pos=wx.Point(505, 340),
  3955               name='UpButton', parent=self, pos=wx.Point(0, 0),
  3953               size=wx.Size(32, 32), style=0)
  3956               size=wx.Size(32, 32), style=0)
  3954         self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_VARIABLEEDITORPANELUPBUTTON)
  3957         self.Bind(wx.EVT_BUTTON, self.OnUpButton, id=ID_VARIABLEEDITORPANELUPBUTTON)
  3955 
  3958 
  3956         self.DownButton = wx.Button(id=ID_VARIABLEEDITORPANELDOWNBUTTON, label='v',
  3959         self.DownButton = wx.Button(id=ID_VARIABLEEDITORPANELDOWNBUTTON, label='v',
  3957               name='DownButton', parent=self, pos=wx.Point(545, 340),
  3960               name='DownButton', parent=self, pos=wx.Point(0, 0),
  3958               size=wx.Size(32, 32), style=0)
  3961               size=wx.Size(32, 32), style=0)
  3959         self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_VARIABLEEDITORPANELDOWNBUTTON)
  3962         self.Bind(wx.EVT_BUTTON, self.OnDownButton, id=ID_VARIABLEEDITORPANELDOWNBUTTON)
  3960 
  3963 
  3961         self._init_sizers()
  3964         self._init_sizers()
  3962 
  3965