import { SymbolGlyphModifier } from "@kit.ArkUI"; @ComponentV2 struct FileMenu { @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "新建", labelInfo: "Ctrl+N" }); MenuItem({ content: "打开", labelInfo: "Ctrl+O" }); MenuItem({ content: "最近文档", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')) }); MenuItem({ content: "标注PDF" }); MenuItem({ content: "保存", labelInfo: "Ctrl+S" }); MenuItem({ content: "另存为", labelInfo: "Shift+Ctrl+S" }); } MenuItemGroup() { MenuItem({ content: "导出为PDF" }); MenuItem({ content: "导出为...", labelInfo: "Ctrl+E" }); } MenuItemGroup() { MenuItem({ content: "打印", labelInfo: "Ctrl+P" }); MenuItem({ content: "退出", labelInfo: "Ctrl+Q" }); } } } build() { Text("文件") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 struct EditMenu { @Local condition: boolean[] = [true, true]; @Builder buildArrangeMenu() { Menu() { MenuItem({ content: "移到最前" }); MenuItem({ content: "上移一层" }); MenuItem({ content: "下移一层" }); MenuItem({ content: "移到最后" }); } } @Builder buildToolMenu() { Menu() { MenuItemGroup() {} MenuItemGroup() { MenuItem({ content: "管理" }); MenuItem({ content: "设置" }); } } } @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "撤销", labelInfo: "Ctrl+Z" }); MenuItem({ content: "重复", labelInfo: "Shift+Ctrl+Z" }); } MenuItemGroup() { MenuItem({ content: "剪切", labelInfo: "Ctrl+X" }); MenuItem({ content: "拷贝", labelInfo: "Ctrl+C" }); MenuItem({ content: "粘贴", labelInfo: "Ctrl+V" }); } MenuItemGroup() { MenuItem({ content: "全选", labelInfo: "Ctrl+A" }); } MenuItemGroup() { MenuItem({ content: "查找", labelInfo: "Ctrl+F" }); } MenuItemGroup() { MenuItem({ content: "删除", labelInfo: "Delete" }); } MenuItemGroup() { MenuItem({ content: "排列选择", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildArrangeMenu.bind(this) }); } MenuItemGroup() { MenuItem({ content: "上移选区图层" }); MenuItem({ content: "下移选区图层" }); } MenuItemGroup() { MenuItem({ content: "旋转吸附" }) .selected(this.condition[0]) .selectIcon(true) .onChange((isSelected: boolean) => { this.condition[0] = isSelected; }); MenuItem({ content: "网格吸附" }) .selected(this.condition[1]) .selectIcon(true) .onChange((isSelected: boolean) => { this.condition[1] = isSelected; }); } MenuItemGroup() { MenuItem({ content: "首选项" }); MenuItem({ content: "工具栏", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildToolMenu.bind(this) }); } } } build() { Text("编辑") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 struct ViewMenu { @Local menu1: boolean[] = [false, false, false]; @Local menu2: boolean[] = [true, true, false]; @Local condition: boolean = true; @Local layout1: number = 1; @Local layout2: number = 1; @Local layout3: number = 1; @Local row_col: number = 1; @Builder buildLayoutMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "水平" }) .selected(this.layout1 === 1) .selectIcon(true) .onChange(() => { this.layout1 = 1; }) MenuItem({ content: "垂直" }) .selected(this.layout1 === 2) .selectIcon(true) .onChange(() => { this.layout1 = 2; }); } MenuItemGroup() { MenuItem({ content: "水平" }) .selected(this.layout1 === 1) .selectIcon(true) .onChange(() => { this.layout1 = 1; }) MenuItem({ content: "垂直" }) .selected(this.layout1 === 2) .selectIcon(true) .onChange(() => { this.layout1 = 2; }); } MenuItemGroup() { MenuItem({ content: "从左到右" }) .selected(this.layout2 === 1) .selectIcon(true) .onChange(() => { this.layout2 = 1; }) MenuItem({ content: "从右到左" }) .selected(this.layout2 === 2) .selectIcon(true) .onChange(() => { this.layout2 = 2; }); } MenuItemGroup() { MenuItem({ content: "从上到下" }) .selected(this.layout3 === 1) .selectIcon(true) .onChange(() => { this.layout3 = 1; }) MenuItem({ content: "从下到上" }) .selected(this.layout3 === 2) .selectIcon(true) .onChange(() => { this.layout3 = 2; }); } } } @Builder buildColMenu() { Menu() { MenuItem({ content: "1列" }) .selected(this.row_col === 1) .selectIcon(true) .onChange(() => { this.row_col = 1; }); MenuItem({ content: "2列" }) .selected(this.row_col === 2) .selectIcon(true) .onChange(() => { this.row_col = 2; }); MenuItem({ content: "3列" }) .selected(this.row_col === 3) .selectIcon(true) .onChange(() => { this.row_col = 3; }); MenuItem({ content: "4列" }) .selected(this.row_col === 4) .selectIcon(true) .onChange(() => { this.row_col = 4; }); MenuItem({ content: "5列" }) .selected(this.row_col === 5) .selectIcon(true) .onChange(() => { this.row_col = 5; }); MenuItem({ content: "6列" }) .selected(this.row_col === 6) .selectIcon(true) .onChange(() => { this.row_col = 6; }); MenuItem({ content: "7列" }) .selected(this.row_col === 7) .selectIcon(true) .onChange(() => { this.row_col = 7; }); MenuItem({ content: "8列" }) .selected(this.row_col === 8) .selectIcon(true) .onChange(() => { this.row_col = 8; }); } } @Builder buildRowMenu() { Menu() { MenuItem({ content: "1行" }) .selected(this.row_col === 9) .selectIcon(true) .onChange(() => { this.row_col = 9; }); MenuItem({ content: "2行" }) .selected(this.row_col === 10) .selectIcon(true) .onChange(() => { this.row_col = 10; }); MenuItem({ content: "3行" }) .selected(this.row_col === 11) .selectIcon(true) .onChange(() => { this.row_col = 11; }); MenuItem({ content: "4行" }) .selected(this.row_col === 12) .selectIcon(true) .onChange(() => { this.row_col = 12; }); MenuItem({ content: "5行" }) .selected(this.row_col === 13) .selectIcon(true) .onChange(() => { this.row_col = 13; }); MenuItem({ content: "6行" }) .selected(this.row_col === 14) .selectIcon(true) .onChange(() => { this.row_col = 14; }); MenuItem({ content: "7行" }) .selected(this.row_col === 15) .selectIcon(true) .onChange(() => { this.row_col = 15; }); MenuItem({ content: "8行" }) .selected(this.row_col === 16) .selectIcon(true) .onChange(() => { this.row_col = 16; }); } } @Builder buildColRowMenu() { Menu() { MenuItem({ content: "设置列", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildColMenu.bind(this) }); MenuItem({ content: "设置行", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildRowMenu.bind(this) }); } } @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "双页模式" }) .selected(this.menu1[0]) .selectIcon(true) .onChange((isSelected: boolean) => { this.menu1[0] = isSelected; }); MenuItem({ content: "演讲模式", labelInfo: "F5" }) .selected(this.menu1[1]) .selectIcon(true) .onChange((isSelected: boolean) => { this.menu1[1] = isSelected; }); MenuItem({ content: "全屏", labelInfo: "F11" }) .selected(this.menu1[2]) .selectIcon(true) .onChange((isSelected: boolean) => { this.menu1[2] = isSelected; }); } MenuItemGroup() { MenuItem({ content: "显示工具栏", labelInfo: "F9" }) .selected(this.menu2[0]) .selectIcon(true) .onChange((isSelected: boolean) => { this.menu2[0] = isSelected; }); MenuItem({ content: "显示菜单", labelInfo: "F10" }) .selected(this.menu2[1]) .selectIcon(true) .onChange((isSelected: boolean) => { this.menu2[1] = isSelected; }); MenuItem({ content: "显示侧边栏", labelInfo: "F12" }) .selected(this.menu2[2]) .selectIcon(true) .onChange((isSelected: boolean) => { this.menu2[2] = isSelected; }); } MenuItemGroup() { MenuItem({ content: "布局", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildLayoutMenu.bind(this) }); MenuItem({ content: "列/行", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildColRowMenu.bind(this) }); } MenuItemGroup() { MenuItem({ content: "放大", labelInfo: "Ctrl++" }); MenuItem({ content: "缩小", labelInfo: "Ctrl+-" }); MenuItem({ content: "正常大小" }); MenuItem({ content: "缩放至适合大小" }) .selected(this.condition) .selectIcon(true) .onChange((isSelected: boolean) => { this.condition = isSelected; }); } } } build() { Text("视图") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 struct NavigationMenu { @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "首页", labelInfo: "Ctrl+Home" }); MenuItem({ content: "前一页", labelInfo: "Ctrl+Page Up" }); MenuItem({ content: "转到页面", labelInfo: "Ctrl+G" }); MenuItem({ content: "下一页", labelInfo: "Ctrl+Page Down" }); MenuItem({ content: "末页", labelInfo: "Ctrl+End" }); } MenuItemGroup() { MenuItem({ content: "上一个图层", labelInfo: "Shift+Page Down" }); MenuItem({ content: "下一个图层", labelInfo: "Shift+Page Up" }); MenuItem({ content: "顶层" }); } MenuItemGroup() { MenuItem({ content: "下一个标注页面", labelInfo: "Shift+Ctrl+Page Down" }); MenuItem({ content: "上一个标注页面", labelInfo: "Shift+Ctrl+Page Up" }); } } } build() { Text("导航") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 struct PageMenu { @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "新建前页" }); MenuItem({ content: "新建后页", labelInfo: "Ctrl+D" }); MenuItem({ content: "新建尾页" }); MenuItem({ content: "复制页面" }); MenuItem({ content: "添加新的PDF页面" }); MenuItem({ content: "配置页模板" }); MenuItem({ content: "删除页面", labelInfo: "Shift+Ctrl+Delete" }); } MenuItemGroup() { MenuItem({ content: "在活动图层上方添加一个图层", labelInfo: "Ctrl+L" }); MenuItem({ content: "在活动图层下方添加一个图层" }); MenuItem({ content: "删除图层", labelInfo: "Shift+Ctrl+L" }); MenuItem({ content: "向下合并图层", labelInfo: "Ctrl+M" }); MenuItem({ content: "重命名图层", labelInfo: "Ctrl+R" }); } MenuItemGroup() { MenuItem({ content: "纸张样式" }); MenuItem({ content: "纸张颜色" }); MenuItem({ content: "纸张背景", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')) }); } } } build() { Text("页面") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 struct ToolMenu { @Local menu1: number = 1; @Local draw_type: boolean[] = [false, false, false, false, false, false, false, false]; @Local set_square: boolean = false; @Local compass: boolean = false; @Local is_record: boolean = false; @Local is_pause: boolean = false; @Local pen_weight: number = 2; @Local eraser_weight: number = 3; @Local highlight_weight: number = 3; @Local pen_style: number = 1; @Local pen_fill: boolean = false; @Local highlight_fill: boolean = false; @Builder buildDrawTypeMenu() { Menu() { MenuItem({ content: "形状识别", labelInfo: "Ctrl+1" }) .selected(this.draw_type[0]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[0] = isSelected; }); MenuItem({ content: "绘制矩形", labelInfo: "Ctrl+2" }) .selected(this.draw_type[1]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[1] = isSelected; }); MenuItem({ content: "绘制椭圆", labelInfo: "Ctrl+3" }) .selected(this.draw_type[2]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[2] = isSelected; }); MenuItem({ content: "绘制箭头", labelInfo: "Ctrl+4" }) .selected(this.draw_type[3]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[3] = isSelected; }); MenuItem({ content: "绘制双箭头", labelInfo: "Ctrl+5" }) .selected(this.draw_type[4]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[4] = isSelected; }); MenuItem({ content: "绘制坐标系统", labelInfo: "Ctrl+6" }) .selected(this.draw_type[5]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[5] = isSelected; }); MenuItem({ content: "绘制直线", labelInfo: "Ctrl+7" }) .selected(this.draw_type[6]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[6] = isSelected; }); MenuItem({ content: "绘制样条曲线", labelInfo: "Ctrl+8" }) .selected(this.draw_type[7]) .selectIcon(true) .onChange((isSelected: boolean) => { this.draw_type[7] = isSelected; }); } } @Builder buildPenMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "极细" }) .selected(this.pen_weight == 1) .selectIcon(true) .onChange(() => { this.pen_weight = 1; }); MenuItem({ content: "细" }) .selected(this.pen_weight == 2) .selectIcon(true) .onChange(() => { this.pen_weight = 2; }); MenuItem({ content: "中" }) .selected(this.pen_weight == 3) .selectIcon(true) .onChange(() => { this.pen_weight = 3; }); MenuItem({ content: "粗" }) .selected(this.pen_weight == 4) .selectIcon(true) .onChange(() => { this.pen_weight = 4; }); MenuItem({ content: "极粗" }) .selected(this.pen_weight == 5) .selectIcon(true) .onChange(() => { this.pen_weight = 5; }); } MenuItemGroup() { MenuItem({ content: "标准" }) .selected(this.pen_style == 1) .selectIcon(true) .onChange(() => { this.pen_style = 1; }); MenuItem({ content: "横虚线" }) .selected(this.pen_style == 2) .selectIcon(true) .onChange(() => { this.pen_style = 2; }); MenuItem({ content: "点划线" }) .selected(this.pen_style == 3) .selectIcon(true) .onChange(() => { this.pen_style = 3; }); MenuItem({ content: "点虚线" }) .selected(this.pen_style == 4) .selectIcon(true) .onChange(() => { this.pen_style = 4; }); } MenuItemGroup() { MenuItem({ content: "填充" }) .selected(this.pen_fill) .selectIcon(true) .onChange((isSelected: boolean) => { this.pen_fill = isSelected; }); MenuItem({ content: "填充不透明度" }); } } } @Builder buildEraserMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "极细" }) .selected(this.eraser_weight == 1) .selectIcon(true) .onChange(() => { this.eraser_weight = 1; }); MenuItem({ content: "细" }) .selected(this.eraser_weight == 2) .selectIcon(true) .onChange(() => { this.eraser_weight = 2; }); MenuItem({ content: "中" }) .selected(this.eraser_weight == 3) .selectIcon(true) .onChange(() => { this.eraser_weight = 3; }); MenuItem({ content: "粗" }) .selected(this.eraser_weight == 4) .selectIcon(true) .onChange(() => { this.eraser_weight = 4; }); MenuItem({ content: "极粗" }) .selected(this.eraser_weight == 5) .selectIcon(true) .onChange(() => { this.eraser_weight = 5; }); } MenuItemGroup() { MenuItem({ content: "标准" }); MenuItem({ content: "涂白" }); MenuItem({ content: "删除笔划" }); } } } @Builder buildHighLightMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "极细" }) .selected(this.highlight_weight == 1) .selectIcon(true) .onChange(() => { this.highlight_weight = 1; }); MenuItem({ content: "细" }) .selected(this.highlight_weight == 2) .selectIcon(true) .onChange(() => { this.highlight_weight = 2; }); MenuItem({ content: "中" }) .selected(this.highlight_weight == 3) .selectIcon(true) .onChange(() => { this.highlight_weight = 3; }); MenuItem({ content: "粗" }) .selected(this.highlight_weight == 4) .selectIcon(true) .onChange(() => { this.highlight_weight = 4; }); MenuItem({ content: "极粗" }) .selected(this.highlight_weight == 5) .selectIcon(true) .onChange(() => { this.highlight_weight = 5; }); } MenuItemGroup() { MenuItem({ content: "填充" }) .selected(this.highlight_fill) .selectIcon(true) .onChange((isSelected: boolean) => { this.highlight_fill = isSelected; }); MenuItem({ content: "填充不透明度" }); } } } @Builder buildPDFMenu() { Menu() { MenuItem({ content: "标记不透明度" }); } } @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "画笔", labelInfo: "Shift+Ctrl+P" }) .selected(this.menu1 == 1) .selectIcon(true) .onChange(() => { this.menu1 = 1; }); MenuItem({ content: "橡皮", labelInfo: "Shift+Ctrl+E" }) .selected(this.menu1 == 2) .selectIcon(true) .onChange(() => { this.menu1 = 2; }); MenuItem({ content: "选择连续文本", labelInfo: "Shift+Ctrl+W" }) .selected(this.menu1 == 3) .selectIcon(true) .onChange(() => { this.menu1 = 3; }); MenuItem({ content: "在矩形中选择文本", labelInfo: "Shift+Ctrl+Y" }) .selected(this.menu1 == 4) .selectIcon(true) .onChange(() => { this.menu1 = 4; }); MenuItem({ content: "荧光笔", labelInfo: "Shift+Ctrl+H" }) .selected(this.menu1 == 5) .selectIcon(true) .onChange(() => { this.menu1 = 5; }); MenuItem({ content: "文本", labelInfo: "Shift+Ctrl+T" }) .selected(this.menu1 == 6) .selectIcon(true) .onChange(() => { this.menu1 = 6; }); MenuItem({ content: "图像", labelInfo: "Shift+Ctrl+I" }) .selected(this.menu1 == 7) .selectIcon(true) .onChange(() => { this.menu1 = 7; }); MenuItem({ content: "默认工具", labelInfo: "Shift+Ctrl+D" }); } MenuItemGroup() { MenuItem({ content: "绘制类型", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildDrawTypeMenu.bind(this) }); } MenuItemGroup() { MenuItem({ content: "选择矩形", labelInfo: "Shift+Ctrl+R" }) .selected(this.menu1 == 8) .selectIcon(true) .onChange(() => { this.menu1 = 8; }); MenuItem({ content: "选择区域", labelInfo: "Shift+Ctrl+G" }) .selected(this.menu1 == 9) .selectIcon(true) .onChange(() => { this.menu1 = 9; }); MenuItem({ content: "选择多层矩形" }) .selected(this.menu1 == 10) .selectIcon(true) .onChange(() => { this.menu1 = 10; }); MenuItem({ content: "选择多层区域" }) .selected(this.menu1 == 11) .selectIcon(true) .onChange(() => { this.menu1 = 11; }); MenuItem({ content: "选择对象", labelInfo: "Shift+Ctrl+O" }) .selected(this.menu1 == 12) .selectIcon(true) .onChange(() => { this.menu1 = 12; }); MenuItem({ content: "垂直间距", labelInfo: "Shift+Ctrl+V" }) .selected(this.menu1 == 13) .selectIcon(true) .onChange(() => { this.menu1 = 13; }); MenuItem({ content: "播放对象" }) .selected(this.menu1 == 14) .selectIcon(true) .onChange(() => { this.menu1 = 14; }); MenuItem({ content: "手形工具", labelInfo: "Shift+Ctrl+A" }) .selected(this.menu1 == 15) .selectIcon(true) .onChange(() => { this.menu1 = 15; }); MenuItem({ content: "三角板" }) .selected(this.set_square) .selectIcon(true) .onChange((isSelected: boolean) => { this.set_square = isSelected; }); MenuItem({ content: "圆规" }) .selected(this.compass) .selectIcon(true) .onChange((isSelected: boolean) => { this.compass = isSelected; }); } MenuItemGroup() { MenuItem({ content: "画笔选项", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildPenMenu.bind(this) }); MenuItem({ content: "橡皮选项", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildEraserMenu.bind(this) }); MenuItem({ content: "高亮选项", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildHighLightMenu.bind(this) }); MenuItem({ content: "选择PDF文件选项", symbolEndIcon: new SymbolGlyphModifier($r('sys.symbol.chevron_right')), builder: this.buildPDFMenu.bind(this) }); MenuItem({ content: "文本字体" }); MenuItem({ content: "录制/停止" }) .selected(this.is_record) .selectIcon(true) .onChange((isSelected: boolean) => { this.is_record = isSelected; }); MenuItem({ content: "暂停" }) .selected(this.is_pause) .selectIcon(true) .onChange((isSelected: boolean) => { this.is_pause = isSelected; }); MenuItem({ content: "停止" }); MenuItem({ content: "下一步" }); MenuItem({ content: "后退" }); MenuItem({ content: "插入/编辑TeX", labelInfo: "Shift+Ctrl+X" }); } } } build() { Text("工具") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 struct PluginsMenu { @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "插件管理器" }); } } } build() { Text("插件") .margin('12vp') .bindMenu(this.buildMenu) } } @ComponentV2 struct HelpMenu { @Builder buildMenu() { Menu() { MenuItemGroup() { MenuItem({ content: "帮助" }); MenuItem({ content: "关于" }); } } } build() { Text("帮助") .margin('12vp') .bindMenu(this.buildMenu()); } } @ComponentV2 export struct Menubar { build() { Row() { FileMenu(); EditMenu(); ViewMenu(); NavigationMenu(); PageMenu(); ToolMenu(); PluginsMenu(); HelpMenu(); } } }