From d091a9911477c0f4bbca1f09b8955bb3a45694c6 Mon Sep 17 00:00:00 2001 From: JackLee <809262979@qq.com> Date: Thu, 12 Mar 2026 14:43:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=A0=8F=E7=9B=AE?= =?UTF-8?q?=E5=BE=97=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/ets/pages/CustomStyle/Button.ets | 66 ++++++++++++ .../{StyleComboBox.ets => ComboBox.ets} | 2 +- .../{StyleDialog.ets => Dialog.ets} | 6 +- entry/src/main/ets/pages/CustomStyle/Menu.ets | 75 +++++++++++++ .../ets/pages/CustomStyle/StyleButton.ets | 71 ------------ .../main/ets/pages/CustomStyle/StyleMenu.ets | 37 ------- entry/src/main/ets/pages/Index.ets | 8 +- ...uttonInterface.ets => ButtonInterface.ets} | 4 +- ...eGroupInterface.ets => GroupInterface.ets} | 4 +- .../{TitleInterface.ets => Interface.ets} | 2 +- ...tleMenuInterface.ets => MenuInterface.ets} | 0 ...eModelInterface.ets => ModelInterface.ets} | 4 +- .../{TitleGroupMenu.ets => ActionOption.ets} | 5 +- .../ets/pages/LayoutInterface/Layout/CAD.ets | 102 ++++++++++++++++++ .../ets/pages/LayoutInterface/Layout/CAE.ets | 31 ++++++ .../ets/pages/LayoutInterface/Layout/CAM.ets | 27 +++++ .../LayoutInterface/Layout/DisplayMode.ets | 15 +++ .../LayoutInterface/Layout/FileModel.ets | 15 +++ .../{TitleRowMenu.ets => GroupOption.ets} | 5 +- .../LayoutInterface/Layout/LayoutOption.ets | 11 ++ .../pages/LayoutInterface/Layout/MainPage.ets | 26 +++++ .../LayoutInterface/Layout/MatrixModel.ets | 15 +++ .../LayoutInterface/Layout/ModelType.ets | 6 ++ .../LayoutInterface/Layout/SelectionMode.ets | 16 +++ .../LayoutInterface/Layout/SwitchView.ets | 16 +++ .../LayoutInterface/Layout/TabContent.ets | 20 ++++ .../pages/LayoutInterface/Layout/TitleCAD.ets | 102 ------------------ .../pages/LayoutInterface/Layout/TitleCAE.ets | 31 ------ .../pages/LayoutInterface/Layout/TitleCAM.ets | 27 ----- .../LayoutInterface/Layout/TitleFileModel.ets | 15 --- .../LayoutInterface/Layout/TitleMainPage.ets | 26 ----- .../Layout/TitleMatrixModel.ets | 14 --- .../LayoutInterface/Layout/TitleModelType.ets | 6 -- .../Layout/TitleSelectionMode.ets | 15 --- .../Layout/TitleTabContent.ets | 18 ---- .../LayoutInterface/Layout/TitleViewData.ets | 15 --- .../pages/TitleTabLayout/TitleColumnSub.ets | 68 ++++++++++-- .../ets/pages/TitleTabLayout/TitleTab.ets | 6 +- .../pages/TitleTabLayout/TitleTabContent.ets | 10 +- .../base/media/display_hidden_line_dashed.bmp | Bin 0 -> 65590 bytes .../base/media/display_hidden_line_dim.bmp | Bin 0 -> 65590 bytes .../media/display_hidden_line_invisible.bmp | Bin 0 -> 65590 bytes .../base/media/display_hidden_line_normal.bmp | Bin 0 -> 65590 bytes .../media/display_select_hidden_faces.bmp | Bin 0 -> 65590 bytes .../media/display_select_hidden_wireframe.bmp | Bin 0 -> 65590 bytes .../resources/base/media/display_shade.bmp | Bin 0 -> 65590 bytes .../base/media/display_shade_show_edges.bmp | Bin 0 -> 65590 bytes .../media/display_shade_show_facet_edges.bmp | Bin 0 -> 65590 bytes .../resources/base/media/layer_category.bmp | Bin 0 -> 65590 bytes .../resources/base/media/layer_copy_to.bmp | Bin 0 -> 65590 bytes .../resources/base/media/layer_move_to.bmp | Bin 0 -> 65590 bytes .../resources/base/media/layer_settings.bmp | Bin 0 -> 65590 bytes .../base/media/layer_vis_in_view.bmp | Bin 0 -> 65590 bytes 53 files changed, 530 insertions(+), 412 deletions(-) create mode 100644 entry/src/main/ets/pages/CustomStyle/Button.ets rename entry/src/main/ets/pages/CustomStyle/{StyleComboBox.ets => ComboBox.ets} (94%) rename entry/src/main/ets/pages/CustomStyle/{StyleDialog.ets => Dialog.ets} (67%) create mode 100644 entry/src/main/ets/pages/CustomStyle/Menu.ets delete mode 100644 entry/src/main/ets/pages/CustomStyle/StyleButton.ets delete mode 100644 entry/src/main/ets/pages/CustomStyle/StyleMenu.ets rename entry/src/main/ets/pages/LayoutInterface/Interface/{TitleButtonInterface.ets => ButtonInterface.ets} (54%) rename entry/src/main/ets/pages/LayoutInterface/Interface/{TitleGroupInterface.ets => GroupInterface.ets} (64%) rename entry/src/main/ets/pages/LayoutInterface/Interface/{TitleInterface.ets => Interface.ets} (78%) rename entry/src/main/ets/pages/LayoutInterface/Interface/{TitleMenuInterface.ets => MenuInterface.ets} (100%) rename entry/src/main/ets/pages/LayoutInterface/Interface/{TitleModelInterface.ets => ModelInterface.ets} (80%) rename entry/src/main/ets/pages/LayoutInterface/Layout/{TitleGroupMenu.ets => ActionOption.ets} (67%) create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/CAD.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/CAE.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/CAM.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/DisplayMode.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/FileModel.ets rename entry/src/main/ets/pages/LayoutInterface/Layout/{TitleRowMenu.ets => GroupOption.ets} (61%) create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/LayoutOption.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/MainPage.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/MatrixModel.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/ModelType.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/SelectionMode.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/SwitchView.ets create mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TabContent.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAD.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAE.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAM.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleFileModel.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleMainPage.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleMatrixModel.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleModelType.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleSelectionMode.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleTabContent.ets delete mode 100644 entry/src/main/ets/pages/LayoutInterface/Layout/TitleViewData.ets create mode 100644 entry/src/main/resources/base/media/display_hidden_line_dashed.bmp create mode 100644 entry/src/main/resources/base/media/display_hidden_line_dim.bmp create mode 100644 entry/src/main/resources/base/media/display_hidden_line_invisible.bmp create mode 100644 entry/src/main/resources/base/media/display_hidden_line_normal.bmp create mode 100644 entry/src/main/resources/base/media/display_select_hidden_faces.bmp create mode 100644 entry/src/main/resources/base/media/display_select_hidden_wireframe.bmp create mode 100644 entry/src/main/resources/base/media/display_shade.bmp create mode 100644 entry/src/main/resources/base/media/display_shade_show_edges.bmp create mode 100644 entry/src/main/resources/base/media/display_shade_show_facet_edges.bmp create mode 100644 entry/src/main/resources/base/media/layer_category.bmp create mode 100644 entry/src/main/resources/base/media/layer_copy_to.bmp create mode 100644 entry/src/main/resources/base/media/layer_move_to.bmp create mode 100644 entry/src/main/resources/base/media/layer_settings.bmp create mode 100644 entry/src/main/resources/base/media/layer_vis_in_view.bmp diff --git a/entry/src/main/ets/pages/CustomStyle/Button.ets b/entry/src/main/ets/pages/CustomStyle/Button.ets new file mode 100644 index 00000000..204b3b15 --- /dev/null +++ b/entry/src/main/ets/pages/CustomStyle/Button.ets @@ -0,0 +1,66 @@ +import { hilog } from '@kit.PerformanceAnalysisKit'; +import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; +import { TitleModel } from "../LayoutInterface/Interface/ModelInterface"; +import { TitleData } from '../LayoutInterface/Layout/TabContent'; + +//单一功能按钮 +//图片->文本 +//不能用于模块切换 +@ComponentV2 +export struct EventBtn { + @Param eventBtn: TitleButton | undefined = undefined; + build() { + Column({ space: 2 }) { + if (this.eventBtn != undefined) { + Button() + .width('35vp') + .height('35vp') + .backgroundImage($r('app.media.' + this.eventBtn.eIcon)) + .backgroundImagePosition({ x: '10%', y: '10%' }) + .backgroundColor(Color.Transparent) + .backgroundImageSize({ + width: '80%', // 图片宽度占满按钮 + height: '80%' // 图片高度占满按钮 + }) + Text(this.eventBtn.eName) + .fontSize('10fp') + .width('45vp') + .height('10vp') + .textAlign(TextAlign.Center) + } + } + .height('50vp') + .width('50vp') + .padding('1vp') + } +} + + +//仅仅用于模块切换 +@ComponentV2 +export struct SwitchModelBtn { + @Param eventBtn: TitleButton | undefined = undefined; + @Consumer('curtModel') curtModel: Array | undefined = TitleData.mModels.get(0) + build() { + Column({ space: 2 }) { + if (this.eventBtn != undefined) { + EventBtn({eventBtn:this.eventBtn}).onClick(() => { + if (this.eventBtn?.eEvent == 'Switch_Model_CAD') { + this.curtModel = TitleData.mModels.get(1) + } else if (this.eventBtn?.eEvent == 'Switch_Model_CAM') { + this.curtModel = TitleData.mModels.get(2) + } else if (this.eventBtn?.eEvent == 'Switch_Model_CAE') { + this.curtModel = TitleData.mModels.get(3) + } + }) + } + } + .height('50vp') + .width('50vp') + .padding('1vp') + } +} + + + + diff --git a/entry/src/main/ets/pages/CustomStyle/StyleComboBox.ets b/entry/src/main/ets/pages/CustomStyle/ComboBox.ets similarity index 94% rename from entry/src/main/ets/pages/CustomStyle/StyleComboBox.ets rename to entry/src/main/ets/pages/CustomStyle/ComboBox.ets index 675c5909..cf4b5c26 100644 --- a/entry/src/main/ets/pages/CustomStyle/StyleComboBox.ets +++ b/entry/src/main/ets/pages/CustomStyle/ComboBox.ets @@ -1,4 +1,4 @@ -import { TitleButton } from "../LayoutInterface/Interface/TitleButtonInterface"; +import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; @ComponentV2 export struct TextComboBox { diff --git a/entry/src/main/ets/pages/CustomStyle/StyleDialog.ets b/entry/src/main/ets/pages/CustomStyle/Dialog.ets similarity index 67% rename from entry/src/main/ets/pages/CustomStyle/StyleDialog.ets rename to entry/src/main/ets/pages/CustomStyle/Dialog.ets index 092781f1..6b05ab38 100644 --- a/entry/src/main/ets/pages/CustomStyle/StyleDialog.ets +++ b/entry/src/main/ets/pages/CustomStyle/Dialog.ets @@ -1,5 +1,5 @@ -import { TitleButton } from "../LayoutInterface/Interface/TitleButtonInterface"; -import {TitleViewMenu} from "../LayoutInterface/Layout/TitleViewData" +import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; +import {SwitchView} from "../LayoutInterface/Layout/SwitchView" import { Popup } from "@kit.ArkUI"; //视图切换弹窗 @@ -9,7 +9,7 @@ export struct ViewDialog { build(){ Row({ space:2 }) { GridRow({ columns: 3 ,gutter: 5 }) { - ForEach(TitleViewMenu, (item: TitleButton, index?: number | undefined) => { + ForEach(SwitchView, (item: TitleButton, index?: number | undefined) => { GridCol({ span: 1 }) { Row() { Image($r('app.media.' + item.eIcon)) diff --git a/entry/src/main/ets/pages/CustomStyle/Menu.ets b/entry/src/main/ets/pages/CustomStyle/Menu.ets new file mode 100644 index 00000000..97d948ff --- /dev/null +++ b/entry/src/main/ets/pages/CustomStyle/Menu.ets @@ -0,0 +1,75 @@ +import { TitleMenu } from "../LayoutInterface/Interface/MenuInterface"; +import { TitleGroup } from "../LayoutInterface/Interface/GroupInterface"; +import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; +import { EventBtn } from "./Button"; + +//菜单按钮 +//主要用于功能组操作菜单.文件下拉菜单等. +@ComponentV2 +export struct GroupTextEventMenu { + @Param grpEvent:TitleGroup|undefined=undefined; + @Builder + GroupMenu(menus: Array) { + ForEach(menus, (item: TitleMenu, index: number) => { + MenuItem({ startIcon: $r('app.media.'+item.mIcon), content: item.mName }) + .width('150') + .margin({ top: 0, left: 0, bottom: 0, right: 0 + }) + }) + } + build(){ + Row(){ + if(this.grpEvent!=undefined){ + //功能组名文本 + Blank().width('auto') + Text(this.grpEvent.grpName) + .fontSize(8) + .fontColor(Color.Gray) + Blank().width('auto') + Button() + .height(15) + .width(15) + .padding(1) + .backgroundImage($r('app.media.base_seetings')) + .backgroundImagePosition({ x: '10%', y: '10%' }) + .backgroundImageSize({ + width: '80%', // 图片宽度占满按钮 + height: '80%' // 图片高度占满按钮 + }) + .bindMenu(this.GroupMenu(this.grpEvent.grpMenu)) + .backgroundColor(Color.Transparent) + } + }.align(Alignment.BottomEnd) + } +} + +//菜单目录按钮 +//功能目录菜单,主要用于针对单一按钮多个功能形式 +@ComponentV2 +export struct MenuBtn { + @Param menuBtn: Array | undefined = undefined; + @Param iconState: boolean = false; + + @Builder + EventMenu() { + Menu() { + ForEach(this.menuBtn, (item: TitleButton, index: number) => { + MenuItem({ startIcon: $r('app.media.' + item.eIcon), content: item.eName }) + .width('150') + .margin({ + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + }) + } + } + + build() { + if (this.menuBtn != undefined) { + EventBtn({ eventBtn: this.menuBtn[0] }).bindMenu(this.EventMenu) + } + } +} + diff --git a/entry/src/main/ets/pages/CustomStyle/StyleButton.ets b/entry/src/main/ets/pages/CustomStyle/StyleButton.ets deleted file mode 100644 index e15e0188..00000000 --- a/entry/src/main/ets/pages/CustomStyle/StyleButton.ets +++ /dev/null @@ -1,71 +0,0 @@ -import { hilog } from '@kit.PerformanceAnalysisKit'; -import { TitleButton } from "../LayoutInterface/Interface/TitleButtonInterface"; -import { TitleModel} from "../LayoutInterface/Interface/TitleModelInterface"; -import { TitleData } from '../LayoutInterface/Layout/TitleTabContent'; - -//单一功能按钮 -@ComponentV2 -export struct EventBtn { - @Param eventBtn:TitleButton|undefined=undefined; - @Param modelType:number|undefined=0; - @Consumer('curtModel') curtModel:Array|undefined= TitleData.mModels.get(0) - build() { - Column({ space: 2 }) { - if(this.eventBtn!=undefined){ - if(this.modelType==1){ - Image($r('app.media.' + this.eventBtn.eIcon)) - .width('45vp') - .height('35vp') - .objectFit(ImageFit.Contain) - .onClick(()=>{ - if(this.eventBtn?.eEvent=='Switch_Model_CAD'){ - this.curtModel=TitleData.mModels.get(1) - }else if(this.eventBtn?.eEvent=='Switch_Model_CAM'){ - this.curtModel=TitleData.mModels.get(2) - }else if(this.eventBtn?.eEvent=='Switch_Model_CAE'){ - this.curtModel=TitleData.mModels.get(3) - } - }) - }else{ - Image($r('app.media.' + this.eventBtn.eIcon)) - .width('45vp') - .height('35vp') - .objectFit(ImageFit.Contain) - } - Text(this.eventBtn.eName) - .fontSize('10fp') - .width('45vp') - .height('10vp') - .textAlign(TextAlign.Center) - } - } - .height('50vp') - .width('50vp') - .padding('1vp') - } -} - - -//菜单目录按钮 -//功能目录菜单,主要用于针对单一按钮多个功能形式 -@ComponentV2 -export struct MenuBtn { - @Param menuBtn: Array|undefined=undefined; - @Local iconState:boolean=false; - @Builder - EventMenu(){ - Menu() { - ForEach(this.menuBtn, (item: TitleButton, index: number) => { - MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) - .width('150') - .margin({ top: 0, left: 0, bottom: 0, right: 0 }) - }) - } - } - build() { - if(this.menuBtn!=undefined){ - EventBtn({eventBtn:this.menuBtn[0]}).bindMenu(this.EventMenu) - } - } -} - diff --git a/entry/src/main/ets/pages/CustomStyle/StyleMenu.ets b/entry/src/main/ets/pages/CustomStyle/StyleMenu.ets deleted file mode 100644 index 45f2f1ec..00000000 --- a/entry/src/main/ets/pages/CustomStyle/StyleMenu.ets +++ /dev/null @@ -1,37 +0,0 @@ -import { TitleMenu } from "../LayoutInterface/Interface/TitleMenuInterface"; -import { TitleGroup } from "../LayoutInterface/Interface/TitleGroupInterface"; - -//菜单按钮 -//主要用于功能组操作菜单.文件下拉菜单等. -@ComponentV2 -export struct GroupTextEventMenu { - @Param grpEvent:TitleGroup|undefined=undefined; - @Builder - GroupMenu(menus: Array) { - ForEach(menus, (item: TitleMenu, index: number) => { - MenuItem({ startIcon: $r('app.media.'+item.mIcon), content: item.mName }) - .width('150') - .margin({ top: 0, left: 0, bottom: 0, right: 0 - }) - }) - } - build(){ - Row(){ - if(this.grpEvent!=undefined){ - //功能组名文本 - Blank().width('auto') - Text(this.grpEvent.grpName) - .fontSize(8) - .fontColor(Color.Gray) - Blank().width('auto') - Image($r('app.media.base_seetings')) - .height(15) - .width(15) - .padding(1) - .bindMenu(this.GroupMenu(this.grpEvent.grpMenu)) - .backgroundColor(Color.Transparent) - } - }.align(Alignment.BottomEnd) - } -} - diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets index e1cc4593..ed72aed4 100644 --- a/entry/src/main/ets/pages/Index.ets +++ b/entry/src/main/ets/pages/Index.ets @@ -1,11 +1,17 @@ import { hilog } from '@kit.PerformanceAnalysisKit'; -import { edgeColors } from '@kit.ArkUI'; +import { edgeColors,display } from '@kit.ArkUI'; import {TitleTab} from './TitleTabLayout/TitleTab' import {LeftSideTab} from './leftSideTab' import {ModelViewTab} from './modelViewTab' import {TitleColumnSub} from './TitleTabLayout/TitleColumnSub' const DOMAIN = 0x0000; +let displayClass: display.Display | null = null; +try { + displayClass = display.getDefaultDisplaySync(); +} catch (exception) { + console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception)); +} @Entry @Component struct Index { diff --git a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleButtonInterface.ets b/entry/src/main/ets/pages/LayoutInterface/Interface/ButtonInterface.ets similarity index 54% rename from entry/src/main/ets/pages/LayoutInterface/Interface/TitleButtonInterface.ets rename to entry/src/main/ets/pages/LayoutInterface/Interface/ButtonInterface.ets index 9e983acb..6c875939 100644 --- a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleButtonInterface.ets +++ b/entry/src/main/ets/pages/LayoutInterface/Interface/ButtonInterface.ets @@ -1,7 +1,7 @@ -import { TitleModelType } from "../Layout/TitleModelType" +import { ModelType } from "../Layout/ModelType" export interface TitleButton { - eModel:Array + eModel:Array eName:string eNamed:string eIcon:string diff --git a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleGroupInterface.ets b/entry/src/main/ets/pages/LayoutInterface/Interface/GroupInterface.ets similarity index 64% rename from entry/src/main/ets/pages/LayoutInterface/Interface/TitleGroupInterface.ets rename to entry/src/main/ets/pages/LayoutInterface/Interface/GroupInterface.ets index 1b558b08..c879493e 100644 --- a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleGroupInterface.ets +++ b/entry/src/main/ets/pages/LayoutInterface/Interface/GroupInterface.ets @@ -1,5 +1,5 @@ -import { TitleMenu } from "./TitleMenuInterface"; -import { TitleButton } from "./TitleButtonInterface"; +import { TitleMenu } from "./MenuInterface"; +import { TitleButton } from "./ButtonInterface"; //功能组 export interface TitleGroup{ diff --git a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleInterface.ets b/entry/src/main/ets/pages/LayoutInterface/Interface/Interface.ets similarity index 78% rename from entry/src/main/ets/pages/LayoutInterface/Interface/TitleInterface.ets rename to entry/src/main/ets/pages/LayoutInterface/Interface/Interface.ets index 5feed05a..bbf62a76 100644 --- a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleInterface.ets +++ b/entry/src/main/ets/pages/LayoutInterface/Interface/Interface.ets @@ -1,4 +1,4 @@ -import { TitleModel } from "./TitleModelInterface"; +import { TitleModel } from "./ModelInterface"; //Title配置 export interface TitleInterface{ diff --git a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleMenuInterface.ets b/entry/src/main/ets/pages/LayoutInterface/Interface/MenuInterface.ets similarity index 100% rename from entry/src/main/ets/pages/LayoutInterface/Interface/TitleMenuInterface.ets rename to entry/src/main/ets/pages/LayoutInterface/Interface/MenuInterface.ets diff --git a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleModelInterface.ets b/entry/src/main/ets/pages/LayoutInterface/Interface/ModelInterface.ets similarity index 80% rename from entry/src/main/ets/pages/LayoutInterface/Interface/TitleModelInterface.ets rename to entry/src/main/ets/pages/LayoutInterface/Interface/ModelInterface.ets index 0341f838..f9d2c4d9 100644 --- a/entry/src/main/ets/pages/LayoutInterface/Interface/TitleModelInterface.ets +++ b/entry/src/main/ets/pages/LayoutInterface/Interface/ModelInterface.ets @@ -1,5 +1,5 @@ -import { TitleButton } from "./TitleButtonInterface" -import { TitleGroup } from "./TitleGroupInterface" +import { TitleButton } from "./ButtonInterface" +import { TitleGroup } from "./GroupInterface" export interface TitleModel{ //模块名 diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleGroupMenu.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/ActionOption.ets similarity index 67% rename from entry/src/main/ets/pages/LayoutInterface/Layout/TitleGroupMenu.ets rename to entry/src/main/ets/pages/LayoutInterface/Layout/ActionOption.ets index 6bba1c35..7433a064 100644 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleGroupMenu.ets +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/ActionOption.ets @@ -1,6 +1,7 @@ -import { TitleMenu } from "../Interface/TitleMenuInterface"; +import { TitleMenu } from "../Interface/MenuInterface"; -export let GroupMenu:Array=[ +//功能布局数据 +export let ActionOption:Array=[ {mName:'增功能',mIcon:'',mTips:"",mEvent:''}, {mName:'编辑组',mIcon:'',mTips:"",mEvent:''}, {mName:'改图标',mIcon:'',mTips:"",mEvent:''}, diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/CAD.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/CAD.ets new file mode 100644 index 00000000..e32aa183 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/CAD.ets @@ -0,0 +1,102 @@ +import { TitleModel } from "./TabContent"; +import {TitleMainPage} from './MainPage' +import {ModelType} from './ModelType' +import { GroupOption } from "./GroupOption"; +import { TitleGroup } from "../Interface/GroupInterface"; +import { MatrixModel } from "./MatrixModel"; + +export let TitleCAD:Array=[ + TitleMainPage[0], + {cmName:'建模',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + {cmName:'曲面',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + {cmName:'曲线',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + {cmName:'同步建模',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + {cmName:'分析',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + {cmName:'显示',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + {cmName:'首选项',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'基础模型',grpBtn:[ + {eModel:[ModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} + ],grpMenu:GroupOption}] as Array + ] + ]}, + MatrixModel +] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/CAE.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/CAE.ets new file mode 100644 index 00000000..8b889173 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/CAE.ets @@ -0,0 +1,31 @@ +import { TitleModel } from "./TabContent"; +import {TitleMainPage} from './MainPage' +import {ModelType} from './ModelType' +import { GroupOption } from "./GroupOption"; +import { TitleGroup } from "../Interface/GroupInterface"; +import { MatrixModel } from "./MatrixModel"; +import { TitleButton } from "../Interface/ButtonInterface"; + +export let TitleCAE:Array=[ + TitleMainPage[0], + {cmName:'加工',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'加工环境',grpBtn:[ + {eModel:[ModelType.BASE],eName:"重置环境",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"工艺",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + [ + {eModel:[ModelType.BASE],eName:"切削参数",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"切削速度",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"主轴参数",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""}, + ] as Array, + {eModel:[ModelType.BASE],eName:"显示刀路",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"新建工序",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"新建刀具",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + ],grpMenu:GroupOption}] as Array + ] + ]}, + MatrixModel +] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/CAM.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/CAM.ets new file mode 100644 index 00000000..4442af9b --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/CAM.ets @@ -0,0 +1,27 @@ +import { TitleModel } from "./TabContent"; +import {TitleMainPage} from './MainPage' +import {ModelType} from './ModelType' +import { GroupOption } from "./GroupOption"; +import { TitleGroup } from "../Interface/GroupInterface"; +import { MatrixModel } from "./MatrixModel"; +import { TitleButton } from "../Interface/ButtonInterface"; + +export let TitleCAM:Array=[TitleMainPage[0], + {cmName:'仿真',cmPage:'',cmTips:'',cmEvents: [ + //数组表示非单个BtnEvent + [ + //数组成员区别是GroupEvent还是BtnEvent + [{grpName:'初始化仿真',grpBtn:[ + {eModel:[ModelType.BASE],eName:"导入模型",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"导出模型",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"设定仿真环境",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + [ + {eModel:[ModelType.BASE],eName:"环境参数",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"力学参数",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"化学参数",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""}, + ] as Array, + {eModel:[ModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""}, + ],grpMenu:GroupOption}] as Array + ] + ]},MatrixModel] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/DisplayMode.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/DisplayMode.ets new file mode 100644 index 00000000..fb75da22 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/DisplayMode.ets @@ -0,0 +1,15 @@ +import { TitleButton } from "../Interface/ButtonInterface"; +import { ModelType } from "./ModelType"; + +//视图选择布局数据 +export let DisplayMode:Array=[ + {eModel:[ModelType.BASE],eName:"线框",eNamed:"",eIcon:"display_hidden_line_invisible",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"静态线框",eNamed:"",eIcon:"display_hidden_line_normal",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"淡化边界线",eNamed:"",eIcon:"display_hidden_line_dim",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"隐藏虚线",eNamed:"",eIcon:"display_hidden_line_dashed",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"显示面边界线",eNamed:"",eIcon:"display_shade_show_edges",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"显示小平面边界线",eNamed:"",eIcon:"display_shade_show_facet_edges",eTips:"俯视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"显示选择隐藏面",eNamed:"",eIcon:"display_select_hidden_faces",eTips:"左视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"显示选择隐藏线框",eNamed:"",eIcon:"display_select_hidden_wireframe",eTips:"前视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"着色",eNamed:"",eIcon:"display_shade",eTips:"正等测图",eEvent:""}, +] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/FileModel.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/FileModel.ets new file mode 100644 index 00000000..bcfa8faa --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/FileModel.ets @@ -0,0 +1,15 @@ +import { TitleModel } from "../Interface/ModelInterface"; +import { ModelType } from "./ModelType"; + +//文件模块布局数据 +export let FileModel:TitleModel={cmName:"文件",cmPage:"",cmTips:"",cmEvents:[ + {eModel:[ModelType.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_preferences",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"退出",eNamed:"",eIcon:"base_exit",eTips:"",eEvent:""}, +]} \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleRowMenu.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/GroupOption.ets similarity index 61% rename from entry/src/main/ets/pages/LayoutInterface/Layout/TitleRowMenu.ets rename to entry/src/main/ets/pages/LayoutInterface/Layout/GroupOption.ets index 057e8cc0..17a86d7f 100644 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleRowMenu.ets +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/GroupOption.ets @@ -1,6 +1,7 @@ -import { TitleMenu } from "../Interface/TitleMenuInterface"; +import { TitleMenu } from "../Interface/MenuInterface"; -export let TitleRowMenu:Array=[ +//功能主的操作功能布局数据 +export let GroupOption:Array=[ {mName:'增加功能',mIcon:'',mTips:"",mEvent:''}, {mName:'编辑功能组',mIcon:'',mTips:"",mEvent:''}, {mName:'删除功能组',mIcon:'',mTips:"",mEvent:''}, diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/LayoutOption.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/LayoutOption.ets new file mode 100644 index 00000000..53fb3cda --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/LayoutOption.ets @@ -0,0 +1,11 @@ +import { TitleButton } from "../Interface/ButtonInterface"; +import { ModelType } from "./ModelType"; + +//视图选择布局数据 +export let LayoutOption:Array=[ + {eModel:[ModelType.BASE],eName:"图层设置",eNamed:"",eIcon:"layer_settings",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"视图中可见图层",eNamed:"",eIcon:"layer_vis_in_view",eTips:"俯视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"图层类别",eNamed:"",eIcon:"layer_category",eTips:"正等测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"移至图层",eNamed:"",eIcon:"layer_move_to",eTips:"左视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"复制至图层",eNamed:"",eIcon:"layer_copy_to",eTips:"前视图",eEvent:""}, +] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/MainPage.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/MainPage.ets new file mode 100644 index 00000000..70569afb --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/MainPage.ets @@ -0,0 +1,26 @@ +import { TitleButton } from "../Interface/ButtonInterface"; +import { TitleGroup } from "../Interface/GroupInterface"; +import { MatrixModel } from "./MatrixModel"; +import { ModelType } from "./ModelType"; +import { GroupOption } from "./GroupOption"; +import { TitleModel } from "./TabContent"; + +//主页栏目布局数据 +export let TitleMainPage:Array= + [{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [[[{grpName:'文件功能组',grpBtn:[ + {eModel:[ModelType.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + [ + {eModel:[ModelType.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"另存为",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"保存全部",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""}, + ] as Array, + {eModel:[ModelType.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, + {eModel:[ModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""}, + ], + grpMenu:GroupOption}] as Array]]}, + MatrixModel + ] diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/MatrixModel.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/MatrixModel.ets new file mode 100644 index 00000000..7110a9ec --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/MatrixModel.ets @@ -0,0 +1,15 @@ +import { TitleGroup } from '../Interface/GroupInterface' +import {TitleModel} from '../Interface/ModelInterface' +import { GroupOption } from './GroupOption' +import { ModelType } from './ModelType' + +//模块矩阵布局数据 +export let MatrixModel:TitleModel= { + cmName:"应用模块",cmPage:"",cmTips:"",cmEvents:[ + [[{grpName:'模块矩阵',grpBtn:[ + {eModel:[ModelType.BASE],eName:"建模",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:"Switch_Model_CAD"}, + {eModel:[ModelType.BASE],eName:"加工",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:"Switch_Model_CAM"}, + {eModel:[ModelType.BASE],eName:"仿真",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:"Switch_Model_CAE"}, + ],grpMenu:GroupOption}] as Array + ]] +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/ModelType.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/ModelType.ets new file mode 100644 index 00000000..b3304f6f --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/ModelType.ets @@ -0,0 +1,6 @@ +export enum ModelType{ + CAD, + CAM, + CAE, + BASE +}; \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/SelectionMode.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/SelectionMode.ets new file mode 100644 index 00000000..4b0f3ac5 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/SelectionMode.ets @@ -0,0 +1,16 @@ +import { TitleButton } from "../Interface/ButtonInterface"; +import { ModelType } from "./ModelType"; + +//拾取器过滤布局数据 +export let SelectionMode:Array=[ + {eModel:[ModelType.BASE],eName:"实体特征",eNamed:"",eIcon:"",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"曲线特征",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"加工特征",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"基准",eNamed:"",eIcon:"",eTips:"正等测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"边",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"面",eNamed:"",eIcon:"",eTips:"左视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"线",eNamed:"",eIcon:"",eTips:"右视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"视图",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"图像",eNamed:"",eIcon:"",eTips:"俯视图",eEvent:""}, +] + diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/SwitchView.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/SwitchView.ets new file mode 100644 index 00000000..343502d8 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/SwitchView.ets @@ -0,0 +1,16 @@ +import { TitleButton } from "../Interface/ButtonInterface"; +import { ModelType } from "./ModelType"; + +//视图选择布局数据 +export let SwitchView:Array=[ + {eModel:[ModelType.BASE],eName:"正三轴测图",eNamed:"",eIcon:"base_view_tfr_tri",eTips:"正三轴测图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"俯视图",eNamed:"",eIcon:"base_view_top",eTips:"俯视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"正等测图",eNamed:"",eIcon:"base_view_tfr_iso",eTips:"正等测图",eEvent:""}, + + {eModel:[ModelType.BASE],eName:"左视图",eNamed:"",eIcon:"base_view_left",eTips:"左视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"前视图",eNamed:"",eIcon:"base_view_front",eTips:"前视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"右视图",eNamed:"",eIcon:"base_view_right",eTips:"右视图",eEvent:""}, + + {eModel:[ModelType.BASE],eName:"后视图",eNamed:"",eIcon:"base_view_back",eTips:"后视图",eEvent:""}, + {eModel:[ModelType.BASE],eName:"仰视图",eNamed:"",eIcon:"base_view_bottom",eTips:"仰视图",eEvent:""}, +] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TabContent.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TabContent.ets new file mode 100644 index 00000000..20f0fc86 --- /dev/null +++ b/entry/src/main/ets/pages/LayoutInterface/Layout/TabContent.ets @@ -0,0 +1,20 @@ +import { FileModel } from './FileModel' +import { TitleInterface } from '../Interface/Interface' +import { TitleModel } from '../Interface/ModelInterface' +import { TitleMainPage } from './MainPage' +import {TitleCAD} from './CAD' +import {TitleCAM} from './CAM' +import {TitleCAE} from './CAE' + +//Title栏得布局数据 +export let TitleData:TitleInterface= { + mId:"0", + mFileModel:FileModel, + mModels:new Map>([ + [0,TitleMainPage], + [1,TitleCAD], + [2,TitleCAM], + [3,TitleCAE] + ]) +} +export { TitleInterface, TitleModel } diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAD.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAD.ets deleted file mode 100644 index c2ce370b..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAD.ets +++ /dev/null @@ -1,102 +0,0 @@ -import { TitleModel } from "./TitleTabContent"; -import {TitleMainPage} from './TitleMainPage' -import {TitleModelType} from './TitleModelType' -import { TitleRowMenu } from "./TitleRowMenu"; -import { TitleGroup } from "../Interface/TitleGroupInterface"; -import { MatrixModel } from "./TitleMatrixModel"; - -export let TitleCAD:Array=[ - TitleMainPage[0], - {cmName:'建模',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - {cmName:'曲面',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - {cmName:'曲线',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - {cmName:'同步建模',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - {cmName:'分析',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - {cmName:'显示',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - {cmName:'首选项',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'基础模型',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"块",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆柱",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"圆锥",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"球",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"管道",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""} - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - MatrixModel -] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAE.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAE.ets deleted file mode 100644 index 4d89b793..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAE.ets +++ /dev/null @@ -1,31 +0,0 @@ -import { TitleModel } from "./TitleTabContent"; -import {TitleMainPage} from './TitleMainPage' -import {TitleModelType} from './TitleModelType' -import { TitleRowMenu } from "./TitleRowMenu"; -import { TitleGroup } from "../Interface/TitleGroupInterface"; -import { MatrixModel } from "./TitleMatrixModel"; -import { TitleButton } from "../Interface/TitleButtonInterface"; - -export let TitleCAE:Array=[ - TitleMainPage[0], - {cmName:'加工',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'加工环境',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"重置环境",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"工艺",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - [ - {eModel:[TitleModelType.BASE],eName:"切削参数",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"切削速度",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"主轴参数",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""}, - ] as Array, - {eModel:[TitleModelType.BASE],eName:"显示刀路",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"新建工序",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"新建刀具",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - ],grpMenu:TitleRowMenu}] as Array - ] - ]}, - MatrixModel -] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAM.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAM.ets deleted file mode 100644 index 85419b21..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleCAM.ets +++ /dev/null @@ -1,27 +0,0 @@ -import { TitleModel } from "./TitleTabContent"; -import {TitleMainPage} from './TitleMainPage' -import {TitleModelType} from './TitleModelType' -import { TitleRowMenu } from "./TitleRowMenu"; -import { TitleGroup } from "../Interface/TitleGroupInterface"; -import { MatrixModel } from "./TitleMatrixModel"; -import { TitleButton } from "../Interface/TitleButtonInterface"; - -export let TitleCAM:Array=[TitleMainPage[0], - {cmName:'仿真',cmPage:'',cmTips:'',cmEvents: [ - //数组表示非单个BtnEvent - [ - //数组成员区别是GroupEvent还是BtnEvent - [{grpName:'初始化仿真',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"导入模型",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"导出模型",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"设定仿真环境",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - [ - {eModel:[TitleModelType.BASE],eName:"环境参数",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"力学参数",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"化学参数",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""}, - ] as Array, - {eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""}, - ],grpMenu:TitleRowMenu}] as Array - ] - ]},MatrixModel] \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleFileModel.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleFileModel.ets deleted file mode 100644 index f51f6160..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleFileModel.ets +++ /dev/null @@ -1,15 +0,0 @@ -import { TitleModel } from "../Interface/TitleModelInterface"; -import { TitleModelType } from "./TitleModelType"; - -//文件Bar->Menus -export let TitleFileMenuModel:TitleModel={cmName:"文件",cmPage:"",cmTips:"",cmEvents:[ - {eModel:[TitleModelType.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_preferences",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"退出",eNamed:"",eIcon:"base_exit",eTips:"",eEvent:""}, -]} \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleMainPage.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleMainPage.ets deleted file mode 100644 index b75ad24c..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleMainPage.ets +++ /dev/null @@ -1,26 +0,0 @@ -import { TitleButton } from "../Interface/TitleButtonInterface"; -import { TitleGroup } from "../Interface/TitleGroupInterface"; -import { MatrixModel } from "./TitleMatrixModel"; -import { TitleModelType } from "./TitleModelType"; -import { TitleRowMenu } from "./TitleRowMenu"; -import { TitleModel } from "./TitleTabContent"; - -//主页Bar -export let TitleMainPage:Array= - [{cmName:'主页',cmPage:'',cmTips:'',cmEvents: [[[{grpName:'文件功能组',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"新建",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"打开",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - [ - {eModel:[TitleModelType.BASE],eName:"保存",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"另存为",eNamed:"",eIcon:"base_saveas_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"保存全部",eNamed:"",eIcon:"base_saveall_file",eTips:"",eEvent:""}, - ] as Array, - {eModel:[TitleModelType.BASE],eName:"关闭",eNamed:"",eIcon:"base_close_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"导入",eNamed:"",eIcon:"base_import_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"导出",eNamed:"",eIcon:"base_export_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"选项",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"帮助",eNamed:"",eIcon:"base_help_file",eTips:"",eEvent:""}, - ], - grpMenu:TitleRowMenu}] as Array]]}, - MatrixModel - ] diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleMatrixModel.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleMatrixModel.ets deleted file mode 100644 index 99660f0e..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleMatrixModel.ets +++ /dev/null @@ -1,14 +0,0 @@ -import { TitleGroup } from '../Interface/TitleGroupInterface' -import {TitleModel} from '../Interface/TitleModelInterface' -import { TitleRowMenu } from './TitleRowMenu' -import { TitleModelType } from './TitleModelType' - -export let MatrixModel:TitleModel= { - cmName:"应用模块",cmPage:"",cmTips:"",cmEvents:[ - [[{grpName:'模块矩阵',grpBtn:[ - {eModel:[TitleModelType.BASE],eName:"建模",eNamed:"",eIcon:"base_new_file",eTips:"",eEvent:"Switch_Model_CAD"}, - {eModel:[TitleModelType.BASE],eName:"加工",eNamed:"",eIcon:"base_open_file",eTips:"",eEvent:"Switch_Model_CAM"}, - {eModel:[TitleModelType.BASE],eName:"仿真",eNamed:"",eIcon:"base_save_file",eTips:"",eEvent:"Switch_Model_CAE"}, - ],grpMenu:TitleRowMenu}] as Array - ]] -} \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleModelType.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleModelType.ets deleted file mode 100644 index a4b67c12..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleModelType.ets +++ /dev/null @@ -1,6 +0,0 @@ -export enum TitleModelType{ - CAD, - CAM, - CAE, - BASE -}; \ No newline at end of file diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleSelectionMode.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleSelectionMode.ets deleted file mode 100644 index d680cb4e..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleSelectionMode.ets +++ /dev/null @@ -1,15 +0,0 @@ -import { TitleButton } from "../Interface/TitleButtonInterface"; -import { TitleModelType } from "./TitleModelType"; - -export let SelectionMode:Array=[ - {eModel:[TitleModelType.BASE],eName:"实体特征",eNamed:"",eIcon:"",eTips:"正三轴测图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"曲线特征",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"加工特征",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"基准",eNamed:"",eIcon:"",eTips:"正等测图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"边",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"面",eNamed:"",eIcon:"",eTips:"左视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"线",eNamed:"",eIcon:"",eTips:"右视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"视图",eNamed:"",eIcon:"",eTips:"前视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"图像",eNamed:"",eIcon:"",eTips:"俯视图",eEvent:""}, -] - diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleTabContent.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleTabContent.ets deleted file mode 100644 index 6804f98a..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleTabContent.ets +++ /dev/null @@ -1,18 +0,0 @@ -import { TitleFileMenuModel } from './TitleFileModel' -import { TitleInterface } from '../Interface/TitleInterface' -import { TitleModel } from '../Interface/TitleModelInterface' -import { TitleMainPage } from './TitleMainPage' -import {TitleCAD} from './TitleCAD' -import {TitleCAM} from './TitleCAM' -import {TitleCAE} from './TitleCAE' -export let TitleData:TitleInterface= { - mId:"0", - mFileModel:TitleFileMenuModel, - mModels:new Map>([ - [0,TitleMainPage], - [1,TitleCAD], - [2,TitleCAM], - [3,TitleCAE] - ]) -} -export { TitleInterface, TitleModel } diff --git a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleViewData.ets b/entry/src/main/ets/pages/LayoutInterface/Layout/TitleViewData.ets deleted file mode 100644 index 3c6e1732..00000000 --- a/entry/src/main/ets/pages/LayoutInterface/Layout/TitleViewData.ets +++ /dev/null @@ -1,15 +0,0 @@ -import { TitleButton } from "../Interface/TitleButtonInterface"; -import { TitleModelType } from "./TitleModelType"; - -export let TitleViewMenu:Array=[ - {eModel:[TitleModelType.BASE],eName:"正三轴测图",eNamed:"",eIcon:"base_view_tfr_tri",eTips:"正三轴测图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"俯视图",eNamed:"",eIcon:"base_view_top",eTips:"俯视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"正等测图",eNamed:"",eIcon:"base_view_tfr_iso",eTips:"正等测图",eEvent:""}, - - {eModel:[TitleModelType.BASE],eName:"左视图",eNamed:"",eIcon:"base_view_left",eTips:"左视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"前视图",eNamed:"",eIcon:"base_view_front",eTips:"前视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"右视图",eNamed:"",eIcon:"base_view_right",eTips:"右视图",eEvent:""}, - - {eModel:[TitleModelType.BASE],eName:"后视图",eNamed:"",eIcon:"base_view_back",eTips:"后视图",eEvent:""}, - {eModel:[TitleModelType.BASE],eName:"仰视图",eNamed:"",eIcon:"base_view_bottom",eTips:"仰视图",eEvent:""}, -] \ No newline at end of file diff --git a/entry/src/main/ets/pages/TitleTabLayout/TitleColumnSub.ets b/entry/src/main/ets/pages/TitleTabLayout/TitleColumnSub.ets index 81e5e655..b8e1cf10 100644 --- a/entry/src/main/ets/pages/TitleTabLayout/TitleColumnSub.ets +++ b/entry/src/main/ets/pages/TitleTabLayout/TitleColumnSub.ets @@ -1,8 +1,13 @@ -import { TextComboBox,TextInputComboBox } from "../CustomStyle/StyleComboBox"; -import { TitleButton } from "../LayoutInterface/Interface/TitleButtonInterface"; -import { ViewDialog } from "../CustomStyle/StyleDialog" -import { TitleViewMenu } from "../LayoutInterface/Layout/TitleViewData"; -import {SelectionMode} from "../LayoutInterface/Layout/TitleSelectionMode" +import { TextComboBox,TextInputComboBox } from "../CustomStyle/ComboBox"; +import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface"; +import { ViewDialog } from "../CustomStyle/Dialog" +import { SwitchView } from "../LayoutInterface/Layout/SwitchView"; +import {SelectionMode} from "../LayoutInterface/Layout/SelectionMode" +import {DisplayMode} from "../LayoutInterface/Layout/DisplayMode" +import { MenuBtn } from "../CustomStyle/Menu"; +import { LayoutOption } from "../LayoutInterface/Layout/LayoutOption"; +import { TitleData } from "../LayoutInterface/Layout/TabContent"; + @ComponentV2 export struct TitleColumnSub { //Title下的子行的功能 @@ -10,7 +15,21 @@ export struct TitleColumnSub { @Local dX:number=0; @Local dY:number=0; @Local viewDialog:CustomDialogController|undefined=undefined; - + @Builder + DisplayModeMenu(menus: Array) { + Menu() { + ForEach(menus, (item: TitleButton, index: number) => { + MenuItem({ startIcon: $r('app.media.'+item.eIcon), content: item.eName }) + .width('150') + .margin({ + top: 0, + left: 0, + bottom: 0, + right: 0 + }) + }) + } + } private ViewDialog(): CustomDialogController { return new CustomDialogController({ builder: ViewDialog(), // 确保 ViewDialog 组件已正确定义 @@ -25,11 +44,21 @@ export struct TitleColumnSub { } build(){ Row({space:5}){ - Image($r('app.media.base_seetings')) + Button() .height(25) .width(25) .padding(1) - Text('拾取类型过滤器:') + .backgroundColor(Color.Transparent) + .backgroundImage($r('app.media.base_seetings')) + .backgroundImagePosition({ x: '10%', y: '10%' }) + .backgroundImageSize({ + width: '80%', // 图片宽度占满按钮 + height: '80%' // 图片高度占满按钮 + }) + .bindMenu(this.DisplayModeMenu(TitleData.mFileModel.cmEvents as Array)) + .type(ButtonType.Normal) + + Text('拾取类型:') TextComboBox({menu:SelectionMode}) .width('100vp') .borderWidth(1) @@ -37,8 +66,14 @@ export struct TitleColumnSub { .borderRadius(5) Text('图层:') TextInputComboBox({menu:this.layerArray}).width('10%') - Button('坐标轴') - Image($r('app.media.' + TitleViewMenu[0].eIcon)).onClick((event) => { + Button() + .height(35) + .width(35) + .padding(1) + .backgroundImage($r('app.media.'+LayoutOption[0].eIcon)) + .backgroundImageSize({ width: '100%', height: '100%' }) + .bindMenu(this.DisplayModeMenu(LayoutOption)) + Button().onClick((event) => { this.dX=event.windowX this.dY=event.windowY if(this.viewDialog==undefined){ @@ -47,7 +82,18 @@ export struct TitleColumnSub { this.viewDialog.open(); }).width('35vp') .height('35vp') - Button('显示类型') + .backgroundImage($r('app.media.' + SwitchView[0].eIcon)) + .backgroundImageSize({ + width: '100%', // 图片宽度占满按钮 + height: '100%' // 图片高度占满按钮 + }) + Button() + .height(35) + .width(35) + .padding(1) + .backgroundImage($r('app.media.'+DisplayMode[0].eIcon)) + .backgroundImageSize({ width: '100%', height: '100%' }) + .bindMenu(this.DisplayModeMenu(DisplayMode)) }.margin({ top: 1, left: 1, bottom: 1, right: 1 }) } } \ No newline at end of file diff --git a/entry/src/main/ets/pages/TitleTabLayout/TitleTab.ets b/entry/src/main/ets/pages/TitleTabLayout/TitleTab.ets index c24ef669..0fdd2a0f 100644 --- a/entry/src/main/ets/pages/TitleTabLayout/TitleTab.ets +++ b/entry/src/main/ets/pages/TitleTabLayout/TitleTab.ets @@ -4,9 +4,9 @@ import { AddFormMenuItem } from '@ohos.arkui.advanced.FormMenu'; import { SceneResourceType } from '@kit.ArkGraphics3D'; //导入布局模块 -import {TitleData, TitleModel} from '../LayoutInterface/Layout/TitleTabContent' -import { TitleButton } from '../LayoutInterface/Interface/TitleButtonInterface' -import { TitleGroup } from '../LayoutInterface/Interface/TitleGroupInterface' +import {TitleData, TitleModel} from '../LayoutInterface/Layout/TabContent' +import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface' +import { TitleGroup } from '../LayoutInterface/Interface/GroupInterface' import {TitleTabContent} from './TitleTabContent' @ComponentV2 diff --git a/entry/src/main/ets/pages/TitleTabLayout/TitleTabContent.ets b/entry/src/main/ets/pages/TitleTabLayout/TitleTabContent.ets index a356ef80..0a6bea31 100644 --- a/entry/src/main/ets/pages/TitleTabLayout/TitleTabContent.ets +++ b/entry/src/main/ets/pages/TitleTabLayout/TitleTabContent.ets @@ -1,8 +1,8 @@ import { hilog } from '@kit.PerformanceAnalysisKit'; -import { TitleButton} from '../LayoutInterface/Interface/TitleButtonInterface'; -import { TitleGroup} from '../LayoutInterface/Interface/TitleGroupInterface'; -import {GroupTextEventMenu} from '../CustomStyle/StyleMenu' -import {EventBtn,MenuBtn} from '../CustomStyle/StyleButton' +import { TitleButton} from '../LayoutInterface/Interface/ButtonInterface'; +import { TitleGroup} from '../LayoutInterface/Interface/GroupInterface'; +import {GroupTextEventMenu,MenuBtn} from '../CustomStyle/Menu' +import {EventBtn,SwitchModelBtn} from '../CustomStyle/Button' @ComponentV2 export struct TitleTabContent { @@ -31,7 +31,7 @@ export struct TitleTabContent { }else{ //针对最后一个Bar特化处理.如果为最后一个Bar则在子组件Image真假onClick事件 if(mIndex==this.tabLayout.length-1){ - EventBtn({eventBtn:btn_item,modelType:1}) + SwitchModelBtn({eventBtn:btn_item}) }else{ EventBtn({eventBtn:btn_item}) } diff --git a/entry/src/main/resources/base/media/display_hidden_line_dashed.bmp b/entry/src/main/resources/base/media/display_hidden_line_dashed.bmp new file mode 100644 index 0000000000000000000000000000000000000000..16d26047e890c10f52f6991498c971212fb35ca3 GIT binary patch literal 65590 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 Re7^7VaUJt<_tW+L^e-~0B0B&8 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_hidden_line_dim.bmp b/entry/src/main/resources/base/media/display_hidden_line_dim.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc10234b47bdf549b747db1996cac8de33fc1b5f GIT binary patch literal 65590 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 WLwBj8xD)1Cf1G*rfUClCtt$EcA}b>L~k z{F1+=eq1kMu5>Tr2fVbna*R6I%Cm@;T1}R^alMu9y{;4W1D+z!7H`IjJ=Y`l$ojRs zXAMSgx;@|jr6-;r@VLa=Yt%?258gU?9$etG>zHx4?#y#(nVJ96lc*o*8TXy=Y8^z@ zi0aL_GFDvY`&T``>POGs%sGhUy|uPpjW=sN%ejXi$VIO@@OWDDp7Yfs-pqA|b5B2z z8_QRYkz3ER5^t`<@A%pphBHCu`@i(0haZV=^|OJ;UuwZMYUb6RFW0pE<=hpoRem66 z$Q{ei;@O<3`B^=q@oGOz|sR)iWBe_JieT@vMJpepb(D zyxI?zpT)EOsrgwwqw#7#Sbi4I`lse+^^C@={b2c7JnNsDpVc!Oul9rGXYs6mYJOJF zXuR4FmY>D5{;By{J)`kzKUjVi&-$n4XZ4K6tNmd4Sv>2XnxEA(8n5<)+7FhW#k2mY`B^=q@oGOz|sR)iWBe_JieT@vMJp zepb(DyxI?zpT)EOsrgwwqw#7#Sbi4I`lse+^^C@={b2c7JnNsDpVc!Oul9rGXYs6m zYJOJFXuR4FmY>D5{;By{J)`kzKUjVi&-$n4XZ4K6tNmd4Sv>2XnxEA(8n5<)+7FhW#k2mY`B^=q@oGOz|sR)iWBe_JieT z@vMJpepb(DyxI?zpT)EOsrgwwqw#7#Sbi4I`lse+^^C@={b2c7JnNsD-_wKdMN1m+ z{diAD&+obObmV!pA1ptM&v8W0D*nW4^Levty*U2HAC1?;Sxp|EooD%3yjsr^f6{o* z#nSg1TK($rL&IIql2-4Y)#u^ad6u8WtM!1t*t2{0w2CkMJ8Spm_g?fQ9n|kqwz{41 zx4j%|J&x}6koSkRKCwF2aIN=QeiqN_s_~=GAAYswA?GpNe-Zt~{*(Ee^dUBIm21}g zC~>XVEI*59buICyd+?R@^qvdrC#&Zbyr~OXKi0N!zoKX9S(cy0FRfX-XZfRJ^iINd z`40M;zE|g<@u8Kihdch&_3iW4UpsHdEZ#ovjV-@3?z)eA+Ir6y`$M=EdTX%$di*Tj z<16PAx4X|DrO(T_BG-sLxG!|wwo*ZiigKM zG}(2`c;?-C?^>Uee{LPvXO_k$4++xm{U6cTvS)c3uQK0bPgUd}x-4%w#(psKUhgxe zh9h;b=69JFTzl)*@DUy9`MK9Sd#sm(wRw1J^HYvfexCZSoX7PVcfP-dPxsxmGsisl z>-{A!k!PDHGydCy=6<59YqR(?cJscr_jqf~`FbvD{zUg;o6j02<}AK8o_TN2pO=T| zJaSOWk)88+Eq-PEcYpEt=KMA_lJZpDr*j^?d}Q3xIn~-9@A)~uO}^KBMvj(pm+!4T zm+xoX!g=<*^VunTIQpD&x4IX2+G_QKxpe&UIOhDAJpj4!@)yZXt$wgCV2udR#B5gw zwY)#}a%%tfYN>^D)Ga7%S zACaplAB&6B0n0h@vG)Rcda2iod$PQjIT~GqrIssPM|uu9+1d-NS=8RsdkFP9Lf6(l zsMdpb@X+yi^Ss-5_gbG;=TXLyyudfO>?Q|sI^(4>D`DPIdlBkqe%Uq$p^%O+}3gr zPqIH(IY;W?=w8gc*MGKs*4~KJHex?|efQEIse>c<1&y_RKFwd^9p73PN9~(P{UWwj zU#|9Cqz?At33|HL^E2=D&j4$A+H;3t`V0NHrO#LkYdV@{-aG&Q z@}v7Ll6PpFeI4uTR-e4yQ{*60d#&-z=lFWrsuv@9hnAT`K8HO#gZC*%x3vR%MN5A0 z44z%%#r+oE9x+dj=UPkoaQ~e->YJB$tQF;&xaVA{Jc;ydEq9R`nmxZ=K3nS~QU_%o zah-DC{Td&v$(1pWmqST;q?t6Ho^U*Yx*= j+S+q&Kl{X59n8G%Cr4ZKi+Lx^z5Yad{TB6emNotd0$D*; literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_hidden_line_normal.bmp b/entry/src/main/resources/base/media/display_hidden_line_normal.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d4d162b69f9530fa5e616d3ccd8e2359b1637905 GIT binary patch literal 65590 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 Nv+cS4h)+B|{|8!S0c8LH literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_select_hidden_faces.bmp b/entry/src/main/resources/base/media/display_select_hidden_faces.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dafde61cbe4291e5b66d27b5978c7cd082634505 GIT binary patch literal 65590 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 Heh2;^zv%(F literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_select_hidden_wireframe.bmp b/entry/src/main/resources/base/media/display_select_hidden_wireframe.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1eb23048ba7f22243500c5bdf6aaa601980bee0f GIT binary patch literal 65590 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 Cx;MlC literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_shade.bmp b/entry/src/main/resources/base/media/display_shade.bmp new file mode 100644 index 0000000000000000000000000000000000000000..298305becb2305ca070398f91f6d2295058cda31 GIT binary patch literal 65590 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_shade_show_edges.bmp b/entry/src/main/resources/base/media/display_shade_show_edges.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e6e8808057091d9ca16e33277757280245a1d557 GIT binary patch literal 65590 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 Bdb9ul literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/display_shade_show_facet_edges.bmp b/entry/src/main/resources/base/media/display_shade_show_facet_edges.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f0fb74d9484f5943e01fe534ac5d7b96d8398168 GIT binary patch literal 65590 zcmeI5_nQ<&8ppZ+gwA)-|2U1s;9eWdeYiH&wDj9%k9qe=TmRJRbAcFK4xIQfAqtD z19kjMM{hR%(eI!75&m<3?ml+^S1HvmiR2h04kQjF4kQjF4kQjF4kQlrbq59y9-PwA zn~hXo|GdfPbNh6bdwS5I!D`T;K{C?#S#q5EZtl~3dvqv<#R2@RH*uhEIWTx|6Y_kH zyL@bO0C^$tpz$5J^2#gQbZC~0XbxmONXCQ)TO%AixH+Y{r@@|KIxuI>9JPA&YIVyk zx2UVHzDCyp1@%C#HW)Z?U`FSI#DhBbpt%{`n=(2ycZA0ukKw?$ao4J?TVGaNwro|K zH*Zn%=FM{)fCs~db>)~FwV~1uAQBJi)Pbg^rXC%NVLEW_wb!aApL|kn+qPZ3{PMP( z13f)Gc@9jOGDUkZ%<4hb0eH}p)QI&_A2c;J_ck>R$#Extv~b`*|M{<4zI=t+v16xt z<&_<3`}SAz9031&?ztzI1CR$0@SwZ9yTAkCK;l6Sa{+SwkRd}9!sTD+z=8$0tKGX_ zRl9cWRy%j@vO3V)+p7?F+;K;N1M}z4R}&{r3~~T-g`_s9k_+Ij`+SD%*-8h%a?hT< z>b2MQs8?Tot*8TFfB*gWI|1J8|7`EO?>_b5gAc0fufIOe10xS4wLyjXgS(FOkRi>w z&m-KvFWd3suT%T?A5i=D?N@vE?hEAr*`s~nfd>ls!vl;F4?Xmddiddo)u>UUavoS5 zNIa;32bz124#hAXxbC{^)Y`Rc)xm>@)PVyBBRN3+V2?n5XWwUwya4u$xpU{{Jn(S< z9wh6CWxCMX+S=RP+@iT7JpOnL2PRCIsMf7puZ|o!stzAMq7EH89N7W(d-6xFw~YgL z-F274f8oM~ih;Q!@`0ZN0|q#A#>9h&9<;QywCPX`n*->l>2z8hJ9bPRJ$kHU2gn^Q z*fVSnpjIIJMT-_G#Nx$^)uc(2i#jl1zyPJAEtxYGpEK$qKGo9Fn$eMCZ#vM^)2ogj zKcO<2<2o{BJ3#*AjuvA*#(d^~*@C}h5B`WHOO~j~lkFZL4`dxkCms|!kkbF@T%Y9* z_6#ovOqw)FojP?&ojiF;oj7qaHV4dp5B99}kn<&bJihI=+j9M0vIl>}Bab{{9TS8D za3S#^J0`TYrg}Ad#qij>4xmqM+_+JlK7Crf{`%{&J7D&EvS+Oa-lhX^#*aPtBNi-J zP~d^#z~8z?)LmY4Z`0fv`3_8;JVkBVv{}9R=9}t`H{R6z->8TKkKn`Qtep zV4r8dC;LYqeN-WqE?uf_zx{SKdi3aAePB9(apCVYS3s_BYim;sk3T$c9l-H_`|UG2 z-d1nD^;Sh4;COHLd$LE1IfCf``ZxKLJ6g#e{1J~m_L#cih8v1HkgX5;Y>nu0Po>-1 zQaSdf0}B@}Qt!U|u6pO4chs3P?^MNsV*Os$dbV)@=MBQJ2Y|?Lq&ZMq4*%Zzp%KXLt@wn|7mfF7Dj9^XlBW zbLxW+z`r&Qkbe++j`g;4#i#{1)^ofMVh{d^Wy_Wo^&sm&LwJx%b*6?69jX`}d(Q#% zm5)C9NPYO>hwA+K4>kYVIuNGclRfKv@HX=Reorav!5^`F`ErGPXv+n{0eDb%wLxbm zxVL9?X!eLg2bL~=lijT11ndqbYjeyF?spGZ~(cWW*)S+clNfocR1Y1Upg>j#teP_eUJM5^Uu|1 zpMigUIspDr*@HiFy=@%8c?0qX_fpxzfv28&O5Jaf>8GD|_9cuRJJ!huJ`PmW z1LXRSj!xCl(cy&0-g5x??aME}bmEIIz`y<-04uKLqb-*6+3(37xgPn$Z&4nK>hpQ{WIlw0PdZg!!o*6h@t&VRre?;Rs zK>kttJ=t@tw~Yh%-K_IC$CGuwto5R>hXc5F2{C5OSoC*mTyez}N=G`X2c4Z=y_&t| z&d7IQ)~wmiUaN~2FRE|91^>o%pp=|%vS*!d8wcQ3rPzc2nl)>j^HZn|Y#wACz|TVM zL(|v3=sr*Gvh7r}XU}%_*?srjck1Fr#6>3>*@1HVJ=tTthfAgd*o%%nA9ueed+^8J zR|L*e+B~2G$OS53FCMOaLYNMWA3xstY^Z&ec4U$<_Z6PSCOxquD?^Y3!_(*bffz2z%+{TzUWp!twVUAm=bGa>JG_TN8Jwbl#j_mVvvc=p+6^Z3Js z@cdl|wr$(ytZCXlPta>{0sA%Ud0s&NnA_Xt_kOjW%=zs1to1S0+x840FI1C#`TV=o zk3asH3+%;%4?)~*KgY4%ym@ootq*{I-0WHF*~S6n$T0JJImaud--G>g&plUW|L;;i z{q$3gKV10Xhaa5y{`>Fsb@VTnlpAooH*MPF?BTBUI$@>Qv);4y1vr2;J-MzY*LLD! z@A7x{kmNiF%Ku$m$opP^e=!H(!KF*z>pi+}IQLYrecqtg;KEBUy;PI)1>g@J4CZ^Z zT-%XzJg({4az6V#*(2BE_nV*p&O7g{3VZO!ege5p7>2)e;OC!zcKC;J;L@c_dR~b5 z&Y2_Pn3|tG=sEH+T)?$m)i`fR?r7s?&w3BM&CiW}gIv?+nr@u^9_*ig{`uVbV>%Gb zf4BmFIspEqI>0p|%nwlun#Ul_^Nsr24@9N*50HPQ*mJD6Ie@=eN%oRI^FTQMo&)4x zt^;y?04~__VvrA*S8dp^L0|8AG`4+2mF)Lqj~0K&_W8&kH68_~n;hoc>P_!qx+FEMOjx4)B~2<^%}au?cz&F1+~Si)HO4t8~8y zd)9i$`Q~RrULf~!>U)Kj6*_HWl<4vk%#x?UX&oNf+ z)AxwNwPxgx{ui{SYn$JP$@%Q}vevWRTLAmV<77|%(t%+9BNX`40rIa$2e>|fd%$ei zu+jItOED*KzLxtnqpt0g%AWO}%>kT4;CWo0$K$!2Vs*aR@4+7RvAj1C@<2HLo&&%A z_M6lH=>hA(T8;%W56}U*K7h~dcMi_a1$cmQBJ8?ex$H64Bj4EGPt-Y{AA6HOTnNwK zbpZSu(E(m(bmYhprw+0mXWMJI$CEsd7iZ3AznAlSv^;=y!XVB;KgWEd8vAx^ z?*k5ST?Z}K^w1W|`RMnok8vM+=|E8aA29-X-;2waFX!ceMsNW2VAS#7cKrDo&f{ZE z3S)k;wH;fXZ_D}Y_pI~Kf;ImhTZ{wbUkZCT!0$1j1Ht@9D(L|DH;MyTBM4d_fETz1 zmB*MZ>V+U@uy%)ae7U9z<_ym7(2_e^Io{jYv(5)^z8|)jo0Q5P>m}sRJP?k*=K%TF zy94;FJZ82QY>^i*Pe7Re2K*7I7lS;&I)0`0ZrB_^-iea)(eH6QO#W~nJb%}L%a?z5 z`aeBjEy$Mh!dk5lV2#*hDW4-BczX$4_Qm+S^M;Q?dr(f!XTO*8d(;~8{qu3y@m{jW zv61~hI{%UC_us+4{v0@Y@}%`R@pz$y|Gf4X>jdsvfxZ9pz68tzxIYCV%-jKMh^6Ly z$)009a=!c=c#Qkb;Jq+7zmv6|$v!Ur_2dBV0ULCF5Zv80qR$=vHV4e(3;uo%gz*4# zIIQPH8SicES?Alv0n{DfAC|q#KmU8pqUC?L|AT+69l#zUzdaOWiCpiVFS_9HFXjOM zKWxdrm;<aUD z13U+U_>Uaft?Pe`{ceyw+ggkTxW6yMFBEfFK7BA3hxD zK^*6D(BIAXiE$t(=Yv1@)quZrAPj%$z#o77;q-m-uVx;={&Ms4%je*ZJtMs51X}VB zazOqbJm$P0Y#u-^2;%|n4^hr~zU_W<$a6vc-sDdQ!t$pB;9qSAaGi#fd4q)Elm-ERU`z+c2*+$_H2gtt~ z4&YwT*pFi#JNX=+4g1C1J!3Bas1D$`$=`|oB>9)(!1?p%13f@ZSIU|$#(epH`52#r zW4+AzI7VO}H~&gGfctz0aYwGlo>6z-sLQ`p2TcCRrE+da7ov;>$OCWy5mY0>1I+W; z=fkY+z)^B%i+h8SKl{97UkUzkJFtEG_JYsF&xaN@KWcxnXUiN=iUWT9<8 zHXoBa?k&O~d$y%IVDiUvt`EiO0CGWC54f%qG`}~G6P{zu!R+^7@A1DfR|f?1ALV@S zt>ho41Gu-p?K8;N@VXv-Nw7Pk7G=^mloz z@EGF&$9uG7kNFe7_ndhk9DmONuxGIE%QkEt!1p>}oz#5q@;Tlwt{r4l$^nd-^6%of zf`6qQz`f3cJV1^|y~p{TWY4i4yyg4HW8_PdJ^4!q!t-|>AbYlwJs%fy;OtpEtVYP9pcm2}{*zy7k;0B`}<(*M7ee00v;sKpqIs-*tfe=|C9nSmO!0POO#=*!V{| zcU;Y}01hC}hVj7k0?)~wZ8ZL)oxTtDcptXkFJHr&Zj}9?wQ|6Zf4w^Z55m-lk_ox9 zjmjU~aZRNBo#tcA^KJWq!|VyJg#*R-H-ZCEJZNefl9vOb@;6z_=cxT``@&@os7D7( z{&>#4BWzg<)LTsm_A+dHg(V}Gzvn;@|IwqzWa~e-4wS!(kHH=5y6$;D_xd37`jC2d zz{Wr79un4ttOepeZ-{e7s0A6w!wktEkN5B2?^`1d83Oi<;Q9~zr2`WuUZ2bT;EuU| z;aYEFIe_&Ox{MY+l(Uzt9vlD{(}Qv2#wqZZ4ut9drUTbpGfscc)uOz0|3-G882?7j z18@L=J?P{vTjYTd{L|zw^8nTa=Fh*aPdH%XU&=nBTCNq_#saMOPMI=Avv1CZ+xLY7 z=^+02x#sTc06bW~{@I)djhF}g_&2fx;NINaoC}Ksq1e+8{k`-l>4Cc@$hAQ?7o0wQ z+VP;#94N-W(Hubi-`w1i4Ua!u$U2bLk4yeO$kC(6_HsNh9pIP%4;sk-!&&K+Z~w)BAOL-n*iVD6h>|1Wo6aV5_gVNZ?69qbu02egLzj>mGHfCt4K zm^W{Jo(J{jfSmi|vHSg%?zJWL=)jUCkEqtx)?9e(a}K0+4rnWvYt;Y0_Mq49fxCZX z-8yefs3!+({Oi#H?EPzPZ4*)8Kt`8#CD(RQdE5SdHW#D|J@EDraZIQe2mJWgivu{v ze&dZdsC>mHp+ko{ z;jzzipvOFhec`z~CfFT-2W!`^%k3kp23ujKk-?B&leCfNA9 zuXU@rb3G5@cEHBJ5)SOs-!atQ-jQQp=)lmlcA!ljm%rQN?ruL1+jwGiTnMWe@&^4rmwZdLCa*4>2a_`_5zv^MQ9Cnv*9_#WpuI`NwtbIj+&T`Q}-w zqoczKmpl3A9O$X$v2CQk<$7S&1)c-$m~b-BgHoQx zIghWlLxp34=K$_Yv}VoPvK;W^Uy1|Em#jT??Y3p9>9IQX3d(dxev=mp#z$GGREuuq*2++f1f`l6gn_>?%bRQ zVI8pX59yQV|KZUwGyM+<%0D>y1tRe)l6fdi0q7F7z%ZJnrP5%L8pu-h1+IaEPd0fZRHYU&kv~%X%>g=(j1K4LNzwg$4EFDO=$Hk_azsK}II)KL$CQMLQ zU3GQdcirZDFdRQi#`rqS^@45GV*Ki==UVnK#EOXnx%X;9<6+PzOcig$J zIoy*mzJdF@jlF!0V}iwjbW+>(tv)Zg%g1gm7^!))|92;2d>`)fl6~^{@6pE-&I#wl Mfy9BtfnW#z45Eh313wo0*z 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/layer_move_to.bmp b/entry/src/main/resources/base/media/layer_move_to.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c7a0d73c071febdcc4b129c3918f884aa8cc537f GIT binary patch literal 65590 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 literal 0 HcmV?d00001 diff --git a/entry/src/main/resources/base/media/layer_settings.bmp b/entry/src/main/resources/base/media/layer_settings.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0a17e8fb20c7b87a4a4bb7cc455825ab50568826 GIT binary patch literal 65590 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 ML>!1XF!DI?e