first commit

This commit is contained in:
aOK 2025-01-28 19:32:55 +03:00
commit 67fcf43a0c
19 changed files with 2938 additions and 0 deletions

3
Caddyfile Normal file
View file

@ -0,0 +1,3 @@
https://192.168.216.197:8000 {
reverse_proxy 127.0.0.1:8010
}

944
Cargo.lock generated Normal file
View file

@ -0,0 +1,944 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "ab_glyph_rasterizer"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
[[package]]
name = "adler2"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
[[package]]
name = "aok_manyatta"
version = "0.6.0"
dependencies = [
"makepad-widgets",
]
[[package]]
name = "arrayref"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
[[package]]
name = "arrayvec"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
[[package]]
name = "bytemuck"
version = "1.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
[[package]]
name = "byteorder"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "convert_case"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
dependencies = [
"unicode-segmentation",
]
[[package]]
name = "crc32fast"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
dependencies = [
"cfg-if",
]
[[package]]
name = "ctor"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
dependencies = [
"quote",
"syn",
]
[[package]]
name = "data-url"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
[[package]]
name = "fdeflate"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
dependencies = [
"simd-adler32",
]
[[package]]
name = "flate2"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "float-cmp"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
[[package]]
name = "fxhash"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
dependencies = [
"byteorder",
]
[[package]]
name = "hilog-sys"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b570882b8450bb0c9edfc3e4bdd3bd298667d38cb15e5b5c67586a7fb78429a"
[[package]]
name = "imagesize"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284"
[[package]]
name = "kurbo"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89234b2cc610a7dd927ebde6b41dd1a5d4214cffaef4cf1fb2195d592f92518f"
dependencies = [
"arrayvec",
"smallvec",
]
[[package]]
name = "libloading"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
dependencies = [
"cfg-if",
"windows-targets 0.52.6",
]
[[package]]
name = "log"
version = "0.4.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
[[package]]
name = "makepad-android-state"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd004cda8be459fd76954218b76a1249a079fb9360bbca4e724cb7ddb2962857"
dependencies = [
"makepad-jni-sys",
]
[[package]]
name = "makepad-derive-live"
version = "0.4.0"
dependencies = [
"makepad-live-id",
"makepad-micro-proc-macro",
]
[[package]]
name = "makepad-derive-wasm-bridge"
version = "0.4.0"
dependencies = [
"makepad-micro-proc-macro",
]
[[package]]
name = "makepad-derive-widget"
version = "0.4.0"
dependencies = [
"makepad-live-id",
"makepad-micro-proc-macro",
]
[[package]]
name = "makepad-draw"
version = "0.6.0"
dependencies = [
"ab_glyph_rasterizer",
"fxhash",
"makepad-html",
"makepad-platform",
"makepad-rustybuzz",
"makepad-vector",
"sdfer",
"unicode-bidi",
"unicode-linebreak",
"unicode-segmentation",
]
[[package]]
name = "makepad-futures"
version = "0.4.0"
[[package]]
name = "makepad-futures-legacy"
version = "0.7.0"
[[package]]
name = "makepad-html"
version = "0.4.0"
dependencies = [
"makepad-live-id",
]
[[package]]
name = "makepad-http"
version = "0.4.0"
[[package]]
name = "makepad-jni-sys"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9775cbec5fa0647500c3e5de7c850280a88335d1d2d770e5aa2332b801ba7064"
[[package]]
name = "makepad-live-compiler"
version = "0.5.0"
dependencies = [
"makepad-derive-live",
"makepad-live-tokenizer",
"makepad-math",
]
[[package]]
name = "makepad-live-id"
version = "0.4.0"
dependencies = [
"makepad-live-id-macros",
]
[[package]]
name = "makepad-live-id-macros"
version = "0.4.0"
dependencies = [
"makepad-micro-proc-macro",
]
[[package]]
name = "makepad-live-tokenizer"
version = "0.4.0"
dependencies = [
"makepad-live-id",
"makepad-math",
"makepad-micro-serde",
]
[[package]]
name = "makepad-markdown"
version = "0.4.0"
dependencies = [
"makepad-live-id",
]
[[package]]
name = "makepad-math"
version = "0.4.0"
[[package]]
name = "makepad-micro-proc-macro"
version = "0.4.0"
[[package]]
name = "makepad-micro-serde"
version = "0.4.0"
dependencies = [
"makepad-live-id",
"makepad-micro-serde-derive",
]
[[package]]
name = "makepad-micro-serde-derive"
version = "0.4.0"
dependencies = [
"makepad-micro-proc-macro",
]
[[package]]
name = "makepad-objc-sys"
version = "0.4.0"
[[package]]
name = "makepad-platform"
version = "0.6.0"
dependencies = [
"bitflags 2.8.0",
"hilog-sys",
"makepad-android-state",
"makepad-futures",
"makepad-futures-legacy",
"makepad-http",
"makepad-jni-sys",
"makepad-objc-sys",
"makepad-shader-compiler",
"makepad-wasm-bridge",
"napi-derive-ohos",
"napi-ohos",
"ohos-sys",
"smallvec",
"windows",
"windows-core",
"windows-targets 0.48.5",
]
[[package]]
name = "makepad-rustybuzz"
version = "0.8.0"
dependencies = [
"bitflags 1.3.2",
"bytemuck",
"smallvec",
"ttf-parser",
"unicode-bidi-mirroring",
"unicode-ccc",
"unicode-properties",
"unicode-script",
]
[[package]]
name = "makepad-shader-compiler"
version = "0.5.0"
dependencies = [
"makepad-live-compiler",
]
[[package]]
name = "makepad-vector"
version = "0.4.0"
dependencies = [
"resvg",
"ttf-parser",
]
[[package]]
name = "makepad-wasm-bridge"
version = "0.4.0"
dependencies = [
"makepad-derive-wasm-bridge",
"makepad-live-id",
]
[[package]]
name = "makepad-widgets"
version = "0.6.0"
dependencies = [
"makepad-derive-widget",
"makepad-draw",
"makepad-html",
"makepad-markdown",
"makepad-zune-png",
"unicode-segmentation",
"zune-jpeg",
]
[[package]]
name = "makepad-zune-png"
version = "0.4.10"
dependencies = [
"zune-core",
"zune-inflate",
]
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "miniz_oxide"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
dependencies = [
"adler2",
"simd-adler32",
]
[[package]]
name = "napi-derive-backend-ohos"
version = "0.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6b18d697bedddd2d4c9f8f76b49fe65bd81ed1c55a7eec21ba40c176c236ddc"
dependencies = [
"convert_case",
"once_cell",
"proc-macro2",
"quote",
"regex",
"syn",
]
[[package]]
name = "napi-derive-ohos"
version = "0.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8462d74a2d6c7a671bd610f99f9ba34c739aadd2da4d8dd9f109a7e666cc2ad2"
dependencies = [
"cfg-if",
"convert_case",
"napi-derive-backend-ohos",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "napi-ohos"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad5a3bbb2ae61f345b8c11776f2e79fc2bb71d1901af9a5f81f03c9238a05d86"
dependencies = [
"bitflags 2.8.0",
"ctor",
"napi-sys-ohos",
"once_cell",
]
[[package]]
name = "napi-sys-ohos"
version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f101404db01422d034db5afa63eefff6d9c8f66c0894278bc456b4c30954e166"
dependencies = [
"libloading",
]
[[package]]
name = "ohos-sys"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d380ab6c951261a0e44306245bc960b3b3367f099a7da7156bd1a3cacaf783c"
[[package]]
name = "once_cell"
version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "pico-args"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
[[package]]
name = "png"
version = "0.17.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
"fdeflate",
"flate2",
"miniz_oxide",
]
[[package]]
name = "proc-macro2"
version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "resvg"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "944d052815156ac8fa77eaac055220e95ba0b01fa8887108ca710c03805d9051"
dependencies = [
"log",
"pico-args",
"rgb",
"svgtypes",
"tiny-skia",
"usvg",
]
[[package]]
name = "rgb"
version = "0.8.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a"
dependencies = [
"bytemuck",
]
[[package]]
name = "roxmltree"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
[[package]]
name = "sdfer"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27fd75ebc7c721a70d202c7cdd2beb108bbe5dfaaea68e06aff4de2f4cc240ed"
[[package]]
name = "simd-adler32"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
[[package]]
name = "simplecss"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c"
dependencies = [
"log",
]
[[package]]
name = "siphasher"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
[[package]]
name = "smallvec"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "strict-num"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
dependencies = [
"float-cmp",
]
[[package]]
name = "svgtypes"
version = "0.15.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc"
dependencies = [
"kurbo",
"siphasher",
]
[[package]]
name = "syn"
version = "2.0.96"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "tiny-skia"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
dependencies = [
"arrayref",
"arrayvec",
"bytemuck",
"cfg-if",
"log",
"png",
"tiny-skia-path",
]
[[package]]
name = "tiny-skia-path"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
dependencies = [
"arrayref",
"bytemuck",
"strict-num",
]
[[package]]
name = "ttf-parser"
version = "0.21.1"
[[package]]
name = "unicode-bidi"
version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
[[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-ident"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243"
[[package]]
name = "unicode-linebreak"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
[[package]]
name = "unicode-properties"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
[[package]]
name = "unicode-script"
version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f"
[[package]]
name = "unicode-segmentation"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
[[package]]
name = "usvg"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b84ea542ae85c715f07b082438a4231c3760539d902e11d093847a0b22963032"
dependencies = [
"base64",
"data-url",
"flate2",
"imagesize",
"kurbo",
"log",
"pico-args",
"roxmltree",
"simplecss",
"siphasher",
"strict-num",
"svgtypes",
"tiny-skia-path",
"xmlwriter",
]
[[package]]
name = "windows"
version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132"
dependencies = [
"windows-core",
"windows-targets 0.52.6",
]
[[package]]
name = "windows-core"
version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6"
dependencies = [
"windows-implement",
"windows-interface",
"windows-result",
"windows-targets 0.52.6",
]
[[package]]
name = "windows-implement"
version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-interface"
version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-result"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
"windows_aarch64_gnullvm 0.48.5",
"windows_aarch64_msvc 0.48.5",
"windows_i686_gnu 0.48.5",
"windows_i686_msvc 0.48.5",
"windows_x86_64_gnu 0.48.5",
"windows_x86_64_gnullvm 0.48.5",
"windows_x86_64_msvc 0.48.5",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
"windows_i686_gnullvm",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
"windows_x86_64_msvc 0.52.6",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "xmlwriter"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
[[package]]
name = "zune-core"
version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
[[package]]
name = "zune-inflate"
version = "0.2.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
dependencies = [
"simd-adler32",
]
[[package]]
name = "zune-jpeg"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028"
dependencies = [
"zune-core",
]

11
Cargo.toml Normal file
View file

@ -0,0 +1,11 @@
[package]
name = "aok_manyatta"
version = "0.6.0"
authors = ["Makepad <info@makepad.nl>"]
edition = "2021"
description = "An image viewer example"
license = "MIT OR Apache-2.0"
[dependencies]
makepad-widgets = { path = "../makepad/widgets", version = "0.6.0" }
# lipsum = "0.9.1"

23
README.md Normal file
View file

@ -0,0 +1,23 @@
# aok_manyatta
sudo cargo run --release
sudo cargo makepad wasm run -p aok_manyatta --release
ifconfig | grep "inet " | grep -v 127.0.0.1
sudo cargo +nightly makepad android run -p aok_manyatta --release
sudo cargo makepad wasm run -p aok_manyatta --release --no-default-features --target wasm32-unknown-unknown
caddy fmt --overwrite /Users/aok/Projects/rustdev/MadeByMakepad/aok_manyatta/Caddyfile
caddy reload --config /Users/aok/Projects/rustdev/MadeByMakepad/aok_manyatta/Caddyfile
Creating a new repository on the command line
touch README.md
git init
git checkout -b main
git add *
git commit -m "first commit"
git remote add origin https://gitdab.com/andodeki/aok_manyatta.git
git push -u origin main
Pushing an existing repository from the command line
git remote add origin https://gitdab.com/andodeki/aok_manyatta.git
git push -u origin main

648
command_log.txt Normal file
View file

@ -0,0 +1,648 @@
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 1027.50s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 17.36s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 47.04s
Command: cargo pkgid -p aok_manyatta
Time Taken: 210.15ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 512.67ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 65.84s
Command: cargo pkgid -p aok_manyatta
Time Taken: 209.53ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 457.47ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 2.48s
Command: cargo pkgid -p aok_manyatta
Time Taken: 142.67ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 346.78ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 48.02s
Command: cargo pkgid -p aok_manyatta
Time Taken: 169.76ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 437.26ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 189.79s
Command: cargo pkgid -p aok_manyatta
Time Taken: 181.99ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 426.41ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.72s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.99s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 80.85s
Command: cargo pkgid -p aok_manyatta
Time Taken: 197.99ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 470.61ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 96.74s
Command: cargo pkgid -p aok_manyatta
Time Taken: 447.20ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 877.67ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 1.15s
Command: cargo pkgid -p aok_manyatta
Time Taken: 294.81ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 2.02s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 679.84ms
Command: cargo pkgid -p aok_manyatta
Time Taken: 141.65ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 376.39ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 57.60s
Command: cargo pkgid -p aok_manyatta
Time Taken: 400.78ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 691.12ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 62.50s
Command: cargo pkgid -p aok_manyatta
Time Taken: 197.54ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 482.74ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 10.00s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 50.85s
Command: cargo pkgid -p aok_manyatta
Time Taken: 168.66ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 541.38ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 18.04s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.12s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 11.84s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 16.53s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 5.81s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 5.44s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 5.93s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 107.56s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 4.69s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 104.56s
Command: cargo pkgid -p aok_manyatta
Time Taken: 252.97ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 653.15ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 65.58s
Command: cargo pkgid -p aok_manyatta
Time Taken: 193.96ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 709.95ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 816.35ms
Command: cargo pkgid -p aok_manyatta
Time Taken: 172.33ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 363.99ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 66.45s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 3.28s
Command: cargo pkgid -p aok_manyatta
Time Taken: 133.00ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 336.03ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.16s
Command: cargo pkgid -p aok_manyatta
Time Taken: 412.52ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.67s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 990.96ms
Command: cargo pkgid -p aok_manyatta
Time Taken: 123.87ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 418.45ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 999.07ms
Command: cargo pkgid -p aok_manyatta
Time Taken: 168.80ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 348.50ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 1.12s
Command: cargo pkgid -p aok_manyatta
Time Taken: 154.05ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 397.58ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 887.73ms
Command: cargo pkgid -p aok_manyatta
Time Taken: 327.23ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 723.24ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 814.48ms
Command: cargo pkgid -p aok_manyatta
Time Taken: 155.06ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 363.63ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 1.57s
Command: cargo pkgid -p aok_manyatta
Time Taken: 143.92ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 398.15ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 1.52s
Command: cargo pkgid -p aok_manyatta
Time Taken: 141.07ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 360.68ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 12.01s
Command: cargo pkgid -p aok_manyatta
Time Taken: 518.66ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 11.19s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.15s
Command: cargo pkgid -p aok_manyatta
Time Taken: 396.36ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 3.97s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 163.61s
Command: cargo pkgid -p aok_manyatta
Time Taken: 210.80ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 767.13ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 171.65s
Command: cargo pkgid -p aok_manyatta
Time Taken: 527.80ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.13s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 305.93s
Command: cargo pkgid -p aok_manyatta
Time Taken: 271.56ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 788.23ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 3.91s
Command: cargo pkgid -p aok_manyatta
Time Taken: 146.53ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 508.17ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 191.73s
Command: cargo pkgid -p aok_manyatta
Time Taken: 418.70ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 665.01ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 121.65s
Command: cargo pkgid -p aok_manyatta
Time Taken: 550.79ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 7.43s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 3.36s
Command: cargo pkgid -p aok_manyatta
Time Taken: 434.50ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 2.05s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 81.82s
Command: cargo pkgid -p aok_manyatta
Time Taken: 260.32ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 822.01ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.52s
Command: cargo pkgid -p aok_manyatta
Time Taken: 304.26ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 757.15ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.07s
Command: cargo pkgid -p aok_manyatta
Time Taken: 220.44ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 663.29ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 14.93s
Command: cargo pkgid -p aok_manyatta
Time Taken: 453.34ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 727.23ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.90s
Command: cargo pkgid -p aok_manyatta
Time Taken: 182.70ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 549.75ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 10.55s
Command: cargo pkgid -p aok_manyatta
Time Taken: 339.45ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.28s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.71s
Command: cargo pkgid -p aok_manyatta
Time Taken: 210.08ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 617.73ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 5.63s
Command: cargo pkgid -p aok_manyatta
Time Taken: 402.28ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.97s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.59s
Command: cargo pkgid -p aok_manyatta
Time Taken: 211.01ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.04s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 8.82s
Command: cargo pkgid -p aok_manyatta
Time Taken: 223.10ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 760.58ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.63s
Command: cargo pkgid -p aok_manyatta
Time Taken: 238.91ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 732.25ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 15.75s
Command: cargo pkgid -p aok_manyatta
Time Taken: 408.25ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 3.47s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 14.12s
Command: cargo pkgid -p aok_manyatta
Time Taken: 451.94ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.05s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 9.13s
Command: cargo pkgid -p aok_manyatta
Time Taken: 281.61ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 527.74ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.77s
Command: cargo pkgid -p aok_manyatta
Time Taken: 270.18ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 494.62ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.92s
Command: cargo pkgid -p aok_manyatta
Time Taken: 204.70ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 663.77ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.85s
Command: cargo pkgid -p aok_manyatta
Time Taken: 197.69ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 720.17ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 5.04s
Command: cargo pkgid -p aok_manyatta
Time Taken: 181.12ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 606.10ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.68s
Command: cargo pkgid -p aok_manyatta
Time Taken: 450.53ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.10s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 25.78s
Command: cargo pkgid -p aok_manyatta
Time Taken: 399.68ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.04s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.43s
Command: cargo pkgid -p aok_manyatta
Time Taken: 227.79ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 583.64ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 8.25s
Command: cargo pkgid -p aok_manyatta
Time Taken: 173.75ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 561.65ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.57s
Command: cargo pkgid -p aok_manyatta
Time Taken: 261.68ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 641.79ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 16.03s
Command: cargo pkgid -p aok_manyatta
Time Taken: 440.75ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 982.90ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.68s
Command: cargo pkgid -p aok_manyatta
Time Taken: 212.30ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 699.28ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 7.45s
Command: cargo pkgid -p aok_manyatta
Time Taken: 299.63ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 470.49ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 9.19s
Command: cargo pkgid -p aok_manyatta
Time Taken: 203.89ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 650.39ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 6.53s
Command: cargo pkgid -p aok_manyatta
Time Taken: 199.70ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 462.27ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 9.85s
Command: cargo pkgid -p aok_manyatta
Time Taken: 271.87ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 534.75ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 15.60s
Command: cargo pkgid -p aok_manyatta
Time Taken: 562.13ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.92s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 8.28s
Command: cargo pkgid -p aok_manyatta
Time Taken: 304.54ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 525.56ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 10.31s
Command: cargo pkgid -p aok_manyatta
Time Taken: 214.29ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 621.11ms
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 14.65s
Command: cargo pkgid -p aok_manyatta
Time Taken: 303.10ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 1.41s
Command: rustup run nightly cargo build --target=wasm32-unknown-unknown -Z build-std=panic_abort,std -p aok_manyatta --release
Time Taken: 10.23s
Command: cargo pkgid -p aok_manyatta
Time Taken: 283.93ms
Command: cargo tree -p aok_manyatta --target=wasm32-unknown-unknown
Time Taken: 722.92ms

78
src/app.rs Normal file
View file

@ -0,0 +1,78 @@
use makepad_widgets::*;
use std::path::Path;
use crate::data::state::State;
live_design!(
use link::widgets::*;
use link::theme::*;
use link::shaders::*;
use crate::shared::styles::*;
use crate::shared::widgets::*;
use crate::shared::widgets::SidebarMenuButton;
use crate::home::home_screen::HomeScreen;
App = {{App}} {
ui: <Window> {
window: {inner_size: vec2(1280, 800)},
pass: {clear_color: #2A}
body = {
// A wrapper view for showing top-level app modals/dialogs/popups
<View> {
width: Fill, height: Fill,
flow: Overlay,
home_screen_view = <View> {
visible: true
home_screen = <HomeScreen> {}
}
}
} // end of body
}
}
);
#[derive(Live, LiveHook)]
struct App {
#[live]
ui: WidgetRef,
#[rust]
state: State,
}
impl MatchEvent for App {
fn handle_startup(&mut self, _cx: &mut Cx) {
// let home = std::env::var("HOME")
// .or_else(|_| std::env::var("USERPROFILE"))
// .expect("home not found");
// self.state.load_images(&Path::new(&home).join("Downloads"));
}
}
impl AppMain for App {
fn handle_event(&mut self, cx: &mut Cx, event: &Event) {
// self.ui
// .handle_event(cx, event, &mut Scope::with_data(&mut self.state));
// self.match_event(cx, event);
self.match_event(cx, event);
let scope = &mut Scope::with_data(&mut self.state);
self.ui.handle_event(cx, event, scope);
// self.match_event(cx, event);
}
}
impl LiveRegister for App {
fn live_register(cx: &mut Cx) {
makepad_widgets::live_design(cx);
crate::shared::live_design(cx);
crate::home::live_design(cx);
}
}
app_main!(App);

7
src/data/mod.rs Normal file
View file

@ -0,0 +1,7 @@
pub mod state;
// mod filesystem;
// pub mod chats;
// pub mod downloads;
// pub mod preferences;
// pub mod search;
// pub mod store;

26
src/data/state.rs Normal file
View file

@ -0,0 +1,26 @@
use std::{
fs,
path::{Path, PathBuf},
};
#[derive(Default)]
pub struct State {
pub images: Vec<PathBuf>,
}
impl State {
pub fn load_images(&mut self, path: &Path) {
self.images = fs::read_dir(path)
.expect("unable to read directory")
.map(|entry| entry.expect("unable to read entry").path())
.filter(|path| {
path.extension()
.map_or(false, |ext| ["png", "jpg"].iter().any(|e| *e == ext))
})
.collect::<Vec<_>>();
}
pub fn root(&self) -> Option<&Path> {
self.images.first().map(|p| p.parent().unwrap())
}
}

140
src/home/home_screen.rs Normal file
View file

@ -0,0 +1,140 @@
use makepad_widgets::*;
live_design! {
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
use crate::home::main_mobile_ui::MainMobileUI;
use crate::shared::styles::*;
use crate::home::main_desktop_ui::MainDesktopUI;
use crate::home::main_web_ui::MainWebUI;
NavigationWrapper = {{NavigationWrapper}} {
view_stack = <StackNavigation> {}
}
pub HomeScreen = <AdaptiveView> {
Desktop = {
show_bg: true
draw_bg: {
color: (COLOR_PRIMARY)
}
width: Fill, height: Fill
padding: 0, margin: 0, align: {x: 0.0, y: 0.0}
flow: Right
<View> {
flow: Down
width: Fill, height: Fill
// <SearchBar> {}
<MainDesktopUI> {}
}
}
Mobile = {
show_bg: true
draw_bg: {
color: (COLOR_PRIMARY)
}
width: Fill, height: Fill
flow: Down
<NavigationWrapper> {
view_stack = <StackNavigation> {
root_view = {
padding: {top: 40.}
flow: Down
width: Fill, height: Fill
}
main_content_view = <StackNavigationView> {
width: Fill, height: Fill
header = {
content = {
button_container = {
padding: {left: 14}
}
title_container = {
title = {
draw_text: {
color: (ROOM_NAME_TEXT_COLOR)
}
}
}
}
}
body = {
main_content = <MainMobileUI> {}
}
}
}
}
}
// Web = {
// show_bg: true
// draw_bg: {
// color: (COLOR_PRIMARY)
// }
// width: Fill, height: Fill
// flow: Down
// <NavigationWrapper> {
// view_stack = <StackNavigation> {
// root_view = {
// padding: {top: 40.}
// flow: Down
// width: Fill, height: Fill
// // sidebar = <RoomsSideBar> {}
// // spaces = <SpacesDock> {}
// }
// main_content_view = <StackNavigationView> {
// width: Fill, height: Fill
// header = {
// content = {
// button_container = {
// padding: {left: 14}
// }
// title_container = {
// title = {
// draw_text: {
// color: (ROOM_NAME_TEXT_COLOR)
// }
// }
// }
// }
// }
// body = {
// main_content = <MainWebUI> {}
// }
// }
// }
// }
// }
}
}
#[derive(Live, LiveHook, Widget)]
pub struct NavigationWrapper {
#[deref]
view: View,
}
impl Widget for NavigationWrapper {
fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
self.view.handle_event(cx, event, scope);
self.match_event(cx, event);
}
fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
self.view.draw_walk(cx, scope, walk)
}
}
impl MatchEvent for NavigationWrapper {
fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions) {
self.stack_navigation(id!(view_stack))
.handle_stack_view_actions(cx, actions);
}
}

