diff --git a/Cargo.lock b/Cargo.lock index 61feb9a..1591555 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,7 +26,57 @@ checksum = "3083ac5a97521e35388ca80cf365b6be5210962cc59f11ee238cd92ac2fa9524" dependencies = [ "enumset", "kurbo", - "serde", +] + +[[package]] +name = "accesskit_consumer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47393f706a2d2f9d1ebd109351f886afd256a09d2308861a6dec0853a625e2" +dependencies = [ + "accesskit", + "parking_lot 0.12.1", +] + +[[package]] +name = "accesskit_macos" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabafb94d8a4dd6b20fe4112f943756ff8dc9778e3d742fb5478bf7f000a3282" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2", + "once_cell", + "parking_lot 0.12.1", +] + +[[package]] +name = "accesskit_windows" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662496f45a2e2ddff05e28d0a9fc2b319cc4f886d3664e3469c3d30800598962" +dependencies = [ + "accesskit", + "accesskit_consumer", + "arrayvec 0.7.2", + "once_cell", + "parking_lot 0.12.1", + "paste", + "windows 0.42.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f270416d033ab5b2a8fa72a976dfdad0db1ea194721f16cadbdb45ff219779f" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "parking_lot 0.12.1", + "winit", ] [[package]] @@ -63,7 +113,6 @@ checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if 1.0.0", "once_cell", - "serde", "version_check", ] @@ -136,6 +185,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "anyhow" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" + [[package]] name = "arboard" version = "3.2.0" @@ -265,6 +320,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64ct" version = "1.6.0" @@ -346,6 +407,35 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys", + "objc2-encode", +] + +[[package]] +name = "bstr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "built" version = "0.6.0" @@ -467,6 +557,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + [[package]] name = "chrono" version = "0.4.24" @@ -579,6 +678,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "combine" version = "4.6.6" @@ -841,6 +946,15 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "data-url" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +dependencies = [ + "matches", +] + [[package]] name = "digest" version = "0.9.0" @@ -947,7 +1061,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b601108bca3af7650440ace4ca55b2daf52c36f2635be3587d77b16efd8d0691" dependencies = [ "bytemuck", - "serde", ] [[package]] @@ -960,6 +1073,9 @@ dependencies = [ "egui", "egui-wgpu", "egui-winit", + "egui_glow", + "glow", + "glutin", "js-sys", "percent-encoding", "raw-window-handle 0.5.2", @@ -981,7 +1097,6 @@ dependencies = [ "ahash 0.8.3", "epaint", "nohash-hasher", - "serde", "tracing", ] @@ -1006,6 +1121,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5696bdbe60898b81157f07ae34fe02dbfd522174bd6e620942c269cd7307901f" dependencies = [ + "accesskit_winit", "arboard", "egui", "instant", @@ -1024,7 +1140,6 @@ dependencies = [ "egui", "egui_extras", "enum-map", - "serde", "tracing", "unicode_names2", ] @@ -1036,9 +1151,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1975cd88ff7430f93b29e6b9868b648a8ff6a43b08b9ff8474ee0a648bd8f9a6" dependencies = [ "egui", + "resvg", "serde", + "tiny-skia 0.6.6", + "usvg", ] +[[package]] +name = "egui_glow" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d4b5960cb1bae1c403a6c9027a745210a41913433b10c73b6e7d76a1017f8b4" +dependencies = [ + "bytemuck", + "egui", + "glow", + "memoffset", + "tracing", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + [[package]] name = "emath" version = "0.20.0" @@ -1046,7 +1185,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5277249c8c3430e7127e4f2c40a77485e7baf11ae132ce9b3253a8ed710df0a0" dependencies = [ "bytemuck", - "serde", ] [[package]] @@ -1086,7 +1224,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753" dependencies = [ "enumset_derive", - "serde", ] [[package]] @@ -1141,7 +1278,6 @@ dependencies = [ "emath", "nohash-hasher", "parking_lot 0.12.1", - "serde", ] [[package]] @@ -1235,12 +1371,39 @@ dependencies = [ "miniz_oxide 0.6.2", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "fontconfig-parser" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ab2e12762761366dcb876ab8b6e0cfa4797ddcd890575919f008b5ba655672a" +dependencies = [ + "roxmltree 0.18.0", +] + +[[package]] +name = "fontdb" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52186a39c335aa6f79fc0bf1c3cf854870b6ad4e50a7bb8a59b4ba1331f478a" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "ttf-parser 0.17.1", +] + [[package]] name = "foreign-types" version = "0.3.2" @@ -1487,6 +1650,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "gif" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gimli" version = "0.27.2" @@ -1506,12 +1679,36 @@ dependencies = [ "url", ] +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "globset" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + [[package]] name = "glow" version = "0.11.2" @@ -1524,6 +1721,58 @@ dependencies = [ "web-sys", ] +[[package]] +name = "glutin" +version = "0.30.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f89bab9ec7715de13d5d5402238e66f48e3a5ae636ebb45aba4013c962e2ff15" +dependencies = [ + "bitflags 1.3.2", + "cfg_aliases", + "cgl", + "core-foundation 0.9.3", + "dispatch", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2", + "once_cell", + "raw-window-handle 0.5.2", + "wayland-sys 0.30.1", + "windows-sys 0.45.0", + "x11-dl", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5aaf0abb5c4148685b33101ae326a207946b4d3764d6cdc79f8316cdaa8367d" +dependencies = [ + "gl_generator", + "windows-sys 0.45.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b53cb5fe568964aa066a3ba91eac5ecbac869fb0842cd0dc9e412434f1a1494" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef89398e90033fc6bc65e9bd42fd29bbbfd483bda5b56dc5562f455550618165" +dependencies = [ + "gl_generator", +] + [[package]] name = "gpu-alloc" version = "0.5.3" @@ -1572,6 +1821,7 @@ dependencies = [ "eframe", "egui", "egui_demo_lib", + "egui_extras", "env_logger 0.10.0", "futures 0.3.28", "grin_config", @@ -1580,9 +1830,12 @@ dependencies = [ "grin_util", "jni", "log", + "once_cell", "openssl-sys", "pollster 0.3.0", - "tracing-subscriber", + "rust-i18n", + "sys-locale", + "wgpu", "winit", ] @@ -2036,7 +2289,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows 0.48.0", ] [[package]] @@ -2065,6 +2318,23 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "ignore" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" +dependencies = [ + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -2119,6 +2389,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "0.4.8" @@ -2162,6 +2441,12 @@ dependencies = [ "libc", ] +[[package]] +name = "jpeg-decoder" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b" + [[package]] name = "js-sys" version = "0.3.61" @@ -2205,6 +2490,12 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + [[package]] name = "kurbo" version = "0.8.3" @@ -2212,7 +2503,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449" dependencies = [ "arrayvec 0.7.2", - "serde", ] [[package]] @@ -2388,6 +2678,12 @@ dependencies = [ "libc", ] +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "memchr" version = "2.5.0" @@ -2653,16 +2949,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi 0.3.9", -] - [[package]] name = "num" version = "0.2.1" @@ -2801,6 +3087,32 @@ dependencies = [ "objc_id", ] +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe31e5425d3d0b89a15982c024392815da40689aceb34bad364d58732bcfd649" +dependencies = [ + "block2", + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2883,19 +3195,13 @@ dependencies = [ "num-traits 0.2.15", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "owned_ttf_parser" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228" dependencies = [ - "ttf-parser", + "ttf-parser 0.18.1", ] [[package]] @@ -2956,6 +3262,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "paste" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" + [[package]] name = "pbkdf2" version = "0.8.0" @@ -2981,6 +3293,12 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + [[package]] name = "pin-project" version = "1.0.12" @@ -3254,6 +3572,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "rctree" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae028b272a6e99d9f8260ceefa3caa09300a8d6c8d2b2001316474bc52122e9" + [[package]] name = "rdrand" version = "0.4.0" @@ -3321,6 +3645,33 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" +[[package]] +name = "resvg" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34489194784b86c03c3d688258e2ba73f3c82700ba4673ee2ecad5ae540b9438" +dependencies = [ + "gif", + "jpeg-decoder", + "log", + "pico-args", + "png", + "rgb", + "svgfilters", + "svgtypes", + "tiny-skia 0.6.6", + "usvg", +] + +[[package]] +name = "rgb" +version = "0.8.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" +dependencies = [ + "bytemuck", +] + [[package]] name = "ring" version = "0.16.20" @@ -3347,6 +3698,93 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "roxmltree" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "roxmltree" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f595a457b6b8c6cda66a48503e92ee8d19342f905948f29c383200ec9eb1d8" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "rust-i18n" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3dcb86b090a450cb642b6a465f0e9a3d4be26bdb9d8795a2a49fb02601b370f" +dependencies = [ + "anyhow", + "clap", + "glob", + "itertools", + "once_cell", + "quote 1.0.26", + "regex", + "rust-i18n-extract", + "rust-i18n-macro", + "serde", + "serde_derive", + "toml", +] + +[[package]] +name = "rust-i18n-extract" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec44568e2cdf4bfb7a62381bbc6fcdf0a27c60cd503dfa12c59e6c17cf3177fa" +dependencies = [ + "anyhow", + "ignore", + "proc-macro2 1.0.56", + "quote 1.0.26", + "regex", + "rust-i18n-support", + "serde", + "serde_json", + "serde_yaml", + "syn 1.0.109", +] + +[[package]] +name = "rust-i18n-macro" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7e3e8f27d472822c5cf092a22631ebc667d9f8dc89dfc50ef4e87f4ebdf92f" +dependencies = [ + "glob", + "once_cell", + "proc-macro2 1.0.56", + "quote 1.0.26", + "rust-i18n-support", + "serde", + "serde_json", + "serde_yaml", + "syn 1.0.109", +] + +[[package]] +name = "rust-i18n-support" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6bbf2d058c3558bef952564ceb9afcb19631cde22b47dc44f436e62ecfb916" +dependencies = [ + "glob", + "once_cell", + "proc-macro2 1.0.56", + "serde", + "serde_json", + "serde_yaml", +] + [[package]] name = "rustc-demangle" version = "0.1.22" @@ -3404,6 +3842,22 @@ dependencies = [ "security-framework", ] +[[package]] +name = "rustybuzz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a617c811f5c9a7060fe511d35d13bf5b9f0463ce36d63ce666d05779df2b4eba" +dependencies = [ + "bitflags 1.3.2", + "bytemuck", + "smallvec", + "ttf-parser 0.15.2", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-general-category", + "unicode-script", +] + [[package]] name = "ryu" version = "1.0.13" @@ -3474,7 +3928,7 @@ dependencies = [ "crossfont", "log", "smithay-client-toolkit", - "tiny-skia", + "tiny-skia 0.7.0", ] [[package]] @@ -3596,15 +4050,6 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - [[package]] name = "shlex" version = "0.1.1" @@ -3626,6 +4071,15 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +[[package]] +name = "simplecss" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" +dependencies = [ + "log", +] + [[package]] name = "siphasher" version = "0.3.10" @@ -3742,6 +4196,25 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" +[[package]] +name = "svgfilters" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "639abcebc15fdc2df179f37d6f5463d660c1c79cd552c12343a4600827a04bce" +dependencies = [ + "float-cmp", + "rgb", +] + +[[package]] +name = "svgtypes" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22975e8a2bac6a76bb54f898a6b18764633b00e780330f0b689f65afb3975564" +dependencies = [ + "siphasher", +] + [[package]] name = "syn" version = "0.15.44" @@ -3787,6 +4260,16 @@ dependencies = [ "unicode-xid 0.2.4", ] +[[package]] +name = "sys-locale" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0b9eefabb91675082b41eb94c3ecd91af7656caee3fb4961a07c0ec8c7ca6f" +dependencies = [ + "libc", + "windows-sys 0.45.0", +] + [[package]] name = "tempfile" version = "3.5.0" @@ -3870,6 +4353,20 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "tiny-skia" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d049bfef0eaa2521e75d9ffb5ce86ad54480932ae19b85f78bec6f52c4d30d78" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "bytemuck", + "cfg-if 1.0.0", + "png", + "safe_arch", +] + [[package]] name = "tiny-skia" version = "0.7.0" @@ -4046,7 +4543,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", - "valuable", ] [[package]] @@ -4059,31 +4555,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" -dependencies = [ - "nu-ansi-term", - "sharded-slab", - "smallvec", - "thread_local", - "tracing-core", - "tracing-log", -] - [[package]] name = "traitobject" version = "0.1.0" @@ -4096,6 +4567,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "ttf-parser" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" + +[[package]] +name = "ttf-parser" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" + [[package]] name = "ttf-parser" version = "0.18.1" @@ -4132,6 +4615,24 @@ version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +[[package]] +name = "unicode-bidi-mirroring" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" + +[[package]] +name = "unicode-ccc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" + +[[package]] +name = "unicode-general-category" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07547e3ee45e28326cc23faac56d44f58f16ab23e413db526debce3b0bfd2742" + [[package]] name = "unicode-ident" version = "1.0.8" @@ -4147,12 +4648,24 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-script" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" + [[package]] name = "unicode-segmentation" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +[[package]] +name = "unicode-vo" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" + [[package]] name = "unicode-width" version = "0.1.10" @@ -4204,10 +4717,31 @@ dependencies = [ ] [[package]] -name = "valuable" -version = "0.1.0" +name = "usvg" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "28a82565b5c96dcbb58c9bdbb6aa3642abd395a6a6b480658532c6f74c3c4b7a" +dependencies = [ + "base64 0.13.1", + "data-url", + "flate2", + "float-cmp", + "fontdb", + "kurbo", + "log", + "pico-args", + "rctree", + "roxmltree 0.14.1", + "rustybuzz", + "simplecss", + "siphasher", + "svgtypes", + "ttf-parser 0.15.2", + "unicode-bidi", + "unicode-script", + "unicode-vo", + "xmlwriter", +] [[package]] name = "vcpkg" @@ -4338,7 +4872,7 @@ dependencies = [ "scoped-tls", "wayland-commons", "wayland-scanner", - "wayland-sys", + "wayland-sys 0.29.5", ] [[package]] @@ -4350,7 +4884,7 @@ dependencies = [ "nix 0.24.3", "once_cell", "smallvec", - "wayland-sys", + "wayland-sys 0.29.5", ] [[package]] @@ -4398,6 +4932,18 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "wayland-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" +dependencies = [ + "dlib", + "lazy_static", + "log", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.61" @@ -4435,6 +4981,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + [[package]] name = "wgpu" version = "0.14.2" @@ -4590,6 +5142,22 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0286ba339aa753e70765d521bb0242cc48e1194562bfa2a2ad7ac8a6de28f5d5" +dependencies = [ + "windows-implement", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows" version = "0.48.0" @@ -4599,6 +5167,17 @@ dependencies = [ "windows-targets 0.48.0", ] +[[package]] +name = "windows-implement" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9539b6bd3eadbd9de66c9666b22d802b833da7e996bc06896142e09854a61767" +dependencies = [ + "proc-macro2 1.0.56", + "quote 1.0.26", + "syn 1.0.109", +] + [[package]] name = "windows-sys" version = "0.36.1" @@ -4897,6 +5476,18 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +[[package]] +name = "xmlparser" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" + +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" + [[package]] name = "yaml-rust" version = "0.4.5" diff --git a/Cargo.toml b/Cargo.toml index 839624c..a570038 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,16 +29,22 @@ openssl-sys = { version = "0.9.82", features = ["vendored"] } #grin_wallet_config = "5.1.0" #grin_wallet_util = "5.1.0" -egui = "0.20.1" +## ui pollster = "0.3.0" -tracing-subscriber = "0.3" -egui_demo_lib = "0.20.0" - +wgpu = "0.14.0" +egui = "0.20.1" +egui_extras = { version = "0.20.0", features = [ "svg" ] } eframe = { version = "0.20.1", features = [ "wgpu" ] } +egui_demo_lib = "0.20.0" ## grin_servers futures = "0.3" +## other +once_cell = "1.10.0" +rust-i18n = "1.1.4" +sys-locale = "0.3.0" + [patch.crates-io] winit = { git = "https://github.com/rib/winit", branch = "android-activity" } @@ -55,5 +61,5 @@ jni = "0.21.1" winit = { version = "0.27.2", features = [ "android-game-activity" ] } [lib] -name="grin_android" +name="grim_android" crate_type=["cdylib"] \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 2edad42..a59689f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,10 +8,10 @@ android { defaultConfig { applicationId "mw.gri.android" - minSdk 27 - targetSdk 33 + minSdk 24 + targetSdk 31 versionCode 1 - versionName "1.0" + versionName "0.1.0" } buildTypes { @@ -32,9 +32,7 @@ android { } dependencies { - - implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.appcompat:appcompat:1.6.1' // To use the Android Frame Pacing library //implementation "androidx.games:games-frame-pacing:1.9.1" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4c12508..1b48b2c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,7 @@ @@ -22,7 +22,7 @@ - + diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..43aa9f1 Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/mw/gri/android/MainActivity.java b/app/src/main/java/mw/gri/android/MainActivity.java index 18e6269..c8b57cc 100644 --- a/app/src/main/java/mw/gri/android/MainActivity.java +++ b/app/src/main/java/mw/gri/android/MainActivity.java @@ -8,7 +8,7 @@ import com.google.androidgamesdk.GameActivity; public class MainActivity extends GameActivity { static { - System.loadLibrary("grin_android"); + System.loadLibrary("grim_android"); } @Override diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d1..0000000 --- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9..0000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index eca70cf..036d09b 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index eca70cf..036d09b 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..234b260 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..4dd9bae Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..79d1acb Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..77b82c5 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d6..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..e479107 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..3bd0a6b Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611d..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..6cf2fd4 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a307..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..7975b84 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..7f83ee6 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a695..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..2a72f97 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..68027ee Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..d61d74e Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f50..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..8217cfb Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d642..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..f448f2d Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..9e5da21 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae3..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..8cf0561 --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FCEF03 + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index efc90ee..bcb4058 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,17 +1,5 @@ - \ No newline at end of file diff --git a/build_and_run.sh b/build_and_run.sh index 031ccec..353f656 100755 --- a/build_and_run.sh +++ b/build_and_run.sh @@ -1,10 +1,11 @@ export CPPFLAGS="-DMDB_USE_ROBUST=0" && export CFLAGS="-DMDB_USE_ROBUST=0" && cargo ndk -t arm64-v8a build if [ $? -eq 0 ] then - yes | cp -f target/aarch64-linux-android/debug/libgrin_android.so app/src/main/jniLibs/arm64-v8a + yes | cp -f target/aarch64-linux-android/debug/libgrim_android.so app/src/main/jniLibs/arm64-v8a ./gradlew clean ./gradlew build #./gradlew installDebug adb install app/build/outputs/apk/debug/app-debug.apk + sleep 1s adb shell am start -n mw.gri.android/.MainActivity fi \ No newline at end of file diff --git a/locales/en.yml b/locales/en.yml new file mode 100644 index 0000000..7c337c7 --- /dev/null +++ b/locales/en.yml @@ -0,0 +1 @@ +wallets: Wallets \ No newline at end of file diff --git a/locales/ru.yml b/locales/ru.yml new file mode 100644 index 0000000..c17f98b --- /dev/null +++ b/locales/ru.yml @@ -0,0 +1 @@ +wallets: Кошельки \ No newline at end of file diff --git a/src/build/build.rs b/src/build/build.rs index 98bd0ca..70d86d8 100644 --- a/src/build/build.rs +++ b/src/build/build.rs @@ -1,4 +1,4 @@ -// Copyright 2023 The Grin Developers +// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Build hooks to spit out version+build time info - use std::env; use std::path::{Path, PathBuf}; use std::process::Command; diff --git a/src/grim.rs b/src/grim.rs index 84c8c25..f398e8e 100644 --- a/src/grim.rs +++ b/src/grim.rs @@ -1,4 +1,4 @@ -// Copyright 2023 The Grin Developers +// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -59,10 +59,25 @@ fn main() { } fn start(mut options: NativeOptions, app_creator: AppCreator) { + setup_i18n(); + options.renderer = Renderer::Wgpu; eframe::run_native("Grim", options, app_creator); } +fn setup_i18n() { + const DEFAULT_LOCALE: &str = "en"; + let locale = sys_locale::get_locale().unwrap_or(String::from(DEFAULT_LOCALE)); + let locale_str = if locale.contains("-") { + locale.split("-").next().unwrap_or(DEFAULT_LOCALE) + } else { + DEFAULT_LOCALE + }; + if crate::available_locales().contains(&locale_str) { + rust_i18n::set_locale(locale_str); + } +} + mod built_info { include!(concat!(env!("OUT_DIR"), "/built.rs")); } diff --git a/src/gui/app.rs b/src/gui/app.rs index afc74af..1417c36 100644 --- a/src/gui/app.rs +++ b/src/gui/app.rs @@ -13,8 +13,14 @@ // limitations under the License. use std::any::Any; +use std::collections::BTreeSet; +use eframe::emath::Align; use eframe::Frame; -use egui::Context; +use egui::{Color32, Context, Id, Layout, RichText, Sense, Separator, Stroke, Ui, Widget}; +use egui::epaint::Shadow; +use egui::panel::PanelState; +use egui::style::Margin; +use wgpu::Color; use crate::gui::PlatformCallbacks; use crate::gui::screens::{Screen}; @@ -25,7 +31,8 @@ pub struct PlatformApp { pub struct Screens { screens: Vec>, - current: String, + navigation: BTreeSet, + menu_open: bool, } impl Default for Screens { @@ -37,15 +44,133 @@ impl Default for Screens { } impl Screens { - pub fn from_screens(screens: Vec>) -> Self { - let current = screens[0].name().to_string(); - Self { - screens, - current, + fn from_screens(screens: Vec>) -> Self { + let current = screens[0].name().to_owned(); + let mut navigation = BTreeSet::new(); + navigation.insert(current); + Self { screens, navigation, menu_open: false } + } + + fn show_screens(&mut self, ui: &mut Ui, frame: &mut Frame, cb: &dyn PlatformCallbacks) { + let Self { screens, navigation, .. } = self; + for screen in screens { + let id = screen.name(); + let show = navigation.contains(id.as_str()); + if show { + screen.show(ui, frame, cb); + } + Self::set_show_screen(navigation, id, show); } } - pub fn ui(&mut self, ctx: &Context, frame: &mut Frame, cb: &dyn PlatformCallbacks) { - + fn set_show_screen(navigation: &mut BTreeSet, key: String, show: bool) { + if show { + if !navigation.contains(key.as_str()) { + navigation.insert(key.to_owned()); + } + } else { + navigation.remove(key.as_str()); + } } -} \ No newline at end of file + + fn current_screen_title(&self) -> &String { + self.navigation.last().unwrap() + } + + fn menu_is_open(&mut self, frame: &mut Frame) -> bool { + return self.menu_open || is_landscape(frame); + } + + pub fn ui(&mut self, ui: &mut Ui, frame: &mut Frame, cb: &dyn PlatformCallbacks) { + let menu_open = self.menu_is_open(frame); + + egui::TopBottomPanel::top("title_panel") + .resizable(false) + // .default_height(120.0) + .frame(egui::Frame { + inner_margin: Margin::same(0.0), + outer_margin: Margin::same(0.0), + rounding: Default::default(), + ..Default::default() + }) + .show_inside(ui, |ui| { + ui.with_layout(Layout::right_to_left(Align::Min), |ui| { + let b = egui::widgets::Button::new( + RichText::new(" + ").size(38.0) + ).fill(Color32::TRANSPARENT).ui(ui).interact(Sense::click_and_drag()); + if b.drag_released() || b.clicked() { + //TODO: Add wallet + //self.menu_open = !menu_open + }; + }); + ui.with_layout(Layout::top_down(Align::Center), |ui| { + ui.heading(self.current_screen_title()) + }); + ui.with_layout(Layout::left_to_right(Align::Min), |ui| { + let b = egui::widgets::Button::new( + RichText::new(" = ").size(38.0) + ).fill(Color32::TRANSPARENT).ui(ui).interact(Sense::click_and_drag()); + if b.drag_released() || b.clicked() { + self.menu_open = !menu_open + }; + }); + }); + + egui::CentralPanel::default().frame(egui::containers::Frame{ + outer_margin: Margin { + left: 0.0, + right: 0.0, + // top: 120.0, + top: 0.0, + bottom: 0.0, + }, + inner_margin: Margin::same(3.0), + fill: ui.ctx().style().visuals.panel_fill, + ..Default::default() + }) + .show_inside(ui, |ui| { + self.show_screens(ui, frame, cb); + }); + + ui.style_mut().visuals.widgets.noninteractive.bg_stroke = Stroke::NONE; + + // egui::SidePanel::right("screens_content") + // .resizable(false) + // .min_width(frame.info().window_info.size.x) + // .frame(egui::Frame { + // inner_margin: Margin::same(3.0), + // outer_margin: Margin::same(0.0), + // rounding: Default::default(), + // shadow: Shadow::NONE, + // fill: Color32::KHAKI, + // stroke: Stroke::NONE, + // }) + // .show_inside(ui, |ui| { + // self.show_screens(ui, frame, cb); + // }); + + egui::SidePanel::left("menu_panel") + .resizable(false) + .frame(egui::Frame { + inner_margin: Margin::same(0.0), + outer_margin: Margin::same(0.0), + rounding: Default::default(), + shadow: Shadow::NONE, + fill: Color32::YELLOW, + stroke: Stroke::NONE, + }) + .show_animated_inside(ui, menu_open, |ui| { + //TODO: Menu content + ui.vertical_centered(|ui| { + ui.heading("💻 Backend"); + }); + + ui.separator(); + }); + } +} + +pub fn is_landscape(frame: &mut Frame) -> bool { + return frame.info().window_info.size.x > frame.info().window_info.size.y +} + diff --git a/src/gui/mod.rs b/src/gui/mod.rs index 226acda..13232a5 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -14,13 +14,11 @@ mod app; pub use app::PlatformApp; +pub use app::is_landscape; -pub mod screens; pub mod platform; - -pub trait Ui { - fn ui(&mut self, ui: &mut egui::Ui); -} +pub mod screens; +pub mod views; pub trait PlatformCallbacks { fn show_keyboard(&mut self); diff --git a/src/gui/platform/android/mod.rs b/src/gui/platform/android/mod.rs index 4c351a7..2daafbc 100644 --- a/src/gui/platform/android/mod.rs +++ b/src/gui/platform/android/mod.rs @@ -12,10 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -use egui::{Color32, FontTweak, Visuals}; -use egui::epaint::Shadow; - -use jni::objects::{JObject, JPrimitiveArray}; use winit::platform::android::activity::AndroidApp; use crate::gui::{PlatformApp, PlatformCallbacks}; @@ -23,9 +19,9 @@ use crate::gui::app::Screens; #[derive(Clone)] pub struct Android { - pub android_app: AndroidApp, - pub cutouts: [i32; 4], - pub window_size: [f32; 2] + android_app: AndroidApp, + cutouts: [i32; 4], + window_size: [f32; 2] } impl Android { @@ -58,32 +54,80 @@ impl PlatformCallbacks for Android { impl PlatformApp { pub fn new(cc: &eframe::CreationContext<'_>, platform: Android) -> Self { - setup_fonts(&cc.egui_ctx); + Self::setup_visuals(&cc.egui_ctx); + Self::setup_fonts(&cc.egui_ctx); Self { screens: Screens::default(), platform, } } -} -fn setup_fonts(ctx: &egui::Context) { - let mut fonts = egui::FontDefinitions::default(); - fonts.font_data.insert( - "roboto".to_owned(), - egui::FontData::from_static(include_bytes!( - "../../../../fonts/roboto.ttf" - )).tweak(FontTweak { - scale: 1.0, - y_offset_factor: -0.20, - y_offset: 0.0 - }), - ); - fonts - .families - .entry(egui::FontFamily::Proportional) - .or_default() - .insert(0, "roboto".to_owned()); - ctx.set_fonts(fonts); + fn setup_visuals(ctx: &egui::Context) { + ctx.set_visuals(egui::Visuals::light()); + } + + fn setup_fonts(ctx: &egui::Context) { + use egui::FontFamily::Proportional; + + let mut fonts = egui::FontDefinitions::default(); + fonts.font_data.insert( + "roboto".to_owned(), + egui::FontData::from_static(include_bytes!( + "../../../../fonts/roboto.ttf" + )).tweak(egui::FontTweak { + scale: 1.0, + y_offset_factor: -0.20, + y_offset: 0.0 + }), + ); + fonts + .families + .entry(Proportional) + .or_default() + .insert(0, "roboto".to_owned()); + ctx.set_fonts(fonts); + + use egui::FontId; + use egui::TextStyle::*; + + let mut style = (*ctx.style()).clone(); + + style.text_styles = [ + (Heading, FontId::new(24.0, Proportional)), + (Body, FontId::new(18.0, Proportional)), + (Monospace, FontId::new(18.0, Proportional)), + (Button, FontId::new(18.0, Proportional)), + (Small, FontId::new(12.0, Proportional)), + ].into(); + + ctx.set_style(style); + } + + fn get_display_cutouts(app: &AndroidApp) -> [i32; 4] { + use jni::objects::{JObject, JPrimitiveArray}; + + let vm = unsafe { jni::JavaVM::from_raw(app.vm_as_ptr() as _) }.unwrap(); + let mut env = vm.attach_current_thread().unwrap(); + let activity = unsafe { + JObject::from_raw(app.activity_as_ptr() as jni::sys::jobject) + }; + let _res = env + .call_method( + activity, + "getDisplayCutouts", + "()[I", + &[], + ) + .unwrap(); + let mut array: [i32; 4] = [0; 4]; + let object: jni::sys::jobject = unsafe { _res.as_jni().l }; + unsafe { + env.get_int_array_region(JPrimitiveArray::from( + JObject::from_raw(object)), 0, array.as_mut() + ).unwrap(); + } + array + } } impl eframe::App for PlatformApp { @@ -93,80 +137,66 @@ impl eframe::App for PlatformApp { if _x != self.platform.window_size[0] || _y != self.platform.window_size[1] { self.platform.window_size[0] = _x; self.platform.window_size[1] = _y; - self.platform.cutouts = get_display_cutouts(&self.platform.android_app); + self.platform.cutouts = Self::get_display_cutouts(&self.platform.android_app); } - let is_dark = ctx.style().visuals.dark_mode; - egui::TopBottomPanel::top("top_padding_panel") - .frame(egui::Frame { - shadow: Shadow::NONE, - fill: if is_dark {Color32::BLACK} else {Color32::WHITE}, - ..Default::default() - }) - .show_separator_line(false) - .resizable(false) - .exact_height(self.platform.cutouts[0] as f32) - .show(ctx, |ui| {}); + padding_panels(self, ctx); - egui::TopBottomPanel::bottom("bottom_padding_panel") + egui::CentralPanel::default() .frame(egui::Frame { - shadow: Shadow::NONE, - fill: if is_dark {Color32::BLACK} else {Color32::WHITE}, - ..Default::default() + inner_margin: egui::style::Margin::same(0.0), + outer_margin: egui::style::Margin::same(0.0), + fill: ctx.style().visuals.panel_fill, + .. Default::default() }) - .show_separator_line(false) - .resizable(false) - .exact_height(self.platform.cutouts[2] as f32) - .show(ctx, |ui| {}); - - egui::SidePanel::right("right_padding_panel") - .frame(egui::Frame { - shadow: Shadow::NONE, - fill: if is_dark {Color32::BLACK} else {Color32::WHITE}, - ..Default::default() - }) - .show_separator_line(false) - .resizable(false) - .default_width(self.platform.cutouts[1] as f32) - .show(ctx, |ui| {}); - - egui::SidePanel::left("left_padding_panel") - .frame(egui::Frame { - shadow: Shadow::NONE, - fill: if is_dark {Color32::BLACK} else {Color32::WHITE}, - ..Default::default() - }) - .show_separator_line(false) - .resizable(false) - .default_width(self.platform.cutouts[3] as f32) - .show(ctx, |ui| {}); - - egui::CentralPanel::default().show(ctx, |ui| { - self.screens.ui(ctx, frame, &self.platform); - }); + .show(ctx, |ui| { + self.screens.ui(ui, frame, &self.platform); + }); } } -fn get_display_cutouts(app: &AndroidApp) -> [i32; 4] { - let vm = unsafe { jni::JavaVM::from_raw(app.vm_as_ptr() as _) }.unwrap(); - let mut env = vm.attach_current_thread().unwrap(); - let activity = unsafe { - JObject::from_raw(app.activity_as_ptr() as jni::sys::jobject) - }; - let _res = env - .call_method( - activity, - "getDisplayCutouts", - "()[I", - &[], - ) - .unwrap(); - let mut array: [i32; 4] = [0; 4]; - let object: jni::sys::jobject = unsafe { _res.as_jni().l }; - unsafe { - env.get_int_array_region(JPrimitiveArray::from( - JObject::from_raw(object)), 0, array.as_mut() - ).unwrap(); - } - array -} +fn padding_panels(app: &PlatformApp, ctx: &egui::Context) { + egui::TopBottomPanel::top("top_padding_panel") + .frame(egui::Frame { + inner_margin: egui::style::Margin::same(0.0), + fill: ctx.style().visuals.panel_fill, + ..Default::default() + }) + .show_separator_line(false) + .resizable(false) + .exact_height(app.platform.cutouts[0] as f32) + .show(ctx, |ui| {}); + + egui::TopBottomPanel::bottom("bottom_padding_panel") + .frame(egui::Frame { + inner_margin: egui::style::Margin::same(0.0), + fill: ctx.style().visuals.panel_fill, + ..Default::default() + }) + .show_separator_line(false) + .resizable(false) + .exact_height(app.platform.cutouts[2] as f32) + .show(ctx, |ui| {}); + + egui::SidePanel::right("right_padding_panel") + .frame(egui::Frame { + inner_margin: egui::style::Margin::same(0.0), + fill: ctx.style().visuals.panel_fill, + ..Default::default() + }) + .show_separator_line(false) + .resizable(false) + .max_width(app.platform.cutouts[1] as f32) + .show(ctx, |ui| {}); + + egui::SidePanel::left("left_padding_panel") + .frame(egui::Frame { + inner_margin: egui::style::Margin::same(0.0), + fill: ctx.style().visuals.panel_fill, + ..Default::default() + }) + .show_separator_line(false) + .resizable(false) + .max_width(app.platform.cutouts[3] as f32) + .show(ctx, |ui| {}); +} \ No newline at end of file diff --git a/src/gui/screens/mod.rs b/src/gui/screens/mod.rs index 92447da..76f2153 100644 --- a/src/gui/screens/mod.rs +++ b/src/gui/screens/mod.rs @@ -13,8 +13,13 @@ // limitations under the License. mod wallets; + pub use wallets::Wallets; +use crate::gui::PlatformCallbacks; pub trait Screen { - fn name(&self) -> &'static str; + fn name(&self) -> String; + fn show(&mut self, ui: &mut egui::Ui, frame: &mut eframe::Frame, cb: &dyn PlatformCallbacks); + + // fn option_on_panel(&mut self, ui: &mut egui::Ui); } diff --git a/src/gui/screens/wallets.rs b/src/gui/screens/wallets.rs index ec8b8bb..2ce87ab 100644 --- a/src/gui/screens/wallets.rs +++ b/src/gui/screens/wallets.rs @@ -12,34 +12,36 @@ // See the License for the specific language governing permissions and // limitations under the License. -use egui::ScrollArea; -use crate::gui::Ui; +use std::ops::Deref; +use eframe::Frame; +use egui::{ScrollArea, Ui}; + +use crate::gui::app::Screens; +use crate::gui::{PlatformCallbacks}; pub struct Wallets { + } impl Default for Wallets { fn default() -> Self { Self { - } } } -impl Ui for Wallets { - fn ui(&mut self, ui: &mut egui::Ui) { +impl super::Screen for Wallets { + fn name(&self) -> String { + t!("wallets") + } + + fn show(&mut self, ui: &mut Ui, frame: &mut Frame, cb: &dyn PlatformCallbacks) { ScrollArea::vertical() .auto_shrink([false; 2]) .show(ui, |ui| { - for item in 1..=50 { - ui.heading(format!("This is future Wallet {}", item)); + for item in 1..=55 { + ui.heading(format!("This is longest future Wallet #{}", item)); } }); } -} - -impl super::Screen for Wallets { - fn name(&self) -> &'static str { - "Wallets" - } } \ No newline at end of file diff --git a/src/gui/views/menu.rs b/src/gui/views/menu.rs new file mode 100644 index 0000000..6ddbed9 --- /dev/null +++ b/src/gui/views/menu.rs @@ -0,0 +1,14 @@ +// Copyright 2023 The Grim Developers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + diff --git a/src/gui/views/mod.rs b/src/gui/views/mod.rs new file mode 100644 index 0000000..a3065dc --- /dev/null +++ b/src/gui/views/mod.rs @@ -0,0 +1,22 @@ +// Copyright 2023 The Grim Developers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::gui::PlatformCallbacks; + +mod navigation; +mod menu; + +pub trait View { + fn ui(&mut self, ui: &mut egui::Ui, frame: &mut eframe::Frame, cb: &dyn PlatformCallbacks); +} diff --git a/src/gui/views/navigation.rs b/src/gui/views/navigation.rs new file mode 100644 index 0000000..91dce2a --- /dev/null +++ b/src/gui/views/navigation.rs @@ -0,0 +1,32 @@ +// Copyright 2023 The Grim Developers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use eframe::Frame; +use egui::Ui; +use crate::gui::PlatformCallbacks; +use crate::gui::views::View; + +struct NavigationPanel { + title: str +} + +impl View for NavigationPanel { + fn ui(&mut self, ui: &mut Ui, frame: &mut Frame, cb: &dyn PlatformCallbacks) { + + } +} + +impl NavigationPanel { + +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index a5130e7..248882b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright 2023 The Grin Developers +// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,8 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. +#[macro_use] +extern crate rust_i18n; +i18n!("locales"); + mod node; mod wallet; mod gui; -pub mod grim; +pub mod grim; \ No newline at end of file diff --git a/src/node/mod.rs b/src/node/mod.rs index 2332bd2..7cfeade 100644 --- a/src/node/mod.rs +++ b/src/node/mod.rs @@ -1,4 +1,4 @@ -// Copyright 2023 The Grin Developers +// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/node/node.rs b/src/node/node.rs index 49078d2..27ace3f 100644 --- a/src/node/node.rs +++ b/src/node/node.rs @@ -1,16 +1,16 @@ -// // Copyright 2023 The Grin Developers -// // -// // Licensed under the Apache License, Version 2.0 (the "License"); -// // you may not use this file except in compliance with the License. -// // You may obtain a copy of the License at -// // -// // http://www.apache.org/licenses/LICENSE-2.0 -// // -// // Unless required by applicable law or agreed to in writing, software -// // distributed under the License is distributed on an "AS IS" BASIS, -// // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// // See the License for the specific language governing permissions and -// // limitations under the License. +// Copyright 2023 The Grim Developers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use std::sync::mpsc; use grin_config::{config, GlobalConfig}; diff --git a/src/wallet/mod.rs b/src/wallet/mod.rs index 1cd9177..4401524 100644 --- a/src/wallet/mod.rs +++ b/src/wallet/mod.rs @@ -1,4 +1,4 @@ -// Copyright 2023 The Grin Developers +// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/wallet/wallet.rs b/src/wallet/wallet.rs index 6e2ae3a..845ee06 100644 --- a/src/wallet/wallet.rs +++ b/src/wallet/wallet.rs @@ -1,4 +1,4 @@ -// Copyright 2023 The Grin Developers +// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License.