mirror of https://github.com/encounter/objdiff.git
Update all dependencies
This commit is contained in:
parent
7d0d7df54c
commit
bcc5871cd8
File diff suppressed because it is too large
Load Diff
169
deny.toml
169
deny.toml
|
@ -9,6 +9,11 @@
|
||||||
# The values provided in this template are the default values that will be used
|
# The values provided in this template are the default values that will be used
|
||||||
# when any section or field is not specified in your own configuration
|
# when any section or field is not specified in your own configuration
|
||||||
|
|
||||||
|
# Root options
|
||||||
|
|
||||||
|
# The graph table configures how the dependency graph is constructed and thus
|
||||||
|
# which crates the checks are performed against
|
||||||
|
[graph]
|
||||||
# If 1 or more target triples (and optionally, target_features) are specified,
|
# If 1 or more target triples (and optionally, target_features) are specified,
|
||||||
# only the specified targets will be checked when running `cargo deny check`.
|
# only the specified targets will be checked when running `cargo deny check`.
|
||||||
# This means, if a particular package is only ever used as a target specific
|
# This means, if a particular package is only ever used as a target specific
|
||||||
|
@ -20,51 +25,67 @@
|
||||||
targets = [
|
targets = [
|
||||||
# The triple can be any string, but only the target triples built in to
|
# The triple can be any string, but only the target triples built in to
|
||||||
# rustc (as of 1.40) can be checked against actual config expressions
|
# rustc (as of 1.40) can be checked against actual config expressions
|
||||||
#{ triple = "x86_64-unknown-linux-musl" },
|
#"x86_64-unknown-linux-musl",
|
||||||
# You can also specify which target_features you promise are enabled for a
|
# You can also specify which target_features you promise are enabled for a
|
||||||
# particular target. target_features are currently not validated against
|
# particular target. target_features are currently not validated against
|
||||||
# the actual valid features supported by the target architecture.
|
# the actual valid features supported by the target architecture.
|
||||||
#{ triple = "wasm32-unknown-unknown", features = ["atomics"] },
|
#{ triple = "wasm32-unknown-unknown", features = ["atomics"] },
|
||||||
]
|
]
|
||||||
|
# When creating the dependency graph used as the source of truth when checks are
|
||||||
|
# executed, this field can be used to prune crates from the graph, removing them
|
||||||
|
# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate
|
||||||
|
# is pruned from the graph, all of its dependencies will also be pruned unless
|
||||||
|
# they are connected to another crate in the graph that hasn't been pruned,
|
||||||
|
# so it should be used with care. The identifiers are [Package ID Specifications]
|
||||||
|
# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html)
|
||||||
|
#exclude = []
|
||||||
|
# If true, metadata will be collected with `--all-features`. Note that this can't
|
||||||
|
# be toggled off if true, if you want to conditionally enable `--all-features` it
|
||||||
|
# is recommended to pass `--all-features` on the cmd line instead
|
||||||
|
all-features = false
|
||||||
|
# If true, metadata will be collected with `--no-default-features`. The same
|
||||||
|
# caveat with `all-features` applies
|
||||||
|
no-default-features = false
|
||||||
|
# If set, these feature will be enabled when collecting metadata. If `--features`
|
||||||
|
# is specified on the cmd line they will take precedence over this option.
|
||||||
|
#features = []
|
||||||
|
|
||||||
|
# The output table provides options for how/if diagnostics are outputted
|
||||||
|
[output]
|
||||||
|
# When outputting inclusion graphs in diagnostics that include features, this
|
||||||
|
# option can be used to specify the depth at which feature edges will be added.
|
||||||
|
# This option is included since the graphs can be quite large and the addition
|
||||||
|
# of features from the crate(s) to all of the graph roots can be far too verbose.
|
||||||
|
# This option can be overridden via `--feature-depth` on the cmd line
|
||||||
|
feature-depth = 1
|
||||||
|
|
||||||
# This section is considered when running `cargo deny check advisories`
|
# This section is considered when running `cargo deny check advisories`
|
||||||
# More documentation for the advisories section can be found here:
|
# More documentation for the advisories section can be found here:
|
||||||
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
|
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
|
||||||
[advisories]
|
[advisories]
|
||||||
# The path where the advisory database is cloned/fetched into
|
# The path where the advisory databases are cloned/fetched into
|
||||||
db-path = "~/.cargo/advisory-db"
|
#db-path = "$CARGO_HOME/advisory-dbs"
|
||||||
# The url(s) of the advisory databases to use
|
# The url(s) of the advisory databases to use
|
||||||
db-urls = ["https://github.com/rustsec/advisory-db"]
|
#db-urls = ["https://github.com/rustsec/advisory-db"]
|
||||||
# The lint level for security vulnerabilities
|
|
||||||
vulnerability = "deny"
|
|
||||||
# The lint level for unmaintained crates
|
|
||||||
unmaintained = "warn"
|
|
||||||
# The lint level for crates that have been yanked from their source registry
|
|
||||||
yanked = "warn"
|
|
||||||
# The lint level for crates with security notices. Note that as of
|
|
||||||
# 2019-12-17 there are no security notice advisories in
|
|
||||||
# https://github.com/rustsec/advisory-db
|
|
||||||
notice = "warn"
|
|
||||||
# A list of advisory IDs to ignore. Note that ignored advisories will still
|
# A list of advisory IDs to ignore. Note that ignored advisories will still
|
||||||
# output a note when they are encountered.
|
# output a note when they are encountered.
|
||||||
ignore = []
|
ignore = [
|
||||||
# Threshold for security vulnerabilities, any vulnerability with a CVSS score
|
"RUSTSEC-2024-0370",
|
||||||
# lower than the range specified will be ignored. Note that ignored advisories
|
#{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" },
|
||||||
# will still output a note when they are encountered.
|
#"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish
|
||||||
# * None - CVSS Score 0.0
|
#{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" },
|
||||||
# * Low - CVSS Score 0.1 - 3.9
|
]
|
||||||
# * Medium - CVSS Score 4.0 - 6.9
|
# If this is true, then cargo deny will use the git executable to fetch advisory database.
|
||||||
# * High - CVSS Score 7.0 - 8.9
|
# If this is false, then it uses a built-in git library.
|
||||||
# * Critical - CVSS Score 9.0 - 10.0
|
# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support.
|
||||||
#severity-threshold =
|
# See Git Authentication for more information about setting up git authentication.
|
||||||
|
#git-fetch-with-cli = true
|
||||||
|
|
||||||
# This section is considered when running `cargo deny check licenses`
|
# This section is considered when running `cargo deny check licenses`
|
||||||
# More documentation for the licenses section can be found here:
|
# More documentation for the licenses section can be found here:
|
||||||
# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html
|
# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html
|
||||||
[licenses]
|
[licenses]
|
||||||
# The lint level for crates which do not have a detectable license
|
# List of explicitly allowed licenses
|
||||||
unlicensed = "deny"
|
|
||||||
# List of explictly allowed licenses
|
|
||||||
# See https://spdx.org/licenses/ for list of possible licenses
|
# See https://spdx.org/licenses/ for list of possible licenses
|
||||||
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
|
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
|
||||||
allow = [
|
allow = [
|
||||||
|
@ -83,28 +104,7 @@ allow = [
|
||||||
"OFL-1.1",
|
"OFL-1.1",
|
||||||
"LicenseRef-UFL-1.0",
|
"LicenseRef-UFL-1.0",
|
||||||
"OpenSSL",
|
"OpenSSL",
|
||||||
"GPL-3.0",
|
|
||||||
]
|
]
|
||||||
# List of explictly disallowed licenses
|
|
||||||
# See https://spdx.org/licenses/ for list of possible licenses
|
|
||||||
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
|
|
||||||
deny = [
|
|
||||||
#"Nokia",
|
|
||||||
]
|
|
||||||
# Lint level for licenses considered copyleft
|
|
||||||
copyleft = "warn"
|
|
||||||
# Blanket approval or denial for OSI-approved or FSF Free/Libre licenses
|
|
||||||
# * both - The license will be approved if it is both OSI-approved *AND* FSF
|
|
||||||
# * either - The license will be approved if it is either OSI-approved *OR* FSF
|
|
||||||
# * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF
|
|
||||||
# * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved
|
|
||||||
# * neither - This predicate is ignored and the default lint level is used
|
|
||||||
allow-osi-fsf-free = "neither"
|
|
||||||
# Lint level used when no other predicates are matched
|
|
||||||
# 1. License isn't in the allow or deny lists
|
|
||||||
# 2. License isn't copyleft
|
|
||||||
# 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither"
|
|
||||||
default = "deny"
|
|
||||||
# The confidence threshold for detecting a license from license text.
|
# The confidence threshold for detecting a license from license text.
|
||||||
# The higher the value, the more closely the license text must be to the
|
# The higher the value, the more closely the license text must be to the
|
||||||
# canonical license text of a valid SPDX license file.
|
# canonical license text of a valid SPDX license file.
|
||||||
|
@ -115,17 +115,15 @@ confidence-threshold = 0.8
|
||||||
exceptions = [
|
exceptions = [
|
||||||
# Each entry is the crate and version constraint, and its specific allow
|
# Each entry is the crate and version constraint, and its specific allow
|
||||||
# list
|
# list
|
||||||
#{ allow = ["Zlib"], name = "adler32", version = "*" },
|
#{ allow = ["Zlib"], crate = "adler32" },
|
||||||
]
|
]
|
||||||
|
|
||||||
# Some crates don't have (easily) machine readable licensing information,
|
# Some crates don't have (easily) machine readable licensing information,
|
||||||
# adding a clarification entry for it allows you to manually specify the
|
# adding a clarification entry for it allows you to manually specify the
|
||||||
# licensing information
|
# licensing information
|
||||||
[[licenses.clarify]]
|
[[licenses.clarify]]
|
||||||
# The name of the crate the clarification applies to
|
# The package spec the clarification applies to
|
||||||
name = "ring"
|
crate = "ring"
|
||||||
# The optional version constraint for the crate
|
|
||||||
version = "*"
|
|
||||||
# The SPDX expression for the license requirements of the crate
|
# The SPDX expression for the license requirements of the crate
|
||||||
expression = "MIT AND ISC AND OpenSSL"
|
expression = "MIT AND ISC AND OpenSSL"
|
||||||
# One or more files in the crate's source used as the "source of truth" for
|
# One or more files in the crate's source used as the "source of truth" for
|
||||||
|
@ -140,7 +138,9 @@ license-files = [
|
||||||
|
|
||||||
[licenses.private]
|
[licenses.private]
|
||||||
# If true, ignores workspace crates that aren't published, or are only
|
# If true, ignores workspace crates that aren't published, or are only
|
||||||
# published to private registries
|
# published to private registries.
|
||||||
|
# To see how to mark a crate as unpublished (to the official registry),
|
||||||
|
# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field.
|
||||||
ignore = false
|
ignore = false
|
||||||
# One or more private registries that you might publish crates to, if a crate
|
# One or more private registries that you might publish crates to, if a crate
|
||||||
# is only published to private registries, and ignore is true, the crate will
|
# is only published to private registries, and ignore is true, the crate will
|
||||||
|
@ -163,30 +163,63 @@ wildcards = "allow"
|
||||||
# * simplest-path - The path to the version with the fewest edges is highlighted
|
# * simplest-path - The path to the version with the fewest edges is highlighted
|
||||||
# * all - Both lowest-version and simplest-path are used
|
# * all - Both lowest-version and simplest-path are used
|
||||||
highlight = "all"
|
highlight = "all"
|
||||||
|
# The default lint level for `default` features for crates that are members of
|
||||||
|
# the workspace that is being checked. This can be overridden by allowing/denying
|
||||||
|
# `default` on a crate-by-crate basis if desired.
|
||||||
|
workspace-default-features = "allow"
|
||||||
|
# The default lint level for `default` features for external crates that are not
|
||||||
|
# members of the workspace. This can be overridden by allowing/denying `default`
|
||||||
|
# on a crate-by-crate basis if desired.
|
||||||
|
external-default-features = "allow"
|
||||||
# List of crates that are allowed. Use with care!
|
# List of crates that are allowed. Use with care!
|
||||||
allow = [
|
allow = [
|
||||||
#{ name = "ansi_term", version = "=0.11.0" },
|
#"ansi_term@0.11.0",
|
||||||
|
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" },
|
||||||
]
|
]
|
||||||
# List of crates to deny
|
# List of crates to deny
|
||||||
deny = [
|
deny = [
|
||||||
# Each entry the name of a crate and a version range. If version is
|
#"ansi_term@0.11.0",
|
||||||
# not specified, all versions will be matched.
|
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" },
|
||||||
#{ name = "ansi_term", version = "=0.11.0" },
|
|
||||||
#
|
|
||||||
# Wrapper crates can optionally be specified to allow the crate when it
|
# Wrapper crates can optionally be specified to allow the crate when it
|
||||||
# is a direct dependency of the otherwise banned crate
|
# is a direct dependency of the otherwise banned crate
|
||||||
#{ name = "ansi_term", version = "=0.11.0", wrappers = [] },
|
#{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# List of features to allow/deny
|
||||||
|
# Each entry the name of a crate and a version range. If version is
|
||||||
|
# not specified, all versions will be matched.
|
||||||
|
#[[bans.features]]
|
||||||
|
#crate = "reqwest"
|
||||||
|
# Features to not allow
|
||||||
|
#deny = ["json"]
|
||||||
|
# Features to allow
|
||||||
|
#allow = [
|
||||||
|
# "rustls",
|
||||||
|
# "__rustls",
|
||||||
|
# "__tls",
|
||||||
|
# "hyper-rustls",
|
||||||
|
# "rustls",
|
||||||
|
# "rustls-pemfile",
|
||||||
|
# "rustls-tls-webpki-roots",
|
||||||
|
# "tokio-rustls",
|
||||||
|
# "webpki-roots",
|
||||||
|
#]
|
||||||
|
# If true, the allowed features must exactly match the enabled feature set. If
|
||||||
|
# this is set there is no point setting `deny`
|
||||||
|
#exact = true
|
||||||
|
|
||||||
# Certain crates/versions that will be skipped when doing duplicate detection.
|
# Certain crates/versions that will be skipped when doing duplicate detection.
|
||||||
skip = [
|
skip = [
|
||||||
#{ name = "ansi_term", version = "=0.11.0" },
|
#"ansi_term@0.11.0",
|
||||||
|
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" },
|
||||||
]
|
]
|
||||||
# Similarly to `skip` allows you to skip certain crates during duplicate
|
# Similarly to `skip` allows you to skip certain crates during duplicate
|
||||||
# detection. Unlike skip, it also includes the entire tree of transitive
|
# detection. Unlike skip, it also includes the entire tree of transitive
|
||||||
# dependencies starting at the specified crate, up to a certain depth, which is
|
# dependencies starting at the specified crate, up to a certain depth, which is
|
||||||
# by default infinite
|
# by default infinite.
|
||||||
skip-tree = [
|
skip-tree = [
|
||||||
#{ name = "ansi_term", version = "=0.11.0", depth = 20 },
|
#"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies
|
||||||
|
#{ crate = "ansi_term@0.11.0", depth = 20 },
|
||||||
]
|
]
|
||||||
|
|
||||||
# This section is considered when running `cargo deny check sources`.
|
# This section is considered when running `cargo deny check sources`.
|
||||||
|
@ -206,9 +239,9 @@ allow-registry = ["https://github.com/rust-lang/crates.io-index"]
|
||||||
allow-git = []
|
allow-git = []
|
||||||
|
|
||||||
[sources.allow-org]
|
[sources.allow-org]
|
||||||
# 1 or more github.com organizations to allow git sources for
|
# github.com organizations to allow git sources for
|
||||||
github = ["encounter"]
|
github = ["encounter"]
|
||||||
# 1 or more gitlab.com organizations to allow git sources for
|
# gitlab.com organizations to allow git sources for
|
||||||
#gitlab = [""]
|
gitlab = []
|
||||||
# 1 or more bitbucket.org organizations to allow git sources for
|
# bitbucket.org organizations to allow git sources for
|
||||||
#bitbucket = [""]
|
bitbucket = []
|
||||||
|
|
|
@ -14,18 +14,18 @@ publish = false
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.82"
|
anyhow = "1.0"
|
||||||
argp = "0.3.0"
|
argp = "0.3"
|
||||||
crossterm = "0.27.0"
|
crossterm = "0.28"
|
||||||
enable-ansi-support = "0.2.1"
|
enable-ansi-support = "0.2"
|
||||||
memmap2 = "0.9.4"
|
memmap2 = "0.9"
|
||||||
objdiff-core = { path = "../objdiff-core", features = ["all"] }
|
objdiff-core = { path = "../objdiff-core", features = ["all"] }
|
||||||
prost = "0.13.1"
|
prost = "0.13"
|
||||||
ratatui = "0.26.2"
|
ratatui = "0.28"
|
||||||
rayon = "1.10.0"
|
rayon = "1.10"
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0.116"
|
serde_json = "1.0"
|
||||||
supports-color = "3.0.0"
|
supports-color = "3.0"
|
||||||
time = { version = "0.3.36", features = ["formatting", "local-offset"] }
|
time = { version = "0.3", features = ["formatting", "local-offset"] }
|
||||||
tracing = "0.1.40"
|
tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||||
|
|
|
@ -345,7 +345,7 @@ enum EventControlFlow {
|
||||||
|
|
||||||
impl FunctionDiffUi {
|
impl FunctionDiffUi {
|
||||||
fn draw(&mut self, f: &mut Frame, result: &mut EventResult) {
|
fn draw(&mut self, f: &mut Frame, result: &mut EventResult) {
|
||||||
let chunks = Layout::vertical([Constraint::Length(1), Constraint::Fill(1)]).split(f.size());
|
let chunks = Layout::vertical([Constraint::Length(1), Constraint::Fill(1)]).split(f.area());
|
||||||
let header_chunks = Layout::horizontal([
|
let header_chunks = Layout::horizontal([
|
||||||
Constraint::Fill(1),
|
Constraint::Fill(1),
|
||||||
Constraint::Length(3),
|
Constraint::Length(3),
|
||||||
|
@ -415,7 +415,7 @@ impl FunctionDiffUi {
|
||||||
get_symbol_diff(self.diff_result.left.as_ref(), self.left_sym),
|
get_symbol_diff(self.diff_result.left.as_ref(), self.left_sym),
|
||||||
) {
|
) {
|
||||||
let mut text = Text::default();
|
let mut text = Text::default();
|
||||||
let rect = content_chunks[0].inner(&Margin::new(0, 1));
|
let rect = content_chunks[0].inner(Margin::new(0, 1));
|
||||||
left_highlight = self.print_sym(
|
left_highlight = self.print_sym(
|
||||||
&mut text,
|
&mut text,
|
||||||
symbol,
|
symbol,
|
||||||
|
@ -437,7 +437,7 @@ impl FunctionDiffUi {
|
||||||
get_symbol_diff(self.diff_result.right.as_ref(), self.right_sym),
|
get_symbol_diff(self.diff_result.right.as_ref(), self.right_sym),
|
||||||
) {
|
) {
|
||||||
let mut text = Text::default();
|
let mut text = Text::default();
|
||||||
let rect = content_chunks[2].inner(&Margin::new(0, 1));
|
let rect = content_chunks[2].inner(Margin::new(0, 1));
|
||||||
right_highlight = self.print_sym(
|
right_highlight = self.print_sym(
|
||||||
&mut text,
|
&mut text,
|
||||||
symbol,
|
symbol,
|
||||||
|
@ -452,7 +452,7 @@ impl FunctionDiffUi {
|
||||||
|
|
||||||
// Render margin
|
// Render margin
|
||||||
let mut text = Text::default();
|
let mut text = Text::default();
|
||||||
let rect = content_chunks[1].inner(&Margin::new(1, 1));
|
let rect = content_chunks[1].inner(Margin::new(1, 1));
|
||||||
self.print_margin(&mut text, symbol_diff, rect);
|
self.print_margin(&mut text, symbol_diff, rect);
|
||||||
margin_text = Some(text);
|
margin_text = Some(text);
|
||||||
}
|
}
|
||||||
|
@ -465,7 +465,7 @@ impl FunctionDiffUi {
|
||||||
get_symbol_diff(self.diff_result.prev.as_ref(), self.prev_sym),
|
get_symbol_diff(self.diff_result.prev.as_ref(), self.prev_sym),
|
||||||
) {
|
) {
|
||||||
let mut text = Text::default();
|
let mut text = Text::default();
|
||||||
let rect = content_chunks[4].inner(&Margin::new(0, 1));
|
let rect = content_chunks[4].inner(Margin::new(0, 1));
|
||||||
self.print_sym(
|
self.print_sym(
|
||||||
&mut text,
|
&mut text,
|
||||||
symbol,
|
symbol,
|
||||||
|
@ -480,7 +480,7 @@ impl FunctionDiffUi {
|
||||||
|
|
||||||
// Render margin
|
// Render margin
|
||||||
let mut text = Text::default();
|
let mut text = Text::default();
|
||||||
let rect = content_chunks[3].inner(&Margin::new(1, 1));
|
let rect = content_chunks[3].inner(Margin::new(1, 1));
|
||||||
self.print_margin(&mut text, symbol_diff, rect);
|
self.print_margin(&mut text, symbol_diff, rect);
|
||||||
prev_margin_text = Some(text);
|
prev_margin_text = Some(text);
|
||||||
}
|
}
|
||||||
|
@ -498,18 +498,30 @@ impl FunctionDiffUi {
|
||||||
// Render left column
|
// Render left column
|
||||||
f.render_widget(
|
f.render_widget(
|
||||||
Paragraph::new(text)
|
Paragraph::new(text)
|
||||||
.block(Block::new().borders(Borders::TOP).gray().title("TARGET".bold()))
|
.block(
|
||||||
|
Block::new()
|
||||||
|
.borders(Borders::TOP)
|
||||||
|
.border_style(Style::new().fg(Color::Gray))
|
||||||
|
.title_style(Style::new().bold())
|
||||||
|
.title("TARGET"),
|
||||||
|
)
|
||||||
.scroll((0, self.scroll_x as u16)),
|
.scroll((0, self.scroll_x as u16)),
|
||||||
content_chunks[0],
|
content_chunks[0],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if let Some(text) = margin_text {
|
if let Some(text) = margin_text {
|
||||||
f.render_widget(text, content_chunks[1].inner(&Margin::new(1, 1)));
|
f.render_widget(text, content_chunks[1].inner(Margin::new(1, 1)));
|
||||||
}
|
}
|
||||||
if let Some(text) = right_text {
|
if let Some(text) = right_text {
|
||||||
f.render_widget(
|
f.render_widget(
|
||||||
Paragraph::new(text)
|
Paragraph::new(text)
|
||||||
.block(Block::new().borders(Borders::TOP).gray().title("CURRENT".bold()))
|
.block(
|
||||||
|
Block::new()
|
||||||
|
.borders(Borders::TOP)
|
||||||
|
.border_style(Style::new().fg(Color::Gray))
|
||||||
|
.title_style(Style::new().bold())
|
||||||
|
.title("CURRENT"),
|
||||||
|
)
|
||||||
.scroll((0, self.scroll_x as u16)),
|
.scroll((0, self.scroll_x as u16)),
|
||||||
content_chunks[2],
|
content_chunks[2],
|
||||||
);
|
);
|
||||||
|
@ -517,9 +529,13 @@ impl FunctionDiffUi {
|
||||||
|
|
||||||
if self.three_way {
|
if self.three_way {
|
||||||
if let Some(text) = prev_margin_text {
|
if let Some(text) = prev_margin_text {
|
||||||
f.render_widget(text, content_chunks[3].inner(&Margin::new(1, 1)));
|
f.render_widget(text, content_chunks[3].inner(Margin::new(1, 1)));
|
||||||
}
|
}
|
||||||
let block = Block::new().borders(Borders::TOP).gray().title("SAVED".bold());
|
let block = Block::new()
|
||||||
|
.borders(Borders::TOP)
|
||||||
|
.border_style(Style::new().fg(Color::Gray))
|
||||||
|
.title_style(Style::new().bold())
|
||||||
|
.title("SAVED");
|
||||||
if let Some(text) = prev_text {
|
if let Some(text) = prev_text {
|
||||||
f.render_widget(
|
f.render_widget(
|
||||||
Paragraph::new(text).block(block.clone()).scroll((0, self.scroll_x as u16)),
|
Paragraph::new(text).block(block.clone()).scroll((0, self.scroll_x as u16)),
|
||||||
|
@ -533,7 +549,7 @@ impl FunctionDiffUi {
|
||||||
// Render scrollbars
|
// Render scrollbars
|
||||||
f.render_stateful_widget(
|
f.render_stateful_widget(
|
||||||
Scrollbar::new(ScrollbarOrientation::VerticalRight).begin_symbol(None).end_symbol(None),
|
Scrollbar::new(ScrollbarOrientation::VerticalRight).begin_symbol(None).end_symbol(None),
|
||||||
chunks[1].inner(&Margin::new(0, 1)),
|
chunks[1].inner(Margin::new(0, 1)),
|
||||||
&mut self.scroll_state_y,
|
&mut self.scroll_state_y,
|
||||||
);
|
);
|
||||||
f.render_stateful_widget(
|
f.render_stateful_widget(
|
||||||
|
@ -589,7 +605,7 @@ impl FunctionDiffUi {
|
||||||
Constraint::Percentage(percent_y),
|
Constraint::Percentage(percent_y),
|
||||||
Constraint::Percentage((100 - percent_y) / 2),
|
Constraint::Percentage((100 - percent_y) / 2),
|
||||||
])
|
])
|
||||||
.split(f.size())[1];
|
.split(f.area())[1];
|
||||||
let popup_rect = Layout::horizontal([
|
let popup_rect = Layout::horizontal([
|
||||||
Constraint::Percentage((100 - percent_x) / 2),
|
Constraint::Percentage((100 - percent_x) / 2),
|
||||||
Constraint::Percentage(percent_x),
|
Constraint::Percentage(percent_x),
|
||||||
|
|
|
@ -27,50 +27,50 @@ bindings = ["serde_json", "prost", "pbjson"]
|
||||||
wasm = ["bindings", "console_error_panic_hook", "console_log"]
|
wasm = ["bindings", "console_error_panic_hook", "console_log"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.82"
|
anyhow = "1.0"
|
||||||
byteorder = "1.5.0"
|
byteorder = "1.5"
|
||||||
filetime = "0.2.23"
|
filetime = "0.2"
|
||||||
flagset = "0.4.5"
|
flagset = "0.4"
|
||||||
log = "0.4.21"
|
log = "0.4"
|
||||||
memmap2 = "0.9.4"
|
memmap2 = "0.9"
|
||||||
num-traits = "0.2.18"
|
num-traits = "0.2"
|
||||||
object = { version = "0.36.0", features = ["read_core", "std", "elf", "pe"], default-features = false }
|
object = { version = "0.36", features = ["read_core", "std", "elf", "pe"], default-features = false }
|
||||||
pbjson = { version = "0.7.0", optional = true }
|
pbjson = { version = "0.7", optional = true }
|
||||||
prost = { version = "0.13.1", optional = true }
|
prost = { version = "0.13", optional = true }
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
similar = { version = "2.5.0", default-features = false }
|
similar = { version = "2.6", default-features = false }
|
||||||
strum = { version = "0.26.2", features = ["derive"] }
|
strum = { version = "0.26", features = ["derive"] }
|
||||||
wasm-bindgen = "0.2.93"
|
wasm-bindgen = "0.2"
|
||||||
tsify-next = { version = "0.5.4", default-features = false, features = ["js"] }
|
tsify-next = { version = "0.5", default-features = false, features = ["js"] }
|
||||||
console_log = { version = "1.0.0", optional = true }
|
console_log = { version = "1.0", optional = true }
|
||||||
console_error_panic_hook = { version = "0.1.7", optional = true }
|
console_error_panic_hook = { version = "0.1", optional = true }
|
||||||
|
|
||||||
# config
|
# config
|
||||||
globset = { version = "0.4.14", features = ["serde1"], optional = true }
|
globset = { version = "0.4", features = ["serde1"], optional = true }
|
||||||
semver = { version = "1.0.22", optional = true }
|
semver = { version = "1.0", optional = true }
|
||||||
serde_json = { version = "1.0.116", optional = true }
|
serde_json = { version = "1.0", optional = true }
|
||||||
serde_yaml = { version = "0.9.34", optional = true }
|
serde_yaml = { version = "0.9", optional = true }
|
||||||
|
|
||||||
# dwarf
|
# dwarf
|
||||||
gimli = { version = "0.29.0", default-features = false, features = ["read-all"], optional = true }
|
gimli = { version = "0.31", default-features = false, features = ["read-all"], optional = true }
|
||||||
|
|
||||||
# ppc
|
# ppc
|
||||||
cwdemangle = { version = "1.0.0", optional = true }
|
cwdemangle = { version = "1.0", optional = true }
|
||||||
cwextab = { version = "0.2.3", optional = true }
|
cwextab = { version = "0.2", optional = true }
|
||||||
ppc750cl = { git = "https://github.com/encounter/ppc750cl", rev = "6cbd7d888c7082c2c860f66cbb9848d633f753ed", optional = true }
|
ppc750cl = { git = "https://github.com/encounter/ppc750cl", rev = "6cbd7d888c7082c2c860f66cbb9848d633f753ed", optional = true }
|
||||||
|
|
||||||
# mips
|
# mips
|
||||||
rabbitizer = { version = "1.11.0", optional = true }
|
rabbitizer = { version = "1.12", optional = true }
|
||||||
|
|
||||||
# x86
|
# x86
|
||||||
cpp_demangle = { version = "0.4.3", optional = true }
|
cpp_demangle = { version = "0.4", optional = true }
|
||||||
iced-x86 = { version = "1.21.0", default-features = false, features = ["std", "decoder", "intel", "gas", "masm", "nasm", "exhaustive_enums"], optional = true }
|
iced-x86 = { version = "1.21", default-features = false, features = ["std", "decoder", "intel", "gas", "masm", "nasm", "exhaustive_enums"], optional = true }
|
||||||
msvc-demangler = { version = "0.10.0", optional = true }
|
msvc-demangler = { version = "0.10", optional = true }
|
||||||
|
|
||||||
# arm
|
# arm
|
||||||
unarm = { version = "1.5.0", optional = true }
|
unarm = { version = "1.6", optional = true }
|
||||||
arm-attr = { version = "0.1.1", optional = true }
|
arm-attr = { version = "0.1", optional = true }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
prost-build = "0.13.1"
|
prost-build = "0.13"
|
||||||
pbjson-build = "0.7.0"
|
pbjson-build = "0.7"
|
||||||
|
|
|
@ -24,38 +24,38 @@ wgpu = ["eframe/wgpu", "dep:wgpu"]
|
||||||
wsl = []
|
wsl = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.82"
|
anyhow = "1.0"
|
||||||
bytes = "1.6.0"
|
bytes = "1.7"
|
||||||
cfg-if = "1.0.0"
|
cfg-if = "1.0"
|
||||||
const_format = "0.2.32"
|
const_format = "0.2"
|
||||||
cwdemangle = "1.0.0"
|
cwdemangle = "1.0"
|
||||||
cwextab = "0.2.3"
|
cwextab = "0.2"
|
||||||
dirs = "5.0.1"
|
dirs = "5.0"
|
||||||
egui = "0.27.2"
|
egui = "0.28"
|
||||||
egui_extras = "0.27.2"
|
egui_extras = "0.28"
|
||||||
filetime = "0.2.23"
|
filetime = "0.2"
|
||||||
float-ord = "0.3.2"
|
float-ord = "0.3"
|
||||||
font-kit = "0.13.0"
|
font-kit = "0.14"
|
||||||
globset = { version = "0.4.14", features = ["serde1"] }
|
globset = { version = "0.4", features = ["serde1"] }
|
||||||
log = "0.4.21"
|
log = "0.4"
|
||||||
notify = { git = "https://github.com/encounter/notify", rev = "4c1783e8e041b5f69d4cf1750b9f07e335a0771e" }
|
notify = { git = "https://github.com/notify-rs/notify", rev = "128bf6230c03d39dbb7f301ff7b20e594e34c3a2" }
|
||||||
objdiff-core = { path = "../objdiff-core", features = ["all"] }
|
objdiff-core = { path = "../objdiff-core", features = ["all"] }
|
||||||
png = "0.17.13"
|
png = "0.17"
|
||||||
pollster = "0.3.0"
|
pollster = "0.3"
|
||||||
regex = "1.10.5"
|
regex = "1.10"
|
||||||
rfd = { version = "0.14.1" } #, default-features = false, features = ['xdg-portal']
|
rfd = { version = "0.14" } #, default-features = false, features = ['xdg-portal']
|
||||||
rlwinmdec = "1.0.1"
|
rlwinmdec = "1.0"
|
||||||
ron = "0.8.1"
|
ron = "0.8"
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0.116"
|
serde_json = "1.0"
|
||||||
shell-escape = "0.1.5"
|
shell-escape = "0.1"
|
||||||
strum = { version = "0.26.2", features = ["derive"] }
|
strum = { version = "0.26", features = ["derive"] }
|
||||||
tempfile = "3.10.1"
|
tempfile = "3.12"
|
||||||
time = { version = "0.3.36", features = ["formatting", "local-offset"] }
|
time = { version = "0.3", features = ["formatting", "local-offset"] }
|
||||||
|
|
||||||
# Keep version in sync with egui
|
# Keep version in sync with egui
|
||||||
[dependencies.eframe]
|
[dependencies.eframe]
|
||||||
version = "0.27.2"
|
version = "0.28"
|
||||||
features = [
|
features = [
|
||||||
"default_fonts",
|
"default_fonts",
|
||||||
"persistence",
|
"persistence",
|
||||||
|
@ -66,7 +66,7 @@ default-features = false
|
||||||
|
|
||||||
# Keep version in sync with eframe
|
# Keep version in sync with eframe
|
||||||
[dependencies.wgpu]
|
[dependencies.wgpu]
|
||||||
version = "0.19.1"
|
version = "0.20"
|
||||||
features = [
|
features = [
|
||||||
"dx12",
|
"dx12",
|
||||||
"metal",
|
"metal",
|
||||||
|
@ -77,23 +77,23 @@ default-features = false
|
||||||
|
|
||||||
# For Linux static binaries, use rustls
|
# For Linux static binaries, use rustls
|
||||||
[target.'cfg(target_os = "linux")'.dependencies]
|
[target.'cfg(target_os = "linux")'.dependencies]
|
||||||
reqwest = { version = "0.12.4", default-features = false, features = ["blocking", "json", "multipart", "rustls-tls"] }
|
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "multipart", "rustls-tls"] }
|
||||||
self_update = { version = "0.40.0", default-features = false, features = ["rustls"] }
|
self_update = { version = "0.41", default-features = false, features = ["rustls"] }
|
||||||
|
|
||||||
# For all other platforms, use native TLS
|
# For all other platforms, use native TLS
|
||||||
[target.'cfg(not(target_os = "linux"))'.dependencies]
|
[target.'cfg(not(target_os = "linux"))'.dependencies]
|
||||||
reqwest = { version = "0.12.4", default-features = false, features = ["blocking", "json", "multipart", "default-tls"] }
|
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "multipart", "default-tls"] }
|
||||||
self_update = "0.40.0"
|
self_update = "0.41"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
path-slash = "0.2.1"
|
path-slash = "0.2"
|
||||||
winapi = "0.3.9"
|
winapi = "0.3"
|
||||||
|
|
||||||
[target.'cfg(windows)'.build-dependencies]
|
[target.'cfg(windows)'.build-dependencies]
|
||||||
winres = "0.1.12"
|
winres = "0.1"
|
||||||
|
|
||||||
[target.'cfg(unix)'.dependencies]
|
[target.'cfg(unix)'.dependencies]
|
||||||
exec = "0.3.1"
|
exec = "0.3"
|
||||||
|
|
||||||
# native:
|
# native:
|
||||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||||
|
@ -101,9 +101,9 @@ tracing-subscriber = "0.3"
|
||||||
|
|
||||||
# web:
|
# web:
|
||||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||||
console_error_panic_hook = "0.1.7"
|
console_error_panic_hook = "0.1"
|
||||||
tracing-wasm = "0.2"
|
tracing-wasm = "0.2"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
anyhow = "1.0.82"
|
anyhow = "1.0"
|
||||||
vergen = { version = "8.3.1", features = ["build", "cargo", "git", "gitcl"] }
|
vergen-gitcl = { version = "1.0", features = ["build", "cargo"] }
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use vergen::EmitBuilder;
|
use vergen_gitcl::{BuildBuilder, CargoBuilder, Emitter, GitclBuilder};
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
{
|
{
|
||||||
winres::WindowsResource::new().set_icon("assets/icon.ico").compile()?;
|
winres::WindowsResource::new().set_icon("assets/icon.ico").compile()?;
|
||||||
}
|
}
|
||||||
EmitBuilder::builder().fail_on_error().all_build().all_cargo().all_git().emit()
|
Emitter::default()
|
||||||
|
.add_instructions(&BuildBuilder::all_build()?)?
|
||||||
|
.add_instructions(&CargoBuilder::all_cargo()?)?
|
||||||
|
.add_instructions(&GitclBuilder::all_git()?)?
|
||||||
|
.emit()
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,14 +189,14 @@ fn run_eframe(
|
||||||
APP_NAME,
|
APP_NAME,
|
||||||
native_options,
|
native_options,
|
||||||
Box::new(move |cc| {
|
Box::new(move |cc| {
|
||||||
Box::new(app::App::new(
|
Ok(Box::new(app::App::new(
|
||||||
cc,
|
cc,
|
||||||
utc_offset,
|
utc_offset,
|
||||||
exec_path_clone,
|
exec_path_clone,
|
||||||
app_path,
|
app_path,
|
||||||
graphics_config,
|
graphics_config,
|
||||||
graphics_config_path,
|
graphics_config_path,
|
||||||
))
|
)))
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -314,7 +314,7 @@ pub fn config_ui(
|
||||||
.default_open(true)
|
.default_open(true)
|
||||||
.show(ui, |ui| {
|
.show(ui, |ui| {
|
||||||
let search = state.object_search.to_ascii_lowercase();
|
let search = state.object_search.to_ascii_lowercase();
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
for node in object_nodes.iter().filter_map(|node| {
|
for node in object_nodes.iter().filter_map(|node| {
|
||||||
filter_node(
|
filter_node(
|
||||||
node,
|
node,
|
||||||
|
|
|
@ -191,6 +191,8 @@ pub fn data_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &A
|
||||||
Vec2 { x: available_width, y: 100.0 },
|
Vec2 { x: available_width, y: 100.0 },
|
||||||
Layout::left_to_right(Align::Min),
|
Layout::left_to_right(Align::Min),
|
||||||
|ui| {
|
|ui| {
|
||||||
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Truncate);
|
||||||
|
|
||||||
// Left column
|
// Left column
|
||||||
ui.allocate_ui_with_layout(
|
ui.allocate_ui_with_layout(
|
||||||
Vec2 { x: column_width, y: 100.0 },
|
Vec2 { x: column_width, y: 100.0 },
|
||||||
|
@ -204,7 +206,6 @@ pub fn data_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &A
|
||||||
|
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
ui.colored_label(appearance.highlight_color, &selected_symbol.symbol_name);
|
ui.colored_label(appearance.highlight_color, &selected_symbol.symbol_name);
|
||||||
ui.label("Diff target:");
|
ui.label("Diff target:");
|
||||||
});
|
});
|
||||||
|
@ -227,7 +228,6 @@ pub fn data_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &A
|
||||||
}
|
}
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
if state.build_running {
|
if state.build_running {
|
||||||
ui.colored_label(appearance.replace_color, "Building…");
|
ui.colored_label(appearance.replace_color, "Building…");
|
||||||
} else {
|
} else {
|
||||||
|
@ -247,7 +247,6 @@ pub fn data_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &A
|
||||||
|
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
ui.label("");
|
ui.label("");
|
||||||
ui.label("Diff base:");
|
ui.label("Diff base:");
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use egui::{text::LayoutJob, Align, Layout, ScrollArea, Ui, Vec2};
|
use egui::{Align, Layout, ScrollArea, Ui, Vec2};
|
||||||
use egui_extras::{Size, StripBuilder};
|
use egui_extras::{Size, StripBuilder};
|
||||||
use objdiff_core::{
|
use objdiff_core::{
|
||||||
diff::ObjDiff,
|
diff::ObjDiff,
|
||||||
|
@ -83,7 +83,7 @@ fn extab_ui(
|
||||||
ScrollArea::both().auto_shrink([false, false]).show(ui, |ui| {
|
ScrollArea::both().auto_shrink([false, false]).show(ui, |ui| {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
let symbol = obj.and_then(|(obj, _)| find_symbol(obj, selected_symbol));
|
let symbol = obj.and_then(|(obj, _)| find_symbol(obj, selected_symbol));
|
||||||
|
|
||||||
|
@ -107,6 +107,8 @@ pub fn extab_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &
|
||||||
Vec2 { x: available_width, y: 100.0 },
|
Vec2 { x: available_width, y: 100.0 },
|
||||||
Layout::left_to_right(Align::Min),
|
Layout::left_to_right(Align::Min),
|
||||||
|ui| {
|
|ui| {
|
||||||
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Truncate);
|
||||||
|
|
||||||
// Left column
|
// Left column
|
||||||
ui.allocate_ui_with_layout(
|
ui.allocate_ui_with_layout(
|
||||||
Vec2 { x: column_width, y: 100.0 },
|
Vec2 { x: column_width, y: 100.0 },
|
||||||
|
@ -124,18 +126,9 @@ pub fn extab_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &
|
||||||
.demangled_symbol_name
|
.demangled_symbol_name
|
||||||
.as_deref()
|
.as_deref()
|
||||||
.unwrap_or(&selected_symbol.symbol_name);
|
.unwrap_or(&selected_symbol.symbol_name);
|
||||||
let mut job = LayoutJob::simple(
|
|
||||||
name.to_string(),
|
|
||||||
appearance.code_font.clone(),
|
|
||||||
appearance.highlight_color,
|
|
||||||
column_width,
|
|
||||||
);
|
|
||||||
job.wrap.break_anywhere = true;
|
|
||||||
job.wrap.max_rows = 1;
|
|
||||||
ui.label(job);
|
|
||||||
|
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
|
ui.colored_label(appearance.highlight_color, name);
|
||||||
ui.label("Diff target:");
|
ui.label("Diff target:");
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -157,7 +150,6 @@ pub fn extab_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance: &
|
||||||
}
|
}
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
if state.build_running {
|
if state.build_running {
|
||||||
ui.colored_label(appearance.replace_color, "Building…");
|
ui.colored_label(appearance.replace_color, "Building…");
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -32,7 +32,7 @@ fn ins_hover_ui(
|
||||||
) {
|
) {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
let offset = ins.address - section.address;
|
let offset = ins.address - section.address;
|
||||||
ui.label(format!(
|
ui.label(format!(
|
||||||
|
@ -89,7 +89,7 @@ fn ins_hover_ui(
|
||||||
fn ins_context_menu(ui: &mut egui::Ui, section: &ObjSection, ins: &ObjIns, symbol: &ObjSymbol) {
|
fn ins_context_menu(ui: &mut egui::Ui, section: &ObjSection, ins: &ObjIns, symbol: &ObjSymbol) {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
if ui.button(format!("Copy \"{}\"", ins.formatted)).clicked() {
|
if ui.button(format!("Copy \"{}\"", ins.formatted)).clicked() {
|
||||||
ui.output_mut(|output| output.copied_text.clone_from(&ins.formatted));
|
ui.output_mut(|output| output.copied_text.clone_from(&ins.formatted));
|
||||||
|
@ -364,6 +364,8 @@ pub fn function_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance
|
||||||
Vec2 { x: available_width, y: 100.0 },
|
Vec2 { x: available_width, y: 100.0 },
|
||||||
Layout::left_to_right(Align::Min),
|
Layout::left_to_right(Align::Min),
|
||||||
|ui| {
|
|ui| {
|
||||||
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Truncate);
|
||||||
|
|
||||||
// Left column
|
// Left column
|
||||||
ui.allocate_ui_with_layout(
|
ui.allocate_ui_with_layout(
|
||||||
Vec2 { x: column_width, y: 100.0 },
|
Vec2 { x: column_width, y: 100.0 },
|
||||||
|
@ -393,18 +395,9 @@ pub fn function_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance
|
||||||
.demangled_symbol_name
|
.demangled_symbol_name
|
||||||
.as_deref()
|
.as_deref()
|
||||||
.unwrap_or(&selected_symbol.symbol_name);
|
.unwrap_or(&selected_symbol.symbol_name);
|
||||||
let mut job = LayoutJob::simple(
|
|
||||||
name.to_string(),
|
|
||||||
appearance.code_font.clone(),
|
|
||||||
appearance.highlight_color,
|
|
||||||
column_width,
|
|
||||||
);
|
|
||||||
job.wrap.break_anywhere = true;
|
|
||||||
job.wrap.max_rows = 1;
|
|
||||||
ui.label(job);
|
|
||||||
|
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
|
ui.colored_label(appearance.highlight_color, name);
|
||||||
ui.label("Diff target:");
|
ui.label("Diff target:");
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -426,7 +419,6 @@ pub fn function_diff_ui(ui: &mut egui::Ui, state: &mut DiffViewState, appearance
|
||||||
}
|
}
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
if state.build_running {
|
if state.build_running {
|
||||||
ui.colored_label(appearance.replace_color, "Building…");
|
ui.colored_label(appearance.replace_color, "Building…");
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -143,7 +143,7 @@ fn symbol_context_menu_ui(
|
||||||
) {
|
) {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
if let Some(name) = &symbol.demangled_name {
|
if let Some(name) = &symbol.demangled_name {
|
||||||
if ui.button(format!("Copy \"{name}\"")).clicked() {
|
if ui.button(format!("Copy \"{name}\"")).clicked() {
|
||||||
|
@ -178,7 +178,7 @@ fn symbol_context_menu_ui(
|
||||||
fn symbol_hover_ui(ui: &mut Ui, symbol: &ObjSymbol, appearance: &Appearance) {
|
fn symbol_hover_ui(ui: &mut Ui, symbol: &ObjSymbol, appearance: &Appearance) {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
ui.colored_label(appearance.highlight_color, format!("Name: {}", symbol.name));
|
ui.colored_label(appearance.highlight_color, format!("Name: {}", symbol.name));
|
||||||
ui.colored_label(appearance.highlight_color, format!("Address: {:x}", symbol.address));
|
ui.colored_label(appearance.highlight_color, format!("Address: {:x}", symbol.address));
|
||||||
|
@ -331,7 +331,7 @@ fn symbol_list_ui(
|
||||||
ScrollArea::both().auto_shrink([false, false]).show(ui, |ui| {
|
ScrollArea::both().auto_shrink([false, false]).show(ui, |ui| {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
if !obj.0.common.is_empty() {
|
if !obj.0.common.is_empty() {
|
||||||
CollapsingHeader::new(".comm").default_open(true).show(ui, |ui| {
|
CollapsingHeader::new(".comm").default_open(true).show(ui, |ui| {
|
||||||
|
@ -438,7 +438,7 @@ fn build_log_ui(ui: &mut Ui, status: &BuildStatus, appearance: &Appearance) {
|
||||||
});
|
});
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
ui.label(&status.cmdline);
|
ui.label(&status.cmdline);
|
||||||
ui.colored_label(appearance.replace_color, &status.stdout);
|
ui.colored_label(appearance.replace_color, &status.stdout);
|
||||||
|
@ -450,7 +450,7 @@ fn build_log_ui(ui: &mut Ui, status: &BuildStatus, appearance: &Appearance) {
|
||||||
fn missing_obj_ui(ui: &mut Ui, appearance: &Appearance) {
|
fn missing_obj_ui(ui: &mut Ui, appearance: &Appearance) {
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Extend);
|
||||||
|
|
||||||
ui.colored_label(appearance.replace_color, "No object configured");
|
ui.colored_label(appearance.replace_color, "No object configured");
|
||||||
});
|
});
|
||||||
|
@ -469,6 +469,8 @@ pub fn symbol_diff_ui(ui: &mut Ui, state: &mut DiffViewState, appearance: &Appea
|
||||||
Vec2 { x: available_width, y: 100.0 },
|
Vec2 { x: available_width, y: 100.0 },
|
||||||
Layout::left_to_right(Align::Min),
|
Layout::left_to_right(Align::Min),
|
||||||
|ui| {
|
|ui| {
|
||||||
|
ui.style_mut().wrap_mode = Some(egui::TextWrapMode::Truncate);
|
||||||
|
|
||||||
// Left column
|
// Left column
|
||||||
ui.allocate_ui_with_layout(
|
ui.allocate_ui_with_layout(
|
||||||
Vec2 { x: column_width, y: 100.0 },
|
Vec2 { x: column_width, y: 100.0 },
|
||||||
|
@ -478,7 +480,6 @@ pub fn symbol_diff_ui(ui: &mut Ui, state: &mut DiffViewState, appearance: &Appea
|
||||||
|
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
|
|
||||||
ui.label("Build target:");
|
ui.label("Build target:");
|
||||||
if result.first_status.success {
|
if result.first_status.success {
|
||||||
|
@ -515,7 +516,6 @@ pub fn symbol_diff_ui(ui: &mut Ui, state: &mut DiffViewState, appearance: &Appea
|
||||||
|
|
||||||
ui.scope(|ui| {
|
ui.scope(|ui| {
|
||||||
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
ui.style_mut().override_text_style = Some(egui::TextStyle::Monospace);
|
||||||
ui.style_mut().wrap = Some(false);
|
|
||||||
|
|
||||||
ui.label("Build base:");
|
ui.label("Build base:");
|
||||||
if result.second_status.success {
|
if result.second_status.success {
|
||||||
|
|
Loading…
Reference in New Issue