256
src/home/landing_screen.rs Normal file
View file

@ -0,0 +1,256 @@
use event::{FileUploads, SelectedFilesEvent};
use makepad_widgets::*;
use crate::data::state::State;
live_design! {
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
use crate::shared::styles::*;
BG_COLOR = #3
pub LandingScreen = {{LandingScreen}} {
flow: Down
padding: { top: 30 }
show_bg: true
draw_bg: {
fn pixel(self) -> vec4 {
return (BG_COLOR);
}
}
body = <View> { width: 0, height: 0 }
<View>{
flow: Right
height: Fit
file_button = <Button> {
text: "Select Images"
draw_text: { color: #fff }
}
jump_to_2= <Button> {
text: "Jump to 2"
draw_text:{color:#fff}
}
}
<View>{
flow: Right
img_list = <PortalList> {
img_btn = <Button> {
width: Fill
}
img_text = <Label> {
width: Fill
draw_text: {
// text_style: <TEXT_BOLD> {},
instance hover: 0.0
instance down: 0.0
fn get_color(self) -> vec4 {
return mix(mix(#xFFFA, #xFFFF, self.hover), #xFFF8, self.down);
}
wrap: Word,
}
text: "Hello World"
}
}
img = <Image> {
width: Fill
height: Fill
fit: Smallest
}
}
}
}
#[derive(Live, LiveHook, Widget)]
pub struct LandingScreen {
#[deref]
deref: View,
}
impl Widget for LandingScreen {
fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
self.deref.handle_event(cx, event, scope);
self.widget_match_event(cx, event, scope);
}
fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
let state = scope.data.get::<State>().unwrap();
let img = self.deref.image(id!(img));
if !img.has_texture() && !state.images.is_empty() {
img.load_image_file_by_path(cx, state.images[0].to_str().unwrap())
.unwrap();
}
let filenames = state
.images
.iter()
.map(|i| i.file_name().unwrap().to_string_lossy().to_string())
.collect::<Vec<_>>();
let paragraphs = generate_dummy_paragraphs(100); // Generate 100 paragraphs
let range_end = state.images.len();
while let Some(widget) = self.deref.draw_walk(cx, scope, walk).step() {
if let Some(mut img_list) = widget.as_portal_list().borrow_mut() {
img_list.set_item_range(cx, 0, range_end);
while let Some(index) = img_list.next_visible_item(cx) {
if index < range_end {
// let item = img_list.item(cx, index, live_id!(img_btn)).unwrap();
let item = img_list.item(cx, index, live_id!(img_btn));
let item_text = img_list.item(cx, index, live_id!(img_text));
item_text.set_text(cx, &paragraphs[index]); // Set the text for each item
item.set_text(cx, &filenames[index]);
item.draw_all(cx, scope);
item_text.draw_all(cx, scope);
}
}
}
}
self.deref.draw_walk(cx, scope, walk)
}
}
impl WidgetMatchEvent for LandingScreen {
fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions, scope: &mut Scope) {
let state = scope.data.get_mut::<State>().unwrap();
let items_with_actions = self
.deref
.portal_list(id!(img_list))
.items_with_actions(actions);
if self.deref.button(id!(jump_to_2)).clicked(&actions) {
self.deref
.portal_list(id!(img_list))
.smooth_scroll_to(cx, 4, 90.0, None);
}
if self.deref.button(id!(file_button)).clicked(&actions) {
cx.open_file_dialog("image/*");
// cx.http_request(request_id, request);
// cx.get
// self.deref
// .portal_list(id!(img_list))
// .smooth_scroll_to(cx, 4, 90.0, None);
}
let img_clicked = items_with_actions.iter().find(|(_index, widget)| {
match widget.as_button().borrow_mut() {
Some(btn) => btn.clicked(actions),
None => false,
}
});
if let Some((_index, widget)) = img_clicked {
let img = self.deref.image(id!(img));
img.load_image_file_by_path(
cx,
state.root().unwrap().join(widget.text()).to_str().unwrap(),
)
.unwrap();
img.redraw(cx);
}
}
fn handle_file_uploads(&mut self, cx: &mut Cx, e: &SelectedFilesEvent, scope: &mut Scope) {
for event in e {
match &event.file {
FileUploads::SelectedFile(file) => {
// if let Some(data) = file.get_file_upload_data() {
// log!("File size: {:?} bytes", data);
// }
log!("File size: {:?} bytes", file.get_file_name());
// alright we got an image back
// match event.request_id {
// live_id!(llm)=>if let Some(res) = file.get.get_string_body() {
// // lets parse it as json
// // if let Ok(val) = JsonValue::deserialize_json(&res){
// // if let Some(val) = val.key("content"){
// // if let Some(val) = val.string(){
// // if let Some((LLMMsg::Progress,_)) = self.llm_chat.last(){
// // self.llm_chat.pop();
// // }
// // let val = val.strip_prefix("assistant").unwrap_or(val);
// // let val = val.to_string().replace("\"","");
// // let val = val.trim();
// // self.ui.text_input(id!(prompt_input)).set_text(cx, &val);
// // self.llm_chat.push((LLMMsg::AI,val.into()));
// // self.ui.widget(id!(llm_chat)).redraw(cx);
// // }
// // }
// // else{
// // log!("{}", res);
// // }
// // }
// // else{
// // log!("{}", res);
// // }
// }
// }
}
_ => (),
}
}
}
}
fn generate_dummy_paragraphs(count: usize) -> Vec<String> {
let words = [
"Lorem",
"ipsum",
"dolor",
"sit",
"amet",
"consectetur",
"adipiscing",
"elit",
"sed",
"do",
"eiusmod",
"tempor",
"incididunt",
"ut",
"labore",
"et",
"dolore",
"magna",
"aliqua",
];
let mut seed = 12345; // Initial seed for the LCG
(0..count)
.map(|_| {
// Generate 3 to 5 sentences per paragraph
let sentence_count = 3 + (lcg(seed) % 3) as usize;
seed = lcg(seed);
(0..sentence_count)
.map(|_| {
// Generate 5 to 14 words per sentence
let word_count = 5 + (lcg(seed) % 10) as usize;
seed = lcg(seed);
(0..word_count)
.map(|_| {
// Pick a random word from the list
let word_index = (lcg(seed) % words.len() as u32) as usize;
seed = lcg(seed);
words[word_index]
})
.collect::<Vec<_>>()
.join(" ")
})
.collect::<Vec<_>>()
.join(". ")
+ "."
})
.collect()
}
fn lcg(seed: u32) -> u32 {
const A: u32 = 1664525;
const C: u32 = 1013904223;
const M: u32 = 1 << 31;
(A.wrapping_mul(seed).wrapping_add(C)) % M
}

View file

@ -0,0 +1,54 @@
use makepad_widgets::*;
live_design!(
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
use crate::shared::styles::*;
COLOR_TEXT = #x8
use crate::home::landing_screen::LandingScreen;
pub MainDesktopUI = {{MainDesktopUI}} {
align: {x: 0.5, y: 0.5}
body = <View>{
flow: Down
width: Fit
<Label> {
text: "HEY, MY NAME IS ODEKI KEGODE ANDREW (DESKTOP)"
draw_text: {
text_style: <TEXT_BOLD> {},
instance hover: 0.0
instance down: 0.0
fn get_color(self) -> vec4 {
return mix(mix(#x06060E, #x5C0B11, self.hover), #x76AEAA, self.down);
}
wrap: Word,
}
}
<LandingScreen>{}
}
}
);
#[derive(Live, LiveHook, Widget)]
pub struct MainDesktopUI {
#[redraw]
#[deref]
deref: View,
#[live]
open: bool,
}
impl Widget for MainDesktopUI {
fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
self.deref.handle_event(cx, event, scope);
}
fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
self.deref.draw_walk(cx, scope, walk)
}
}

View file

@ -0,0 +1,52 @@
use makepad_widgets::*;
live_design!(
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
use crate::shared::styles::*;
use crate::home::landing_screen::LandingScreen;
pub MainMobileUI = {{MainMobileUI}} {
align: {x: 0.5, y: 0.5}
body = <View>{
flow: Down
width: Fit
<Label> {
text: "HEY, MY NAME IS ODEKI KEGODE ANDREW (MOBILE)"
draw_text: {
text_style: <TEXT_BOLD> {},
instance hover: 0.0
instance down: 0.0
fn get_color(self) -> vec4 {
return mix(mix(#x06060E, #x5C0B11, self.hover), #x76AEAA, self.down);
}
wrap: Word,
}
}
<LandingScreen>{}
}
}
);
#[derive(Live, LiveHook, Widget)]
pub struct MainMobileUI {
#[redraw]
#[deref]
root: View,
#[live]
open: bool,
}
impl Widget for MainMobileUI {
fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
self.root.handle_event(cx, event, scope);
}
fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
self.root.draw_walk(cx, scope, walk)
}
}

52
src/home/main_web_ui.rs Normal file
View file

@ -0,0 +1,52 @@
use makepad_widgets::*;
live_design!(
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
use crate::shared::styles::*;
use crate::home::landing_screen::LandingScreen;
pub MainWebUI = {{MainWebUI}} {
align: {x: 0.5, y: 0.5}
body = <View>{
flow: Down
width: Fit
<Label> {
text: "HEY, MY NAME IS ODEKI KEGODE ANDREW (WEB)"
draw_text: {
text_style: <TEXT_BOLD> {},
instance hover: 0.0
instance down: 0.0
fn get_color(self) -> vec4 {
return mix(mix(#x06060E, #x5C0B11, self.hover), #x76AEAA, self.down);
}
wrap: Word,
}
}
<LandingScreen>{}
}
}
);
#[derive(Live, LiveHook, Widget)]
pub struct MainWebUI {
#[redraw]
#[deref]
root: View,
#[live]
open: bool,
}
impl Widget for MainWebUI {
fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
self.root.handle_event(cx, event, scope);
}
fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
self.root.draw_walk(cx, scope, walk)
}
}

21
src/home/mod.rs Normal file
View file

@ -0,0 +1,21 @@
use makepad_widgets::Cx;
pub mod home_screen;
pub mod landing_screen;
pub mod main_desktop_ui;
pub mod main_mobile_ui;
pub mod main_web_ui;
// ////
// pub mod ui;
// pub mod welcome_screen;
pub fn live_design(cx: &mut Cx) {
home_screen::live_design(cx);
landing_screen::live_design(cx);
main_mobile_ui::live_design(cx);
main_desktop_ui::live_design(cx);
main_web_ui::live_design(cx);
// ////
// ui::live_design(cx);
// welcome_screen::live_design(cx);
}

4
src/lib.rs Normal file
View file

@ -0,0 +1,4 @@
pub mod app;
mod data;
mod home;
mod shared;

3
src/main.rs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
aok_manyatta::app::app_main()
}

