code: def _cell_changed(self, *a):
          
  
          # block all signals during the update (to avoid re-calling this)
          self.block_events()
  
          # loop over the rows
          for n in range(self.get_row_count()):
  
              # get the keys and values (as text)
              key   = self.get_value(0,n)
              value = self.get_value(1,n)
  
              # get rid of the None's
              if key   == None:
                  key = ''
                  self.set_value(0,n, '')
              if value == None:
                  value = ''
                  self.set_value(1,n, '')
  
              # if it's not an empty entry make sure it's valid
              if not key == '':
  
                  # clean up the key
                  key = self._clean_up_key(key)
  
                  # now make sure the value is python-able
                  try:
                      eval(value)
                      self._widget.item(n,1).setData(_g.QtCore.Qt.BackgroundRole, _g.Qt.QtGui.QColor('white'))
                  except:
                      self._widget.item(n,1).setData(_g.QtCore.Qt.BackgroundRole, _g.Qt.QtGui.QColor('pink'))
  
          # unblock all signals
          self.unblock_events()
docs: Called whenever a cell is changed. Updates the dictionary.