mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-26 02:58:32 -06:00
* refactor(ui): side panels on craft-ui task panes and the shared rail
The Tools pane and the open side panel are docked craft-ui task panes
(craft_ui::panes::PaneHost, Columns policy, no title bars, not movable),
and the rail is craft_ui::panes::Rail with the page navigation cluster
as its foot. On the right, outermost first: the rail, Tools when
Preferences > Tools panel side is Right, the side panel, the page.
Read mode uses the same panes without Tools; All tools full view still
covers them. Floating, tab groups and drag-in are gone with docking.rs.
- Widths are resizable within the old limits and saved under a new
side_panels preference (version 1) with the Tools side and open state.
The old docking value is read once as plain JSON and dropped on save.
- ui.dock becomes ui.panel {panel: tools|side, open, width};
ui.dock.reset resets the side panels ("Reset side panels").
- F4 shows or hides the side panel (reopening the last one) and
Shift+F4 the Tools panel, as View menu commands.
- craft-ui pinned to e9630ae7 (craft-libs#309).
* fix(ui): side panels clippy lint and the dragged-width test's grab offset
* chore(deps): pin craft-ui at 7c42807, whose pane resize edges work over the page
* chore(deps): pin craft-ui at craft-libs main ea4c823, with panes::Rail
124 lines
5.2 KiB
TOML
124 lines
5.2 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
exclude = ["vendor"]
|
|
default-members = ["crates/*", "apps/pdfcraft", "apps/pdfcraft-cli", "xtask"]
|
|
|
|
[workspace.package]
|
|
version = "0.14.0"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.95"
|
|
repository = "https://github.com/storytold/pdfcraft"
|
|
|
|
[workspace.dependencies]
|
|
# Shared frontend components; engines remain independent of egui.
|
|
craft-ui = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "ea4c823abb46fa9d21361604ed1c6d21c54e9ca8", features = ["serde"] }
|
|
# Quit the macOS way (#1136): ⌘Q asks about unsaved changes, and closing quits through `terminate:`.
|
|
craft-quit = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "f58bc1a3df490992d633393d0898af0588ce882c" }
|
|
# Shared system spooler; document composition remains in pdfcraft-print.
|
|
craft-print = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "666c358065261a2816b376fa3bb10538dbf53040" }
|
|
# Whether a path stored in a document may be opened (GoToR link targets).
|
|
craft-docpath = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "82a24b006eefa036b43c09a67fb9a3fbd17ffe63" }
|
|
# internal
|
|
pdfcraft-geom = { path = "crates/geom", version = "0.14.0" }
|
|
pdfcraft-filters = { path = "crates/filters", version = "0.14.0" }
|
|
pdfcraft-cos = { path = "crates/cos", version = "0.14.0" }
|
|
pdfcraft-crypt = { path = "crates/crypt", version = "0.14.0" }
|
|
pdfcraft-organize = { path = "crates/organize", version = "0.14.0" }
|
|
pdfcraft-measure = { path = "crates/measure", version = "0.14.0" }
|
|
pdfcraft-annot = { path = "crates/annot", version = "0.14.0" }
|
|
pdfcraft-audit = { path = "crates/audit", version = "0.14.0" }
|
|
pdfcraft-fonts = { path = "crates/fonts", version = "0.14.0" }
|
|
pdfcraft-model = { path = "crates/model", version = "0.14.0" }
|
|
pdfcraft-content = { path = "crates/content", version = "0.14.0" }
|
|
pdfcraft-redact = { path = "crates/redact", version = "0.14.0" }
|
|
pdfcraft-print = { path = "crates/print", version = "0.14.0" }
|
|
pdfcraft-xfdf = { path = "crates/xfdf", version = "0.14.0" }
|
|
pdfcraft-sign = { path = "crates/sign", version = "0.14.0" }
|
|
pdfcraft-optimize = { path = "crates/optimize", version = "0.14.0" }
|
|
pdfcraft-a11y = { path = "crates/a11y", version = "0.14.0" }
|
|
pdfcraft-oracle = { path = "crates/oracle", version = "0.14.0" }
|
|
pdfcraft-testkit = { path = "crates/testkit", version = "0.14.0" }
|
|
pdfcraft-ocr = { path = "crates/ocr", version = "0.14.0" }
|
|
pdfcraft-js = { path = "crates/js", version = "0.14.0" }
|
|
pdfcraft-compare = { path = "crates/compare", version = "0.14.0" }
|
|
pdfcraft-preflight = { path = "crates/preflight", version = "0.14.0" }
|
|
pdfcraft-export = { path = "crates/export", version = "0.14.0" }
|
|
pdfcraft-edit = { path = "crates/edit", version = "0.14.0" }
|
|
pdfcraft-create = { path = "crates/create", version = "0.14.0" }
|
|
pdfcraft-forms = { path = "crates/forms", version = "0.14.0" }
|
|
pdfcraft-xfa = { path = "crates/xfa", version = "0.14.0" }
|
|
pdfcraft-render = { path = "crates/render", version = "0.14.0" }
|
|
pdfcraft-engine = { path = "crates/engine", version = "0.14.0" }
|
|
pdfcraft-platform = { path = "crates/platform", version = "0.14.0" }
|
|
pdfcraft-ui-egui = { path = "crates/ui-egui", version = "0.14.0" }
|
|
pdfcraft-automation = { path = "crates/automation", version = "0.14.0", default-features = false }
|
|
|
|
# pdf
|
|
hayro = "0.7.1"
|
|
hayro-syntax = "0.7.2"
|
|
lopdf = "0.45"
|
|
flate2 = { version = "1.1", default-features = false, features = ["rust_backend"] }
|
|
weezl = "0.2"
|
|
|
|
# foundation
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive", "rc"] }
|
|
serde_json = "1"
|
|
log = "0.4"
|
|
kurbo = "0.13"
|
|
# All date/time conversion goes through chrono (no hand-rolled calendar code beyond the 400-year range extension; AGENTS.md).
|
|
chrono = { version = "0.4.45", default-features = false, features = ["std"] }
|
|
|
|
# testing
|
|
proptest = "1"
|
|
|
|
# ui
|
|
egui = "0.36"
|
|
egui_extras = { version = "0.36", default-features = false, features = ["svg"] }
|
|
eframe = { version = "0.36", default-features = false }
|
|
egui_kittest = "0.36"
|
|
rfd = "0.17"
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
|
|
# `"*"` matches every non-workspace package: crates.io dependencies and the
|
|
# vendored crates under `vendor/` (excluded from the workspace). Dependencies
|
|
# carry no debug info and our own crates only line tables: backtraces and
|
|
# panics still show file and line, while test binaries and the target dir stay
|
|
# small (each UI test binary had a 500-600 MB PDB on Windows, #454).
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
debug = false
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
debug = "line-tables-only"
|
|
|
|
[profile.low-disk]
|
|
inherits = "dev"
|
|
incremental = false
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
|
|
# Vendored, patched third-party crates (see vendor/README.md). Each patch is meant to go upstream.
|
|
[patch.crates-io]
|
|
hayro-interpret = { path = "vendor/hayro-interpret" }
|
|
hayro = { path = "vendor/hayro" }
|
|
hayro-syntax = { path = "vendor/hayro-syntax" }
|
|
hayro-cmap = { path = "vendor/hayro-cmap" }
|
|
hayro-postscript = { path = "vendor/hayro-postscript" }
|
|
hayro-jbig2 = { path = "vendor/hayro-jbig2" }
|
|
lopdf = { path = "vendor/lopdf" }
|
|
winit = { path = "vendor/winit" }
|
|
egui-wgpu = { path = "vendor/egui-wgpu" }
|
|
vello_common = { path = "vendor/vello_common" }
|