PLCOpenEditor.py
changeset 479 2fab0eefa66e
parent 478 dc403c47af54
child 481 593068548dca
equal deleted inserted replaced
478:dc403c47af54 479:2fab0eefa66e
  1006             if not window.IsDebugging():
  1006             if not window.IsDebugging():
  1007                 tagname = window.GetTagName()
  1007                 tagname = window.GetTagName()
  1008                 if self.Controler.GetEditedElement(tagname) is None:
  1008                 if self.Controler.GetEditedElement(tagname) is None:
  1009                     self.VariablePanelIndexer.RemoveVariablePanel(tagname)
  1009                     self.VariablePanelIndexer.RemoveVariablePanel(tagname)
  1010                     self.TabsOpened.DeletePage(idx)
  1010                     self.TabsOpened.DeletePage(idx)
  1011 
       
  1012     def CloseDebugTabs(self):
       
  1013         if self.EnableDebug:
       
  1014             idxs = range(self.TabsOpened.GetPageCount())
       
  1015             idxs.reverse()
       
  1016             for idx in idxs:
       
  1017                 window = self.TabsOpened.GetPage(idx)
       
  1018                 if window.IsDebugging():
       
  1019                     self.TabsOpened.DeletePage(idx)
       
  1020             self.DebugVariablePanel.ResetGrid()
       
  1021 
  1011 
  1022     def OnUndoMenu(self, event):
  1012     def OnUndoMenu(self, event):
  1023         self.Controler.LoadPrevious()
  1013         self.Controler.LoadPrevious()
  1024         self.CloseTabsWithoutModel()
  1014         self.CloseTabsWithoutModel()
  1025         self.RefreshEditor()
  1015         self.RefreshEditor()
  1870         for i in xrange(self.TabsOpened.GetPageCount()):
  1860         for i in xrange(self.TabsOpened.GetPageCount()):
  1871             editor = self.TabsOpened.GetPage(i)
  1861             editor = self.TabsOpened.GetPage(i)
  1872             if isinstance(editor, GraphicViewer):
  1862             if isinstance(editor, GraphicViewer):
  1873                 editor.ResetView()
  1863                 editor.ResetView()
  1874 
  1864 
       
  1865     def CloseDebugTabs(self):
       
  1866         if self.EnableDebug:
       
  1867             idxs = range(self.TabsOpened.GetPageCount())
       
  1868             idxs.reverse()
       
  1869             for idx in idxs:
       
  1870                 window = self.TabsOpened.GetPage(idx)
       
  1871                 if window.IsDebugging():
       
  1872                     self.TabsOpened.DeletePage(idx)
       
  1873             self.DebugVariablePanel.ResetGrid()
       
  1874     
       
  1875     def AddDebugVariable(self, iec_path):
       
  1876         if self.EnableDebug:
       
  1877             self.DebugVariablePanel.InsertValue(iec_path)
       
  1878             
  1875 #-------------------------------------------------------------------------------
  1879 #-------------------------------------------------------------------------------
  1876 #                         Library Tree Management Functions
  1880 #                         Library Tree Management Functions
  1877 #-------------------------------------------------------------------------------
  1881 #-------------------------------------------------------------------------------
  1878 
  1882 
  1879     def RefreshLibraryTree(self):
  1883     def RefreshLibraryTree(self):
  4027             values = None
  4031             values = None
  4028         if not isinstance(values, TupleType):
  4032         if not isinstance(values, TupleType):
  4029             message = _("Invalid value \"%s\" for debug variable")%data
  4033             message = _("Invalid value \"%s\" for debug variable")%data
  4030             values = None
  4034             values = None
  4031         if values is not None and values[1] == "debug":
  4035         if values is not None and values[1] == "debug":
  4032             self.ParentWindow.InsertValue(row, values[0])
  4036             self.ParentWindow.InsertValue(values[0], row)
  4033         if message is not None:
  4037         if message is not None:
  4034             wx.CallAfter(self.ShowMessage, message)
  4038             wx.CallAfter(self.ShowMessage, message)
  4035             
  4039             
  4036     def ShowMessage(self, message):
  4040     def ShowMessage(self, message):
  4037         message = wx.MessageDialog(self.ParentWindow, message, _("Error"), wx.OK|wx.ICON_ERROR)
  4041         message = wx.MessageDialog(self.ParentWindow, message, _("Error"), wx.OK|wx.ICON_ERROR)
  4142         self.Table.Empty()
  4146         self.Table.Empty()
  4143         self.Freeze()
  4147         self.Freeze()
  4144         self.Table.ResetView(self.VariablesGrid)
  4148         self.Table.ResetView(self.VariablesGrid)
  4145         self.Thaw()
  4149         self.Thaw()
  4146     
  4150     
  4147     def GetForceVariableMenuFunction(self, iec_path):
  4151     def GetForceVariableMenuFunction(self, iec_path, item):
  4148         iec_type = self.GetDataType(iec_path)
  4152         iec_type = self.GetDataType(iec_path)
  4149         def ForceVariableFunction(event):
  4153         def ForceVariableFunction(event):
  4150             if iec_type is not None:
  4154             if iec_type is not None:
  4151                 dialog = ForceVariableDialog(self, iec_type)
  4155                 dialog = ForceVariableDialog(self, iec_type, str(item.GetValue()))
  4152                 if dialog.ShowModal() == wx.ID_OK:
  4156                 if dialog.ShowModal() == wx.ID_OK:
  4153                     self.ForceDataValue(iec_path, dialog.GetValue())
  4157                     self.ForceDataValue(iec_path, dialog.GetValue())
  4154         return ForceVariableFunction
  4158         return ForceVariableFunction
  4155 
  4159 
  4156     def GetReleaseVariableMenuFunction(self, iec_path):
  4160     def GetReleaseVariableMenuFunction(self, iec_path):
  4164             iec_path = self.Table.GetValueByName(row, "Variable").upper()
  4168             iec_path = self.Table.GetValueByName(row, "Variable").upper()
  4165 
  4169 
  4166             menu = wx.Menu(title='')
  4170             menu = wx.Menu(title='')
  4167             new_id = wx.NewId()
  4171             new_id = wx.NewId()
  4168             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Force value"))
  4172             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Force value"))
  4169             self.Bind(wx.EVT_MENU, self.GetForceVariableMenuFunction(iec_path.upper()), id=new_id)
  4173             self.Bind(wx.EVT_MENU, self.GetForceVariableMenuFunction(iec_path.upper(), self.Table.GetItem(row)), id=new_id)
  4170             new_id = wx.NewId()
  4174             new_id = wx.NewId()
  4171             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Release value"))
  4175             AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Release value"))
  4172             self.Bind(wx.EVT_MENU, self.GetReleaseVariableMenuFunction(iec_path.upper()), id=new_id)
  4176             self.Bind(wx.EVT_MENU, self.GetReleaseVariableMenuFunction(iec_path.upper()), id=new_id)
  4173             if self.Table.IsForced(row):
  4177             if self.Table.IsForced(row):
  4174                 menu.Enable(new_id, True)
  4178                 menu.Enable(new_id, True)
  4191 
  4195 
  4192     def OnDownButton(self, event):
  4196     def OnDownButton(self, event):
  4193         self.MoveValue(self.VariablesGrid.GetGridCursorRow(), 1)
  4197         self.MoveValue(self.VariablesGrid.GetGridCursorRow(), 1)
  4194         event.Skip()
  4198         event.Skip()
  4195 
  4199 
  4196     def InsertValue(self, idx, iec_path):
  4200     def InsertValue(self, iec_path, idx = None):
       
  4201         if idx is None:
       
  4202             idx = self.Table.GetNumberRows()
  4197         for item in self.Table.GetData():
  4203         for item in self.Table.GetData():
  4198             if iec_path == item.GetVariable():
  4204             if iec_path == item.GetVariable():
  4199                 return
  4205                 return
  4200         item = VariableTableItem(self, iec_path, "")
  4206         item = VariableTableItem(self, iec_path, "")
  4201         result = self.AddDataConsumer(iec_path.upper(), item)
  4207         result = self.AddDataConsumer(iec_path.upper(), item)