9
src/shared/mod.rs Normal file
View file

@ -0,0 +1,9 @@
use makepad_widgets::Cx;
pub mod styles;
pub mod widgets;
pub fn live_design(cx: &mut Cx) {
styles::live_design(cx);
widgets::live_design(cx);
}

105
src/shared/styles.rs Normal file
View file

@ -0,0 +1,105 @@
use makepad_widgets::*;
live_design! {
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
pub ICON_BLOCK_USER = dep("crate://self/resources/icons/forbidden.svg")
pub ICON_CHECKMARK = dep("crate://self/resources/icons/checkmark.svg")
pub ICON_CLOSE = dep("crate://self/resources/icons/close.svg")
pub TITLE_TEXT = <THEME_FONT_REGULAR>{
font_size: (13),
}
pub TEXT_BOLD = {
font_size: 40.0,
font: {path: dep("crate://makepad-widgets/resources/IBMPlexSans-SemiBold.ttf")}
}
pub REGULAR_TEXT = <THEME_FONT_REGULAR>{
font_size: (10),
}
pub TEXT_SUB = <THEME_FONT_REGULAR>{
font_size: (10),
}
pub MODEL_LINK_FONT_COLOR = #x155EEF
pub SIDEBAR_BG_COLOR = #F8F8F8
pub REGULAR_FONT = <THEME_FONT_REGULAR>{
font_size: (12)
}
pub BOLD_FONT = <THEME_FONT_BOLD>{
font_size: (12)
}
pub USERNAME_FONT_SIZE = 11
pub USERNAME_TEXT_COLOR = #x2
pub USERNAME_TEXT_STYLE = <THEME_FONT_BOLD>{
font_size: (USERNAME_FONT_SIZE),
}
pub TYPING_NOTICE_TEXT_COLOR = #121570
pub MESSAGE_FONT_SIZE = 11
pub MESSAGE_TEXT_COLOR = #x333
// notices (automated messages from bots) use a lighter color
pub MESSAGE_NOTICE_TEXT_COLOR = #x888
pub MESSAGE_TEXT_LINE_SPACING = 1.35
pub MESSAGE_TEXT_HEIGHT_FACTOR = 1.55
// This font should only be used for plaintext labels. Don't use this for Html content,
// as the Html widget sets different fonts for different text styles (e.g., bold, italic).
pub MESSAGE_TEXT_STYLE = <THEME_FONT_REGULAR>{
font_size: (MESSAGE_FONT_SIZE),
height_factor: (MESSAGE_TEXT_HEIGHT_FACTOR),
line_spacing: (MESSAGE_TEXT_LINE_SPACING),
}
pub MESSAGE_REPLY_PREVIEW_FONT_SIZE = 9.5
pub SMALL_STATE_FONT_SIZE = 9.0
pub SMALL_STATE_TEXT_COLOR = #x888
pub SMALL_STATE_TEXT_STYLE = <THEME_FONT_REGULAR>{
font_size: (SMALL_STATE_FONT_SIZE),
height_factor: 1.3,
}
pub TIMESTAMP_FONT_SIZE = 8.5
pub TIMESTAMP_TEXT_COLOR = #x999
pub TIMESTAMP_TEXT_STYLE = <THEME_FONT_REGULAR>{
font_size: (TIMESTAMP_FONT_SIZE),
}
pub ROOM_NAME_TEXT_COLOR = #x0
pub COLOR_META = #xccc
pub COLOR_PROFILE_CIRCLE = #xfff8ee
pub COLOR_DIVIDER = #x00000018
pub COLOR_DIVIDER_DARK = #x00000044
pub COLOR_DANGER_RED = #xDC0005
pub COLOR_ACCEPT_GREEN = #x138808
pub COLOR_PRIMARY = #ffffff
pub COLOR_PRIMARY_DARKER = #fefefe
pub COLOR_SECONDARY = #eef2f4
pub COLOR_SELECTED_PRIMARY = #0f88fe
pub COLOR_SELECTED_PRIMARY_DARKER = #106fcc
pub COLOR_AVATAR_BG = #52b2ac
pub COLOR_AVATAR_BG_IDLE = #d8d8d8
pub COLOR_UNREAD_MESSAGE_BADGE = (COLOR_AVATAR_BG)
pub COLOR_TEXT_IDLE = #d8d8d8
pub COLOR_TEXT = #1C274C
pub COLOR_TEXT_INPUT_IDLE = #d8d8d8
}

