From ebb6df4696b4a0fdd59052b6e770b762590c02b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 7 May 2021 09:54:26 +0200 Subject: [PATCH 1/2] :recycle: Refactor shortcuts and change image shortcut --- .../src/app/main/data/workspace/shortcuts.cljs | 4 ++-- .../src/app/main/ui/workspace/left_toolbar.cljs | 2 +- frontend/translations/de.po | 14 +++++++------- frontend/translations/el.po | 14 +++++++------- frontend/translations/en.po | 14 +++++++------- frontend/translations/es.po | 12 ++++++------ frontend/translations/fr.po | 14 +++++++------- frontend/translations/ru.po | 12 ++++++------ frontend/translations/zh_cn.po | 14 +++++++------- 9 files changed, 50 insertions(+), 50 deletions(-) diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs index 2ca3c32cc..56f1e0d26 100644 --- a/frontend/src/app/main/data/workspace/shortcuts.cljs +++ b/frontend/src/app/main/data/workspace/shortcuts.cljs @@ -155,8 +155,8 @@ :command "c" :fn #(st/emit! (dwd/select-for-drawing :comments))} - :insert-image {:tooltip "K" - :command "k" + :insert-image {:tooltip (ds/shift "K") + :command "shift+k" :fn #(-> "image-upload" dom/get-element dom/click)} :copy {:tooltip (ds/meta "C") diff --git a/frontend/src/app/main/ui/workspace/left_toolbar.cljs b/frontend/src/app/main/ui/workspace/left_toolbar.cljs index a2284e4ed..1692a392f 100644 --- a/frontend/src/app/main/ui/workspace/left_toolbar.cljs +++ b/frontend/src/app/main/ui/workspace/left_toolbar.cljs @@ -45,7 +45,7 @@ (st/emit! (dw/upload-media-workspace params)))))] [:li.tooltip.tooltip-right - {:alt (tr "workspace.toolbar.image") + {:alt (tr "workspace.toolbar.image" (sc/get-tooltip :insert-image)) :on-click on-click} [:* i/image diff --git a/frontend/translations/de.po b/frontend/translations/de.po index ee2c448b3..906647940 100644 --- a/frontend/translations/de.po +++ b/frontend/translations/de.po @@ -2250,15 +2250,15 @@ msgstr "Stift (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.ellipse" -msgstr "Ellipse (E)" +msgstr "Ellipse (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "Zeichenfläche (A)" +msgstr "Zeichenfläche (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "Bild (K)" +msgstr "Bild (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -2266,15 +2266,15 @@ msgstr "Verschieben" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "Pfad (P)" +msgstr "Pfad (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "Rechteck (R)" +msgstr "Rechteck (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "Text (T)" +msgstr "Text (%s)" #: src/app/main/ui/workspace/sidebar/history.cljs msgid "workspace.undo.empty" @@ -2404,4 +2404,4 @@ msgid "workspace.updates.update" msgstr "Aktualisieren" msgid "workspace.viewport.click-to-close-path" -msgstr "Klicken Sie, um den Pfad zu schließen" \ No newline at end of file +msgstr "Klicken Sie, um den Pfad zu schließen" diff --git a/frontend/translations/el.po b/frontend/translations/el.po index 2aa22d3f1..ad217b374 100644 --- a/frontend/translations/el.po +++ b/frontend/translations/el.po @@ -2204,15 +2204,15 @@ msgstr "Στροφή (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.ellipse" -msgstr "Έλλειψη (Ε)" +msgstr "Έλλειψη (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "Artboard (Α)" +msgstr "Artboard (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "Εικόνα (Κ)" +msgstr "Εικόνα (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -2220,15 +2220,15 @@ msgstr "" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "Path (Ρ)" +msgstr "Path (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "Ορθογώνιο (R)" +msgstr "Ορθογώνιο (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "Κείμενο (Τ)" +msgstr "Κείμενο (%s)" #: src/app/main/ui/workspace/sidebar/history.cljs msgid "workspace.undo.empty" @@ -2358,4 +2358,4 @@ msgid "workspace.updates.update" msgstr "Ενημέρωση" msgid "workspace.viewport.click-to-close-path" -msgstr "Κάντε κλικ για να κλείσετε τη διαδρομή" \ No newline at end of file +msgstr "Κάντε κλικ για να κλείσετε τη διαδρομή" diff --git a/frontend/translations/en.po b/frontend/translations/en.po index e8a386c23..ad640977e 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -2417,15 +2417,15 @@ msgstr "Curve (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.ellipse" -msgstr "Ellipse (E)" +msgstr "Ellipse (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "Artboard (A)" +msgstr "Artboard (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "Image (K)" +msgstr "Image (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -2433,15 +2433,15 @@ msgstr "Move" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "Path (P)" +msgstr "Path (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "Rectangle (R)" +msgstr "Rectangle (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "Text (T)" +msgstr "Text (%s)" #: src/app/main/ui/workspace/sidebar/history.cljs msgid "workspace.undo.empty" @@ -2571,4 +2571,4 @@ msgid "workspace.updates.update" msgstr "Update" msgid "workspace.viewport.click-to-close-path" -msgstr "Click to close the path" \ No newline at end of file +msgstr "Click to close the path" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index 14c8bec4e..c299f9911 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -2422,15 +2422,15 @@ msgstr "Curva (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.ellipse" -msgstr "Elipse (E)" +msgstr "Elipse (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "Tablero (A)" +msgstr "Tablero (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "Imagen (K)" +msgstr "Imagen (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -2438,15 +2438,15 @@ msgstr "Mover" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "Ruta (P)" +msgstr "Ruta (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "Rectángulo (R)" +msgstr "Rectángulo (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "Texto (T)" +msgstr "Texto (%s)" #: src/app/main/ui/workspace/sidebar/history.cljs msgid "workspace.undo.empty" diff --git a/frontend/translations/fr.po b/frontend/translations/fr.po index 4f7151394..902bb7036 100644 --- a/frontend/translations/fr.po +++ b/frontend/translations/fr.po @@ -2036,15 +2036,15 @@ msgstr "Courbe (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.ellipse" -msgstr "Ellipse (E)" +msgstr "Ellipse (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "Plan de travail (A)" +msgstr "Plan de travail (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "Image (K)" +msgstr "Image (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -2052,15 +2052,15 @@ msgstr "Déplacer" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "Chemin (P)" +msgstr "Chemin (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "Rectangle (R)" +msgstr "Rectangle (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "Texte (T)" +msgstr "Texte (%s)" #: src/app/main/ui/workspace/sidebar/history.cljs msgid "workspace.undo.empty" @@ -2190,4 +2190,4 @@ msgid "workspace.updates.update" msgstr "Actualiser" msgid "workspace.viewport.click-to-close-path" -msgstr "Cliquez pour fermer le chemin" \ No newline at end of file +msgstr "Cliquez pour fermer le chemin" diff --git a/frontend/translations/ru.po b/frontend/translations/ru.po index 3cb0f1e42..055bd29d5 100644 --- a/frontend/translations/ru.po +++ b/frontend/translations/ru.po @@ -1146,11 +1146,11 @@ msgstr "" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "Рабочая область (A)" +msgstr "Рабочая область (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "Изображение (K)" +msgstr "Изображение (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -1158,15 +1158,15 @@ msgstr "Вытеснить" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "Линия (P)" +msgstr "Линия (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "Прямоугольник (R)" +msgstr "Прямоугольник (%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "Текст (T)" +msgstr "Текст (%s)" #: src/app/main/data/workspace/libraries.cljs msgid "workspace.updates.dismiss" @@ -1181,4 +1181,4 @@ msgid "workspace.updates.update" msgstr "" msgid "workspace.viewport.click-to-close-path" -msgstr "Кликни чтобы закончить фигуру" \ No newline at end of file +msgstr "Кликни чтобы закончить фигуру" diff --git a/frontend/translations/zh_cn.po b/frontend/translations/zh_cn.po index 9ade5b982..636c10c8f 100644 --- a/frontend/translations/zh_cn.po +++ b/frontend/translations/zh_cn.po @@ -2066,15 +2066,15 @@ msgstr "曲线(%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.ellipse" -msgstr "椭圆(E)" +msgstr "椭圆(%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.frame" -msgstr "画板(A)" +msgstr "画板(%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.image" -msgstr "图片(K)" +msgstr "图片(%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.move" @@ -2082,15 +2082,15 @@ msgstr "移动" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.path" -msgstr "路径(P)" +msgstr "路径(%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.rect" -msgstr "矩形(R)" +msgstr "矩形(%s)" #: src/app/main/ui/workspace/left_toolbar.cljs msgid "workspace.toolbar.text" -msgstr "文本(T)" +msgstr "文本(%s)" #: src/app/main/ui/workspace/sidebar/history.cljs msgid "workspace.undo.empty" @@ -2220,4 +2220,4 @@ msgid "workspace.updates.update" msgstr "更新" msgid "workspace.viewport.click-to-close-path" -msgstr "单击以闭合路径" \ No newline at end of file +msgstr "单击以闭合路径" From 4c48f34d6163b4c055e479be4605bd575dedf7f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Tue, 4 May 2021 09:59:21 +0200 Subject: [PATCH 2/2] :tada: Add resize scale for texts --- CHANGES.md | 3 +++ common/app/common/geom/shapes/transforms.cljc | 22 ++++++++++++++++++- frontend/src/app/main/data/workspace.cljs | 1 + .../src/app/main/data/workspace/drawing.cljs | 7 +++++- .../app/main/data/workspace/shortcuts.cljs | 6 ++++- .../app/main/data/workspace/transforms.cljs | 10 +++++++-- .../src/app/main/ui/workspace/header.cljs | 7 ++++++ frontend/translations/en.po | 8 +++++++ frontend/translations/es.po | 8 +++++++ 9 files changed, 67 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index aecc5d190..5df97e14f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,9 @@ ## :rocket: Next ### :sparkles: New features + +- Add option to interactively scale text [Taiga #1527](https://tree.taiga.io/project/penpot/us/1527) + ### :bug: Bugs fixed - Remove interactions when the destination artboard is deleted [Taiga #1656](https://tree.taiga.io/project/penpot/issue/1656) diff --git a/common/app/common/geom/shapes/transforms.cljc b/common/app/common/geom/shapes/transforms.cljc index cf9845741..dcfdd31fc 100644 --- a/common/app/common/geom/shapes/transforms.cljc +++ b/common/app/common/geom/shapes/transforms.cljc @@ -6,13 +6,15 @@ (ns app.common.geom.shapes.transforms (:require + [app.common.attrs :as attrs] [app.common.geom.matrix :as gmt] [app.common.geom.point :as gpt] [app.common.geom.shapes.common :as gco] [app.common.geom.shapes.path :as gpa] [app.common.geom.shapes.rect :as gpr] [app.common.math :as mth] - [app.common.data :as d])) + [app.common.data :as d] + [app.common.text :as txt])) ;; --- Relative Movement @@ -328,6 +330,23 @@ (dissoc :modifiers)))) shape))) +(defn apply-text-resize + [shape orig-shape modifiers] + (if (and (= (:type shape) :text) + (:resize-scale-text modifiers)) + (let [merge-attrs (fn [attrs] + (let [font-size (-> (get attrs :font-size 14) + (d/parse-double) + (* (-> modifiers :resize-vector :x)) + (str) + )] + (attrs/merge attrs {:font-size font-size})))] + (update shape :content #(txt/transform-nodes + txt/is-text-node? + merge-attrs + %))) + shape)) + (defn transform-shape [shape] (let [shape (apply-displacement shape) center (gco/center-shape shape) @@ -337,6 +356,7 @@ (-> shape (set-flip modifiers) (apply-transform transform) + (apply-text-resize shape modifiers) (dissoc :modifiers))) shape))) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index eb04c8714..2308d2ca7 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -73,6 +73,7 @@ :rules :display-grid :snap-grid + :scale-text :dynamic-alignment}) (s/def ::layout-flags (s/coll-of ::layout-flag)) diff --git a/frontend/src/app/main/data/workspace/drawing.cljs b/frontend/src/app/main/data/workspace/drawing.cljs index 553b31038..503d6bee9 100644 --- a/frontend/src/app/main/data/workspace/drawing.cljs +++ b/frontend/src/app/main/data/workspace/drawing.cljs @@ -30,7 +30,12 @@ (ptk/reify ::select-for-drawing ptk/UpdateEvent (update [_ state] - (update state :workspace-drawing assoc :tool tool :object data)) + (-> state + (update :workspace-drawing assoc :tool tool :object data) + ;; When changing drawing tool disable "scale text" mode + ;; automatically, to help users that ignore how this + ;; mode works. + (update :workspace-layout disj :scale-text))) ptk/WatchEvent (watch [_ state stream] diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs index 56f1e0d26..64b41594f 100644 --- a/frontend/src/app/main/data/workspace/shortcuts.cljs +++ b/frontend/src/app/main/data/workspace/shortcuts.cljs @@ -61,7 +61,11 @@ :toggle-alignment {:tooltip (ds/meta "\\") :command (ds/c-mod "\\") :fn #(st/emit! (dw/toggle-layout-flags :dynamic-alignment))} - + + :toggle-scale-text {:tooltip "K" + :command "k" + :fn #(st/emit! (dw/toggle-layout-flags :scale-text))} + :increase-zoom {:tooltip "+" :command "+" :fn #(st/emit! (dw/increase-zoom nil))} diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index e258af8c9..110f5c8c7 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -81,11 +81,16 @@ ;; -- RESIZE (defn start-resize [handler initial ids shape] - (letfn [(resize [shape initial resizing-shapes [point lock? point-snap]] + (letfn [(resize [shape initial resizing-shapes layout [point lock? point-snap]] (let [{:keys [width height]} (:selrect shape) {:keys [rotation]} shape shapev (-> (gpt/point width height)) + scale-text (:scale-text layout) + + ;; Force lock if the scale text mode is active + lock? (or lock? scale-text) + ;; Vector modifiers depending on the handler handler-modif (let [[x y] (handler-modifiers handler)] (gpt/point x y)) @@ -119,6 +124,7 @@ {:resize-vector scalev :resize-origin origin :resize-transform shape-transform + :resize-scale-text scale-text :resize-transform-inverse shape-transform-inverse} false)))) @@ -154,7 +160,7 @@ (rx/switch-map (fn [[point :as current]] (->> (snap/closest-snap-point page-id resizing-shapes layout zoom point) (rx/map #(conj current %))))) - (rx/mapcat (partial resize shape initial-position resizing-shapes)) + (rx/mapcat (partial resize shape initial-position resizing-shapes layout)) (rx/take-until stoper)) (rx/of (apply-modifiers ids) (finish-transform)))))))) diff --git a/frontend/src/app/main/ui/workspace/header.cljs b/frontend/src/app/main/ui/workspace/header.cljs index 77cd0f51a..309803e9e 100644 --- a/frontend/src/app/main/ui/workspace/header.cljs +++ b/frontend/src/app/main/ui/workspace/header.cljs @@ -218,6 +218,13 @@ (tr "workspace.header.menu.enable-dynamic-alignment"))] [:span.shortcut (sc/get-tooltip :toggle-alignment)]] + [:li {:on-click #(st/emit! (dw/toggle-layout-flags :scale-text))} + [:span + (if (contains? layout :scale-text) + (tr "workspace.header.menu.disable-scale-text") + (tr "workspace.header.menu.enable-scale-text"))] + [:span.shortcut (sc/get-tooltip :toggle-scale-text)]] + (if (:is-shared file) [:li {:on-click on-remove-shared} [:span (tr "dashboard.remove-shared")]] diff --git a/frontend/translations/en.po b/frontend/translations/en.po index ad640977e..f3bd4316e 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -1611,6 +1611,10 @@ msgstr "Radial gradient" msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Disable dynamic alignment" +#: src/app/main/ui/workspace/header.cljs +msgid "workspace.header.menu.disable-scale-text" +msgstr "Disable scale text" + #: src/app/main/ui/workspace/header.cljs msgid "workspace.header.menu.disable-snap-grid" msgstr "Disable snap to grid" @@ -1619,6 +1623,10 @@ msgstr "Disable snap to grid" msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Enable dynamic aligment" +#: src/app/main/ui/workspace/header.cljs +msgid "workspace.header.menu.enable-scale-text" +msgstr "Enable scale text" + #: src/app/main/ui/workspace/header.cljs msgid "workspace.header.menu.enable-snap-grid" msgstr "Snap to grid" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index c299f9911..f8f8e956f 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -1614,6 +1614,10 @@ msgstr "Degradado radial" msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Desactivar alineamiento dinámico" +#: src/app/main/ui/workspace/header.cljs +msgid "workspace.header.menu.disable-scale-text" +msgstr "Desactivar escalar texto" + #: src/app/main/ui/workspace/header.cljs msgid "workspace.header.menu.disable-snap-grid" msgstr "Desactivar alinear a la rejilla" @@ -1622,6 +1626,10 @@ msgstr "Desactivar alinear a la rejilla" msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Activar alineamiento dinámico" +#: src/app/main/ui/workspace/header.cljs +msgid "workspace.header.menu.enable-scale-text" +msgstr "Activar escalar texto" + #: src/app/main/ui/workspace/header.cljs msgid "workspace.header.menu.enable-snap-grid" msgstr "Alinear a la rejilla"