PLCOpenEditor.py
changeset 332 555124c752ec
parent 331 9106d66bd204
child 335 c2c6db53a04f
equal deleted inserted replaced
331:9106d66bd204 332:555124c752ec
   186             else:
   186             else:
   187                 event(self, function)
   187                 event(self, function)
   188     
   188     
   189     def _init_coll_MenuBar_Menus(self, parent):
   189     def _init_coll_MenuBar_Menus(self, parent):
   190         parent.Append(menu=self.FileMenu, title=u'File')
   190         parent.Append(menu=self.FileMenu, title=u'File')
   191         parent.Append(menu=self.EditMenu, title=u'Edit')
   191         if not self.Debug:
       
   192             parent.Append(menu=self.EditMenu, title=u'Edit')
       
   193         parent.Append(menu=self.DisplayMenu, title=u'Display')
   192         parent.Append(menu=self.HelpMenu, title=u'Help')
   194         parent.Append(menu=self.HelpMenu, title=u'Help')
   193 
   195 
   194     def _init_coll_FileMenu_Items(self, parent):
   196     def _init_coll_FileMenu_Items(self, parent):
   195         if self.ModeSolo:
   197         if self.ModeSolo:
   196             AppendMenu(parent, help='', id=wx.ID_NEW,
   198             AppendMenu(parent, help='', id=wx.ID_NEW,
   251             self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT)
   253             self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_EXIT)
   252         else:
   254         else:
   253             self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_STOP)
   255             self.Bind(wx.EVT_MENU, self.OnQuitMenu, id=wx.ID_STOP)
   254     
   256     
   255     def _init_coll_EditMenu_Items(self, parent):
   257     def _init_coll_EditMenu_Items(self, parent):
       
   258         AppendMenu(parent, help='', id=wx.ID_UNDO,
       
   259               kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z')
       
   260         AppendMenu(parent, help='', id=wx.ID_REDO,
       
   261               kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y')
       
   262         parent.AppendSeparator()
       
   263         AppendMenu(parent, help='', id=wx.ID_CUT,
       
   264               kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
       
   265         AppendMenu(parent, help='', id=wx.ID_COPY,
       
   266               kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
       
   267         AppendMenu(parent, help='', id=wx.ID_PASTE,
       
   268               kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
       
   269         parent.AppendSeparator()
       
   270         addmenu = wx.Menu(title='')
       
   271         parent.AppendMenu(wx.ID_ADD, "Add Element", addmenu)
       
   272         AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE,
       
   273               kind=wx.ITEM_NORMAL, text=u'Data Type')
       
   274         AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION,
       
   275               kind=wx.ITEM_NORMAL, text=u'Function')
       
   276         AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK,
       
   277               kind=wx.ITEM_NORMAL, text=u'Function Block')
       
   278         AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDPROGRAM,
       
   279               kind=wx.ITEM_NORMAL, text=u'Program')
       
   280         AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION,
       
   281               kind=wx.ITEM_NORMAL, text=u'Configuration')
       
   282         AppendMenu(parent, help='', id=wx.ID_SELECTALL,
       
   283               kind=wx.ITEM_NORMAL, text=u'Select All\tCTRL+A')
       
   284         AppendMenu(parent, help='', id=wx.ID_DELETE,
       
   285               kind=wx.ITEM_NORMAL, text=u'Delete')
       
   286         self.Bind(wx.EVT_MENU, self.OnUndoMenu, id=wx.ID_UNDO)
       
   287         self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO)
       
   288         self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT)
       
   289         self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY)
       
   290         self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE)
       
   291         self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu,
       
   292               id=ID_PLCOPENEDITOREDITMENUADDDATATYPE)
       
   293         self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"),
       
   294               id=ID_PLCOPENEDITOREDITMENUADDFUNCTION)
       
   295         self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"),
       
   296               id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK)
       
   297         self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("program"),
       
   298               id=ID_PLCOPENEDITOREDITMENUADDPROGRAM)
       
   299         self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
       
   300               id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION)
       
   301         self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
       
   302         self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
       
   303 
       
   304     def _init_coll_DisplayMenu_Items(self, parent):
   256         AppendMenu(parent, help='', id=wx.ID_REFRESH,
   305         AppendMenu(parent, help='', id=wx.ID_REFRESH,
   257               kind=wx.ITEM_NORMAL, text=u'Refresh\tCTRL+R')
   306               kind=wx.ITEM_NORMAL, text=u'Refresh\tF5')
   258         if not self.Debug:
   307         if not self.Debug and not self.ModeSolo:
   259             if not self.ModeSolo:
   308             AppendMenu(parent, help='', id=wx.ID_CLEAR,
   260                 AppendMenu(parent, help='', id=wx.ID_CLEAR,
   309                   kind=wx.ITEM_NORMAL, text=u'Clear Errors\tCTRL+K')
   261                       kind=wx.ITEM_NORMAL, text=u'Clear Errors\tCTRL+K')
   310         parent.AppendSeparator()
   262             AppendMenu(parent, help='', id=wx.ID_UNDO,
   311         zoommenu = wx.Menu(title='')
   263                   kind=wx.ITEM_NORMAL, text=u'Undo\tCTRL+Z')
   312         parent.AppendMenu(wx.ID_ZOOM_FIT, "ZOOM", zoommenu)
   264             AppendMenu(parent, help='', id=wx.ID_REDO,
   313         for idx, value in enumerate(ZOOM_FACTORS):
   265                   kind=wx.ITEM_NORMAL, text=u'Redo\tCTRL+Y')
   314             new_id = wx.NewId()
   266             parent.AppendSeparator()
   315             AppendMenu(zoommenu, help='', id=new_id,
   267             AppendMenu(parent, help='', id=wx.ID_CUT,
   316                   kind=wx.ITEM_RADIO, text=str(int(round(value * 100))) + "%")
   268                   kind=wx.ITEM_NORMAL, text=u'Cut\tCTRL+X')
   317             self.Bind(wx.EVT_MENU, self.GenerateZoomFunction(idx), id=new_id)
   269             AppendMenu(parent, help='', id=wx.ID_COPY,
       
   270                   kind=wx.ITEM_NORMAL, text=u'Copy\tCTRL+C')
       
   271             AppendMenu(parent, help='', id=wx.ID_PASTE,
       
   272                   kind=wx.ITEM_NORMAL, text=u'Paste\tCTRL+V')
       
   273             parent.AppendSeparator()
       
   274             addmenu = wx.Menu(title='')
       
   275             parent.AppendMenu(wx.ID_ADD, "Add Element", addmenu)
       
   276             AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDDATATYPE,
       
   277                   kind=wx.ITEM_NORMAL, text=u'Data Type')
       
   278             AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTION,
       
   279                   kind=wx.ITEM_NORMAL, text=u'Function')
       
   280             AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK,
       
   281                   kind=wx.ITEM_NORMAL, text=u'Function Block')
       
   282             AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDPROGRAM,
       
   283                   kind=wx.ITEM_NORMAL, text=u'Program')
       
   284             AppendMenu(addmenu, help='', id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION,
       
   285                   kind=wx.ITEM_NORMAL, text=u'Configuration')
       
   286             AppendMenu(parent, help='', id=wx.ID_SELECTALL,
       
   287                   kind=wx.ITEM_NORMAL, text=u'Select All\tCTRL+A')
       
   288             AppendMenu(parent, help='', id=wx.ID_DELETE,
       
   289                   kind=wx.ITEM_NORMAL, text=u'Delete')
       
   290         self.Bind(wx.EVT_MENU, self.OnRefreshMenu, id=wx.ID_REFRESH)
   318         self.Bind(wx.EVT_MENU, self.OnRefreshMenu, id=wx.ID_REFRESH)
   291         if not self.Debug:
   319         if not self.Debug and not self.ModeSolo:
   292             if not self.ModeSolo:
   320             self.Bind(wx.EVT_MENU, self.OnClearErrorsMenu, id=wx.ID_CLEAR)
   293                 self.Bind(wx.EVT_MENU, self.OnClearErrorsMenu, id=wx.ID_CLEAR)
       
   294             self.Bind(wx.EVT_MENU, self.OnUndoMenu, id=wx.ID_UNDO)
       
   295             self.Bind(wx.EVT_MENU, self.OnRedoMenu, id=wx.ID_REDO)
       
   296             self.Bind(wx.EVT_MENU, self.OnCutMenu, id=wx.ID_CUT)
       
   297             self.Bind(wx.EVT_MENU, self.OnCopyMenu, id=wx.ID_COPY)
       
   298             self.Bind(wx.EVT_MENU, self.OnPasteMenu, id=wx.ID_PASTE)
       
   299             self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu,
       
   300                   id=ID_PLCOPENEDITOREDITMENUADDDATATYPE)
       
   301             self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("function"),
       
   302                   id=ID_PLCOPENEDITOREDITMENUADDFUNCTION)
       
   303             self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("functionBlock"),
       
   304                   id=ID_PLCOPENEDITOREDITMENUADDFUNCTIONBLOCK)
       
   305             self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction("program"),
       
   306                   id=ID_PLCOPENEDITOREDITMENUADDPROGRAM)
       
   307             self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu,
       
   308                   id=ID_PLCOPENEDITOREDITMENUADDCONFIGURATION)
       
   309             self.Bind(wx.EVT_MENU, self.OnSelectAllMenu, id=wx.ID_SELECTALL)
       
   310             self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=wx.ID_DELETE)
       
   311 
   321 
   312     def _init_coll_HelpMenu_Items(self, parent):
   322     def _init_coll_HelpMenu_Items(self, parent):
   313         AppendMenu(parent, help='', id=wx.ID_HELP, 
   323         AppendMenu(parent, help='', id=wx.ID_HELP, 
   314             kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1')
   324             kind=wx.ITEM_NORMAL, text=u'PLCOpenEditor\tF1')
   315         #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS,
   325         #AppendMenu(parent, help='', id=wx.ID_HELP_CONTENTS,
   325 
   335 
   326     def _init_utils(self):
   336     def _init_utils(self):
   327         self.MenuBar = wx.MenuBar()
   337         self.MenuBar = wx.MenuBar()
   328 
   338 
   329         self.FileMenu = wx.Menu(title='')
   339         self.FileMenu = wx.Menu(title='')
   330         self.EditMenu = wx.Menu(title='')
   340         if not self.Debug:
       
   341             self.EditMenu = wx.Menu(title='')
       
   342         self.DisplayMenu = wx.Menu(title='')
   331         self.HelpMenu = wx.Menu(title='')
   343         self.HelpMenu = wx.Menu(title='')
   332         
   344         
   333         self._init_coll_MenuBar_Menus(self.MenuBar)
   345         self._init_coll_MenuBar_Menus(self.MenuBar)
   334         self._init_coll_FileMenu_Items(self.FileMenu)
   346         self._init_coll_FileMenu_Items(self.FileMenu)
   335         self._init_coll_EditMenu_Items(self.EditMenu)
   347         if not self.Debug:
       
   348             self._init_coll_EditMenu_Items(self.EditMenu)
       
   349         self._init_coll_DisplayMenu_Items(self.DisplayMenu)
   336         self._init_coll_HelpMenu_Items(self.HelpMenu)
   350         self._init_coll_HelpMenu_Items(self.HelpMenu)
   337 
   351 
   338     def _init_coll_MainLibrarySizer_Items(self, parent):
   352     def _init_coll_MainLibrarySizer_Items(self, parent):
   339         parent.AddWindow(self.LibraryTree, 0, border=0, flag=wx.GROW)
   353         parent.AddWindow(self.LibraryTree, 0, border=0, flag=wx.GROW)
   340         parent.AddSizer(self.LibraryComment, 0, border=0, flag=wx.GROW)
   354         parent.AddSizer(self.LibraryComment, 0, border=0, flag=wx.GROW)
   620             self.RefreshInstancesTree()
   634             self.RefreshInstancesTree()
   621             self.RefreshLibraryTree()
   635             self.RefreshLibraryTree()
   622         
   636         
   623         self.RefreshFileMenu()
   637         self.RefreshFileMenu()
   624         self.RefreshEditMenu()
   638         self.RefreshEditMenu()
       
   639         self.RefreshDisplayMenu()
   625         self.RefreshTitle()
   640         self.RefreshTitle()
   626         self.RefreshToolBar()
   641         self.RefreshToolBar()
   627 
   642 
   628     def ResetSelectedItem(self):
   643     def ResetSelectedItem(self):
   629         self.SelectedItem = None
   644         self.SelectedItem = None
   641                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
   656                     tagname = self.TabsOpened.GetPage(new_index).GetTagName()
   642                     self.VariablePanelIndexer.ChangeVariablePanel(tagname)
   657                     self.VariablePanelIndexer.ChangeVariablePanel(tagname)
   643             self.RefreshTitle()
   658             self.RefreshTitle()
   644             self.RefreshFileMenu()
   659             self.RefreshFileMenu()
   645             self.RefreshEditMenu()
   660             self.RefreshEditMenu()
       
   661             self.RefreshDisplayMenu()
   646             self.RefreshToolBar()
   662             self.RefreshToolBar()
   647         event.Skip()
   663         event.Skip()
   648 
   664 
   649     def GetCopyBuffer(self):
   665     def GetCopyBuffer(self):
   650         return PLCOpenEditor.CopyBuffer
   666         return PLCOpenEditor.CopyBuffer
   680             if new_values != old_values:
   696             if new_values != old_values:
   681                 self.Controler.SetProjectProperties(None, new_values)
   697                 self.Controler.SetProjectProperties(None, new_values)
   682                 self.RefreshTitle()
   698                 self.RefreshTitle()
   683                 self.RefreshFileMenu()
   699                 self.RefreshFileMenu()
   684                 self.RefreshEditMenu()
   700                 self.RefreshEditMenu()
       
   701                 self.RefreshDisplayMenu()
   685                 self.RefreshTypesTree()
   702                 self.RefreshTypesTree()
   686                 self.RefreshScaling()
   703                 self.RefreshScaling()
   687         dialog.Destroy()
   704         dialog.Destroy()
   688 
   705 
   689     def OnCloseFrame(self, event):
   706     def OnCloseFrame(self, event):
   991         self.Close()
  1008         self.Close()
   992         event.Skip()
  1009         event.Skip()
   993 
  1010 
   994 
  1011 
   995 #-------------------------------------------------------------------------------
  1012 #-------------------------------------------------------------------------------
   996 #                          Edit Project Menu Functions
  1013 #                            Edit Menu Functions
   997 #-------------------------------------------------------------------------------
  1014 #-------------------------------------------------------------------------------
   998 
  1015 
   999     def RefreshEditMenu(self):
  1016     def RefreshEditMenu(self):
  1000         if self.Controler.HasOpenedProject():
  1017         if not self.Debug:
  1001             if self.TabsOpened.GetPageCount() > 0:
  1018             if self.Controler.HasOpenedProject():
  1002                 self.EditMenu.Enable(wx.ID_REFRESH, True)
       
  1003             else:
       
  1004                 self.EditMenu.Enable(wx.ID_REFRESH, False)
       
  1005             if not self.Debug:
       
  1006                 undo, redo = self.Controler.GetBufferState()
  1019                 undo, redo = self.Controler.GetBufferState()
  1007                 self.EditMenu.Enable(wx.ID_UNDO, undo)
  1020                 self.EditMenu.Enable(wx.ID_UNDO, undo)
  1008                 self.EditMenu.Enable(wx.ID_REDO, redo)
  1021                 self.EditMenu.Enable(wx.ID_REDO, redo)
  1009                 self.EditMenu.Enable(wx.ID_ADD, True)
  1022                 self.EditMenu.Enable(wx.ID_ADD, True)
  1010                 self.EditMenu.Enable(wx.ID_DELETE, True)
  1023                 self.EditMenu.Enable(wx.ID_DELETE, True)
  1019                 else:
  1032                 else:
  1020                     self.EditMenu.Enable(wx.ID_CUT, False)
  1033                     self.EditMenu.Enable(wx.ID_CUT, False)
  1021                     self.EditMenu.Enable(wx.ID_COPY, False)
  1034                     self.EditMenu.Enable(wx.ID_COPY, False)
  1022                     self.EditMenu.Enable(wx.ID_PASTE, False)
  1035                     self.EditMenu.Enable(wx.ID_PASTE, False)
  1023                     self.EditMenu.Enable(wx.ID_SELECTALL, False)
  1036                     self.EditMenu.Enable(wx.ID_SELECTALL, False)
  1024         else:
  1037             else:
  1025             self.EditMenu.Enable(wx.ID_REFRESH, False)
       
  1026             if not self.Debug:
       
  1027                 self.EditMenu.Enable(wx.ID_UNDO, False)
  1038                 self.EditMenu.Enable(wx.ID_UNDO, False)
  1028                 self.EditMenu.Enable(wx.ID_REDO, False)
  1039                 self.EditMenu.Enable(wx.ID_REDO, False)
  1029                 self.EditMenu.Enable(wx.ID_CUT, False)
  1040                 self.EditMenu.Enable(wx.ID_CUT, False)
  1030                 self.EditMenu.Enable(wx.ID_COPY, False)
  1041                 self.EditMenu.Enable(wx.ID_COPY, False)
  1031                 self.EditMenu.Enable(wx.ID_PASTE, False)
  1042                 self.EditMenu.Enable(wx.ID_PASTE, False)
  1032                 self.EditMenu.Enable(wx.ID_SELECTALL, False)
  1043                 self.EditMenu.Enable(wx.ID_SELECTALL, False)
  1033                 self.EditMenu.Enable(wx.ID_ADD, False)
  1044                 self.EditMenu.Enable(wx.ID_ADD, False)
  1034                 self.EditMenu.Enable(wx.ID_DELETE, False)
  1045                 self.EditMenu.Enable(wx.ID_DELETE, False)
  1035     
  1046     
  1036     def OnRefreshMenu(self, event):
       
  1037         selected = self.TabsOpened.GetSelection()
       
  1038         if selected != -1:
       
  1039             window = self.TabsOpened.GetPage(selected)
       
  1040             window.RefreshView()
       
  1041             if not self.Debug:
       
  1042                 self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName())
       
  1043         event.Skip()
       
  1044 
       
  1045     def OnClearErrorsMenu(self, event):
       
  1046         self.ClearErrors()
       
  1047         event.Skip()
       
  1048 
       
  1049     def OnUndoMenu(self, event):
  1047     def OnUndoMenu(self, event):
  1050         self.Controler.LoadPrevious()
  1048         self.Controler.LoadPrevious()
  1051         idxs = range(self.TabsOpened.GetPageCount())
  1049         idxs = range(self.TabsOpened.GetPageCount())
  1052         idxs.reverse()
  1050         idxs.reverse()
  1053         for idx in idxs:
  1051         for idx in idxs:
  1191             window.ProcessEvent(event)
  1189             window.ProcessEvent(event)
  1192         event.Skip()
  1190         event.Skip()
  1193 
  1191 
  1194 
  1192 
  1195 #-------------------------------------------------------------------------------
  1193 #-------------------------------------------------------------------------------
       
  1194 #                             Display Menu Functions
       
  1195 #-------------------------------------------------------------------------------
       
  1196 
       
  1197     def RefreshDisplayMenu(self):
       
  1198         if self.Controler.HasOpenedProject():
       
  1199             if self.TabsOpened.GetPageCount() > 0:
       
  1200                 self.DisplayMenu.Enable(wx.ID_REFRESH, True)
       
  1201                 selected = self.TabsOpened.GetSelection()
       
  1202                 if selected != -1:
       
  1203                     window = self.TabsOpened.GetPage(selected)
       
  1204                     if isinstance(window, Viewer):
       
  1205                         self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, True)
       
  1206                         zoommenu = self.DisplayMenu.FindItemById(wx.ID_ZOOM_FIT).GetSubMenu()
       
  1207                         zoomitem = zoommenu.FindItemByPosition(window.GetScale())
       
  1208                         zoomitem.Check(True)
       
  1209                     else:
       
  1210                         self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
       
  1211                 else:
       
  1212                     self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
       
  1213             else:
       
  1214                 self.DisplayMenu.Enable(wx.ID_REFRESH, False)
       
  1215                 self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
       
  1216             self.DisplayMenu.Enable(wx.ID_CLEAR, True)
       
  1217         else:
       
  1218             self.DisplayMenu.Enable(wx.ID_REFRESH, False)
       
  1219             self.DisplayMenu.Enable(wx.ID_CLEAR, False)
       
  1220             self.DisplayMenu.Enable(wx.ID_ZOOM_FIT, False)
       
  1221         
       
  1222     def OnRefreshMenu(self, event):
       
  1223         selected = self.TabsOpened.GetSelection()
       
  1224         if selected != -1:
       
  1225             window = self.TabsOpened.GetPage(selected)
       
  1226             window.RefreshView()
       
  1227             if not self.Debug:
       
  1228                 self.VariablePanelIndexer.RefreshVariablePanel(window.GetTagName())
       
  1229         event.Skip()
       
  1230 
       
  1231     def OnClearErrorsMenu(self, event):
       
  1232         self.ClearErrors()
       
  1233         event.Skip()
       
  1234 
       
  1235     def GenerateZoomFunction(self, idx):
       
  1236         def ZoomFunction(event):
       
  1237             selected = self.TabsOpened.GetSelection()
       
  1238             if selected != -1:
       
  1239                 window = self.TabsOpened.GetPage(selected)
       
  1240                 window.SetScale(idx)
       
  1241             event.Skip()
       
  1242         return ZoomFunction
       
  1243 
       
  1244 
       
  1245 #-------------------------------------------------------------------------------
  1196 #                      Project Editor Panels Management Functions
  1246 #                      Project Editor Panels Management Functions
  1197 #-------------------------------------------------------------------------------
  1247 #-------------------------------------------------------------------------------
  1198     
  1248     
  1199     def OnPouSelectedChanged(self, event):
  1249     def OnPouSelectedChanged(self, event):
  1200         old_selected = self.TabsOpened.GetSelection()
  1250         old_selected = self.TabsOpened.GetSelection()
  1213             window.RefreshView()
  1263             window.RefreshView()
  1214             if not self.Debug:
  1264             if not self.Debug:
  1215                 self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName())
  1265                 self.VariablePanelIndexer.ChangeVariablePanel(window.GetTagName())
  1216             self.RefreshFileMenu()
  1266             self.RefreshFileMenu()
  1217             self.RefreshEditMenu()
  1267             self.RefreshEditMenu()
       
  1268             self.RefreshDisplayMenu()
  1218             self.RefreshToolBar()
  1269             self.RefreshToolBar()
  1219         event.Skip()
  1270         event.Skip()
  1220 
  1271 
  1221     def RefreshEditor(self, variablepanel = True):
  1272     def RefreshEditor(self, variablepanel = True):
  1222         selected = self.TabsOpened.GetSelection()
  1273         selected = self.TabsOpened.GetSelection()
  4212         new_row = self.DefaultValue.copy()
  4263         new_row = self.DefaultValue.copy()
  4213         if self.Filter in self.DefaultTypes:
  4264         if self.Filter in self.DefaultTypes:
  4214             new_row["Class"] = self.DefaultTypes[self.Filter]
  4265             new_row["Class"] = self.DefaultTypes[self.Filter]
  4215         else:
  4266         else:
  4216             new_row["Class"] = self.Filter
  4267             new_row["Class"] = self.Filter
  4217         self.Values.append(new_row)
  4268         if self.Filter == "All" and len(self.Values) > 0:
       
  4269             row_index = self.VariablesGrid.GetGridCursorRow() + 1
       
  4270             self.Values.insert(row_index, new_row)
       
  4271         else:
       
  4272             row_index = -1
       
  4273             self.Values.append(new_row)
  4218         self.SaveValues()
  4274         self.SaveValues()
  4219         self.RefreshValues()
  4275         self.RefreshValues(row_index)
  4220         self.RefreshButtons()
  4276         self.RefreshButtons()
  4221         event.Skip()
  4277         event.Skip()
  4222 
  4278 
  4223     def OnDeleteButton(self, event):
  4279     def OnDeleteButton(self, event):
  4224         row = self.Table.GetRow(self.VariablesGrid.GetGridCursorRow())
  4280         row = self.Table.GetRow(self.VariablesGrid.GetGridCursorRow())
  4351             self.Values.insert(new_index, self.Values.pop(value_index))
  4407             self.Values.insert(new_index, self.Values.pop(value_index))
  4352             self.SaveValues()
  4408             self.SaveValues()
  4353             self.RefreshValues()
  4409             self.RefreshValues()
  4354             self.VariablesGrid.SetGridCursor(new_index, self.VariablesGrid.GetGridCursorCol())
  4410             self.VariablesGrid.SetGridCursor(new_index, self.VariablesGrid.GetGridCursorCol())
  4355         
  4411         
  4356     def RefreshValues(self):
  4412     def RefreshValues(self, select=0):
  4357         if len(self.Table.data) > 0:
  4413         if len(self.Table.data) > 0:
  4358             self.VariablesGrid.SetGridCursor(0, 1)
  4414             self.VariablesGrid.SetGridCursor(0, 1)
  4359         data = []
  4415         data = []
  4360         for num, variable in enumerate(self.Values):
  4416         for num, variable in enumerate(self.Values):
  4361             if variable["Class"] in self.ClassList:
  4417             if variable["Class"] in self.ClassList:
  4362                 variable["Number"] = num + 1
  4418                 variable["Number"] = num + 1
  4363                 data.append(variable)
  4419                 data.append(variable)
  4364         self.Table.SetData(data)
  4420         self.Table.SetData(data)
       
  4421         if len(self.Table.data) > 0:
       
  4422             if select == -1:
       
  4423                 select = len(self.Table.data) - 1
       
  4424             self.VariablesGrid.SetGridCursor(select, 1)
       
  4425             self.VariablesGrid.MakeCellVisible(select, 1)
  4365         self.Table.ResetView(self.VariablesGrid)
  4426         self.Table.ResetView(self.VariablesGrid)
  4366 
  4427 
  4367     def SaveValues(self, buffer = True):
  4428     def SaveValues(self, buffer = True):
  4368         words = self.TagName.split("::")
  4429         words = self.TagName.split("::")
  4369         if self.ElementType == "config":
  4430         if self.ElementType == "config":