502
src/shared/widgets.rs Normal file
View file

@ -0,0 +1,502 @@
use makepad_widgets::*;
live_design! {
use link::theme::*;
use link::shaders::*;
use link::widgets::*;
use crate::shared::styles::*;
pub VerticalFiller = <View> {
width: Fill,
height: 1,
}
pub HorizontalFiller = <View> {
width: 1,
height: Fill,
}
pub Line = <View> {
width: Fill,
height: 1,
show_bg: true,
draw_bg: {
color: #D9D9D9
}
}
pub FadeView = <CachedView> {
draw_bg: {
instance opacity: 1.0
fn pixel(self) -> vec4 {
let color = sample2d_rt(self.image, self.pos * self.scale + self.shift) + vec4(self.marked, 0.0, 0.0, 0.0);
return Pal::premul(vec4(color.xyz, color.w * self.opacity))
}
}
}
pub AttributeTag = <RoundedView> {
width: Fit,
height: Fit,
padding: {top: 6, bottom: 6, left: 10, right: 10}
spacing: 5,
draw_bg: {
instance radius: 2.0,
}
attr_name = <Label> {
draw_text: {
wrap: Word
text_style: <REGULAR_FONT>{font_size: 8},
color: #x0
}
}
}
pub SIDEBAR_FONT_COLOR = #344054
pub SIDEBAR_FONT_COLOR_HOVER = #344054
pub SIDEBAR_FONT_COLOR_SELECTED = #127487
pub SIDEBAR_BG_COLOR_HOVER = #E2F1F199
pub SIDEBAR_BG_COLOR_SELECTED = #E2F1F199
pub SidebarMenuButton = <RadioButton> {
width: 80,
height: 70,
padding: 0, margin: 0,
flow: Down, spacing: 8.0, align: {x: 0.5, y: 0.5}
icon_walk: {margin: 0, width: 30, height: 30}
label_walk: {margin: 0}
draw_radio: {
radio_type: Tab,
instance border_width: 0.0
instance border_color: #0000
instance inset: vec4(0.0, 0.0, 0.0, 0.0)
instance radius: 2.5
fn get_color(self) -> vec4 {
return mix(
mix(
(SIDEBAR_BG_COLOR),
(SIDEBAR_BG_COLOR_HOVER),
self.hover
),
(SIDEBAR_BG_COLOR_SELECTED),
self.selected
)
}
fn get_border_color(self) -> vec4 {
return self.border_color
}
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size)
sdf.box(
self.inset.x + self.border_width,
self.inset.y + self.border_width,
self.rect_size.x - (self.inset.x + self.inset.z + self.border_width * 2.0),
self.rect_size.y - (self.inset.y + self.inset.w + self.border_width * 2.0),
max(1.0, self.radius)
)
sdf.fill_keep(self.get_color())
if self.border_width > 0.0 {
sdf.stroke(self.get_border_color(), self.border_width)
}
return sdf.result;
}
}
draw_text: {
color_unselected: (SIDEBAR_FONT_COLOR)
color_unselected_hover: (SIDEBAR_FONT_COLOR_HOVER)
color_selected: (SIDEBAR_FONT_COLOR_SELECTED)
fn get_color(self) -> vec4 {
return mix(
mix(
self.color_unselected,
self.color_unselected_hover,
self.hover
),
self.color_selected,
self.selected
)
}
}
draw_icon: {
instance color_unselected: (SIDEBAR_FONT_COLOR)
instance color_unselected_hover: (SIDEBAR_FONT_COLOR_HOVER)
instance color_selected: (SIDEBAR_FONT_COLOR_SELECTED)
fn get_color(self) -> vec4 {
return mix(
mix(
self.color_unselected,
self.color_unselected_hover,
self.hover
),
self.color_selected,
self.selected
)
}
}
}
// Customized button widget, based on the RoundedView shaders with some modifications
// which is a better fit with our application UI design
pub MolyButton = <Button> {
draw_bg: {
instance color: #0000
instance color_hover: #fff
instance border_width: 1.0
instance border_color: #0000
instance border_color_hover: #fff
instance radius: 2.5
fn get_color(self) -> vec4 {
return mix(self.color, mix(self.color, self.color_hover, 0.2), self.hover)
}
fn get_border_color(self) -> vec4 {
return mix(self.border_color, mix(self.border_color, self.border_color_hover, 0.2), self.hover)
}
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size)
sdf.box(
self.border_width,
self.border_width,
self.rect_size.x - (self.border_width * 2.0),
self.rect_size.y - (self.border_width * 2.0),
max(1.0, self.radius)
)
sdf.fill_keep(self.get_color())
if self.border_width > 0.0 {
sdf.stroke(self.get_border_color(), self.border_width)
}
return sdf.result;
}
}
draw_icon: {
instance color: #fff
instance color_hover: #000
uniform rotation_angle: 0.0,
fn get_color(self) -> vec4 {
return mix(self.color, mix(self.color, self.color_hover, 0.2), self.hover)
}
// Support rotation of the icon
fn clip_and_transform_vertex(self, rect_pos: vec2, rect_size: vec2) -> vec4 {
let clipped: vec2 = clamp(
self.geom_pos * rect_size + rect_pos,
self.draw_clip.xy,
self.draw_clip.zw
)
self.pos = (clipped - rect_pos) / rect_size
// Calculate the texture coordinates based on the rotation angle
let angle_rad = self.rotation_angle * 3.14159265359 / 180.0;
let cos_angle = cos(angle_rad);
let sin_angle = sin(angle_rad);
let rot_matrix = mat2(
cos_angle, -sin_angle,
sin_angle, cos_angle
);
self.tex_coord1 = mix(
self.icon_t1.xy,
self.icon_t2.xy,
(rot_matrix * (self.pos.xy - vec2(0.5))) + vec2(0.5)
);
return self.camera_projection * (self.camera_view * (self.view_transform * vec4(
clipped.x,
clipped.y,
self.draw_depth + self.draw_zbias,
1.
)))
}
}
icon_walk: {width: 14, height: 14}
draw_text: {
color: #fff,
text_style: <REGULAR_FONT>{font_size: 9},
fn get_color(self) -> vec4 {
return self.color;
}
}
reset_hover_on_click: true
}
pub MolyRadioButtonTab = <RadioButtonTab> {
padding: 10,
draw_radio: {
uniform radius: 3.0
uniform border_width: 0.0
instance color_unselected: (THEME_COLOR_TEXT_DEFAULT)
instance color_unselected_hover: (THEME_COLOR_TEXT_HOVER)
instance color_selected: (THEME_COLOR_TEXT_SELECTED)
instance border_color: (THEME_COLOR_TEXT_SELECTED)
fn get_color(self) -> vec4 {
return mix(
mix(
self.color_unselected,
self.color_unselected_hover,
self.hover
),
self.color_selected,
self.selected
)
}
fn get_border_color(self) -> vec4 {
return self.border_color;
}
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size)
match self.radio_type {
RadioType::Tab => {
sdf.box(
self.border_width,
self.border_width,
self.rect_size.x - (self.border_width * 2.0),
self.rect_size.y - (self.border_width * 2.0),
max(1.0, self.radius)
)
sdf.fill_keep(self.get_color())
if self.border_width > 0.0 {
sdf.stroke(self.get_border_color(), self.border_width)
}
}
}
return sdf.result
}
}
draw_text: {
fn get_color(self) -> vec4 {
return mix(
mix(
self.color_unselected,
self.color_unselected_hover,
self.hover
),
self.color_selected,
self.selected
)
}
}
}
// Customized text input
// Removes shadows, focus highlight and the dark theme colors
pub MolyTextInput = <TextInput> {
draw_text: {
text_style:<REGULAR_FONT>{font_size: 12},
fn get_color(self) -> vec4 {
return #555
}
}
// TODO find a way to override colors
draw_cursor: {
instance focus: 0.0
uniform border_radius: 0.5
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size);
sdf.box(
0.,
0.,
self.rect_size.x,
self.rect_size.y,
self.border_radius
)
sdf.fill(mix(#fff, #bbb, self.focus));
return sdf.result
}
}
// TODO find a way to override colors
draw_selection: {
instance hover: 0.0
instance focus: 0.0
uniform border_radius: 2.0
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size);
sdf.box(
0.,
0.,
self.rect_size.x,
self.rect_size.y,
self.border_radius
)
sdf.fill(mix(#eee, #ddd, self.focus)); // Pad color
return sdf.result
}
}
draw_bg: {
color: #fff
instance radius: 2.0
instance border_width: 0.0
instance border_color: #3
instance inset: vec4(0.0, 0.0, 0.0, 0.0)
fn get_color(self) -> vec4 {
return self.color
}
fn get_border_color(self) -> vec4 {
return self.border_color
}
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size)
sdf.box(
self.inset.x + self.border_width,
self.inset.y + self.border_width,
self.rect_size.x - (self.inset.x + self.inset.z + self.border_width * 2.0),
self.rect_size.y - (self.inset.y + self.inset.w + self.border_width * 2.0),
max(1.0, self.radius)
)
sdf.fill_keep(self.get_color())
if self.border_width > 0.0 {
sdf.stroke(self.get_border_color(), self.border_width)
}
return sdf.result;
}
}
}
pub MolySlider = <Slider> {
height: 40
width: Fill
draw_text: {
// TODO: The text weight should be 500 (semi bold, not fully bold).
text_style: <BOLD_FONT>{font_size: 10},
color: #000
}
text_input: {
draw_text: {
text_style: <BOLD_FONT>{font_size: 11},
fn get_color(self) -> vec4 {
return #000;
}
}
}
draw_slider: {
instance bipolar: 0.0
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size)
let ball_radius = 10.0;
let ball_border = 2.0;
let padding_top = 29.0;
let padding_x = 5.0;
let rail_height = 4.0;
let rail_width = self.rect_size.x;
let rail_padding_x = padding_x + ball_radius / 2;
let ball_rel_x = self.slide_pos;
let ball_abs_x = ball_rel_x * (rail_width - 2.0 * rail_padding_x) + rail_padding_x;
// The rail
sdf.move_to(0 + padding_x, padding_top);
sdf.line_to(self.rect_size.x - padding_x, padding_top);
sdf.stroke(#D9D9D9, rail_height);
// The filler
sdf.move_to(0 + padding_x, padding_top);
sdf.line_to(ball_abs_x, padding_top);
sdf.stroke(#15859A, rail_height);
// The moving ball
sdf.circle(ball_abs_x, padding_top, ball_radius);
sdf.fill(#15859A);
sdf.circle(ball_abs_x, padding_top, ball_radius - ball_border);
sdf.fill(#fff);
return sdf.result;
}
}
}
pub MolySwitch = <CheckBoxToggle> {
// U+200e as text.
// Nasty trick cause not setting `text` nor using a simple space works to
// render the widget without label.
text:""
draw_check: {
fn pixel(self) -> vec4 {
let sdf = Sdf2d::viewport(self.pos * self.rect_size)
let pill_padding = 2.0;
let pill_color_off = #D9D9D9;
let pill_color_on = #15859A;
let pill_radius = self.rect_size.y * 0.5;
let ball_radius = pill_radius - pill_padding;
// Left side of the pill
sdf.circle(pill_radius, pill_radius, pill_radius);
sdf.fill(mix(pill_color_off, pill_color_on, self.selected));
// Right side of the pill
sdf.circle(self.rect_size.x - pill_radius, pill_radius, pill_radius);
sdf.fill(mix(pill_color_off, pill_color_on, self.selected));
// The union/middle of the pill
sdf.rect(pill_radius, 0.0, self.rect_size.x - 2.0 * pill_radius, self.rect_size.y);
sdf.fill(mix(pill_color_off, pill_color_on, self.selected));
// The moving ball
sdf.circle(pill_padding + ball_radius + self.selected * (self.rect_size.x - 2.0 * ball_radius - 2.0 * pill_padding), pill_radius, ball_radius);
sdf.fill(#fff);
return sdf.result;
}
}
}
pub TogglePanelButton = <MolyButton> {
width: Fit,
height: Fit,
icon_walk: {width: 20, height: 20},
draw_icon: {
fn get_color(self) -> vec4 {
return #475467;
}
}
}
pub MolyTogglePanel = <TogglePanel> {
persistent_content = {
default = {
open = <TogglePanelButton> {
visible: false,
draw_icon: {
svg_file: (TOGGLE_PANEL_OPEN_ICON)
}
}
close = <TogglePanelButton> {
draw_icon: {
svg_file: (TOGGLE_PANEL_CLOSE_ICON)
}
}
}
}
}
}