From 61d27e5e3b499602dac2d6a5975beaf4cb1562d0 Mon Sep 17 00:00:00 2001 From: Andrea Gottsponer <ago@attr.ch> Date: Wed, 7 Sep 2022 13:18:31 +0200 Subject: [PATCH] - Text changes (Text selection when new; Enter ends edit (with shift we can add newline; Ctrl-A selection fix) - Design changes (PositionPoint smaller; Line Width wider; Text size bigger) --- src/lib/config/design.ts | 2 +- src/lib/elements/basics/Text.ts | 19 +++++++++- src/lib/elements/connections/Line.ts | 2 +- src/lib/elements/primitives/TextPrimitive.ts | 18 +++++++--- src/lib/interactions/WriteInteraction.ts | 38 ++++++++++++-------- 5 files changed, 57 insertions(+), 22 deletions(-) diff --git a/src/lib/config/design.ts b/src/lib/config/design.ts index 12ce70de..5dfa7564 100644 --- a/src/lib/config/design.ts +++ b/src/lib/config/design.ts @@ -182,7 +182,7 @@ export const Design = { radiusAspect: 5, buttonSizeAspect: 24, buttonTextAspect: 2.2, - radius: 3, + radius: 2, radiusSelected: 2, lineRectangleZIndex: 9000, lineRectangleWidth: 4, diff --git a/src/lib/elements/basics/Text.ts b/src/lib/elements/basics/Text.ts index 1bd61baa..99e67690 100644 --- a/src/lib/elements/basics/Text.ts +++ b/src/lib/elements/basics/Text.ts @@ -2,7 +2,6 @@ import * as PIXI from "pixi.js-legacy"; import * as MedsurfDraw from "../../public-api"; import {Design} from "../../config/design"; import {BaseText, BaseTextModel} from "../../bases/elements/BaseText"; -import {debounce} from "debounce"; /** * Text model @@ -55,6 +54,7 @@ export class Text extends BaseText<TextModel> { // -- Write interaction this.writeInteraction = new MedsurfDraw.WriteInteraction(this); this.writeInteraction.on("onText", this.onText, this); + this.writeInteraction.on("endText", this.endText, this); //</editor-fold> } @@ -88,6 +88,7 @@ export class Text extends BaseText<TextModel> { // -- Write interaction if (this.writeInteraction) { this.writeInteraction.off("onText", this.onText, this); + this.writeInteraction.off("endText", this.endText, this); // TODO remove delete this.writeInteraction; } //</editor-fold> @@ -182,6 +183,15 @@ export class Text extends BaseText<TextModel> { } //</editor-fold> + //<editor-fold desc="Public function"> + /** + * Select all text + */ + public selectAllText(): void { + this.writeInteraction.selectAllText(); + } + //</editor-fold> + //<editor-fold desc="Text"> /** * On text @@ -190,6 +200,13 @@ export class Text extends BaseText<TextModel> { public onText(text: string): void { this.emit("onText", text); } + + /** + * End text + */ + public endText(): void { + this.emit("endText"); + } //</editor-fold> //<editor-fold desc="ImageZoom"> diff --git a/src/lib/elements/connections/Line.ts b/src/lib/elements/connections/Line.ts index 893ddb8c..6adcbe79 100644 --- a/src/lib/elements/connections/Line.ts +++ b/src/lib/elements/connections/Line.ts @@ -588,7 +588,7 @@ export class Line extends BaseElementContainer<Models.Line, BaseElementContainer end: endPositionPoint, isBezier: bezierCourve, interactWithLines: true, - strokeWidth: 1 / imageWidth, + strokeWidth: 4 / imageWidth, options: { hasLine: true, lineColor: 0xffffff, diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts index 717e66d6..67be8def 100644 --- a/src/lib/elements/primitives/TextPrimitive.ts +++ b/src/lib/elements/primitives/TextPrimitive.ts @@ -171,6 +171,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba style: new PIXI.TextStyle(style) }); this._textElement.on("onText", this.onText, this); + this._textElement.on("endText", this.endText, this); this.addChild(this._textElement); //</editor-fold> @@ -379,6 +380,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba // -- Text element if (this._textElement) { this._textElement.off("onText", this.onText, this); + this._textElement.off("endText", this.endText, this); this._textElement.destroy(options); } //</editor-fold> @@ -467,7 +469,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba }, style: { fill: 0x000000, - fontSize: 12 / imageWidth, + fontSize: 32 / imageWidth, fontFamily: "proxima_nova_altsemibold", align: 'left', breakWords: false, @@ -481,8 +483,8 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba * Edit new text */ public editNewText(): void { - // Reset text - this._textElement.text = ''; + // Select all text + this._textElement.selectAllText(); // Edit Text this.editText(); @@ -1055,8 +1057,6 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba // Emits this.getImage().editPrimitive(this.model); - - // TODO remove this.editText(); } //</editor-fold> //<editor-fold desc="Layer"> @@ -1429,6 +1429,14 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba // Emit on background text this.emit("onBackgroundText"); } + + /** + * End text + */ + public endText(): void { + // Select item + this.controlSelectItem(); + } //</editor-fold> //<editor-fold desc="Background rectangle"> public onButtonAddBackgroundRectangle(): void { diff --git a/src/lib/interactions/WriteInteraction.ts b/src/lib/interactions/WriteInteraction.ts index 02745ed0..4aecd5a0 100644 --- a/src/lib/interactions/WriteInteraction.ts +++ b/src/lib/interactions/WriteInteraction.ts @@ -64,16 +64,20 @@ export class WriteInteraction<TElement extends MedsurfDraw.Text> extends BaseEle return; // 13 case "Enter": - if (this.element.textSelection) { - this.replaceSelectedText("\n"); - } else { - this.emit("onText", this.element.text.substring(0, this.element.startTextIndex) + "\n" + this.element.text.substring(this.element.startTextIndex)); - this.moveCaretRight(false); + if (event.shiftKey) { + if (this.element.textSelection) { + this.replaceSelectedText("\n"); + } else { + this.emit("onText", this.element.text.substring(0, this.element.startTextIndex) + "\n" + this.element.text.substring(this.element.startTextIndex)); + this.moveCaretRight(false); - /* TODO remove - // Update - this.element.getImage().updateImageObject(this.element.model); - */ + /* TODO remove + // Update + this.element.getImage().updateImageObject(this.element.model); + */ + } + } else { + this.emit("endText"); } return; // 16 @@ -93,7 +97,7 @@ export class WriteInteraction<TElement extends MedsurfDraw.Text> extends BaseEle return; // 27 TODO case "Escape": - this.emit("endWrite"); + this.emit("endText"); // TODO stop writing return; // 33 @@ -257,10 +261,7 @@ export class WriteInteraction<TElement extends MedsurfDraw.Text> extends BaseEle // 65 case "a": if (event.ctrlKey) { - this.element.textSelection = true; - this.element.startTextIndex = 0; - this.element.endTextIndex = this.element.text.length; - this.emit("onSelection"); + this.selectAllText(); return; } break; @@ -358,6 +359,15 @@ export class WriteInteraction<TElement extends MedsurfDraw.Text> extends BaseEle } //</editor-fold> + //<editor-fold desc="Public functions"> + public selectAllText(): void { + this.element.textSelection = true; + this.element.startTextIndex = this.element.text.length; + this.element.endTextIndex = 0; + this.emit("onSelection"); + } + //</editor-fold> + //<editor-fold desc="Private functions"> /** * Delete selected text -- GitLab