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.