Vendor helgoboss/helgobox (ReaLearn) as basis for custom UI fork
Stripped upstream git history; starting point for replacing the native SWELL/Win32 mapping UI with something more suited to bulk editing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
[package]
|
||||
name = "helgobox"
|
||||
version = "2.18.3-pre.1"
|
||||
authors = ["Benjamin Klum <benjamin.klum@helgoboss.org>"]
|
||||
edition = "2021"
|
||||
build = "build.rs"
|
||||
license = "GPL-3.0"
|
||||
rust-version = "1.84.0"
|
||||
publish = false
|
||||
|
||||
[features]
|
||||
default = []
|
||||
|
||||
# Builds ReaLearn together with the Playtime Clip Engine. This should only be enabled if you have access to the
|
||||
# private playtime-clip-engine repository, otherwise the build will fail.
|
||||
playtime = ["dep:playtime-clip-engine"]
|
||||
|
||||
# Activates license checks for Playtime Clip Engine. If not enabled, license checks will always fail.
|
||||
licensing = ["playtime", "playtime-clip-engine/licensing"]
|
||||
|
||||
# Enables a bunch of features that need the egui user interface framework to work.
|
||||
egui = ["dep:baseview", "dep:egui-baseview", "dep:egui", "dep:egui_extras", "pot-browser"]
|
||||
|
||||
# Regenerate bindings (for dialog resource IDs and EEL functions)
|
||||
generate = []
|
||||
|
||||
[dependencies]
|
||||
# Own
|
||||
base.workspace = true
|
||||
reaper-rx.workspace = true
|
||||
reaper-high = { workspace = true, features = ["sentry"] }
|
||||
reaper-medium.workspace = true
|
||||
reaper-common-types = { workspace = true, features = ["color-macros", "palette"] }
|
||||
reaper-low.workspace = true
|
||||
reaper-macros.workspace = true
|
||||
swell-ui.workspace = true
|
||||
rx-util.workspace = true
|
||||
pot.workspace = true
|
||||
helgobox-api.workspace = true
|
||||
# For obtaining dialog constants from dialog crate
|
||||
helgobox-dialogs.workspace = true
|
||||
# In future (when helgoboss-learn has matured), this will become a crates.io dependency
|
||||
helgoboss-learn.workspace = true
|
||||
helgoboss-midi.workspace = true
|
||||
helgoboss-license-api.workspace = true
|
||||
playtime-api.workspace = true
|
||||
playtime-clip-engine = { workspace = true, optional = true }
|
||||
|
||||
# 3rd-party
|
||||
# For easier error handling
|
||||
anyhow.workspace = true
|
||||
# For being able to (de)serialize using FromStr and Display
|
||||
serde_with.workspace = true
|
||||
# For panicking when accessing something from the wrong thread
|
||||
fragile.workspace = true
|
||||
# For acting as DAW plug-in
|
||||
vst.workspace = true
|
||||
rxrust.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
serde_repr.workspace = true
|
||||
derive_more.workspace = true
|
||||
num_enum.workspace = true
|
||||
crossbeam-channel.workspace = true
|
||||
scopeguard.workspace = true
|
||||
uuid = { workspace = true, features = ["v4", "serde"] }
|
||||
# New logging (for Playtime matrix)
|
||||
tracing.workspace = true
|
||||
tracing-core.workspace = true
|
||||
tracing-subscriber = { workspace = true, features = ["env-filter"] }
|
||||
# For interacting with the OS clipboard
|
||||
arboard.workspace = true
|
||||
once_cell.workspace = true
|
||||
# For being able to exclude fields from the derived Debug implementation
|
||||
derivative.workspace = true
|
||||
chrono.workspace = true
|
||||
smallvec.workspace = true
|
||||
regex.workspace = true
|
||||
enum-map.workspace = true
|
||||
# For generating controller file names from controller names
|
||||
slug.workspace = true
|
||||
# For generating random session IDs
|
||||
nanoid.workspace = true
|
||||
# For ReaLearn's servers
|
||||
futures.workspace = true
|
||||
tokio.workspace = true
|
||||
tokio-stream.workspace = true
|
||||
tower.workspace = true
|
||||
# For ReaLearn's http server (used for projection)
|
||||
axum = { workspace = true, features = ["ws"] }
|
||||
# Use "tls-rustls-no-provider" instead of "tls-rustls" because we want to use "ring" for
|
||||
# cryptography instead of "aws-lc-rs" (because the latter causes build issues on Windows)
|
||||
axum-server = { workspace = true, features = ["tls-rustls-no-provider"] }
|
||||
rustls = { workspace = true, features = ["ring"] }
|
||||
tower-http = { workspace = true, features = ["cors"] }
|
||||
# For ReaLearn's gRPC server
|
||||
tonic.workspace = true
|
||||
prost.workspace = true
|
||||
# For generating projection QR code
|
||||
qrcode.workspace = true
|
||||
# For rendering projection QR code to PNG
|
||||
image = { workspace = true, features = ["png"] }
|
||||
# For generating self-signed certificate for projection web server
|
||||
rcgen.workspace = true
|
||||
# For showing different ways of connecting to this computer (projection feature)
|
||||
dns-lookup.workspace = true
|
||||
hostname.workspace = true
|
||||
# For rendering projection setup HTML page template
|
||||
askama.workspace = true
|
||||
# For persisting app configuration
|
||||
serde_ini.workspace = true
|
||||
# For opening projection setup page and companion app in local browser
|
||||
webbrowser.workspace = true
|
||||
# For writing generated projection setup page to disk
|
||||
tempfile.workspace = true
|
||||
# For adding firewall rules
|
||||
runas.workspace = true
|
||||
# For building URls, e.g. companion web app URL
|
||||
url.workspace = true
|
||||
# For grouping mappings by virtual control elements and grouping outgoing OSC messages by device
|
||||
itertools.workspace = true
|
||||
# For being able to configure logging via environment variable RUST_LOG
|
||||
env_logger.workspace = true
|
||||
# To open user guide in local PDF app
|
||||
open.workspace = true
|
||||
# For comparing ReaLearn versions in order to determine if preset migration is necessary
|
||||
semver.workspace = true
|
||||
# Maybe better asynchronous channel than in futures or tokio (basically the async version of crossbeam)
|
||||
async-channel.workspace = true
|
||||
# For displaying snapshot sizes
|
||||
bytesize.workspace = true
|
||||
# For OSC
|
||||
rosc.workspace = true
|
||||
# For letting the user edit advanced mapping settings
|
||||
edit.workspace = true
|
||||
# For parsing/formatting advanced mapping settings
|
||||
serde_yaml.workspace = true
|
||||
# For parsing hexadecimal data notation to byte vector (for system-exclusive lifecycle MIDI messages)
|
||||
hex.workspace = true
|
||||
# For evaluation of <Dynamic> formulas
|
||||
fasteval = { workspace = true, default-features = false }
|
||||
# For wildcard support when using "By name" selector
|
||||
wildmatch.workspace = true
|
||||
# For creating HashSet literals for projection feedback and in unit tests
|
||||
maplit.workspace = true
|
||||
# For easier support of named virtual control elements
|
||||
ascii.workspace = true
|
||||
# For using bit flags in the reaper-rs API.
|
||||
enumflags2.workspace = true
|
||||
# For detecting undesired (de)allocation in real-time threads.
|
||||
helgobox-allocator.workspace = true
|
||||
# For being able to cleanly implement targets in separate files without needing to resort to dynamic dispatch.
|
||||
enum_dispatch.workspace = true
|
||||
# For processing mappings in user-defined order
|
||||
indexmap = { workspace = true }
|
||||
# For comparing floating point numbers in tests
|
||||
approx.workspace = true
|
||||
# For the API (ReaLearn Script) and MIDI scripts
|
||||
mlua.workspace = true
|
||||
# For convenient converting prop key to prop enum variant
|
||||
strum.workspace = true
|
||||
metrics.workspace = true
|
||||
metrics-exporter-prometheus = { workspace = true, default-features = false }
|
||||
# For parsing OSC argument value ranges
|
||||
nom.workspace = true
|
||||
# For being able to return iterators of different types
|
||||
either.workspace = true
|
||||
# For reading preset directories recursively
|
||||
walkdir.workspace = true
|
||||
# For egui graphics
|
||||
egui-baseview = { workspace = true, optional = true }
|
||||
baseview = { workspace = true, optional = true }
|
||||
egui = { workspace = true, optional = true }
|
||||
egui_extras = { workspace = true, optional = true }
|
||||
# Pot Browser
|
||||
pot-browser = { workspace = true, optional = true }
|
||||
# For decompressing App
|
||||
zstd = "0.13.0"
|
||||
tar = "0.4.40"
|
||||
# For loading App
|
||||
libloading.workspace = true
|
||||
# For embedding factory presets into the binary
|
||||
include_dir.workspace = true
|
||||
# For prefixing preset IDs with the user name
|
||||
whoami.workspace = true
|
||||
# For passing MIDI device inquiry replies from audio thread to main thread
|
||||
tinyvec.workspace = true
|
||||
# For not having to deal with non-UTF8 paths if we are sure we don't have them
|
||||
camino.workspace = true
|
||||
# For not having to manually implement Lua module finder trait for smart pointers
|
||||
auto_impl.workspace = true
|
||||
# For some color in the otherwise boring GUI
|
||||
palette.workspace = true
|
||||
# For parsing/formatting enum-like target values from/to a stable and ID-like representation
|
||||
serde_plain.workspace = true
|
||||
# For sharing variables between main thread and real-time threads
|
||||
atomic.workspace = true
|
||||
# For making sure that sharing global audio state uses atomics
|
||||
static_assertions.workspace = true
|
||||
# For Stream Deck support
|
||||
streamdeck.workspace = true
|
||||
# For Stream Deck support
|
||||
ab_glyph.workspace = true
|
||||
# For Stream Deck support
|
||||
hidapi.workspace = true
|
||||
# For caching button images for Stream Deck
|
||||
cached.workspace = true
|
||||
# For drawing knobs for Stream Deck button
|
||||
imageproc.workspace = true
|
||||
# For relativizing paths for Stream Deck button images
|
||||
pathdiff.workspace = true
|
||||
# For fetching Helgobox remote config.
|
||||
# Important to not use default features because we want to avoid the libssl dependency on Linux.
|
||||
reqwest = { workspace = true, default-features = false, features = ["rustls-tls-no-provider"] }
|
||||
# For MIDI clock processing
|
||||
simple_moving_average.workspace = true
|
||||
|
||||
[target.'cfg(any(target_os = "windows", target_os = "macos"))'.dependencies]
|
||||
# For speech source
|
||||
tts.workspace = true
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
# For detecting the Windows version (to determine whether special characters can be displayed)
|
||||
sys-info.workspace = true
|
||||
# For converting virtual umlaut/special keys into character codes (keyboard source)
|
||||
winapi = { workspace = true, features = ["winuser"] }
|
||||
|
||||
[target.'cfg(target_os = "macos")'.dependencies]
|
||||
# For taking screenshots for docs
|
||||
xcap.workspace = true
|
||||
# For taking screenshots for docs
|
||||
dirs.workspace = true
|
||||
|
||||
|
||||
[build-dependencies]
|
||||
# For making Git commit hash available to code
|
||||
built = { workspace = true, features = ["git2", "chrono"] }
|
||||
# For generating bindings (for dialog resource IDs and EEL functions)
|
||||
bindgen.workspace = true
|
||||
# For compiling EEL and SWELL dialog resources
|
||||
cc.workspace = true
|
||||
# For embedding dialog resource files on Windows
|
||||
embed-resource.workspace = true
|
||||
# For RC dialog file generation
|
||||
helgobox-dialogs.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
# For the EEL memory consumption test
|
||||
sysinfo.workspace = true
|
||||
|
||||
[lib]
|
||||
name = "helgobox"
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
|
||||
[lints.clippy]
|
||||
# TODO-high-refactoring Activate at some point. For now it's just too much to handle.
|
||||
#enum_glob_use = "deny"
|
||||
Reference in New Issue
Block a user