feat: 添加闪屏
This commit is contained in:
parent
a279a262b7
commit
31c23efa6c
16
splashscreen.html
Normal file
16
splashscreen.html
Normal 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>
|
@ -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]
|
||||||
|
@ -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");
|
||||||
|
@ -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": {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
},
|
},
|
||||||
|
@ -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);
|
||||||
},
|
},
|
||||||
|
@ -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);
|
||||||
|
11
src/main.tsx
11
src/main.tsx
@ -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>
|
||||||
|
Loading…
Reference in New Issue
Block a user