def __property_cell_func(self, col, cell, model, iter): cell.editor, cell.field = None, None cell.set_property('editable', False) cell.set_property('text', '') obj = model.get_value(iter, 0) if isinstance(obj, TField) and backend.is_flags(obj.ref): # Flag container cell.set_property('cell-background-gdk', self.style.mid[gtk.STATE_NORMAL]) value = backend.get_field_value_repr(obj.proto, obj.ref) try: if value: cell.set_property('markup', '<tt>%s</tt>' % \ gobject.markup_escape_text(unicode(value))) except UnicodeDecodeError: cell.set_property('markup', _('<tt>N/A</tt>')) # If we are a field or a string (a sub field of flags) elif isinstance(obj, (TField, TFlag)): cell.field = None cell.set_property('editable', True) cell.set_property('cell-background-gdk', None) # We have a standard field if isinstance(obj, TField): value = backend.get_field_value(obj.proto, obj.ref) if value is not None: try: value = gobject.markup_escape_text(unicode(value)) except UnicodeDecodeError: value = None if not value: value = _("N/A") cell.set_property('markup', '<tt>%s</tt>' % value) cell.editor = get_editor(obj.ref) if cell.editor: cell.field = (obj.proto, obj.ref) elif isinstance(obj, TFlag): # We have a subkey of Flags cell.editor = BitEditor cell.field = (obj.proto, obj.field.ref, obj.ref) else: cell.set_property('cell-background-gdk', self.style.mid[gtk.STATE_NORMAL])
def __diff_editing(self, packet, proto, field, editing): if not editing: # We don't care about selection return log.debug("Sanity check: %s" % ((packet is self.active_diff) and ("OK")\ or ("FAILED"))) # Now we have to recursivly set the field value to all active_packets val = backend.get_field_value(proto, field) for packet in self.active_packets: layer = packet.getlayer(self.active_layer) field = backend.get_proto_field(layer, field.name) log.debug("Setting value to %s" % field) def emit_row_changed(model, path, iter): model.row_changed(path, iter) self.filter_store.foreach(emit_row_changed) backend.set_field_value(layer, field, val)
def __diff_editing(self, packet, proto, field, editing): if not editing: # We don't care about selection return log.debug("Sanity check: %s" % ((packet is self.active_diff) and ("OK")\ or ("FAILED"))) # Now we have to recursivly set the field value to all active_packets val = backend.get_field_value(proto, field) for packet in self.active_packets: layer = packet.getlayer(self.active_layer) field = backend.get_proto_field(layer, field.name) log.debug("Setting value to %s" % field) def emit_row_changed(model, path, iter): model.row_changed(path, iter) self.filter_store.foreach(emit_row_changed) backend.set_field_value(layer, field, val)
def get_value(self): if self.flag_name != None: return backend.get_keyflag_value(self.protocol, self.field, self.flag_name) else: return backend.get_field_value(self.protocol, self.field)