diff --git a/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts b/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts index 09b1363..5a24afd 100644 --- a/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts +++ b/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts @@ -7,6 +7,7 @@ export default defineWidget({ title: '模型', icon: renderIcon('antd ClusterOutlined'), side: 'left', + shortcut: 'key-F12', order: 1, component: ModeltreeView }) \ No newline at end of file diff --git a/src/designer/viewWidgets/property/PropertyMeta.ts b/src/designer/viewWidgets/property/PropertyMeta.ts index 27450a8..073c016 100644 --- a/src/designer/viewWidgets/property/PropertyMeta.ts +++ b/src/designer/viewWidgets/property/PropertyMeta.ts @@ -6,6 +6,7 @@ export default defineWidget({ name: 'property', title: '属性', icon: renderIcon('element Memo'), + shortcut: 'key-F4', side: 'right', order: 1, component: PropertyView diff --git a/src/runtime/DefineWidget.ts b/src/runtime/DefineWidget.ts index 7c460c8..b1d76d6 100644 --- a/src/runtime/DefineWidget.ts +++ b/src/runtime/DefineWidget.ts @@ -6,6 +6,7 @@ export interface WidgetOption { name: string title?: string icon: Component + shortcut?: string side: WidgetSide component: Component order?: number @@ -48,6 +49,10 @@ export function getWidgetByName(name: string): WidgetOption | undefined { return _widgetMap.get(name) } +export function getAllWidget(): WidgetOption[] { + return Array.from(_widgetMap.values()).sort((a, b) => (a.order || 0) - (b.order || 0)) +} + /** * 定义一个 Widget */ diff --git a/src/utils/webutils.ts b/src/utils/webutils.ts index 35353db..ef9f61b 100644 --- a/src/utils/webutils.ts +++ b/src/utils/webutils.ts @@ -1,9 +1,23 @@ +import _ from 'lodash' import { h } from 'vue' import * as AntdIcon from '@vicons/antd' import { ElIcon } from 'element-plus' import * as FaIcon from '@vicons/fa' import * as ElementPlusIconsVue from '@element-plus/icons-vue' +export function normalizeShortKey(key: string): string { + // 如果 menu.tip 中包含 ctrl/shift/alt/key- 等修饰键,并且 click 事件存在,则需要使用 hotkeys 绑定 + if (key && /ctrl|shift|alt|key-/i.test(_.toLower(key))) { + // 规格话 tip 描述,比如 ctrl变成^, shift变成⇧, space 变成 alt变成!, key-变成空格 + + // key- 可能是 key-r, key-s, 等要处理成 r, s + const v = _.toUpper(key.replace(/key-/, '')) + console.log(v) + debugger + return v + } +} + /** * 渲染图标 */ diff --git a/src/views/ModelMain.vue b/src/views/ModelMain.vue index e2f7027..975f8c3 100644 --- a/src/views/ModelMain.vue +++ b/src/views/ModelMain.vue @@ -20,7 +20,7 @@