From 25529dd73ddd91542bfd14e275aa9efb260b563e Mon Sep 17 00:00:00 2001 From: "381848900@qq.com" Date: Wed, 11 Dec 2024 19:47:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E6=8F=90=E5=8D=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DosHeader/DosHeader.module.scss | 1 - src/components/DosHeader/DosHeader.tsx | 19 +- .../FileHeader/FileHeader.module.scss | 1 - src/components/FileHeader/FileHeader.tsx | 162 +++++++++++++++--- src/components/NTHeader/NTHeader.tsx | 12 +- .../NodeTableComponent.module.scss | 9 +- .../NodeTableComponent/NodeTableComponent.tsx | 51 +++--- .../OptionalHeader/OptionalHeader.tsx | 12 +- .../SectionHeaders/SectionHeaders.tsx | 1 - src/components/side_tree/SideTree.module.scss | 2 +- src/main.tsx | 1 - src/pages/MainPage.module.scss | 25 ++- src/pages/MainPage.tsx | 111 +----------- 13 files changed, 231 insertions(+), 176 deletions(-) diff --git a/src/components/DosHeader/DosHeader.module.scss b/src/components/DosHeader/DosHeader.module.scss index b7539c5..54e9c35 100644 --- a/src/components/DosHeader/DosHeader.module.scss +++ b/src/components/DosHeader/DosHeader.module.scss @@ -5,5 +5,4 @@ background-color: white; border-radius: 5px; padding: 16px; - overflow: scroll; } \ No newline at end of file diff --git a/src/components/DosHeader/DosHeader.tsx b/src/components/DosHeader/DosHeader.tsx index 0edb96a..43ca13d 100644 --- a/src/components/DosHeader/DosHeader.tsx +++ b/src/components/DosHeader/DosHeader.tsx @@ -1,8 +1,13 @@ +import { useEffect, useState } from "react"; import NodeTableComponent, { DataTemplateInterface, } from "../NodeTableComponent/NodeTableComponent"; +import { invoke } from '@tauri-apps/api/core'; export default function DosHeader() { + + const [data, setData] = useState([]); + const dataTemplate: DataTemplateInterface = { e_magic: { name: "e_magic", @@ -149,17 +154,20 @@ export default function DosHeader() { title: "字段名", dataIndex: "name", key: "name", + width: 120 }, { title: "偏移", dataIndex: "offset", key: "offset", hexSwitch: true, + width: 80 }, { title: "大小", dataIndex: "size", key: "size", + width: 80 }, { title: "值", @@ -167,18 +175,27 @@ export default function DosHeader() { key: "value", hexSwitch: true, editable: true, + minWidth: 200 }, { title: "描述信息", dataIndex: "description", key: "description", + width: 250 }, ]; + useEffect(()=>{ + invoke(command).then(res => { + console.log("asdfsadf",res); + setData(res as any); + }) + }, []) + return ( ); diff --git a/src/components/FileHeader/FileHeader.module.scss b/src/components/FileHeader/FileHeader.module.scss index b7539c5..54e9c35 100644 --- a/src/components/FileHeader/FileHeader.module.scss +++ b/src/components/FileHeader/FileHeader.module.scss @@ -5,5 +5,4 @@ background-color: white; border-radius: 5px; padding: 16px; - overflow: scroll; } \ No newline at end of file diff --git a/src/components/FileHeader/FileHeader.tsx b/src/components/FileHeader/FileHeader.tsx index c33c81d..7396c8b 100644 --- a/src/components/FileHeader/FileHeader.tsx +++ b/src/components/FileHeader/FileHeader.tsx @@ -1,119 +1,195 @@ import NodeTableComponent, { DataTemplateInterface, } from "../NodeTableComponent/NodeTableComponent"; +import { invoke } from "@tauri-apps/api/core"; +import { Select, Space } from "antd"; +import { useEffect, useMemo, useState } from "react"; +// 写一个组件,用于展示位枚举值 +interface BitEnumComponentProps { + value: number; + enum: { + [key: number]: { + enum_name: string; // 枚举值名称 + description?: string; // 枚举值描述 + }; + }; + onChange?: (value: any, options: any) => void; +} + +const BitEnumComponent = (props: BitEnumComponentProps) => { + const formatOptions = useMemo(() => { + const options = Object.entries(props.enum).map(([key, value]) => { + return { + label: value.enum_name, + value: key, + title: value.description, + }; + }); + return options; + }, [props.enum, props.value]); + + const formatValue = useMemo(() => { + const value = []; + for (const key in props.enum) { + if (props.value & parseInt(key)) { + value.push(key); + } + } + return value; + }, [props.value]); + + const handleChange = (value: number[], options) => { + // 如果props.onChange存在,那么调用 + props.onChange?.(value, options); + // TODO: 做一些自己的事 + }; + + return ( + <> + +