sistemata visualizzazione dump Hex nella tab corretta

This commit is contained in:
VALLONGOL 2025-10-17 11:00:11 +02:00
parent d54a771fcb
commit da95b4c7ab

View File

@ -875,6 +875,8 @@ class SfpDebugWindow(tk.Toplevel):
desc = legend_map.get(name, "") desc = legend_map.get(name, "")
out_lines.append(f" {name:12s}: {desc}\n") out_lines.append(f" {name:12s}: {desc}\n")
# Build hex dump but do not insert it into the Raw tab;
# always show binary/body hex in the dedicated Binary tab.
out_lines.append("\nBODY (hex):\n") out_lines.append("\nBODY (hex):\n")
hex_dump = self._format_hex_dump(body) hex_dump = self._format_hex_dump(body)
out_lines.append(hex_dump) out_lines.append(hex_dump)
@ -889,16 +891,23 @@ class SfpDebugWindow(tk.Toplevel):
# Don't fail display on logging problems # Don't fail display on logging problems
# pass # pass
# Now display in the widget with visual tags where helpful. # Display header/parsed fields in the Raw tab, but move the
# full hex/body dump into the Binary tab to centralize binary data.
self.raw_tab_text.config(state=tk.NORMAL) self.raw_tab_text.config(state=tk.NORMAL)
self.raw_tab_text.delete("1.0", tk.END) self.raw_tab_text.delete("1.0", tk.END)
# Insert header block with hdr_field tag header_block, _, _ = full_text.partition("\nBODY (hex):\n")
header_block, _, rest = full_text.partition("\nBODY (hex):\n")
self.raw_tab_text.insert(tk.END, header_block + "\n", "hdr_field") self.raw_tab_text.insert(tk.END, header_block + "\n", "hdr_field")
# For flags, re-insert with colored tags: simple approach, append the rest
self.raw_tab_text.insert(tk.END, "BODY (hex):\n")
self.raw_tab_text.insert(tk.END, hex_dump)
self.raw_tab_text.config(state=tk.DISABLED) self.raw_tab_text.config(state=tk.DISABLED)
# Put the hex dump into the Binary tab
try:
self._display_hex_data(body, self.bin_tab)
except Exception:
# fallback: ensure binary tab contains something
self.bin_tab.config(state=tk.NORMAL)
self.bin_tab.delete("1.0", tk.END)
self.bin_tab.insert("1.0", hex_dump)
self.bin_tab.config(state=tk.DISABLED)
return return
except Exception as e: except Exception as e:
text = f"Failed to format raw packet: {e}\n\nRaw dump:\n" text = f"Failed to format raw packet: {e}\n\nRaw dump:\n"
@ -985,7 +994,16 @@ class SfpDebugWindow(tk.Toplevel):
) )
setattr(self, photo_attr, None) setattr(self, photo_attr, None)
# Always show binary/body hex in the dedicated Binary tab instead of
# attaching it to individual image tabs.
try:
self._display_hex_data(payload, self.bin_tab)
except Exception:
# best-effort fallback to the image tab hex_view if Binary tab isn't available
try:
self._display_hex_data(payload, tab_widgets["hex_view"]) self._display_hex_data(payload, tab_widgets["hex_view"])
except Exception:
pass
def _resize_pil_to_label( def _resize_pil_to_label(
self, img: "Image.Image", label_widget: ttk.Label self, img: "Image.Image", label_widget: ttk.Label