From 297aa6cca21cb453a0b4325fd049441a08e89264 Mon Sep 17 00:00:00 2001 From: pipipi-pikachu Date: Sun, 1 May 2022 14:15:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=94=BB=E5=B8=83?= =?UTF-8?q?=E6=A0=87=E5=B0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/main.ts | 6 + src/views/Editor/Canvas/Ruler.vue | 142 ++++++++++++++++++++++++ src/views/Editor/Canvas/index.vue | 16 +++ src/views/Editor/EditorHeader/index.vue | 8 +- 4 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 src/views/Editor/Canvas/Ruler.vue diff --git a/src/store/main.ts b/src/store/main.ts index 6a2af761..97cb9f68 100644 --- a/src/store/main.ts +++ b/src/store/main.ts @@ -18,6 +18,7 @@ export interface MainState { editorAreaFocus: boolean; disableHotkeys: boolean; showGridLines: boolean; + showRuler: boolean; creatingElement: CreatingElement | null; availableFonts: typeof SYS_FONTS; toolbarState: ToolbarStates; @@ -41,6 +42,7 @@ export const useMainStore = defineStore('main', { editorAreaFocus: false, // 编辑区域聚焦 disableHotkeys: false, // 禁用快捷键 showGridLines: false, // 显示网格线 + showRuler: false, // 显示标尺 creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条) availableFonts: SYS_FONTS, // 当前环境可用字体 toolbarState: ToolbarStates.SLIDE_DESIGN, // 右侧工具栏状态 @@ -112,6 +114,10 @@ export const useMainStore = defineStore('main', { this.showGridLines = show }, + setRulerState(show: boolean) { + this.showRuler = show + }, + setCreatingElement(element: CreatingElement | null) { this.creatingElement = element }, diff --git a/src/views/Editor/Canvas/Ruler.vue b/src/views/Editor/Canvas/Ruler.vue new file mode 100644 index 00000000..9231ed7f --- /dev/null +++ b/src/views/Editor/Canvas/Ruler.vue @@ -0,0 +1,142 @@ + + + + + + \ No newline at end of file diff --git a/src/views/Editor/Canvas/index.vue b/src/views/Editor/Canvas/index.vue index 414ec25f..87581681 100644 --- a/src/views/Editor/Canvas/index.vue +++ b/src/views/Editor/Canvas/index.vue @@ -76,6 +76,8 @@
+ + { + mainStore.setRulerState(!showRuler.value) + } + // 在鼠标绘制的范围插入元素 const { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef) @@ -248,6 +258,11 @@ export default defineComponent({ subText: showGridLines.value ? '√' : '', handler: toggleGridLines, }, + { + text: '标尺', + subText: showRuler.value ? '√' : '', + handler: toggleRuler, + }, { text: '重置当前页', handler: deleteAllElements, @@ -279,6 +294,7 @@ export default defineComponent({ alignmentLines, linkDialogVisible, spaceKeyState, + showRuler, openLinkDialog, handleClickBlankArea, removeEditorAreaFocus, diff --git a/src/views/Editor/EditorHeader/index.vue b/src/views/Editor/EditorHeader/index.vue index 607c8f00..8def142d 100644 --- a/src/views/Editor/EditorHeader/index.vue +++ b/src/views/Editor/EditorHeader/index.vue @@ -20,6 +20,7 @@ 添加页面 删除页面 {{ showGridLines ? '关闭网格线' : '打开网格线' }} + {{ toggleRuler ? '关闭标尺' : '打开标尺' }} 重置幻灯片 @@ -99,7 +100,7 @@ export default defineComponent({ }, setup() { const mainStore = useMainStore() - const { showGridLines } = storeToRefs(mainStore) + const { showGridLines, showRuler } = storeToRefs(mainStore) const { enterScreening, enterScreeningFromStart } = useScreening() const { createSlide, deleteSlide, resetSlides } = useSlideHandler() @@ -110,6 +111,10 @@ export default defineComponent({ mainStore.setGridLinesState(!showGridLines.value) } + const toggleRuler = () => { + mainStore.setRulerState(!showRuler.value) + } + const hotkeyDrawerVisible = ref(false) const exportImgDialogVisible = ref(false) @@ -129,6 +134,7 @@ export default defineComponent({ createSlide, deleteSlide, toggleGridLines, + toggleRuler, resetSlides, exportJSON, exportPPTX,