diff --git a/client/web/assets/16px-solid/viewport-design-mode.svg b/client/web/assets/16px-solid/viewport-design-mode.svg new file mode 100644 index 000000000..0e33e8373 --- /dev/null +++ b/client/web/assets/16px-solid/viewport-design-mode.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/client/web/assets/16px-solid/viewport-select-mode.svg b/client/web/assets/16px-solid/viewport-select-mode.svg new file mode 100644 index 000000000..b34fa0b74 --- /dev/null +++ b/client/web/assets/16px-solid/viewport-select-mode.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/client/web/src/components/panels/Document.vue b/client/web/src/components/panels/Document.vue index fa3d39a1f..0551b9bfe 100644 --- a/client/web/src/components/panels/Document.vue +++ b/client/web/src/components/panels/Document.vue @@ -2,7 +2,7 @@
- Select + @@ -132,11 +132,6 @@ display: flex; align-items: center; margin: 0 4px; - - .label { - white-space: nowrap; - font-weight: bold; - } } } @@ -177,21 +172,19 @@ import IconButton from "../widgets/buttons/IconButton.vue"; import PopoverButton from "../widgets/buttons/PopoverButton.vue"; import RadioInput from "../widgets/inputs/RadioInput.vue"; import NumberInput from "../widgets/inputs/NumberInput.vue"; +import DropdownInput from "../widgets/inputs/DropdownInput.vue"; +import { SectionsOfMenuListEntries } from "../widgets/floating-menus/MenuList.vue"; + +const modeMenuEntries: SectionsOfMenuListEntries = [ + [ + { label: "Design Mode", icon: "ViewportDesignMode" }, + { label: "Select Mode", icon: "ViewportSelectMode" }, + ], +]; const wasm = import("../../../wasm/pkg"); export default defineComponent({ - components: { - LayoutRow, - LayoutCol, - WorkingColors, - ShelfItem, - Separator, - IconButton, - PopoverButton, - RadioInput, - NumberInput, - }, methods: { async canvasMouseDown(e: MouseEvent) { const { on_mouse_down } = await wasm; @@ -259,7 +252,20 @@ export default defineComponent({ MenuDirection, SeparatorDirection, SeparatorType, + modeMenuEntries, }; }, + components: { + LayoutRow, + LayoutCol, + WorkingColors, + ShelfItem, + Separator, + IconButton, + PopoverButton, + RadioInput, + NumberInput, + DropdownInput, + }, }); diff --git a/client/web/src/components/panels/LayerTree.vue b/client/web/src/components/panels/LayerTree.vue index c633f61ed..50e57cfb2 100644 --- a/client/web/src/components/panels/LayerTree.vue +++ b/client/web/src/components/panels/LayerTree.vue @@ -1,6 +1,10 @@ @@ -27,8 +36,9 @@ + + diff --git a/client/web/src/components/widgets/inputs/MenuBarInput.vue b/client/web/src/components/widgets/inputs/MenuBarInput.vue index 875462e54..6fe097272 100644 --- a/client/web/src/components/widgets/inputs/MenuBarInput.vue +++ b/client/web/src/components/widgets/inputs/MenuBarInput.vue @@ -5,7 +5,15 @@ {{ entry.label }}
- + @@ -140,6 +148,9 @@ export default defineComponent({ if (menuEntry.ref) menuEntry.ref.setOpen(); else throw new Error("The menu bar floating menu has no associated ref"); }, + actionNotImplemented() { + alert("This action is not yet implemented"); + }, }, data() { return { diff --git a/client/web/src/components/widgets/labels/Icon.vue b/client/web/src/components/widgets/labels/Icon.vue index f2573a6c5..c3e9b0f6e 100644 --- a/client/web/src/components/widgets/labels/Icon.vue +++ b/client/web/src/components/widgets/labels/Icon.vue @@ -77,6 +77,8 @@ import GraphiteLogo from "../../../../assets/16px-solid/graphite-logo.svg"; import File from "../../../../assets/16px-solid/file.svg"; import Copy from "../../../../assets/16px-solid/copy.svg"; import Paste from "../../../../assets/16px-solid/paste.svg"; +import ViewportDesignMode from "../../../../assets/16px-solid/viewport-design-mode.svg"; +import ViewportSelectMode from "../../../../assets/16px-solid/viewport-select-mode.svg"; import SwapButton from "../../../../assets/12px-solid/swap.svg"; import ResetColorsButton from "../../../../assets/12px-solid/reset-colors.svg"; @@ -148,6 +150,8 @@ const icons = { File: { component: File, size: 16 }, Copy: { component: Copy, size: 16 }, Paste: { component: Paste, size: 16 }, + ViewportDesignMode: { component: ViewportDesignMode, size: 16 }, + ViewportSelectMode: { component: ViewportSelectMode, size: 16 }, SwapButton: { component: SwapButton, size: 12 }, ResetColorsButton: { component: ResetColorsButton, size: 12 }, DropdownArrow: { component: DropdownArrow, size: 12 }, diff --git a/client/web/src/components/widgets/labels/TextLabel.vue b/client/web/src/components/widgets/labels/TextLabel.vue new file mode 100644 index 000000000..4f307a154 --- /dev/null +++ b/client/web/src/components/widgets/labels/TextLabel.vue @@ -0,0 +1,21 @@ + + + + +