editors/ResourceEditor.py
changeset 1423 4e33f644f7cf
parent 1420 71b1545d746f
child 1571 486f94a8032c
equal deleted inserted replaced
1422:458d93275f71 1423:4e33f644f7cf
    70 def GetTaskTriggeringOptions():
    70 def GetTaskTriggeringOptions():
    71     _ = lambda x : x
    71     _ = lambda x : x
    72     return [_("Interrupt"), _("Cyclic")]
    72     return [_("Interrupt"), _("Cyclic")]
    73 TASKTRIGGERINGOPTIONS_DICT = dict([(_(option), option) for option in GetTaskTriggeringOptions()])
    73 TASKTRIGGERINGOPTIONS_DICT = dict([(_(option), option) for option in GetTaskTriggeringOptions()])
    74 
    74 
       
    75 SingleCellEditor = lambda *x : wx.grid.GridCellChoiceEditor()
       
    76 
       
    77 def CheckSingle(single, varlist):
       
    78     return single in varlist
       
    79 
       
    80 
    75 def GetInstancesTableColnames():
    81 def GetInstancesTableColnames():
    76     _ = lambda x : x
    82     _ = lambda x : x
    77     return [_("Name"), _("Type"), _("Task")]
    83     return [_("Name"), _("Type"), _("Task")]
    78 
    84 
    79 class ResourceTable(CustomTable):
    85 class ResourceTable(CustomTable):
   111         if col < len(self.colnames):
   117         if col < len(self.colnames):
   112             colname = self.GetColLabelValue(col, False)
   118             colname = self.GetColLabelValue(col, False)
   113             if colname == "Triggering":
   119             if colname == "Triggering":
   114                 value = TASKTRIGGERINGOPTIONS_DICT[value]
   120                 value = TASKTRIGGERINGOPTIONS_DICT[value]
   115             self.data[row][colname] = value
   121             self.data[row][colname] = value
   116 
       
   117     SingleCellEditor = lambda x,c : wx.grid.GridCellChoiceEditor(x)
       
   118 
   122 
   119     def _updateColAttrs(self, grid):
   123     def _updateColAttrs(self, grid):
   120         """
   124         """
   121         wx.grid.Grid -> update the column attributes to add the
   125         wx.grid.Grid -> update the column attributes to add the
   122         appropriate renderer given the column name.
   126         appropriate renderer given the column name.
   148                         grid.SetReadOnly(row, col, True)
   152                         grid.SetReadOnly(row, col, True)
   149                     interval = self.GetValueByName(row, colname)
   153                     interval = self.GetValueByName(row, colname)
   150                     if interval != "" and IEC_TIME_MODEL.match(interval.upper()) is None:
   154                     if interval != "" and IEC_TIME_MODEL.match(interval.upper()) is None:
   151                         error = True
   155                         error = True
   152                 elif colname == "Single":
   156                 elif colname == "Single":
   153                     editor = self.SingleCellEditor(self,colname)
   157                     editor = SingleCellEditor(self,colname)
   154                     editor.SetParameters(self.Parent.VariableList)
   158                     editor.SetParameters(self.Parent.VariableList)
   155                     if self.GetValueByName(row, "Triggering") != "Interrupt":
   159                     if self.GetValueByName(row, "Triggering") != "Interrupt":
   156                         grid.SetReadOnly(row, col, True)
   160                         grid.SetReadOnly(row, col, True)
       
   161                     single = self.GetValueByName(row, colname)
       
   162                     if single != "" and not CheckSingle(single,self.Parent.VariableList):
       
   163                         error = True
   157                 elif colname == "Triggering":
   164                 elif colname == "Triggering":
   158                     editor = wx.grid.GridCellChoiceEditor()
   165                     editor = wx.grid.GridCellChoiceEditor()
   159                     editor.SetParameters(",".join(map(_, GetTaskTriggeringOptions())))
   166                     editor.SetParameters(",".join(map(_, GetTaskTriggeringOptions())))
   160                 elif colname == "Type":
   167                 elif colname == "Type":
   161                     editor = wx.grid.GridCellChoiceEditor()
   168                     editor = wx.grid.GridCellChoiceEditor()
   439                 for i in xrange(self.InstancesTable.GetNumberRows()):
   446                 for i in xrange(self.InstancesTable.GetNumberRows()):
   440                     if self.InstancesTable.GetValueByName(i, "Task") == old_name:
   447                     if self.InstancesTable.GetValueByName(i, "Task") == old_name:
   441                         self.InstancesTable.SetValueByName(i, "Task", new_name)
   448                         self.InstancesTable.SetValueByName(i, "Task", new_name)
   442         self.RefreshModel()
   449         self.RefreshModel()
   443         colname = self.TasksTable.GetColLabelValue(col, False)
   450         colname = self.TasksTable.GetColLabelValue(col, False)
   444         if colname in ["Triggering", "Name", "Interval"]:
   451         if colname in ["Triggering", "Name", "Single", "Interval"]:
   445             wx.CallAfter(self.RefreshView, False)
   452             wx.CallAfter(self.RefreshView, False)
   446         event.Skip()
   453         event.Skip()
   447 
   454 
   448     def OnInstancesGridCellChange(self, event):
   455     def OnInstancesGridCellChange(self, event):
   449         self.RefreshModel()
   456         self.RefreshModel()