mirror of
https://github.com/encounter/objdiff.git
synced 2025-12-08 21:17:59 +00:00
Arch-independent demangling and add gnuv2_demangle for old g++ projects (#262)
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
use egui::TextStyle;
|
||||
use objdiff_core::diff::{ConfigEnum, Demangler};
|
||||
|
||||
use crate::views::appearance::Appearance;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct DemangleViewState {
|
||||
pub text: String,
|
||||
pub demangler: Demangler,
|
||||
}
|
||||
|
||||
pub fn demangle_window(
|
||||
@@ -14,9 +16,17 @@ pub fn demangle_window(
|
||||
appearance: &Appearance,
|
||||
) {
|
||||
egui::Window::new("Demangle").open(show).show(ctx, |ui| {
|
||||
egui::ComboBox::from_label("Demangler")
|
||||
.selected_text(state.demangler.name().to_string())
|
||||
.show_ui(ui, |ui| {
|
||||
for demangler in Demangler::variants() {
|
||||
ui.selectable_value(&mut state.demangler, *demangler, demangler.name());
|
||||
}
|
||||
});
|
||||
ui.separator();
|
||||
ui.text_edit_singleline(&mut state.text);
|
||||
ui.add_space(10.0);
|
||||
if let Some(demangled) = cwdemangle::demangle(&state.text, &Default::default()) {
|
||||
if let Some(demangled) = state.demangler.demangle(&state.text) {
|
||||
ui.scope(|ui| {
|
||||
ui.style_mut().override_text_style = Some(TextStyle::Monospace);
|
||||
ui.colored_label(appearance.replace_color, &demangled);
|
||||
|
||||
Reference in New Issue
Block a user