feat: 添加闪屏

This commit is contained in:
Asahi 2024-12-10 14:52:32 +08:00
parent a279a262b7
commit 31c23efa6c
9 changed files with 60 additions and 9 deletions

16
splashscreen.html Normal file
View File

@ -0,0 +1,16 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Loading</title>
</head>
<body>
<div class="container">
<h1>正在加载!</h1>
<div class="row">
<h5>正在加载所需资源!</h5>
</div>
</div>
</body>
</html>

View File

@ -1,9 +1,17 @@
use crate::{ use crate::{
app_error::AppError, app_error::AppError,
pe_parse::{header::ImageDosHeader, pe::PE}, pe_parse::{header::ImageDosHeader, pe::PE},
services::{self, file::{get_nt_headers_data, ResponseDOSHeaderData, ResponseFileHeaderData, ResponseNTHeaderData}, GLOBAL_FILE_DATA}, services::{
self,
file::{
get_nt_headers_data, ResponseDOSHeaderData, ResponseFileHeaderData,
ResponseNTHeaderData,
},
GLOBAL_FILE_DATA,
},
}; };
use serde::Serialize; use serde::Serialize;
use tauri::{async_runtime::Mutex, AppHandle, Manager, State};
#[derive(Serialize)] #[derive(Serialize)]
pub struct PeNodeTreeData { pub struct PeNodeTreeData {
@ -11,6 +19,15 @@ pub struct PeNodeTreeData {
key: String, key: String,
children: Vec<PeNodeTreeData>, children: Vec<PeNodeTreeData>,
} }
// set_complete
#[tauri::command]
pub fn set_complete(app: AppHandle) -> Result<(), AppError> {
let splash_window = app.get_webview_window("splashscreen").unwrap();
let main_window = app.get_webview_window("main").unwrap();
splash_window.close().unwrap();
main_window.show().unwrap();
Ok(())
}
// TODO: 获取PE节点树的JSON数据 // TODO: 获取PE节点树的JSON数据
#[tauri::command] #[tauri::command]

View File

@ -15,6 +15,7 @@ pub fn run() {
commands::command_get_pe_data_dos_header, commands::command_get_pe_data_dos_header,
commands::command_get_pe_data_nt_header, commands::command_get_pe_data_nt_header,
commands::command_get_pe_data_file_header, commands::command_get_pe_data_file_header,
commands::set_complete
]) ])
.run(tauri::generate_context!()) .run(tauri::generate_context!())
.expect("error while running tauri application"); .expect("error while running tauri application");

View File

@ -12,9 +12,15 @@
"app": { "app": {
"windows": [ "windows": [
{ {
"title": "test-tauri", "label": "main",
"width": 800, "title": "My CFF",
"height": 600 "width": 1000,
"height": 800,
"visible": false
},
{
"label": "splashscreen",
"url": "/splashscreen"
} }
], ],
"security": { "security": {

View File

@ -358,7 +358,7 @@ const App = () => {
render: (text) => { render: (text) => {
return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text; return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text;
}, },
onHeaderCell: (column) => ({ onHeaderCell: () => ({
onClick: () => { onClick: () => {
setOffsetHex(!offsetHex); setOffsetHex(!offsetHex);
} }

View File

@ -157,7 +157,7 @@ const App = () => {
render: (text) => { render: (text) => {
return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text; return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text;
}, },
onHeaderCell: (column) => ({ onHeaderCell: () => ({
onClick: () => { onClick: () => {
setOffsetHex(!offsetHex); setOffsetHex(!offsetHex);
}, },

View File

@ -115,7 +115,7 @@ const App = () => {
render: (text) => { render: (text) => {
return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text; return offsetHex ? `0x${text.toString(16).toUpperCase()}` : text;
}, },
onHeaderCell: (column) => ({ onHeaderCell: () => ({
onClick: () => { onClick: () => {
setOffsetHex(!offsetHex); setOffsetHex(!offsetHex);
}, },

View File

@ -16,7 +16,7 @@ export default function SiderTree({
// 受控 选择的节点 // 受控 选择的节点
const [selectedKey, setSelectedKey] = useState<string>(defaultSelectedKey); const [selectedKey, setSelectedKey] = useState<string>(defaultSelectedKey);
const onSelect: TreeProps["onSelect"] = (selectedKeys, info) => { const onSelect: TreeProps["onSelect"] = (_, info) => {
let key = info.node.key as string; let key = info.node.key as string;
console.log("onSelect", key); console.log("onSelect", key);
setSelectedKey(key); setSelectedKey(key);

View File

@ -1,6 +1,17 @@
import React from "react"; import React from "react";
import ReactDOM from "react-dom/client"; import ReactDOM from "react-dom/client";
import App from "./App"; import App from "./App";
import { invoke } from "@tauri-apps/api/core";
import { delay} from "lodash-es"
async function setup() {
invoke('set_complete')
}
window.addEventListener("DOMContentLoaded", () => {
setup();
})
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<React.StrictMode> <React.StrictMode>