修改远程git
This commit is contained in:
parent
d2e81404bc
commit
2379b94633
@ -52,16 +52,16 @@ add_library(opencax SHARED
|
|||||||
NativeEGLOCCT/OCCTMgr/Render.h
|
NativeEGLOCCT/OCCTMgr/Render.h
|
||||||
NativeEGLOCCT/OCCTMgr/RenderThread.h
|
NativeEGLOCCT/OCCTMgr/RenderThread.h
|
||||||
NativeEGLOCCT/NativeMgr.h
|
NativeEGLOCCT/NativeMgr.h
|
||||||
NativeEGLOCCT/V3d/V3dOGD/V3dOGD.h
|
NativeEGLOCCT/Visualization/OGD/V3dOGD.h
|
||||||
NativeEGLOCCT/V3d/V3dViewer/V3dViewer.h
|
NativeEGLOCCT/Visualization/Viewer/V3dViewer.h
|
||||||
NativeEGLOCCT/V3d/V3dCtx/V3dCtx.h
|
NativeEGLOCCT/Visualization/Context/V3dCtx.h
|
||||||
NativeEGLOCCT/V3d/V3dView/V3dView.h
|
NativeEGLOCCT/Visualization/View/V3dView.h
|
||||||
NativeEGLOCCT/V3d/V3dWin/V3dWin.h
|
NativeEGLOCCT/Visualization/Win/V3dWin.h
|
||||||
NativeEGLOCCT/V3d/V3dCamera/V3dCamera.h
|
NativeEGLOCCT/Visualization/Camera/V3dCamera.h
|
||||||
NativeEGLOCCT/V3d/V3dDrawer/V3dDrawer.h
|
NativeEGLOCCT/Visualization/Drawer/V3dDrawer.h
|
||||||
NativeEGLOCCT/V3d/V3dTri/V3dTri.h
|
NativeEGLOCCT/Visualization/Tri/V3dTri.h
|
||||||
NativeEGLOCCT/V3d/V3dTri/V3dWCSTri.h
|
NativeEGLOCCT/Visualization/Tri/V3dWCSTri.h
|
||||||
NativeEGLOCCT/V3d/V3dTri/V3dTriCube.h
|
NativeEGLOCCT/Visualization/Tri/V3dTriCube.h
|
||||||
|
|
||||||
# Cpp Src
|
# Cpp Src
|
||||||
NativeEGLOCCT/EGLMgr/EGLCore.cpp
|
NativeEGLOCCT/EGLMgr/EGLCore.cpp
|
||||||
@ -70,17 +70,17 @@ add_library(opencax SHARED
|
|||||||
NativeEGLOCCT/OCCTMgr/Render.cpp
|
NativeEGLOCCT/OCCTMgr/Render.cpp
|
||||||
NativeEGLOCCT/OCCTMgr/RenderThread.cpp
|
NativeEGLOCCT/OCCTMgr/RenderThread.cpp
|
||||||
NativeEGLOCCT/NativeMgr.cpp
|
NativeEGLOCCT/NativeMgr.cpp
|
||||||
NativeEGLOCCT/V3d/V3dOGD/V3dOGD.cpp
|
NativeEGLOCCT/Visualization/OGD/V3dOGD.cpp
|
||||||
NativeEGLOCCT/V3d/V3dViewer/V3dViewer.cpp
|
NativeEGLOCCT/Visualization/Viewer/V3dViewer.cpp
|
||||||
NativeEGLOCCT/V3d/V3dCtx/V3dCtx.cpp
|
NativeEGLOCCT/Visualization/Context/V3dCtx.cpp
|
||||||
NativeEGLOCCT/V3d/V3dView/V3dView.cpp
|
NativeEGLOCCT/Visualization/View/V3dView.cpp
|
||||||
NativeEGLOCCT/V3d/V3dCamera/V3dCamera.cpp
|
NativeEGLOCCT/Visualization/Camera/V3dCamera.cpp
|
||||||
NativeEGLOCCT/V3d/V3dWin/V3dWin.cpp
|
NativeEGLOCCT/Visualization/Win/V3dWin.cpp
|
||||||
NativeEGLOCCT/V3d/V3dDrawer/V3dDrawer.cpp
|
NativeEGLOCCT/Visualization/Drawer/V3dDrawer.cpp
|
||||||
NativeEGLOCCT/V3d/V3dTri/V3dTri.cpp
|
NativeEGLOCCT/Visualization/Tri/V3dTri.cpp
|
||||||
NativeEGLOCCT/V3d/V3dTri/V3dWCSTri.cpp
|
NativeEGLOCCT/Visualization/Tri/V3dWCSTri.cpp
|
||||||
NativeEGLOCCT/V3d/V3dTri/V3dTriCube.cpp
|
NativeEGLOCCT/Visualization/Tri/V3dTriCube.cpp
|
||||||
)
|
NativeEGLOCCT/ViewController/V3dViewController.h NativeEGLOCCT/ViewController/V3dViewController.cpp)
|
||||||
|
|
||||||
|
|
||||||
# 查找系统库
|
# 查找系统库
|
||||||
|
|||||||
@ -21,7 +21,8 @@ v3dOgd(new V3dOGD),
|
|||||||
v3dView(new V3dView),
|
v3dView(new V3dView),
|
||||||
v3dDrawer(new V3dDrawer),
|
v3dDrawer(new V3dDrawer),
|
||||||
v3dViewer(new V3dViewer),
|
v3dViewer(new V3dViewer),
|
||||||
v3dWin(new V3dWin)
|
v3dWin(new V3dWin),
|
||||||
|
v3dViewContr(new V3dViewController)
|
||||||
{
|
{
|
||||||
width = w;
|
width = w;
|
||||||
height = h;
|
height = h;
|
||||||
|
|||||||
@ -14,14 +14,15 @@
|
|||||||
#include <BRepBndLib.hxx>
|
#include <BRepBndLib.hxx>
|
||||||
#include <BRepBuilderAPI_Transform.hxx>
|
#include <BRepBuilderAPI_Transform.hxx>
|
||||||
|
|
||||||
#include "../V3d/V3dTri/V3dTri.h"
|
#include "../Visualization/Tri/V3dTri.h"
|
||||||
#include "../V3d/V3dTri/V3dTriCube.h"
|
#include "../Visualization/Tri/V3dTriCube.h"
|
||||||
#include "../V3d/V3dCamera/V3dCamera.h"
|
#include "../Visualization/Camera/V3dCamera.h"
|
||||||
#include "../V3d/V3dCtx/V3dCtx.h"
|
#include "../Visualization/Context/V3dCtx.h"
|
||||||
#include "../V3d/V3dOGD/V3dOGD.h"
|
#include "../Visualization/OGD/V3dOGD.h"
|
||||||
#include "../V3d/V3dWin/V3dWin.h"
|
#include "../Visualization/Win/V3dWin.h"
|
||||||
#include "../V3d/V3dView/V3dView.h"
|
#include "../Visualization/View/V3dView.h"
|
||||||
#include "../V3d/V3dViewer/V3dViewer.h"
|
#include "../Visualization/Viewer/V3dViewer.h"
|
||||||
|
#include "../ViewController/V3dViewController.h"
|
||||||
//TextLabel_Dev
|
//TextLabel_Dev
|
||||||
#include <AIS_TextLabel.hxx>
|
#include <AIS_TextLabel.hxx>
|
||||||
namespace NativeOpenCAX {
|
namespace NativeOpenCAX {
|
||||||
@ -56,6 +57,7 @@ private:
|
|||||||
V3dView* v3dView;
|
V3dView* v3dView;
|
||||||
V3dViewer* v3dViewer;
|
V3dViewer* v3dViewer;
|
||||||
V3dWin* v3dWin;
|
V3dWin* v3dWin;
|
||||||
|
V3dViewController* v3dViewContr;
|
||||||
std::vector<Handle(AIS_Shape)> shapes_;
|
std::vector<Handle(AIS_Shape)> shapes_;
|
||||||
};
|
};
|
||||||
} // namespace NativeRender
|
} // namespace NativeRender
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/4/19.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
|
#include "V3dViewController.h"
|
||||||
|
namespace NativeOpenCAX {
|
||||||
|
|
||||||
|
V3dViewController::V3dViewController()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
V3dViewController::~V3dViewController(){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/4/19.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
|
#ifndef OPENCAX_V3DVIEWCONTROLLER_H
|
||||||
|
#define OPENCAX_V3DVIEWCONTROLLER_H
|
||||||
|
#include "AIS_ViewController.hxx"
|
||||||
|
namespace NativeOpenCAX {
|
||||||
|
class V3dViewController {
|
||||||
|
public:
|
||||||
|
V3dViewController();
|
||||||
|
~V3dViewController();
|
||||||
|
private:
|
||||||
|
Handle(AIS_ViewController) viewController;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //OPENCAX_V3DVIEWCONTROLLER_H
|
||||||
@ -12,7 +12,7 @@
|
|||||||
#include <AIS_InteractiveContext.hxx>
|
#include <AIS_InteractiveContext.hxx>
|
||||||
|
|
||||||
|
|
||||||
#include "../V3dDrawer/V3dDrawer.h"
|
#include "../Drawer/V3dDrawer.h"
|
||||||
|
|
||||||
namespace NativeOpenCAX{
|
namespace NativeOpenCAX{
|
||||||
|
|
||||||
@ -7,7 +7,7 @@
|
|||||||
#ifndef OPENCAX_VIEW_H
|
#ifndef OPENCAX_VIEW_H
|
||||||
#define OPENCAX_VIEW_H
|
#define OPENCAX_VIEW_H
|
||||||
|
|
||||||
#include "../V3dCtx/V3dCtx.h"
|
#include "../Context/V3dCtx.h"
|
||||||
#include "NativeEGLOCCT/common.h"
|
#include "NativeEGLOCCT/common.h"
|
||||||
#include <V3d_View.hxx>
|
#include <V3d_View.hxx>
|
||||||
#include <Aspect_NeutralWindow.hxx>
|
#include <Aspect_NeutralWindow.hxx>
|
||||||
@ -3,12 +3,10 @@ import { hilog } from '@kit.PerformanceAnalysisKit';
|
|||||||
import { window, display, AppStorageV2, ColorMetrics } from '@kit.ArkUI';
|
import { window, display, AppStorageV2, ColorMetrics } from '@kit.ArkUI';
|
||||||
import { IBestInit } from "@ibestservices/ibest-ui-v2"
|
import { IBestInit } from "@ibestservices/ibest-ui-v2"
|
||||||
import {ExtractDir,CheckExistDir,HilogSadboxFontDirFile} from "../pages/ExtractDir/ExtractDir"
|
import {ExtractDir,CheckExistDir,HilogSadboxFontDirFile} from "../pages/ExtractDir/ExtractDir"
|
||||||
import {MainWindowStageInfo,InitGlobalDisplayWindowInfo,mwInfo, mwsInfo}from '../pages/DispWinInfo/DispWinInfo'
|
import {MainWindowStageInfo,InitGlobalDisplayWindowInfo,mwInfo}from '../pages/DispWinInfo/DispWinInfo'
|
||||||
const DOMAIN = 0x0000;
|
const DOMAIN = 0x0000;
|
||||||
|
|
||||||
export default class EntryAbility extends UIAbility {
|
export default class EntryAbility extends UIAbility {
|
||||||
private mainWindow: window.Window | undefined;
|
|
||||||
private subWindow: window.Window | undefined = undefined;
|
|
||||||
|
|
||||||
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
|
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
|
||||||
//InitFont->Copy Res/resfile/font to sandbox
|
//InitFont->Copy Res/resfile/font to sandbox
|
||||||
@ -64,12 +62,12 @@ export default class EntryAbility extends UIAbility {
|
|||||||
console.error(`Failed to obtain the main window. Code: ${err.code}, message: ${err.message}`);
|
console.error(`Failed to obtain the main window. Code: ${err.code}, message: ${err.message}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.mainWindow = data;
|
mwInfo.mainWin = data;
|
||||||
mwInfo.id = this.mainWindow.getWindowProperties().id;
|
mwInfo.id =data.getWindowProperties().id;
|
||||||
//moveWindowTo
|
//moveWindowTo
|
||||||
this.mainWindow.moveWindowTo(50, 50)
|
data.moveWindowTo(50, 50)
|
||||||
//resize mainWindow Size
|
//resize mainWindow Size
|
||||||
this.mainWindow.resize(mwInfo.width, mwInfo.height, (err) => {
|
data.resize(mwInfo.width, mwInfo.height, (err) => {
|
||||||
if (err.code) {
|
if (err.code) {
|
||||||
console.error(`Failed to resize the window. Code: ${err.code}, message: ${err.message}`);
|
console.error(`Failed to resize the window. Code: ${err.code}, message: ${err.message}`);
|
||||||
return;
|
return;
|
||||||
@ -78,7 +76,7 @@ export default class EntryAbility extends UIAbility {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// windowSizeChangeListener to Change mainWindowWidth&&mainWindowHeight in AppStorage
|
// windowSizeChangeListener to Change mainWindowWidth&&mainWindowHeight in AppStorage
|
||||||
this.mainWindow.on('windowSizeChange', (ChangeData) => {
|
data.on('windowSizeChange', (ChangeData) => {
|
||||||
// if Size Change save to AppStorage
|
// if Size Change save to AppStorage
|
||||||
mwInfo.width = ChangeData.width;
|
mwInfo.width = ChangeData.width;
|
||||||
mwInfo.height = ChangeData.height;
|
mwInfo.height = ChangeData.height;
|
||||||
@ -87,8 +85,8 @@ export default class EntryAbility extends UIAbility {
|
|||||||
});
|
});
|
||||||
let color: string = '#00000000';
|
let color: string = '#00000000';
|
||||||
try {
|
try {
|
||||||
this.mainWindow.setWindowBackgroundColor(color);
|
data.setWindowBackgroundColor(color);
|
||||||
this.mainWindow.setWindowShadowEnabled(true);
|
data.setWindowShadowEnabled(true);
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
console.error(`Failed to set the background color. Cause code: ${exception.code}, message: ${exception.message}`);
|
console.error(`Failed to set the background color. Cause code: ${exception.code}, message: ${exception.message}`);
|
||||||
};
|
};
|
||||||
@ -97,8 +95,8 @@ export default class EntryAbility extends UIAbility {
|
|||||||
|
|
||||||
onWindowStageDestroy(): void {
|
onWindowStageDestroy(): void {
|
||||||
AppStorageV2.remove<MainWindowStageInfo>(MainWindowStageInfo);
|
AppStorageV2.remove<MainWindowStageInfo>(MainWindowStageInfo);
|
||||||
if (this.mainWindow) {
|
if (mwInfo.mainWin) {
|
||||||
this.mainWindow = undefined;
|
mwInfo.mainWin = undefined;
|
||||||
}
|
}
|
||||||
// Main window is destroyed, release UI related resources
|
// Main window is destroyed, release UI related resources
|
||||||
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
|
hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { hilog } from '@kit.PerformanceAnalysisKit';
|
import { hilog } from '@kit.PerformanceAnalysisKit';
|
||||||
import { Execute } from '../EventSubWin/ExCom';
|
import { Execute } from '../EventHub/EventBase';
|
||||||
import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface";
|
import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface";
|
||||||
import { TitleModel } from "../LayoutInterface/Interface/ModelInterface";
|
import { TitleModel } from "../LayoutInterface/Interface/ModelInterface";
|
||||||
import { TitleTabData } from '../LayoutInterface/Layout/TitleTabData';
|
import { TitleTabData } from '../LayoutInterface/Layout/TitleTabData';
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { mwInfo } from '../DispWinInfo/DispWinInfo'
|
import { mwInfo } from '../DispWinInfo/DispWinInfo'
|
||||||
import { Execute } from "../EventSubWin/ExCom";
|
import { Execute } from "../EventHub/EventBase";
|
||||||
import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface";
|
import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface";
|
||||||
import {SwitchView} from "../LayoutInterface/Layout/SwitchView"
|
import {SwitchView} from "../LayoutInterface/Layout/SwitchView"
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { TitleGroup } from "../LayoutInterface/Interface/GroupInterface";
|
import { TitleGroup } from "../LayoutInterface/Interface/GroupInterface";
|
||||||
import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface";
|
import { TitleButton } from "../LayoutInterface/Interface/ButtonInterface";
|
||||||
import { Execute } from "../EventSubWin/ExCom";
|
import { Execute } from "../EventHub/EventBase";
|
||||||
import { mwInfo } from '../DispWinInfo/DispWinInfo'
|
import { mwInfo } from '../DispWinInfo/DispWinInfo'
|
||||||
import { BaseMenuData } from "../LayoutInterface/Interface/MenuInterface";
|
import { BaseMenuData } from "../LayoutInterface/Interface/MenuInterface";
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { AppStorageV2, display,window} from '@kit.ArkUI';
|
import { AppStorageV2, display,window ,UIContext} from '@kit.ArkUI';
|
||||||
|
|
||||||
//该文档主要储存屏幕信息,主窗口信息,窗口管理信息
|
//该文档主要储存屏幕信息,主窗口信息,窗口管理信息
|
||||||
//底部有全局信息变量,已导出,其他page只需要import该文件即可调用let变量
|
//底部有全局信息变量,已导出,其他page只需要import该文件即可调用let变量
|
||||||
|
|
||||||
@ObservedV2
|
@ObservedV2
|
||||||
export class MainDisplayInfo {
|
export class MainDisplayInfo {
|
||||||
@Trace public id: number;
|
@Trace public id: number;
|
||||||
@ -18,23 +18,24 @@ export class MainDisplayInfo {
|
|||||||
@ObservedV2
|
@ObservedV2
|
||||||
export class MainWindowInfo {
|
export class MainWindowInfo {
|
||||||
@Trace public id: number;
|
@Trace public id: number;
|
||||||
|
@Trace public mainWin: window.Window|undefined;
|
||||||
@Trace public width: number;
|
@Trace public width: number;
|
||||||
@Trace public height: number;
|
@Trace public height: number;
|
||||||
|
|
||||||
|
|
||||||
constructor(_id?:number,_width?: number, _height?: number) {
|
constructor(_id?:number,_mainWin?:window.Window,_width?: number, _height?: number) {
|
||||||
this.id = _width ?? 0;
|
this.id = _width ?? 0;
|
||||||
|
this.mainWin=_mainWin ?? undefined;
|
||||||
this.width = _height ?? 0;
|
this.width = _height ?? 0;
|
||||||
this.height=_id?? 0;
|
this.height=_id ?? 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ObservedV2
|
@ObservedV2
|
||||||
export class MainWindowStageInfo {
|
export class MainWindowStageInfo {
|
||||||
@Trace public winStage: window.WindowStage| undefined;
|
@Trace public winStage?: window.WindowStage;
|
||||||
|
|
||||||
constructor(_ws?: window.WindowStage) {
|
constructor(_ws?: window.WindowStage) {
|
||||||
this.winStage = _ws ?? undefined;
|
this.winStage = _ws;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,8 +46,10 @@ export async function InitGlobalDisplayWindowInfo(windowStage: window.WindowStag
|
|||||||
mainDisplayInfo.id = display.getDefaultDisplaySync().id;
|
mainDisplayInfo.id = display.getDefaultDisplaySync().id;
|
||||||
mainDisplayInfo.width = display.getDefaultDisplaySync().width;
|
mainDisplayInfo.width = display.getDefaultDisplaySync().width;
|
||||||
mainDisplayInfo.height = display.getDefaultDisplaySync().height;
|
mainDisplayInfo.height = display.getDefaultDisplaySync().height;
|
||||||
|
|
||||||
mainWindowInfo.width = mainDisplayInfo.width-100;
|
mainWindowInfo.width = mainDisplayInfo.width-100;
|
||||||
mainWindowInfo.height = mainDisplayInfo.height-200;
|
mainWindowInfo.height = mainDisplayInfo.height-200;
|
||||||
|
|
||||||
mainWindowStage.winStage = windowStage;
|
mainWindowStage.winStage = windowStage;
|
||||||
console.error(`Display Size:`,mainDisplayInfo.width,mainDisplayInfo.height);
|
console.error(`Display Size:`,mainDisplayInfo.width,mainDisplayInfo.height);
|
||||||
console.error(`MainWindow Size:`,mainWindowInfo.width,mainWindowInfo.height);
|
console.error(`MainWindow Size:`,mainWindowInfo.width,mainWindowInfo.height);
|
||||||
|
|||||||
41
entry/src/main/ets/pages/EventHub/EventBase.ets
Normal file
41
entry/src/main/ets/pages/EventHub/EventBase.ets
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface';
|
||||||
|
import { EventType } from '../LayoutInterface/Interface/BaseTypeInterface'
|
||||||
|
import {EventExecute} from './EventExecute'
|
||||||
|
import {EventPage} from './EventPage'
|
||||||
|
|
||||||
|
//执行事件
|
||||||
|
export function Execute(event:TitleButton){
|
||||||
|
if(event.btnEvent.type==EventType.EVENT){
|
||||||
|
EventExecute(event);
|
||||||
|
}else{
|
||||||
|
EventPage(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//随机ID
|
||||||
|
export function RndId(): string {
|
||||||
|
// 获取当前时间戳(毫秒)
|
||||||
|
const now = Date.now();
|
||||||
|
// 取时间戳的最后几位(例如4位)作为基础部分
|
||||||
|
const timePart = parseInt(now.toString().slice(-4));
|
||||||
|
// 生成剩余的4位随机数
|
||||||
|
const randomPart = Math.floor(Math.random() * 10000);
|
||||||
|
// 组合两部分,并取模和偏移以确保在8位数范围内
|
||||||
|
// 例如: timePart (0-9999) + randomPart (0-9999) -> sum (0-19998)
|
||||||
|
// 需要将其映射到 [10000000, 99999999]
|
||||||
|
// 结果在 [0, 89999999]
|
||||||
|
const combined = (timePart * 10000 + randomPart) % 90000000;
|
||||||
|
// 调整范围到 [10000000, 99999999]
|
||||||
|
return (combined + 10000000).toString();
|
||||||
|
}
|
||||||
|
//当前时间
|
||||||
|
export function CurrentTime():string {
|
||||||
|
let now = new Date();
|
||||||
|
// 格式化时间字符串
|
||||||
|
let year = now.getFullYear().toString();
|
||||||
|
let month = (now.getMonth() + 1).toString().padStart(2, '0'); // padStart 确保月份是两位数
|
||||||
|
let date = now.getDate().toString().padStart(2, '0');
|
||||||
|
let hours = now.getHours().toString().padStart(2, '0');
|
||||||
|
let minutes = now.getMinutes().toString().padStart(2, '0');
|
||||||
|
let seconds = now.getSeconds().toString().padStart(2, '0');
|
||||||
|
return`${year}-${month}-${date} ${hours}:${minutes}:${seconds}`;
|
||||||
|
}
|
||||||
31
entry/src/main/ets/pages/EventHub/EventExecute.ets
Normal file
31
entry/src/main/ets/pages/EventHub/EventExecute.ets
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface';
|
||||||
|
import { CreateXCompNode } from './XCompMgr';
|
||||||
|
import NativeOpenCAX from 'libopencax.so';
|
||||||
|
//事件类型:纯指令
|
||||||
|
export function EventExecute(event:TitleButton){
|
||||||
|
//事件处理
|
||||||
|
if(event?.btnEvent.command=='Execute_LoadModel'){
|
||||||
|
NativeOpenCAX.loadModel("/data/storage/el2/base/haps/entry/files/example/2027.stp");
|
||||||
|
}
|
||||||
|
if(event?.btnEvent.command=='Create_New'){
|
||||||
|
CreateXCompNode("");
|
||||||
|
}
|
||||||
|
//视图切换
|
||||||
|
if(event?.btnEvent.command=='CMD_VIEW_FRONT'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_FRONT");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_TOP'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_TOP");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_LEFT_SIDE'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_LEFT_SIDE");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_RIGHT_SIDE'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_RIGHT_SIDE");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_BOTTOM'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_BOTTOM");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_REAR'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_REAR");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_ISO'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_ISO");
|
||||||
|
}else if(event?.btnEvent.command=='CMD_VIEW_DIM'){
|
||||||
|
NativeOpenCAX.switchView("CMD_VIEW_DIM");
|
||||||
|
}
|
||||||
|
}
|
||||||
38
entry/src/main/ets/pages/EventHub/EventPage.ets
Normal file
38
entry/src/main/ets/pages/EventHub/EventPage.ets
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import { mwInfo } from '../DispWinInfo/DispWinInfo';
|
||||||
|
import { CloseSubWindow, CreateAndShowSubWindow, SubWinInfo } from '../SubWindow/SWBase';
|
||||||
|
import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface';
|
||||||
|
//事件类型:页面
|
||||||
|
export function EventPage(event:TitleButton){
|
||||||
|
//打开文件
|
||||||
|
if(event?.btnEvent.command=='Execute_OpenFile') {
|
||||||
|
const winInfo: SubWinInfo = new SubWinInfo(event.btnName, event.btnEvent.page, mwInfo.width * 0.5, mwInfo.height * 0.3);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
}
|
||||||
|
//窗体打开
|
||||||
|
if(event?.btnEvent.command=='Execute_CreateSubWindow'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.3,mwInfo.height*0.9);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
}else if(event?.btnEvent.command=='Execute_ExitSubWindow'){
|
||||||
|
CloseSubWindow();
|
||||||
|
} else if(event?.btnEvent.command=='Execute_CreateSubWindow_Options'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.6,mwInfo.height*0.9);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
} else if(event?.btnEvent.command=='Execute_NewFileWindow'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
}else if(event?.btnEvent.command=='Execute_SaveAsFileWindow'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
}else if(event?.btnEvent.command=='Execute_ImportFileWindow'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
}else if(event?.btnEvent.command=='Execute_ExportFileWindow'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
} else if(event?.btnEvent.command=='Open_NewModel'){
|
||||||
|
const winInfo:SubWinInfo=new SubWinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.6,mwInfo.height*0.9);
|
||||||
|
CreateAndShowSubWindow(winInfo);
|
||||||
|
} else if(event?.btnEvent.command=='Execute_ExitSubWindow_Options'){
|
||||||
|
CloseSubWindow();
|
||||||
|
}
|
||||||
|
}
|
||||||
67
entry/src/main/ets/pages/EventHub/XCompMgr.ets
Normal file
67
entry/src/main/ets/pages/EventHub/XCompMgr.ets
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import { AppStorageV2, NodeContent } from "@kit.ArkUI";
|
||||||
|
import {RndId} from './EventBase'
|
||||||
|
import NativeOpenCAX from 'libopencax.so';
|
||||||
|
|
||||||
|
@ObservedV2
|
||||||
|
export class XCompInfo{
|
||||||
|
@Trace nId?:string;
|
||||||
|
@Trace xId?:string;
|
||||||
|
@Trace name?:string;
|
||||||
|
@Trace icon?:string;
|
||||||
|
@Trace node?:NodeContent;
|
||||||
|
constructor(_nId?:string,_xId?: string, _name?: string,_icon?:string,_node?:NodeContent) {
|
||||||
|
this.nId = _nId ?? undefined;
|
||||||
|
this.xId = _xId ?? undefined;
|
||||||
|
this.name=_name?? undefined;
|
||||||
|
this.icon=_icon?? undefined;
|
||||||
|
this.node=_node?? undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObservedV2
|
||||||
|
export class XCompInfos{
|
||||||
|
@Trace infos?:Array<XCompInfo>;
|
||||||
|
constructor(_infos?:Array<XCompInfo>) {
|
||||||
|
this.infos = _infos ?? undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export let xcInfos:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
||||||
|
export let ctInfo: XCompInfo = AppStorageV2.connect<XCompInfo>(XCompInfo, () => new XCompInfo)!;
|
||||||
|
|
||||||
|
|
||||||
|
//初始化全局XComp管理
|
||||||
|
export function InitXCompNode(){
|
||||||
|
//数组为0表示初始化,Native侧这初始化主上下文,否则Native侧初始化共享上下文
|
||||||
|
const xcIs:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
||||||
|
xcIs.infos=new Array<XCompInfo>;
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建XComp组件
|
||||||
|
export function CreateXCompNode(name:string){
|
||||||
|
const xcIs:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
||||||
|
let xInfo:XCompInfo=new XCompInfo;
|
||||||
|
let initType:boolean=true;
|
||||||
|
xInfo.nId='n_'+RndId();
|
||||||
|
xInfo.xId='x_'+RndId();
|
||||||
|
xInfo.name=name+xInfo.xId;
|
||||||
|
xInfo.node=new NodeContent();
|
||||||
|
|
||||||
|
if((xcIs.infos as Array<XCompInfo>).length>0)
|
||||||
|
{
|
||||||
|
initType=true;
|
||||||
|
}else{
|
||||||
|
initType=false;
|
||||||
|
}
|
||||||
|
NativeOpenCAX.InitNativeNode(xInfo.nId,xInfo.xId,initType,xInfo.node);
|
||||||
|
(xcIs.infos as Array<XCompInfo>).push(xInfo);
|
||||||
|
console.log(`ArkUI Node ID: ${xInfo.nId}`);
|
||||||
|
console.log(`ArkUI XComp ID: ${xInfo.xId}`);
|
||||||
|
}
|
||||||
|
//获取当前XComp组件
|
||||||
|
export function CurrentXCompIndex(id:number):XCompInfo{
|
||||||
|
const xcIs:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
||||||
|
return ctInfo=(xcIs.infos as Array<XCompInfo>)[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1,152 +0,0 @@
|
|||||||
import { TitleButton } from '../LayoutInterface/Interface/ButtonInterface';
|
|
||||||
import { CloseSubWindow, CreateAndShowSubWindow, WinInfo} from './SWBase';
|
|
||||||
import NativeOpenCAX from 'libopencax.so';
|
|
||||||
import { mwInfo } from '../DispWinInfo/DispWinInfo'
|
|
||||||
import { AppStorageV2, NodeContent} from '@kit.ArkUI';
|
|
||||||
import { ModelViewTab } from '../ModelViewTab';
|
|
||||||
import {EventType} from '../LayoutInterface/Interface/BaseTypeInterface'
|
|
||||||
|
|
||||||
@ObservedV2
|
|
||||||
export class XCompInfo{
|
|
||||||
@Trace nId?:string;
|
|
||||||
@Trace xId?:string;
|
|
||||||
@Trace name?:string;
|
|
||||||
@Trace icon?:string;
|
|
||||||
@Trace node?:NodeContent;
|
|
||||||
constructor(_nId?:string,_xId?: string, _name?: string,_icon?:string,_node?:NodeContent) {
|
|
||||||
this.nId = _nId ?? undefined;
|
|
||||||
this.xId = _xId ?? undefined;
|
|
||||||
this.name=_name?? undefined;
|
|
||||||
this.icon=_icon?? undefined;
|
|
||||||
this.node=_node?? undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ObservedV2
|
|
||||||
export class XCompInfos{
|
|
||||||
@Trace infos?:Array<XCompInfo>;
|
|
||||||
constructor(_infos?:Array<XCompInfo>) {
|
|
||||||
this.infos = _infos ?? undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export let xcInfos:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
|
||||||
export let ctInfo: XCompInfo = AppStorageV2.connect<XCompInfo>(XCompInfo, () => new XCompInfo)!;
|
|
||||||
|
|
||||||
export function XNRandomId(): string {
|
|
||||||
// 获取当前时间戳(毫秒)
|
|
||||||
const now = Date.now();
|
|
||||||
// 取时间戳的最后几位(例如4位)作为基础部分
|
|
||||||
const timePart = parseInt(now.toString().slice(-4));
|
|
||||||
// 生成剩余的4位随机数
|
|
||||||
const randomPart = Math.floor(Math.random() * 10000);
|
|
||||||
// 组合两部分,并取模和偏移以确保在8位数范围内
|
|
||||||
// 例如: timePart (0-9999) + randomPart (0-9999) -> sum (0-19998)
|
|
||||||
// 需要将其映射到 [10000000, 99999999]
|
|
||||||
// 结果在 [0, 89999999]
|
|
||||||
const combined = (timePart * 10000 + randomPart) % 90000000;
|
|
||||||
// 调整范围到 [10000000, 99999999]
|
|
||||||
return (combined + 10000000).toString();
|
|
||||||
}
|
|
||||||
//初始化全局XComp管理
|
|
||||||
export function InitXCompNode(){
|
|
||||||
//数组为0表示初始化,Native侧这初始化主上下文,否则Native侧初始化共享上下文
|
|
||||||
const xcIs:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
|
||||||
xcIs.infos=new Array<XCompInfo>;
|
|
||||||
}
|
|
||||||
//创建XComp组件
|
|
||||||
export function CreateXCompNode(name:string){
|
|
||||||
const xcIs:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
|
||||||
let xInfo:XCompInfo=new XCompInfo;
|
|
||||||
xInfo.nId='n_'+XNRandomId();
|
|
||||||
xInfo.xId='x_'+XNRandomId();
|
|
||||||
xInfo.name=name+xInfo.xId;
|
|
||||||
xInfo.node=new NodeContent();
|
|
||||||
if((xcIs.infos as Array<XCompInfo>).length>0)
|
|
||||||
{
|
|
||||||
NativeOpenCAX.InitNativeNode(xInfo.nId,xInfo.xId,true,xInfo.node);
|
|
||||||
}else{
|
|
||||||
NativeOpenCAX.InitNativeNode(xInfo.nId,xInfo.xId,false,xInfo.node);
|
|
||||||
}
|
|
||||||
(xcIs.infos as Array<XCompInfo>).push(xInfo);
|
|
||||||
console.log(`ArkUI Node ID: ${xInfo.nId}`);
|
|
||||||
console.log(`ArkUI XComp ID: ${xInfo.xId}`);
|
|
||||||
}
|
|
||||||
//获取当前XComp组件
|
|
||||||
export function CurrentXCompIndex(id:number):XCompInfo{
|
|
||||||
const xcIs:XCompInfos = AppStorageV2.connect<XCompInfos>(XCompInfos, () => new XCompInfos)!;
|
|
||||||
return ctInfo=(xcIs.infos as Array<XCompInfo>)[id];
|
|
||||||
}
|
|
||||||
|
|
||||||
//执行事件
|
|
||||||
export function Execute(event:TitleButton){
|
|
||||||
if(event.btnEvent.type==EventType.EVENT){
|
|
||||||
ExecuteCommand(event);
|
|
||||||
}else{
|
|
||||||
ExecutePage(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//事件类型:页面
|
|
||||||
export function ExecutePage(event:TitleButton){
|
|
||||||
//打开文件
|
|
||||||
if(event?.btnEvent.command=='Execute_OpenFile') {
|
|
||||||
const winInfo: WinInfo = new WinInfo(event.btnName, event.btnEvent.page, mwInfo.width * 0.5, mwInfo.height * 0.3);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
}
|
|
||||||
//窗体打开
|
|
||||||
if(event?.btnEvent.command=='Execute_CreateSubWindow'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.3,mwInfo.height*0.9);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
}else if(event?.btnEvent.command=='Execute_ExitSubWindow'){
|
|
||||||
CloseSubWindow();
|
|
||||||
} else if(event?.btnEvent.command=='Execute_CreateSubWindow_Options'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.6,mwInfo.height*0.9);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
} else if(event?.btnEvent.command=='Execute_NewFileWindow'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
}else if(event?.btnEvent.command=='Execute_SaveAsFileWindow'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
}else if(event?.btnEvent.command=='Execute_ImportFileWindow'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
}else if(event?.btnEvent.command=='Execute_ExportFileWindow'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.4,mwInfo.height*0.4);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
} else if(event?.btnEvent.command=='Open_NewModel'){
|
|
||||||
const winInfo:WinInfo=new WinInfo(event.btnName,event.btnEvent.page,mwInfo.width*0.6,mwInfo.height*0.9);
|
|
||||||
CreateAndShowSubWindow(winInfo);
|
|
||||||
} else if(event?.btnEvent.command=='Execute_ExitSubWindow_Options'){
|
|
||||||
CloseSubWindow();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//事件类型:纯指令
|
|
||||||
export function ExecuteCommand(event:TitleButton){
|
|
||||||
|
|
||||||
//事件处理
|
|
||||||
if(event?.btnEvent.command=='Execute_LoadModel'){
|
|
||||||
NativeOpenCAX.loadModel("/data/storage/el2/base/haps/entry/files/example/2027.stp");
|
|
||||||
}
|
|
||||||
if(event?.btnEvent.command=='Create_New'){
|
|
||||||
CreateXCompNode("");
|
|
||||||
}
|
|
||||||
//视图切换
|
|
||||||
if(event?.btnEvent.command=='CMD_VIEW_FRONT'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_FRONT");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_TOP'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_TOP");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_LEFT_SIDE'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_LEFT_SIDE");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_RIGHT_SIDE'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_RIGHT_SIDE");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_BOTTOM'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_BOTTOM");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_REAR'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_REAR");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_ISO'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_ISO");
|
|
||||||
}else if(event?.btnEvent.command=='CMD_VIEW_DIM'){
|
|
||||||
NativeOpenCAX.switchView("CMD_VIEW_DIM");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,71 +0,0 @@
|
|||||||
import { BusinessError } from '@kit.BasicServicesKit';
|
|
||||||
import { window} from '@kit.ArkUI';
|
|
||||||
import { mwInfo, mwsInfo } from '../DispWinInfo/DispWinInfo'
|
|
||||||
let subWindow: window.Window | undefined = undefined;
|
|
||||||
|
|
||||||
export class WinInfo{
|
|
||||||
name:string|undefined=undefined;
|
|
||||||
page:string|undefined=undefined;
|
|
||||||
width:number=0;
|
|
||||||
height:number=0;
|
|
||||||
constructor(name?: string, page?: string,width?: number,height?: number) {
|
|
||||||
this.name = name??undefined;
|
|
||||||
this.page = page ?? undefined;
|
|
||||||
this.width = width ?? 0;
|
|
||||||
this.height = height ?? 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function CreateAndShowSubWindow(winInfo:WinInfo) {
|
|
||||||
try {
|
|
||||||
if(mwsInfo.winStage==null){
|
|
||||||
console.error('Failed to create the subwindow. Cause: windowStage is null');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let options: window.SubWindowOptions = {
|
|
||||||
title: winInfo.name as string,
|
|
||||||
decorEnabled: true,
|
|
||||||
isModal: false,
|
|
||||||
maximizeSupported: false,
|
|
||||||
outlineEnabled:true,
|
|
||||||
};
|
|
||||||
|
|
||||||
console.info('SubWindow Size:',winInfo.width,winInfo.height)
|
|
||||||
await mwsInfo.winStage.createSubWindowWithOptions('subWindow', options).then((data) => {
|
|
||||||
subWindow = data;
|
|
||||||
//子窗口创建成功后,设置子窗口的位置、大小及相关属性等。
|
|
||||||
subWindow.moveWindowTo(200, 200)
|
|
||||||
//子窗口重置大小
|
|
||||||
console.info("页面路径:", winInfo.page);
|
|
||||||
subWindow.resize(winInfo.width,winInfo.height);
|
|
||||||
subWindow.setUIContent(winInfo.page, (err: BusinessError) => {
|
|
||||||
if (err.code) {
|
|
||||||
console.error("加载页面失败:", err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// 显示窗口
|
|
||||||
subWindow.showWindow((err) => {
|
|
||||||
if (err.code) {
|
|
||||||
console.error("显示窗口失败:", err);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
subWindow.setResizeByDragEnabled(false);
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Failed to create or show sub window:', (error as BusinessError).message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function CloseSubWindow() {
|
|
||||||
if (subWindow) {
|
|
||||||
try {
|
|
||||||
subWindow.destroy();
|
|
||||||
subWindow = undefined;
|
|
||||||
console.info('Sub window closed.');
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Failed to close sub window:', (error as BusinessError).message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ export let DevModel:TitleModel= {
|
|||||||
{btnModel:[ModelType.BASE],btnName:'新建建模实例',btnNamed:'',btnIcon:'base_new_file',btnTips:'新建建模实例',btnEvent:{uid:'',command:'Create_New',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'新建建模实例',btnNamed:'',btnIcon:'base_new_file',btnTips:'新建建模实例',btnEvent:{uid:'',command:'Create_New',page:'',type:EventType.EVENT,args:[]}},
|
||||||
[
|
[
|
||||||
{btnModel:[ModelType.BASE],btnName:'加载模型',btnNamed:'',btnIcon:'base_new_file',btnTips:'加载模型',btnEvent:{uid:'',command:'Execute_LoadModel',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'加载模型',btnNamed:'',btnIcon:'base_new_file',btnTips:'加载模型',btnEvent:{uid:'',command:'Execute_LoadModel',type:EventType.EVENT,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'选择加载模型',btnNamed:'',btnIcon:'base_new_file',btnTips:'选择加载模型',btnEvent:{uid:'',command:'Execute_OpenFile',page:'pages/EventSubWin/File/SWOpenFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'选择加载模型',btnNamed:'',btnIcon:'base_new_file',btnTips:'选择加载模型',btnEvent:{uid:'',command:'Execute_OpenFile',page:'pages/SubWindow/File/SWOpenFile',type:EventType.PAGE,args:[]}},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{btnModel:[ModelType.BASE],btnName:'正等轴测图',btnNamed:'',btnIcon:'base_new_file',btnTips:'正等轴测图',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'正等轴测图',btnNamed:'',btnIcon:'base_new_file',btnTips:'正等轴测图',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
||||||
@ -33,14 +33,14 @@ export let DevModel:TitleModel= {
|
|||||||
{btnModel:[ModelType.BASE],btnName:'仰视图',btnNamed:'',btnIcon:'base_new_file',btnTips:'仰视图',btnEvent:{uid:'',command:'CMD_VIEW_BOTTOM',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'仰视图',btnNamed:'',btnIcon:'base_new_file',btnTips:'仰视图',btnEvent:{uid:'',command:'CMD_VIEW_BOTTOM',page:'',type:EventType.EVENT,args:[]}},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{btnModel:[ModelType.BASE],btnName:'创建文件',btnNamed:'',btnIcon:'base_new_file',btnTips:'创建文件',btnEvent:{uid:'',command:'Execute_NewFileWindow',page:'pages/EventSubWin/File/SWNewFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'创建文件',btnNamed:'',btnIcon:'base_new_file',btnTips:'创建文件',btnEvent:{uid:'',command:'Execute_NewFileWindow',page:'pages/SubWindow/File/SWNewFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'另存为',btnNamed:'',btnIcon:'base_new_file',btnTips:'另存为',btnEvent:{uid:'',command:'Execute_SaveAsFileWindow',page:'pages/EventSubWin/File/SWSaveAsFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'另存为',btnNamed:'',btnIcon:'base_new_file',btnTips:'另存为',btnEvent:{uid:'',command:'Execute_SaveAsFileWindow',page:'pages/SubWindow/File/SWSaveAsFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'导入文件',btnNamed:'',btnIcon:'base_new_file',btnTips:'导入文件',btnEvent:{uid:'',command:'Execute_ImportFileWindow',page:'pages/EventSubWin/File/SWImportFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'导入文件',btnNamed:'',btnIcon:'base_new_file',btnTips:'导入文件',btnEvent:{uid:'',command:'Execute_ImportFileWindow',page:'pages/SubWindow/File/SWImportFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'导出文件',btnNamed:'',btnIcon:'base_new_file',btnTips:'导出文件',btnEvent:{uid:'',command:'Execute_ExportFileWindow',page:'pages/EventSubWin/File/SWExportFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'导出文件',btnNamed:'',btnIcon:'base_new_file',btnTips:'导出文件',btnEvent:{uid:'',command:'Execute_ExportFileWindow',page:'pages/SubWindow/File/SWExportFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'创建子窗体',btnNamed:'',btnIcon:'base_new_file',btnTips:'创建子窗体',btnEvent:{uid:'',command:'Execute_CreateSubWindow',page:'pages/EventSubWin/SWExtrude',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'创建子窗体',btnNamed:'',btnIcon:'base_new_file',btnTips:'创建子窗体',btnEvent:{uid:'',command:'Execute_CreateSubWindow',page:'pages/SubWindow/SWExtrude',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'关闭子窗体',btnNamed:'',btnIcon:'base_new_file',btnTips:'关闭子窗体',btnEvent:{uid:'',command:'Execute_ExitSubWindow',page:'pages/EventSubWin/SWExtrude',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'关闭子窗体',btnNamed:'',btnIcon:'base_new_file',btnTips:'关闭子窗体',btnEvent:{uid:'',command:'Execute_ExitSubWindow',page:'pages/SubWindow/SWExtrude',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'首选项',btnNamed:'',btnIcon:'base_new_file',btnTips:'首选项',btnEvent:{uid:'',command:'Execute_CreateSubWindow_Options',page:'pages/EventSubWin/Options',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'首选项',btnNamed:'',btnIcon:'base_new_file',btnTips:'首选项',btnEvent:{uid:'',command:'Execute_CreateSubWindow_Options',page:'pages/SubWindow/Options',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'关闭',btnNamed:'',btnIcon:'base_new_file',btnTips:'关闭',btnEvent:{uid:'',command:'Execute_ExitSubWindow_Options',page:'pages/EventSubWin/Options',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'关闭',btnNamed:'',btnIcon:'base_new_file',btnTips:'关闭',btnEvent:{uid:'',command:'Execute_ExitSubWindow_Options',page:'pages/SubWindow/Options',type:EventType.PAGE,args:[]}},
|
||||||
|
|
||||||
]
|
]
|
||||||
],grpMenu:GroupActionMenu}] as Array<TitleGroup>
|
],grpMenu:GroupActionMenu}] as Array<TitleGroup>
|
||||||
|
|||||||
@ -10,17 +10,17 @@ export let TitleDefaultBars:Array<TitleModel>=
|
|||||||
{cmName:'主页',cmPage:'',cmTips:'',cmEvents:
|
{cmName:'主页',cmPage:'',cmTips:'',cmEvents:
|
||||||
[[[{ grpName:'文件', grpBtn:
|
[[[{ grpName:'文件', grpBtn:
|
||||||
[
|
[
|
||||||
{btnModel:[ModelType.BASE],btnName:'新建',btnNamed:'',btnIcon:'base_new_file',btnTips:'新建',btnEvent:{uid:'',command:'Execute_NewFileWindow',page:'pages/EventSubWin/File/SWNewFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'新建',btnNamed:'',btnIcon:'base_new_file',btnTips:'新建',btnEvent:{uid:'',command:'Execute_NewFileWindow',page:'pages/SubWindow/File/SWNewFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'打开',btnNamed:'',btnIcon:'base_open_file',btnTips:'打开',btnEvent:{uid:'',command:'Execute_OpenFile',page:'pages/EventSubWin/File/SWOpenFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'打开',btnNamed:'',btnIcon:'base_open_file',btnTips:'打开',btnEvent:{uid:'',command:'Execute_OpenFile',page:'pages/SubWindow/File/SWOpenFile',type:EventType.PAGE,args:[]}},
|
||||||
[
|
[
|
||||||
{btnModel:[ModelType.BASE],btnName:'保存',btnNamed:'',btnIcon:'base_save_file',btnTips:'保存',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'保存',btnNamed:'',btnIcon:'base_save_file',btnTips:'保存',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'另存为',btnNamed:'',btnIcon:'base_saveas_file',btnTips:'另存为',btnEvent:{uid:'',command:'Execute_SaveAsFileWindow',page:'pages/EventSubWin/File/SWSaveAsFile',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'另存为',btnNamed:'',btnIcon:'base_saveas_file',btnTips:'另存为',btnEvent:{uid:'',command:'Execute_SaveAsFileWindow',page:'pages/SubWindow/File/SWSaveAsFile',type:EventType.EVENT,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'保存全部',btnNamed:'',btnIcon:'base_saveall_file',btnTips:'保存全部',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'保存全部',btnNamed:'',btnIcon:'base_saveall_file',btnTips:'保存全部',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
||||||
] as Array<TitleButton>,
|
] as Array<TitleButton>,
|
||||||
{btnModel:[ModelType.BASE],btnName:'关闭',btnNamed:'',btnIcon:'base_close_file',btnTips:'关闭',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'关闭',btnNamed:'',btnIcon:'base_close_file',btnTips:'关闭',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'导入',btnNamed:'',btnIcon:'base_import_file',btnTips:'导入',btnEvent:{uid:'',command:'Execute_ImportFileWindow',page:'pages/EventSubWin/File/SWImportFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'导入',btnNamed:'',btnIcon:'base_import_file',btnTips:'导入',btnEvent:{uid:'',command:'Execute_ImportFileWindow',page:'pages/SubWindow/File/SWImportFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'导出',btnNamed:'',btnIcon:'base_export_file',btnTips:'导出',btnEvent:{uid:'',command:'Execute_ExportFileWindow',page:'pages/EventSubWin/File/SWExportFile',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'导出',btnNamed:'',btnIcon:'base_export_file',btnTips:'导出',btnEvent:{uid:'',command:'Execute_ExportFileWindow',page:'pages/SubWindow/File/SWExportFile',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'选项',btnNamed:'',btnIcon:'base_properties',btnTips:'选项',btnEvent:{uid:'',command:'Execute_CreateSubWindow_Options',page:'pages/EventSubWin/Options',type:EventType.PAGE,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'选项',btnNamed:'',btnIcon:'base_properties',btnTips:'选项',btnEvent:{uid:'',command:'Execute_CreateSubWindow_Options',page:'pages/SubWindow/Options',type:EventType.PAGE,args:[]}},
|
||||||
{btnModel:[ModelType.BASE],btnName:'帮助',btnNamed:'',btnIcon:'base_help_file',btnTips:'帮助',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
{btnModel:[ModelType.BASE],btnName:'帮助',btnNamed:'',btnIcon:'base_help_file',btnTips:'帮助',btnEvent:{uid:'',command:'CMD_VIEW_ISO',page:'',type:EventType.EVENT,args:[]}},
|
||||||
], grpMenu:GroupActionMenu }] as Array<TitleGroup>]]},
|
], grpMenu:GroupActionMenu }] as Array<TitleGroup>]]},
|
||||||
MatrixModel,
|
MatrixModel,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { hilog } from '@kit.PerformanceAnalysisKit';
|
import { hilog } from '@kit.PerformanceAnalysisKit';
|
||||||
import { mwInfo } from './DispWinInfo/DispWinInfo'
|
import { mwInfo } from './DispWinInfo/DispWinInfo'
|
||||||
import { AppStorageV2 } from '@kit.ArkUI';
|
import { AppStorageV2 } from '@kit.ArkUI';
|
||||||
import {InitXCompNode,XCompInfos,XCompInfo,CurrentXCompIndex} from './EventSubWin/ExCom'
|
import {InitXCompNode,XCompInfos,XCompInfo,CurrentXCompIndex} from './EventHub/XCompMgr'
|
||||||
|
|
||||||
|
|
||||||
@ComponentV2
|
@ComponentV2
|
||||||
|
|||||||
@ -2,23 +2,11 @@ import { common } from '@kit.AbilityKit';
|
|||||||
import { picker } from '@kit.CoreFileKit';
|
import { picker } from '@kit.CoreFileKit';
|
||||||
import type { BusinessError } from '@kit.BasicServicesKit';
|
import type { BusinessError } from '@kit.BasicServicesKit';
|
||||||
import { TextComboBox } from "../../CustomController/ComboBox";
|
import { TextComboBox } from "../../CustomController/ComboBox";
|
||||||
import {XNRandomId} from '../ExCom'
|
|
||||||
import { CreateModelType,DocUnitsType } from './FileStr';
|
import { CreateModelType,DocUnitsType } from './FileStr';
|
||||||
import { mwInfo } from '../../DispWinInfo/DispWinInfo'
|
import { mwInfo,mwsInfo } from '../../DispWinInfo/DispWinInfo'
|
||||||
|
import {CurrentTime,RndId} from '../../EventHub/EventBase'
|
||||||
import { window } from '@kit.ArkUI';
|
import { window } from '@kit.ArkUI';
|
||||||
|
|
||||||
function CurrentTime():string {
|
|
||||||
let now = new Date();
|
|
||||||
// 格式化时间字符串
|
|
||||||
let year = now.getFullYear().toString();
|
|
||||||
let month = (now.getMonth() + 1).toString().padStart(2, '0'); // padStart 确保月份是两位数
|
|
||||||
let date = now.getDate().toString().padStart(2, '0');
|
|
||||||
let hours = now.getHours().toString().padStart(2, '0');
|
|
||||||
let minutes = now.getMinutes().toString().padStart(2, '0');
|
|
||||||
let seconds = now.getSeconds().toString().padStart(2, '0');
|
|
||||||
|
|
||||||
return`${year}-${month}-${date} ${hours}:${minutes}:${seconds}`;
|
|
||||||
}
|
|
||||||
@Entry
|
@Entry
|
||||||
@ComponentV2
|
@ComponentV2
|
||||||
export struct SWNewFile {
|
export struct SWNewFile {
|
||||||
@ -29,9 +17,36 @@ export struct SWNewFile {
|
|||||||
@Local scaleBtn:number=0.05;
|
@Local scaleBtn:number=0.05;
|
||||||
//文本宽度统一缩放系数
|
//文本宽度统一缩放系数
|
||||||
@Local scalingText:number=0.04;
|
@Local scalingText:number=0.04;
|
||||||
|
@Local subWin: window.Window | undefined = undefined;
|
||||||
aboutToAppear(): void {
|
aboutToAppear(): void {
|
||||||
this.docCreateTime=CurrentTime();
|
this.docCreateTime=CurrentTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async initSubWindow(){
|
||||||
|
this.subWin= await mwsInfo.winStage?.createSubWindow('dirPicker');
|
||||||
|
this.subWin?.loadContent('pages/SubWindow/File/SWNewFile');
|
||||||
|
}
|
||||||
|
|
||||||
|
async selectDir(): Promise<string>{
|
||||||
|
let selectDirStr='';
|
||||||
|
let context =this.getUIContext().getHostContext() as common.Context;
|
||||||
|
if(this.subWin){
|
||||||
|
this.subWin.destroyWindow();
|
||||||
|
}
|
||||||
|
await this.initSubWindow();
|
||||||
|
try {
|
||||||
|
let documentSelectOptions = new picker.DocumentSelectOptions();
|
||||||
|
let documentPicker = new picker.DocumentViewPicker(context,this.subWin as window.Window);
|
||||||
|
documentSelectOptions.selectMode=picker.DocumentSelectMode.FOLDER;
|
||||||
|
documentPicker.select(documentSelectOptions,(err: BusinessError,documentSelectResult: Array<string>) => {
|
||||||
|
selectDirStr =documentSelectResult.toString();
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
const err: BusinessError = error as BusinessError;
|
||||||
|
console.error(`DocumentViewPicker failed with err: ${err.code}, ${err.message}`);
|
||||||
|
}
|
||||||
|
return selectDirStr;
|
||||||
|
}
|
||||||
build() {
|
build() {
|
||||||
Column({space:5}) {
|
Column({space:5}) {
|
||||||
Row({space:5}){
|
Row({space:5}){
|
||||||
@ -54,21 +69,8 @@ export struct SWNewFile {
|
|||||||
.fontColor($r('sys.color.font_emphasize'))
|
.fontColor($r('sys.color.font_emphasize'))
|
||||||
.fontWeight(FontWeight.Medium)
|
.fontWeight(FontWeight.Medium)
|
||||||
.fontSize($r('sys.float.Body_L'))
|
.fontSize($r('sys.float.Body_L'))
|
||||||
.onClick(() => {
|
.onClick(async () => {
|
||||||
let context = getContext(this) as common.Context;
|
this.dir= await this.selectDir();
|
||||||
try {
|
|
||||||
let documentSelectOptions = new picker.DocumentSelectOptions();
|
|
||||||
let documentPicker = new picker.DocumentViewPicker(context);
|
|
||||||
documentPicker.select(documentSelectOptions,(err: BusinessError,documentSelectResult: Array<string>) => {
|
|
||||||
this.dir =documentSelectResult.toString();
|
|
||||||
if (documentSelectResult.length === 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
const err: BusinessError = error as BusinessError;
|
|
||||||
console.error(`DocumentViewPicker failed with err: ${err.code}, ${err.message}`);
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}.height('10%')
|
}.height('10%')
|
||||||
Row({space:5}){
|
Row({space:5}){
|
||||||
@ -81,7 +83,7 @@ export struct SWNewFile {
|
|||||||
.fontWeight(FontWeight.Medium)
|
.fontWeight(FontWeight.Medium)
|
||||||
.fontSize($r('sys.float.Body_L'))
|
.fontSize($r('sys.float.Body_L'))
|
||||||
.onClick(() => {
|
.onClick(() => {
|
||||||
this.fileName='OpenCAX_'+XNRandomId();
|
this.fileName='OpenCAX_'+RndId();
|
||||||
})
|
})
|
||||||
}.height('10%')
|
}.height('10%')
|
||||||
Row({space:5}){
|
Row({space:5}){
|
||||||
75
entry/src/main/ets/pages/SubWindow/SWBase.ets
Normal file
75
entry/src/main/ets/pages/SubWindow/SWBase.ets
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import { BusinessError } from '@kit.BasicServicesKit';
|
||||||
|
import { window } from '@kit.ArkUI';
|
||||||
|
import { mwsInfo } from '../DispWinInfo/DispWinInfo'
|
||||||
|
|
||||||
|
//窗体信息
|
||||||
|
export class SubWinInfo{
|
||||||
|
name?:string;
|
||||||
|
page?:string;
|
||||||
|
subWin?:window.Window;
|
||||||
|
subOpt?:window.SubWindowOptions;
|
||||||
|
subPointX?:number=200;
|
||||||
|
subPointY?:number=200;
|
||||||
|
width?:number=0;
|
||||||
|
height?:number=0;
|
||||||
|
constructor(name?: string, page?: string,width?: number,height?: number) {
|
||||||
|
this.name = name;
|
||||||
|
this.page = page;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//窗体保存容器
|
||||||
|
let subWins:Map<string,SubWinInfo>=new Map<string,SubWinInfo>;
|
||||||
|
|
||||||
|
export async function CreateAndShowSubWindow(subWinInfo:SubWinInfo) {
|
||||||
|
try {
|
||||||
|
if(mwsInfo.winStage==null){
|
||||||
|
console.error('Failed to create the subwindow. Cause: windowStage is null');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let options: window.SubWindowOptions = {
|
||||||
|
title: subWinInfo.name as string,
|
||||||
|
decorEnabled: true,
|
||||||
|
isModal: false,
|
||||||
|
maximizeSupported: false,
|
||||||
|
outlineEnabled:true,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.info('SubWindow Size:',subWinInfo.width,subWinInfo.height)
|
||||||
|
await mwsInfo.winStage.createSubWindowWithOptions(subWinInfo.name as string, options).then((data) => {
|
||||||
|
console.info("页面路径:", subWinInfo.page);
|
||||||
|
subWinInfo.subWin = data;
|
||||||
|
//子窗口显示位置
|
||||||
|
data.moveWindowTo(subWinInfo.subPointX, subWinInfo.subPointY)
|
||||||
|
//子窗口重置大小
|
||||||
|
data.resize(subWinInfo.width,subWinInfo.height);
|
||||||
|
data.setUIContent(subWinInfo.page, (err: BusinessError) => {
|
||||||
|
if (err.code) {
|
||||||
|
console.error("加载页面失败:", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 显示窗口
|
||||||
|
data.showWindow((err) => {
|
||||||
|
if (err.code) {
|
||||||
|
console.error("显示窗口失败:", err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
data.setResizeByDragEnabled(false);
|
||||||
|
})
|
||||||
|
subWins[subWinInfo.name as string]=subWinInfo;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to create or show sub window:', (error as BusinessError).message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function CloseSubWindow() {
|
||||||
|
try {
|
||||||
|
console.info('Sub window closed.');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to close sub window:', (error as BusinessError).message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"src": [
|
"src": [
|
||||||
"pages/Index",
|
"pages/Index",
|
||||||
"pages/EventSubWin/SWLine",
|
"pages/SubWindow/SWLine",
|
||||||
"pages/EventSubWin/SWExtrude",
|
"pages/SubWindow/SWExtrude",
|
||||||
"pages/EventSubWin/Options",
|
"pages/SubWindow/Options",
|
||||||
"pages/EventSubWin/File/SWNewFile",
|
"pages/SubWindow/File/SWNewFile",
|
||||||
"pages/EventSubWin/File/SWSaveAsFile",
|
"pages/SubWindow/File/SWSaveAsFile",
|
||||||
"pages/EventSubWin/File/SWImportFile",
|
"pages/SubWindow/File/SWImportFile",
|
||||||
"pages/EventSubWin/File/SWExportFile",
|
"pages/SubWindow/File/SWExportFile",
|
||||||
"pages/EventSubWin/File/SWOpenFile"
|
"pages/SubWindow/File/SWOpenFile"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user