Ejemplo n.º 1
0
    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])
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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)