slow going
parent
f7ca241cbc
commit
62eefeea0f
|
|
@ -1875,6 +1875,10 @@ dependencies = [
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lib"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.151"
|
version = "0.2.151"
|
||||||
|
|
@ -2237,6 +2241,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
||||||
name = "pa-home-video-blue-extractinator-2"
|
name = "pa-home-video-blue-extractinator-2"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"lib",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tauri",
|
"tauri",
|
||||||
|
|
@ -2249,6 +2254,7 @@ version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"leptos",
|
"leptos",
|
||||||
|
"lib",
|
||||||
"serde",
|
"serde",
|
||||||
"serde-wasm-bindgen 0.6.3",
|
"serde-wasm-bindgen 0.6.3",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
lib = { path = "./src-lib" }
|
||||||
leptos = { version = "0.5", features = ["csr"] }
|
leptos = { version = "0.5", features = ["csr"] }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde-wasm-bindgen = "0.6"
|
serde-wasm-bindgen = "0.6"
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,25 @@
|
||||||
pub mod video;
|
pub mod video;
|
||||||
|
|
||||||
pub fn add(left: usize, right: usize) -> usize {
|
pub fn analyze(file: &str) -> String {
|
||||||
left + right
|
match _analyze(file) {
|
||||||
|
Ok(result) => result,
|
||||||
|
Err(msg) => msg,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
fn _analyze(file: &str) -> Result<String, String> {
|
||||||
mod tests {
|
eprintln!("analyzing {}", file);
|
||||||
use super::*;
|
Err(format!("not impl"))
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
pub fn clipify(file: &str) -> String {
|
||||||
fn it_works() {
|
match _clipify(file) {
|
||||||
let result = add(2, 2);
|
Ok(result) => result,
|
||||||
assert_eq!(result, 4);
|
Err(msg) => msg,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn _clipify(file: &str) -> Result<String, String> {
|
||||||
|
eprintln!("clipifying {}", file);
|
||||||
|
Err(format!("not impl"))
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ edition = "2021"
|
||||||
tauri-build = { version = "1.5", features = [] }
|
tauri-build = { version = "1.5", features = [] }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
lib = { path = "../src-lib" }
|
||||||
tauri = { version = "1.5", features = ["shell-open"] }
|
tauri = { version = "1.5", features = ["shell-open"] }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,21 @@
|
||||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||||
|
|
||||||
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
use lib;
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
fn greet(name: &str) -> String {
|
fn analyze(file: &str) -> String {
|
||||||
format!("Hello, {}! You've been greeted from Rust!", name)
|
lib::analyze(file)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tauri::command]
|
||||||
|
fn clipify(file: &str) -> String {
|
||||||
|
lib::clipify(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
.invoke_handler(tauri::generate_handler![greet])
|
.invoke_handler(tauri::generate_handler![analyze, clipify])
|
||||||
.run(tauri::generate_context!())
|
.run(tauri::generate_context!())
|
||||||
.expect("error while running tauri application");
|
.expect("error while running tauri application");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
91
src/app.rs
91
src/app.rs
|
|
@ -1,9 +1,11 @@
|
||||||
use leptos::leptos_dom::ev::SubmitEvent;
|
use leptos::leptos_dom::ev;
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_wasm_bindgen::to_value;
|
use serde_wasm_bindgen::to_value;
|
||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
|
use lib;
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#[wasm_bindgen(js_namespace = ["window", "__TAURI__", "tauri"])]
|
#[wasm_bindgen(js_namespace = ["window", "__TAURI__", "tauri"])]
|
||||||
|
|
@ -11,45 +13,97 @@ extern "C" {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
struct GreetArgs<'a> {
|
struct Args<'a> {
|
||||||
name: &'a str,
|
file: &'a str,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn App() -> impl IntoView {
|
pub fn App() -> impl IntoView {
|
||||||
let (name, set_name) = create_signal(String::new());
|
let (file, set_file) = create_signal(String::new());
|
||||||
let (greet_msg, set_greet_msg) = create_signal(String::new());
|
let (err, set_err) = create_signal(String::new());
|
||||||
|
|
||||||
let update_name = move |ev| {
|
let update_file = move |ev| {
|
||||||
let v = event_target_value(&ev);
|
let v = event_target_value(&ev);
|
||||||
set_name.set(v);
|
set_file.set(v);
|
||||||
};
|
};
|
||||||
|
|
||||||
let greet = move |ev: SubmitEvent| {
|
let (analyze_result, set_analyze_result) = create_signal(String::new());
|
||||||
|
let (clipify_result, set_clipify_result) = create_signal(String::new());
|
||||||
|
|
||||||
|
let noop = move |ev: ev::SubmitEvent| { ev.prevent_default(); };
|
||||||
|
|
||||||
|
let analyze = move |ev: ev::MouseEvent| {
|
||||||
ev.prevent_default();
|
ev.prevent_default();
|
||||||
spawn_local(async move {
|
spawn_local(async move {
|
||||||
if name.get().is_empty() {
|
if file.get_untracked().is_empty() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let args = to_value(&GreetArgs { name: &name.get() }).unwrap();
|
let args = to_value(&Args { file: &file.get_untracked() }).unwrap();
|
||||||
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
||||||
let new_msg = invoke("greet", args).await.as_string().unwrap();
|
match invoke("analyze", args).await.as_string() {
|
||||||
set_greet_msg.set(new_msg);
|
Some(new_analyze_result) => set_analyze_result.set(new_analyze_result),
|
||||||
|
None => set_err.set("analyze result failed".to_string()),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
let clipify = move |ev: ev::MouseEvent| {
|
||||||
|
ev.prevent_default();
|
||||||
|
spawn_local(async move {
|
||||||
|
if file.get_untracked().is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let args = to_value(&Args { file: &file.get_untracked() }).unwrap();
|
||||||
|
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
||||||
|
match invoke("clipify", args).await.as_string() {
|
||||||
|
Some(new_clipify_result) => set_clipify_result.set(new_clipify_result),
|
||||||
|
None => set_err.set("clipify result failed".to_string()),
|
||||||
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
view! {
|
view! {
|
||||||
<main class="container">
|
<main class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<a href="https://tauri.app" target="_blank">
|
<form class="row" on:submit=noop>
|
||||||
<img src="public/tauri.svg" class="logo tauri" alt="Tauri logo"/>
|
<input
|
||||||
</a>
|
type="file"
|
||||||
<a href="https://docs.rs/leptos/" target="_blank">
|
on:input=update_file
|
||||||
<img src="public/leptos.svg" class="logo leptos" alt="Leptos logo"/>
|
/>
|
||||||
</a>
|
<button type="submit" on:click=analyze>"Analyze"</button>
|
||||||
|
<button type="button" on:click=clipify>"Clipify"</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<p><b style="color: red;">{ move || err.get() }</b></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="column">
|
||||||
|
<div class="row">
|
||||||
|
<h2>Analysis</h2>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p><b>{ move || analyze_result.get() }FOO</b></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="column">
|
||||||
|
<div class="row">
|
||||||
|
<h2>Clipified</h2>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p><b>{ move || clipify_result.get() }BAR</b></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
/*
|
||||||
<p>"Click on the Tauri and Leptos logos to learn more."</p>
|
<p>"Click on the Tauri and Leptos logos to learn more."</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -71,6 +125,7 @@ pub fn App() -> impl IntoView {
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p><b>{ move || greet_msg.get() }</b></p>
|
<p><b>{ move || greet_msg.get() }</b></p>
|
||||||
|
*/
|
||||||
</main>
|
</main>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue