From ec3698502b4ccd3c36a9fb4fdbdde391cb42d02b Mon Sep 17 00:00:00 2001 From: Mani <12841290+krmanik@users.noreply.github.com> Date: Tue, 30 Jan 2024 11:13:15 +0530 Subject: [PATCH] add select all tool (#2981) Co-authored-by: Damien Elmes --- ftl/core/editing.ftl | 1 + ts/image-occlusion/icons.ts | 1 + ts/image-occlusion/tools/lib.ts | 11 ++++++++++- ts/image-occlusion/tools/more-tools.ts | 20 +++++++++++++++++++- ts/image-occlusion/tools/shortcuts.ts | 1 + 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ftl/core/editing.ftl b/ftl/core/editing.ftl index 8c33782e0..692a9216c 100644 --- a/ftl/core/editing.ftl +++ b/ftl/core/editing.ftl @@ -79,6 +79,7 @@ editing-image-occlusion-delete = Delete editing-image-occlusion-duplicate = Duplicate editing-image-occlusion-group = Group Selection editing-image-occlusion-ungroup = Ungroup Selection +editing-image-occlusion-select-all = Select All editing-image-occlusion-alignment = Alignment editing-image-occlusion-align-left = Align Left editing-image-occlusion-align-h-center = Align Horizontal Centers diff --git a/ts/image-occlusion/icons.ts b/ts/image-occlusion/icons.ts index e004d9f1e..1f27e07d3 100644 --- a/ts/image-occlusion/icons.ts +++ b/ts/image-occlusion/icons.ts @@ -29,6 +29,7 @@ export { default as mdiMagnifyScan } from "@mdi/svg/svg/magnify-scan.svg"; export { default as mdiRectangleOutline } from "@mdi/svg/svg/rectangle-outline.svg"; export { default as mdiRedo } from "@mdi/svg/svg/redo.svg"; export { default as mdiRefresh } from "@mdi/svg/svg/refresh.svg"; +export { default as mdiSelectAll } from "@mdi/svg/svg/select-all.svg"; export { default as mdiSquare } from "@mdi/svg/svg/square.svg"; export { default as mdiTextBox } from "@mdi/svg/svg/text-box.svg"; export { default as mdiUndo } from "@mdi/svg/svg/undo.svg"; diff --git a/ts/image-occlusion/tools/lib.ts b/ts/image-occlusion/tools/lib.ts index 4ac6c84fe..968dbce6c 100644 --- a/ts/image-occlusion/tools/lib.ts +++ b/ts/image-occlusion/tools/lib.ts @@ -1,7 +1,7 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -import type fabric from "fabric"; +import { fabric } from "fabric"; import type { PanZoom } from "panzoom"; import { get } from "svelte/store"; @@ -316,3 +316,12 @@ export const makeShapeRemainInCanvas = (canvas: fabric.Canvas) => { } }); }; + +export const selectAllShapes = (canvas: fabric.Canvas) => { + canvas.discardActiveObject(); + const sel = new fabric.ActiveSelection(canvas.getObjects(), { + canvas: canvas, + }); + canvas.setActiveObject(sel); + redraw(canvas); +}; diff --git a/ts/image-occlusion/tools/more-tools.ts b/ts/image-occlusion/tools/more-tools.ts index 16d61d7b2..8e78abb8b 100644 --- a/ts/image-occlusion/tools/more-tools.ts +++ b/ts/image-occlusion/tools/more-tools.ts @@ -13,12 +13,22 @@ import { mdiCopy, mdiDeleteOutline, mdiGroup, + mdiSelectAll, mdiUngroup, mdiZoomIn, mdiZoomOut, mdiZoomReset, } from "../icons"; -import { deleteItem, duplicateItem, groupShapes, unGroupShapes, zoomIn, zoomOut, zoomReset } from "./lib"; +import { + deleteItem, + duplicateItem, + groupShapes, + selectAllShapes, + unGroupShapes, + zoomIn, + zoomOut, + zoomReset, +} from "./lib"; import { alignBottomKeyCombination, alignHorizontalCenterKeyCombination, @@ -29,6 +39,7 @@ import { deleteKeyCombination, duplicateKeyCombination, groupKeyCombination, + selectAllKeyCombination, ungroupKeyCombination, zoomInKeyCombination, zoomOutKeyCombination, @@ -58,6 +69,13 @@ export const groupUngroupTools = [ tooltip: tr.editingImageOcclusionUngroup, shortcut: ungroupKeyCombination, }, + { + name: "select-all", + icon: mdiSelectAll, + action: selectAllShapes, + tooltip: tr.editingImageOcclusionSelectAll, + shortcut: selectAllKeyCombination, + }, ]; export const deleteDuplicateTools = [ diff --git a/ts/image-occlusion/tools/shortcuts.ts b/ts/image-occlusion/tools/shortcuts.ts index 0169f124b..56aa371bb 100644 --- a/ts/image-occlusion/tools/shortcuts.ts +++ b/ts/image-occlusion/tools/shortcuts.ts @@ -17,6 +17,7 @@ export const deleteKeyCombination = "Delete"; export const duplicateKeyCombination = "D"; export const groupKeyCombination = "G"; export const ungroupKeyCombination = "U"; +export const selectAllKeyCombination = "A"; export const alignLeftKeyCombination = "Shift+L"; export const alignHorizontalCenterKeyCombination = "Shift+H"; export const alignRightKeyCombination = "Shift+R";