Skip to content

Commit b703969

Browse files
committed
WIP: egui application wrapper
1 parent ca32478 commit b703969

32 files changed

+4268
-140
lines changed

Cargo.lock

Lines changed: 1974 additions & 107 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 113 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ members = [
66
"core/macros",
77
"d3",
88
"dom",
9+
"egui",
10+
"egui/macros",
911
"encryption",
1012
"features",
1113
"gpt",
@@ -56,35 +58,101 @@ repository = "https://github.com/workflow-rs/workflow-rs"
5658

5759
# internal dependencies
5860

59-
workflow-chrome = { version = "0.15.0", path = "chrome" }
60-
workflow-core = { version = "0.15.0", path = "core" }
61-
workflow-core-macros = { version = "0.15.0", path = "core/macros" }
62-
workflow-d3 = { version = "0.15.0", path = "d3" }
63-
workflow-dom = { version = "0.15.0", path = "dom" }
64-
workflow-encryption = { version = "0.15.0", path = "encryption" }
65-
workflow-gpt = { version = "0.15.0", path = "gpt" }
66-
workflow-html = { version = "0.15.0", path = "html" }
67-
workflow-html-macros = { version = "0.15.0", path = "html/macros" }
68-
workflow-http = { version = "0.15.0", path = "http" }
69-
workflow-i18n = { version = "0.15.0", path = "i18n" }
70-
workflow-log = { version = "0.15.0", path = "log" }
71-
workflow-macro-tools = { version = "0.15.0", path = "macro-tools" }
72-
workflow-node = { version = "0.15.0", path = "node" }
73-
workflow-nw = { version = "0.15.0", path = "nw" }
74-
workflow-panic-hook = { version = "0.15.0", path = "panic-hook" }
75-
workflow-rpc = { version = "0.15.0", path = "rpc" }
76-
workflow-rpc-macros = { version = "0.15.0", path = "rpc/macros" }
77-
workflow-rs = { version = "0.15.0", path = "features" }
78-
workflow-store = { version = "0.15.0", path = "store" }
79-
workflow-serializer = { version = "0.15.0", path = "serializer" }
80-
workflow-task = { version = "0.15.0", path = "task" }
81-
workflow-task-macros = { version = "0.15.0", path = "task/macros" }
82-
workflow-terminal = { version = "0.15.0", path = "terminal" }
83-
workflow-terminal-macros = { version = "0.15.0", path = "terminal/macros" }
84-
workflow-utils = { version = "0.15.0", path = "utils" }
85-
workflow-wasm = { version = "0.15.0", path = "wasm" }
86-
workflow-wasm-macros = { version = "0.15.0", path = "wasm/macros" }
87-
workflow-websocket = { version = "0.15.0", path = "websocket" }
61+
workflow-chrome = { version = "0.15.0"}
62+
workflow-core = { version = "0.15.0"}
63+
workflow-core-macros = { version = "0.15.0"}
64+
workflow-d3 = { version = "0.15.0"}
65+
workflow-dom = { version = "0.15.0"}
66+
workflow-egui = { version = "0.15.0", path = "egui" }
67+
workflow-egui-macros = { version = "0.15.0", path = "egui/macros" }
68+
workflow-encryption = { version = "0.15.0"}
69+
workflow-gpt = { version = "0.15.0"}
70+
workflow-html = { version = "0.15.0"}
71+
workflow-html-macros = { version = "0.15.0"}
72+
workflow-http = { version = "0.15.0"}
73+
workflow-i18n = { version = "0.15.0"}
74+
workflow-log = { version = "0.15.0"}
75+
workflow-macro-tools = { version = "0.15.0"}
76+
workflow-node = { version = "0.15.0"}
77+
workflow-nw = { version = "0.15.0"}
78+
workflow-panic-hook = { version = "0.15.0"}
79+
workflow-rpc = { version = "0.15.0"}
80+
workflow-rpc-macros = { version = "0.15.0"}
81+
workflow-rs = { version = "0.15.0"}
82+
workflow-store = { version = "0.15.0"}
83+
workflow-serializer = { version = "0.15.0"}
84+
workflow-task = { version = "0.15.0"}
85+
workflow-task-macros = { version = "0.15.0"}
86+
workflow-terminal = { version = "0.15.0"}
87+
workflow-terminal-macros = { version = "0.15.0"}
88+
workflow-utils = { version = "0.15.0"}
89+
workflow-wasm = { version = "0.15.0"}
90+
workflow-wasm-macros = { version = "0.15.0"}
91+
workflow-websocket = { version = "0.15.0"}
92+
93+
# workflow-chrome = { version = "0.15.0"}
94+
# workflow-core = { version = "0.15.0"}
95+
# workflow-core-macros = { version = "0.15.0"}
96+
# workflow-d3 = { version = "0.15.0"}
97+
# workflow-dom = { version = "0.15.0"}
98+
# workflow-egui = { version = "0.15.0"}
99+
# workflow-egui-macros = { version = "0.15.0"}
100+
# workflow-encryption = { version = "0.15.0"}
101+
# workflow-gpt = { version = "0.15.0"}
102+
# workflow-html = { version = "0.15.0"}
103+
# workflow-html-macros = { version = "0.15.0"}
104+
# workflow-http = { version = "0.15.0"}
105+
# workflow-i18n = { version = "0.15.0"}
106+
# workflow-log = { version = "0.15.0"}
107+
# workflow-macro-tools = { version = "0.15.0"}
108+
# workflow-node = { version = "0.15.0"}
109+
# workflow-nw = { version = "0.15.0"}
110+
# workflow-panic-hook = { version = "0.15.0"}
111+
# workflow-rpc = { version = "0.15.0"}
112+
# workflow-rpc-macros = { version = "0.15.0"}
113+
# workflow-rs = { version = "0.15.0"}
114+
# workflow-store = { version = "0.15.0"}
115+
# workflow-serializer = { version = "0.15.0"}
116+
# workflow-task = { version = "0.15.0"}
117+
# workflow-task-macros = { version = "0.15.0"}
118+
# workflow-terminal = { version = "0.15.0"}
119+
# workflow-terminal-macros = { version = "0.15.0"}
120+
# workflow-utils = { version = "0.15.0"}
121+
# workflow-wasm = { version = "0.15.0"}
122+
# workflow-wasm-macros = { version = "0.15.0"}
123+
# workflow-websocket = { version = "0.15.0"}
124+
125+
# workflow-chrome = { version = "0.15.0", path = "chrome" }
126+
# workflow-core = { version = "0.15.0", path = "core" }
127+
# workflow-core-macros = { version = "0.15.0", path = "core/macros" }
128+
# workflow-d3 = { version = "0.15.0", path = "d3" }
129+
# workflow-dom = { version = "0.15.0", path = "dom" }
130+
# workflow-egui = { version = "0.15.0", path = "egui" }
131+
# workflow-egui-macros = { version = "0.15.0", path = "egui/macros" }
132+
# workflow-encryption = { version = "0.15.0", path = "encryption" }
133+
# workflow-gpt = { version = "0.15.0", path = "gpt" }
134+
# workflow-html = { version = "0.15.0", path = "html" }
135+
# workflow-html-macros = { version = "0.15.0", path = "html/macros" }
136+
# workflow-http = { version = "0.15.0", path = "http" }
137+
# workflow-i18n = { version = "0.15.0", path = "i18n" }
138+
# workflow-log = { version = "0.15.0", path = "log" }
139+
# workflow-macro-tools = { version = "0.15.0", path = "macro-tools" }
140+
# workflow-node = { version = "0.15.0", path = "node" }
141+
# workflow-nw = { version = "0.15.0", path = "nw" }
142+
# workflow-panic-hook = { version = "0.15.0", path = "panic-hook" }
143+
# workflow-rpc = { version = "0.15.0", path = "rpc" }
144+
# workflow-rpc-macros = { version = "0.15.0", path = "rpc/macros" }
145+
# workflow-rs = { version = "0.15.0", path = "features" }
146+
# workflow-store = { version = "0.15.0", path = "store" }
147+
# workflow-serializer = { version = "0.15.0", path = "serializer" }
148+
# workflow-task = { version = "0.15.0", path = "task" }
149+
# workflow-task-macros = { version = "0.15.0", path = "task/macros" }
150+
# workflow-terminal = { version = "0.15.0", path = "terminal" }
151+
# workflow-terminal-macros = { version = "0.15.0", path = "terminal/macros" }
152+
# workflow-utils = { version = "0.15.0", path = "utils" }
153+
# workflow-wasm = { version = "0.15.0", path = "wasm" }
154+
# workflow-wasm-macros = { version = "0.15.0", path = "wasm/macros" }
155+
# workflow-websocket = { version = "0.15.0", path = "websocket" }
88156

89157
# external dependencies
90158

@@ -105,6 +173,7 @@ cliclack = "0.3.1"
105173
console = "0.15.7"
106174
convert_case = "0.6.0"
107175
crossterm = "0.27.0"
176+
ctrlc = { version = "3.2", features = ["termination"] }
108177
dirs = "5.0.1"
109178
downcast = "0.11.0"
110179
downcast-rs = "1.2.0"
@@ -135,6 +204,7 @@ rand = { version = "0.8.5", features = ["getrandom"] }
135204
regex = "1.10.2"
136205
reqwest = { version = "0.12.4", features = ["json"] }
137206
ritehash = "0.2.0"
207+
safer_owning_ref = "0.5.0"
138208
separator = "0.4.1"
139209
serde = { version = "1.0.190" , features = ["derive","rc"] }
140210
serde_json = "1.0.108"
@@ -158,5 +228,19 @@ chrome-sys = { version = "0.2.0" }
158228
chacha20poly1305 = "0.10.1"
159229
zeroize = { version = "1.6.0", default-features = false, features = ["alloc"] }
160230

231+
232+
233+
egui = "0.28.1"
234+
# epaint = "=0.28.1"
235+
# egui_plot = "=0.28.1"
236+
# egui_extras = { version = "=0.28.1", features = ["svg","image"] }
237+
# eframe = "0.28.1"
238+
eframe = { version = "0.28.1", default-features = false, features = [
239+
# # "accesskit", # Make egui comptaible with screen readers. NOTE: adds a lot of dependencies.
240+
# # "default_fonts", # Embed the default egui fonts.
241+
"glow", # Use the glow rendering backend. Alternative: "wgpu".
242+
# # "persistence", # Enable restoring app state when restarting the app.
243+
] }
244+
161245
[workspace.lints.clippy]
162246
empty_docs = "allow"

egui/Cargo.toml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
[package]
2+
name = "workflow-egui"
3+
authors.workspace = true
4+
edition.workspace = true
5+
license.workspace = true
6+
repository.workspace = true
7+
version.workspace = true
8+
keywords = ["egui","framework"]
9+
categories = []
10+
exclude = ["/.*", "/test","/macros"]
11+
description = """
12+
Components for EGUI-based applications
13+
"""
14+
15+
[features]
16+
# test = []
17+
# version = []
18+
console = []
19+
default = []
20+
21+
[lib]
22+
crate-type = ["cdylib", "lib"]
23+
doctest = false
24+
25+
[dependencies]
26+
egui.workspace = true
27+
eframe.workspace = true
28+
29+
workflow-egui-macros.workspace = true
30+
31+
downcast-rs.workspace = true
32+
33+
ahash.workspace = true
34+
safer_owning_ref.workspace = true
35+
borsh.workspace = true
36+
cfg-if.workspace = true
37+
wasm-bindgen.workspace = true
38+
workflow-core.workspace = true
39+
# workflow-core-macros.workspace = true
40+
workflow-log.workspace = true
41+
workflow-wasm.workspace = true
42+
workflow-dom.workspace = true
43+
44+
# [target.'cfg(not(target_arch = "bpf"))'.dependencies]
45+
# getrandom = {version = "^0.2", features=["js"]}
46+
async-channel.workspace = true
47+
async-std.workspace = true
48+
async-trait.workspace = true
49+
# bs58.workspace = true
50+
futures.workspace = true
51+
getrandom.workspace = true
52+
instant.workspace = true
53+
rand.workspace = true
54+
serde.workspace = true
55+
thiserror.workspace = true
56+
triggered.workspace = true
57+
# wasm-bindgen.workspace = true
58+
js-sys.workspace = true
59+
serde-wasm-bindgen.workspace = true
60+
dirs.workspace = true
61+
# faster-hex.workspace = true
62+
# workflow-log.workspace = true
63+
log.workspace = true
64+
65+
66+
67+
68+
[target.'cfg(not(any(target_arch = "bpf", target_arch = "wasm32")))'.dependencies]
69+
tokio.workspace = true
70+
chrono.workspace = true
71+
ctrlc.workspace = true
72+
73+
[target.'cfg(target_arch = "wasm32")'.dependencies]
74+
js-sys.workspace = true
75+
wasm-bindgen-futures.workspace = true
76+
77+
[dependencies.web-sys]
78+
workspace = true
79+
features = [
80+
# 'Window',
81+
# 'Navigator',
82+
'VisibilityState',
83+
# 'Worker',
84+
# 'Blob',
85+
# 'BlobPropertyBag',
86+
# 'Url',
87+
# 'MessageEvent',
88+
]
89+
90+
# [build-dependencies]
91+
# vergen = { version = "8.2.6", features = ["build", "git", "gitcl", "rustc", "cargo"] }
92+
93+
94+
[lints.clippy]
95+
empty_docs = "allow"

egui/macros/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Cargo.lock

egui/macros/Cargo.toml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
[package]
2+
name = "workflow-egui-macros"
3+
version.workspace = true
4+
edition.workspace = true
5+
repository.workspace = true
6+
license = "MIT OR Apache-2.0"
7+
keywords = ["egui"]
8+
categories = []
9+
exclude = ["/.*", "/test"]
10+
description = """
11+
Macros for the Kaspa NG project
12+
"""
13+
14+
[lib]
15+
proc-macro = true
16+
17+
[dependencies]
18+
convert_case = "0.6.0"
19+
parse-variants = "1.0.1"
20+
proc-macro-error = { version = "1.0.4", default-features = false }
21+
proc-macro2 = { version = "1.0.50" }
22+
quote = "1.0.23"
23+
sha2 = "0.10.7"
24+
syn = {version="1.0.107",features=["full","fold","extra-traits","parsing","proc-macro"]}
25+
rand = "0.8"
26+
27+
# workflow-macro-tools.workspace = true

egui/macros/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
use proc_macro::TokenStream;
2+
mod register;
3+
4+
#[proc_macro]
5+
pub fn register_modules(input: TokenStream) -> TokenStream {
6+
register::register_modules(input)
7+
}

0 commit comments

Comments
 (0)