update UI

This commit is contained in:
mii
2025-03-04 17:22:02 +09:00
parent ab78a00967
commit dbf984652c
15 changed files with 896 additions and 159 deletions

87
src-tauri/Cargo.lock generated
View File

@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "addr2line"
@@ -3577,7 +3577,7 @@ dependencies = [
"tao-macros",
"unicode-segmentation",
"url",
"windows",
"windows 0.58.0",
"windows-core 0.58.0",
"windows-version",
"x11-dl",
@@ -3658,7 +3658,7 @@ dependencies = [
"webkit2gtk",
"webview2-com",
"window-vibrancy",
"windows",
"windows 0.58.0",
]
[[package]]
@@ -3808,7 +3808,7 @@ dependencies = [
"tauri-utils",
"thiserror",
"url",
"windows",
"windows 0.58.0",
]
[[package]]
@@ -3833,7 +3833,7 @@ dependencies = [
"url",
"webkit2gtk",
"webview2-com",
"windows",
"windows 0.58.0",
"wry",
]
@@ -4422,8 +4422,8 @@ dependencies = [
"tracing",
"tracing-appender",
"tracing-subscriber",
"windows",
"windows-core 0.58.0",
"windows 0.56.0",
"windows-core 0.56.0",
]
[[package]]
@@ -4627,10 +4627,10 @@ checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c"
dependencies = [
"webview2-com-macros",
"webview2-com-sys",
"windows",
"windows 0.58.0",
"windows-core 0.58.0",
"windows-implement",
"windows-interface",
"windows-implement 0.58.0",
"windows-interface 0.58.0",
]
[[package]]
@@ -4651,7 +4651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886"
dependencies = [
"thiserror",
"windows",
"windows 0.58.0",
"windows-core 0.58.0",
]
@@ -4700,6 +4700,16 @@ dependencies = [
"windows-version",
]
[[package]]
name = "windows"
version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132"
dependencies = [
"windows-core 0.56.0",
"windows-targets 0.52.6",
]
[[package]]
name = "windows"
version = "0.58.0"
@@ -4719,19 +4729,42 @@ dependencies = [
"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 0.56.0",
"windows-interface 0.56.0",
"windows-result 0.1.2",
"windows-targets 0.52.6",
]
[[package]]
name = "windows-core"
version = "0.58.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
dependencies = [
"windows-implement",
"windows-interface",
"windows-result",
"windows-implement 0.58.0",
"windows-interface 0.58.0",
"windows-result 0.2.0",
"windows-strings",
"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 2.0.68",
]
[[package]]
name = "windows-implement"
version = "0.58.0"
@@ -4743,6 +4776,17 @@ dependencies = [
"syn 2.0.68",
]
[[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 2.0.68",
]
[[package]]
name = "windows-interface"
version = "0.58.0"
@@ -4760,11 +4804,20 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
dependencies = [
"windows-result",
"windows-result 0.2.0",
"windows-strings",
"windows-targets 0.52.6",
]
[[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-result"
version = "0.2.0"
@@ -4780,7 +4833,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
dependencies = [
"windows-result",
"windows-result 0.2.0",
"windows-targets 0.52.6",
]
@@ -5078,7 +5131,7 @@ dependencies = [
"webkit2gtk",
"webkit2gtk-sys",
"webview2-com",
"windows",
"windows 0.58.0",
"windows-core 0.58.0",
"windows-version",
"x11-dl",

View File

@@ -26,7 +26,7 @@ platform-dirs = "0.3.0"
once_cell = "1.19.0"
rosc = "~0.10"
regex = "1"
windows-core = "0.58.0"
windows-core = "0.56.0"
tracing = "0.1"
tracing-appender = "0.2"
tauri-plugin-shell = "2.0.0-rc"
@@ -36,14 +36,38 @@ version = "0.3.16"
features = ["env-filter", "fmt", "json", "local-time", "time"]
[dependencies.windows]
version = "0.58.0"
version = "0.56.0"
features = [
"implement",
"Win32_System_Com",
"Win32_UI_Input_Ime",
"Win32_UI_TextServices",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_System_DataExchange",
"Win32_UI_WindowsAndMessaging"
"Win32_UI_WindowsAndMessaging",
"Foundation_Numerics",
"UI",
"Win32_Foundation",
"Win32_Globalization",
"Win32_Graphics_Direct2D",
"Win32_Graphics_Direct2D_Common",
"Win32_Graphics_DirectWrite",
"Win32_Graphics_Dxgi_Common",
"Win32_Graphics_Dwm",
"Win32_Graphics_Gdi",
"Win32_Graphics_Imaging",
"Win32_Security",
"Win32_System_Com",
"Win32_System_Console",
"Win32_System_Diagnostics_Debug",
"Win32_System_LibraryLoader",
"Win32_System_Ole",
"Win32_System_SystemServices",
"Win32_System_Registry",
"Win32_System_Variant",
"Win32_System_WindowsProgramming",
"Win32_UI_Controls",
"Win32_UI_HiDpi"
]

View File

@@ -47,7 +47,7 @@ impl ConversionHandler {
impl ConversionHandler {
fn clipboard_has_owner(&mut self) -> bool {
unsafe { GetClipboardOwner() }.is_ok()
unsafe { GetClipboardOwner() }.0 != 0
}
fn tsf_conversion(&mut self, contents: &str, config: &Config) -> Result<()> {

View File

@@ -10,6 +10,7 @@ mod handler;
mod transform_rule;
mod tsf;
mod tsf_conversion;
mod tauri_emit_subscriber;
use std::sync::Mutex;
@@ -21,7 +22,9 @@ use clipboard_master::Master;
use com::Com;
use config::Config;
use handler::ConversionHandler;
use tracing::Level;
use tauri_emit_subscriber::TauriEmitSubscriber;
use tracing::{instrument::WithSubscriber, level_filters::LevelFilter, Level};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[derive(Serialize, Deserialize, Debug, Clone)]
struct Log {
@@ -56,9 +59,7 @@ fn save_settings(config: Config, state: State<AppState>) -> Result<(), String> {
fn main() {
println!("VRClipboard-IME Logs\nバグがあった場合はこのログを送ってください。");
tracing_subscriber::fmt()
.with_max_level(Level::TRACE)
.init();
tauri::Builder::default()
.plugin(tauri_plugin_shell::init())
.plugin(tauri_plugin_updater::Builder::new().build())
@@ -74,6 +75,11 @@ fn main() {
app.manage(STATE.lock().unwrap().clone());
let app_handle = app.app_handle().clone();
let registry = tracing_subscriber::registry().with(TauriEmitSubscriber {
app_handle: app_handle.clone(),
});
registry.init();
std::thread::spawn(move || {
let _com = Com::new().unwrap();

View File

@@ -0,0 +1,66 @@
use chrono::{Datelike, Timelike};
use serde::{Deserialize, Serialize};
use tauri::{AppHandle, Emitter};
use tracing::Subscriber;
use tracing_subscriber::{registry::LookupSpan, Layer};
#[derive(Debug, Clone, Serialize, Deserialize)]
struct Event {
level: String,
message: String,
module_path: String,
timestamp: String,
}
pub struct TauriEmitSubscriber {
pub app_handle: AppHandle,
}
struct MessageExtractVisitor {
message: String,
module_path: String,
}
impl tracing::field::Visit for MessageExtractVisitor {
fn record_debug(&mut self, field: &tracing::field::Field, value: &dyn std::fmt::Debug) {
if field.name() == "message" {
self.message = format!("{:?}", value);
} else if field.name() == "log.module_path" {
self.module_path = format!("{:?}", value);
}
}
}
impl<S> Layer<S> for TauriEmitSubscriber
where
S: Subscriber + for<'a> LookupSpan<'a>,
{
fn on_event(&self, event: &tracing::Event<'_>, _ctx: tracing_subscriber::layer::Context<'_, S>) {
let mut visitor = MessageExtractVisitor {
message: String::new(),
module_path: String::new()
};
event.record(&mut visitor);
let now = chrono::Local::now();
let event = Event {
level: event.metadata().level().to_string(),
message: visitor.message,
module_path: format!("{}{}", event.metadata().module_path().unwrap_or_default(), visitor.module_path),
timestamp: format!("{}-{}-{} {}:{}:{}", now.year(), now.month(), now.day(), now.hour(), now.minute(), now.second()),
};
if self
.app_handle
.emit(
"log-event",
event
)
.is_err()
{
println!("App handle add log failed");
}
}
}

View File

@@ -3,8 +3,8 @@ use tracing::{debug, error, info};
use windows::Win32::{
System::Com::{CoCreateInstance, CLSCTX_INPROC_SERVER},
UI::{
Input::KeyboardAndMouse::HKL,
TextServices::{
HKL,
CLSID_TF_InputProcessorProfiles, ITfInputProcessorProfileMgr, GUID_TFCAT_TIP_KEYBOARD,
TF_INPUTPROCESSORPROFILE, TF_IPPMF_DONTCARECURRENTINPUTLANGUAGE,
TF_PROFILETYPE_INPUTPROCESSOR,

View File

@@ -6,7 +6,7 @@ use windows::Win32::{
};
pub struct ThreadMgr {
thread_mgr: ITfThreadMgr2,
pub thread_mgr: ITfThreadMgr2,
}
impl ThreadMgr {