/usr/lib/python2.7/dist-packages/hachoir_wx/field_view/field_view_imp.py is in python-hachoir-wx 0.3-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | # -*- coding: utf-8 -*-
from hachoir_wx.field_view.format import format_addr_hex, format_addr_dec, format_size, format_data, format_name, format_desc
from hachoir_core.i18n import _
class field_view_imp_t:
def __init__(self):
self.addr_func = lambda field: field._getAbsoluteAddress()
self.format_addr = lambda field: format_addr_hex(self.addr_func(field))
def on_field_set_ready(self, dispatcher, field_set):
assert field_set is not None
self.fields = field_set
def on_field_view_ready(self, dispatcher, view):
assert view is not None
self.view = view
self.fill_view()
self.dispatcher.trigger('field_activated', self.fields)
def on_item_selected(self):
name = self.view.get_selected(_('name'))
if isinstance(name, unicode):
name = str(name)
self.dispatcher.trigger('field_selected', self.fields[name])
def on_item_activated(self):
field = self.fields[self.view.get_selected(_('name'))]
if field.is_field_set:
self.fields = field
self.refill_view()
self.dispatcher.trigger('field_activated', field)
def on_field_modified(self, dispatcher, field):
self.refill_view()
def on_item_show_ops(self):
field = self.fields[self.view.get_selected(_('name'))]
self.dispatcher.trigger('field_show_ops', field)
def on_address_relative(self, dispatcher):
self.addr_func = lambda field: field._getAddress()
self.refill_view()
def on_address_absolute(self, dispatcher):
self.addr_func = lambda field: field._getAbsoluteAddress()
self.refill_view()
def on_address_hexadecimal(self, dispatcher):
self.format_addr = lambda field: format_addr_hex(self.addr_func(field))
self.refill_view()
def on_address_decimal(self, dispatcher):
self.format_addr = lambda field: format_addr_dec(self.addr_func(field))
self.refill_view()
def on_field_was_split_bytes(self, dispatcher, field):
self.refill_view()
def on_field_was_split_bits(self, dispatcher, field):
self.refill_view()
def fill_view(self):
if self.fields._getParent() is not None:
self.view.append_row({ _('name') : '../' })
for field in self.fields:
map = {
_('address') : self.format_addr(field),
_('name') : format_name(field),
_('type') : field.getFieldType(),
_('size') : format_size(field._getSize()),
_('data') : format_data(field),
_('description'): format_desc(field)
}
self.view.append_row(map)
def refill_view(self):
self.view.clear()
self.fill_view()
|