Example #1
0
    def get_selected_field(self):
        """
        Get the selected field

        @return a tuple (packet, proto, field) containing the parent
                protocol for field and the field or None, None, None
        """

        model, iter = self.tree.get_selection().get_selected()

        if not iter:
            return (None, None, None)

        obj = model.get_value(iter, 0)

        proto = obj.proto

        if isinstance(obj, TField):
            field = obj.ref
        elif isinstance(obj, TFlag):
            field = obj.field
        else:
            field = None

        if not proto or not field or \
           not backend.is_field(field) or \
           not backend.is_proto(proto):

            return (None, None, None)

        return (self.packet, proto, field)
Example #2
0
def get_editor(field):
    "@return the corresponding editor class for field or None"

    if not backend.is_field(field):
        log.error('%s is not a valid field' % field)
        return None

    # MACField
    # IPField

    # We use a list because order is important here
    table = [(backend.PMMACField, MACEditor),
             (backend.PMStrField, StrEditor),
             (backend.PMIP6Field, IPv6Editor),
             (backend.PMIPField, IPv4Editor),
             (backend.PMEnumField, EnumEditor),
             (backend.PMByteField, IntEditor),
             (backend.PMShortField, IntEditor),
             (backend.PMLEShortField, IntEditor),
             (backend.PMIntField, IntEditor),
             (backend.PMSignedIntField, IntEditor),
             (backend.PMLEIntField, IntEditor),
             (backend.PMLESignedIntField, IntEditor),
             (backend.PMLongField, IntEditor),
             (backend.PMLELongField, IntEditor),
             (backend.PMLenField, IntEditor),
             (backend.PMRDLenField, IntEditor),
             (backend.PMFieldLenField, IntEditor),
             (backend.PMBCDFloatField, IntEditor),
             (backend.PMBitField, IntEditor),
    ]

    for it in table:
        if it[0] != None and backend.implements(field, it[0]):
            return it[1]