diff --git a/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-normal.svg b/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-normal.svg
new file mode 100644
index 000000000..145cb4a51
--- /dev/null
+++ b/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-normal.svg
@@ -0,0 +1,3 @@
+
diff --git a/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-outline.svg b/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-outline.svg
new file mode 100644
index 000000000..9d752c6ab
--- /dev/null
+++ b/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-outline.svg
@@ -0,0 +1,3 @@
+
diff --git a/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-pixels.svg b/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-pixels.svg
new file mode 100644
index 000000000..6368aad87
--- /dev/null
+++ b/client/web/assets/svg/24x24-bounds-16x16-icon/view-mode-pixels.svg
@@ -0,0 +1,23 @@
+
diff --git a/client/web/src/components/panels/Document.vue b/client/web/src/components/panels/Document.vue
index 5b8080124..14f2ca562 100644
--- a/client/web/src/components/panels/Document.vue
+++ b/client/web/src/components/panels/Document.vue
@@ -31,6 +31,15 @@
+
+
+
+
+
+
+
+
+
@@ -116,7 +125,7 @@
.side {
height: 100%;
- flex: 0 1 auto;
+ flex: 0 0 auto;
display: flex;
align-items: center;
margin: 0 8px;
@@ -193,6 +202,7 @@ import ShelfItem from "../widgets/ShelfItem.vue";
import ItemDivider from "../widgets/ItemDivider.vue";
import IconButton from "../widgets/IconButton.vue";
import DropdownButton from "../widgets/DropdownButton.vue";
+import RadioPicker from "../widgets/RadioPicker.vue";
import NumberInput from "../widgets/NumberInput.vue";
import SwapButton from "../../../assets/svg/16x16-bounds-12x12-icon/swap.svg";
import ResetColorsButton from "../../../assets/svg/16x16-bounds-12x12-icon/reset-colors.svg";
@@ -233,6 +243,9 @@ import BooleanDifference from "../../../assets/svg/24x24-bounds-16x16-icon/boole
import ZoomReset from "../../../assets/svg/24x24-bounds-16x16-icon/zoom-reset.svg";
import ZoomIn from "../../../assets/svg/24x24-bounds-16x16-icon/zoom-in.svg";
import ZoomOut from "../../../assets/svg/24x24-bounds-16x16-icon/zoom-out.svg";
+import ViewModeNormal from "../../../assets/svg/24x24-bounds-16x16-icon/view-mode-normal.svg";
+import ViewModeOutline from "../../../assets/svg/24x24-bounds-16x16-icon/view-mode-outline.svg";
+import ViewModePixels from "../../../assets/svg/24x24-bounds-16x16-icon/view-mode-pixels.svg";
const wasm = import("../../../wasm/pkg");
@@ -244,6 +257,7 @@ export default defineComponent({
ItemDivider,
IconButton,
DropdownButton,
+ RadioPicker,
NumberInput,
SwapButton,
ResetColorsButton,
@@ -284,6 +298,9 @@ export default defineComponent({
ZoomReset,
ZoomIn,
ZoomOut,
+ ViewModeNormal,
+ ViewModeOutline,
+ ViewModePixels,
},
methods: {
async canvasMouseDown(e: MouseEvent) {
@@ -310,6 +327,9 @@ export default defineComponent({
const { select_tool } = await wasm;
select_tool(toolName);
},
+ async viewModeChanged(toolIndex: number) {
+ console.log(`The view mode has been changed to index match the icon at index ${toolIndex}`);
+ },
},
mounted() {
registerResponseHandler(ResponseType.UpdateCanvas, (responseData) => {
diff --git a/client/web/src/components/widgets/NumberInput.vue b/client/web/src/components/widgets/NumberInput.vue
index 79a768d75..95531add2 100644
--- a/client/web/src/components/widgets/NumberInput.vue
+++ b/client/web/src/components/widgets/NumberInput.vue
@@ -8,7 +8,7 @@
+
+