[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/sketch-mode 04dd1db 07/38: Add sketch fonts
From: |
ELPA Syncer |
Subject: |
[elpa] externals/sketch-mode 04dd1db 07/38: Add sketch fonts |
Date: |
Wed, 15 Sep 2021 16:57:34 -0400 (EDT) |
branch: externals/sketch-mode
commit 04dd1dbace8cf2e1e143a6b5f8489ff61f4bf398
Author: Daniel Nicolai <dalanicolai@gmail.com>
Commit: Daniel Nicolai <dalanicolai@gmail.com>
Add sketch fonts
Currently the fonts have their own prefix, but for usability it is probably
nicer to add it to the main sketch transient prefix
---
sketch-mode.el | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 118 insertions(+), 6 deletions(-)
diff --git a/sketch-mode.el b/sketch-mode.el
index 5215e43..05f2dd0 100644
--- a/sketch-mode.el
+++ b/sketch-mode.el
@@ -27,6 +27,22 @@
;;; Commentary:
+;; DONE add functionality to toggle grid
+
+;; DONE implement (simple) undo mechanism
+
+;; DONE add remove (objects) functionality (see `svg-remove')
+
+;; TODO add text objects
+
+;; TODO move font transient (also its suffix) into main sketch transient
(suffix)
+
+;; TODO add functionality to crop/select part of image (on save)
+
+;; TODO add functionality to modify objects
+
+;; TODO enable defining global svg settings (object properties)
+
;; TODO maybe transform relevant transient argument (strings) to variables
;; TODO add function to open svg code in 'other buffer' and quickly reload
@@ -37,12 +53,6 @@
;; TODO maybe add keybindings (save/bind transient setting to specific 'mouse
keys')
-;; DONE add functionality to toggle grid
-
-;; TODO implement undo mechanism
-
-;; TODO add remove (objects) functionality (see `svg-remove')
-
;; TODO add clipping fuctionality (see `svg-clip-path')
;; NOTE this is a most straightforward sketch-mode. A more advanced/general
version
@@ -299,6 +309,106 @@ values"
(propertize (apply 'color-rgb-to-hex (color-name-to-rgb
default))
'face 'transient-inactive-argument))))))
+(transient-define-prefix sketch-text ()
+ "Some Emacs magic"
+ :transient-suffix 'transient--do-call
+ :transient-non-suffix 'transient--do-stay
+ ["Font definitions"
+ [("f" "family" sketch-select-font)]
+ [("s" "stroke-color" sketch-font-size)
+ ("w" "fill-color" sketch-font-weight)]
+ ;; [("w" "stroke-width" sketch-stroke-width)]
+ [("m" "end-marker" sketch-object-marker)]]
+ ["Commands"
+ ([mouse-1] "Sketch" sketch-text-interactively)]
+ [("q" "Quit" transient-quit-one)])
+
+(transient-define-infix sketch-select-font ()
+ :description "Option with list"
+ :class 'transient-option
+ :argument "--family="
+ :choices (font-family-list))
+
+(transient-define-infix sketch-font-size ()
+ :description "Option with list"
+ :class 'transient-option
+ :argument "--font-size="
+ :choices (mapcar (lambda (x)
+ (number-to-string x))
+ (number-sequence 1 100)))
+
+(transient-define-infix sketch-font-weight ()
+ :description "Option with list"
+ :class 'sketch-variable:choices
+ :argument "--object="
+ :choices '("bold")
+ :default "normal")
+
+
+(transient-define-suffix sketch-text-interactively (event)
+ (interactive "@e")
+ (let* ((sketch-args (when transient-current-prefix (transient-args
'sketch-transient)))
+ (text-args (when transient-current-prefix (transient-args
'sketch-text)))
+ (start (event-start event))
+ (grid-param (plist-get (cdr (posn-image start)) :grid-param))
+ (snap (transient-arg-value "--snap-to-grid=" sketch-args))
+ (coords (if (or (not snap) (string= snap "nil"))
+ (posn-object-x-y start)
+ (sketch-snap-to-grid (posn-object-x-y start)
grid-param)))
+ (text (read-string "Enter text: "))
+ (object-props (list :font-size
+ (transient-arg-value "--font-size=" text-args)
+ :font-weight
+ (transient-arg-value "--font-weight=" text-args)
+ )))
+ ;; :fill
+ ;; (transient-arg-value "--fill-color="
sketch-args)
+ ;; :marker-end (if sketch-args (pcase
(transient-arg-value "--marker=" sketch-args)
+ ;; ("arrow" "url(#arrow)")
+ ;; ("point" "url(#point)")
+ ;; (_ "none"))
+ ;; (if sketch-include-end-marker
+ ;; "url(#arrow)"
+ ;; "none"))))
+ (apply 'svg-text svg-sketch text :x (car coords) :y (cdr coords)
object-props))
+ (sketch-redraw))
+
+ ;; (let* ((args (when transient-current-prefix (transient-args
'sketch-transient)))
+ ;; (print event))))
+ ;; (start (event-start event))
+ ;; (grid-param (plist-get (cdr (posn-image start)) :grid-param))
+ ;; (snap (transient-arg-value "--snap-to-grid=" args))
+ ;; (start-coords (if (or (not snap) (string= snap "nil"))
+ ;; (posn-object-x-y start)
+ ;; (sketch-snap-to-grid (posn-object-x-y start)
grid-param)))
+ ;; (end (event-end event))
+ ;; (end-coords (if (or (not snap) (string= snap "nil"))
+ ;; (posn-object-x-y end)
+ ;; (sketch-snap-to-grid (posn-object-x-y end)
grid-param)))
+ ;; (object-props (list :stroke-width
+ ;; (transient-arg-value "--stroke-width=" args)
+ ;; :stroke
+ ;; (transient-arg-value "--stroke-color=" args)
+ ;; :fill
+ ;; (transient-arg-value "--fill-color=" args)
+ ;; :marker-end (if args (pcase
(transient-arg-value "--marker=" args)
+ ;; ("arrow" "url(#arrow)")
+ ;; ("point" "url(#point)")
+ ;; (_ "none"))
+ ;; (if sketch-include-end-marker
+ ;; "url(#arrow)"
+ ;; "none"))))
+ ;; (command-and-coords (pcase (transient-arg-value "--object=" args)
+ ;; ("line" (list 'svg-line
+ ;; (car start-coords) (cdr
start-coords) (car end-coords) (cdr end-coords)))
+ ;; ("rectangle" `(svg-rectangle
,@(sketch--rectangle-coords start-coords end-coords)))
+ ;; ("circle" (list 'svg-circle
+ ;; (car start-coords) (cdr
start-coords)
+ ;; (sketch--circle-radius
start-coords end-coords)))
+ ;; ("ellipse" `(svg-ellipse
,@(sketch--ellipse-coords start-coords end-coords))))))
+ ;; (apply (car command-and-coords) svg-sketch `(,@(cdr command-and-coords)
,@object-props :id ,(sketch-create-label)))
+ ;; (sketch-redraw)))
+
(transient-define-prefix sketch-transient ()
"Some Emacs magic"
:transient-suffix 'transient--do-call
@@ -309,6 +419,8 @@ values"
("C" "fill-color" sketch-fill-color)]
[("w" "stroke-width" sketch-stroke-width)]
[("m" "end-marker" sketch-object-marker)]]
+ ["Font"
+ ("f" "Add text" sketch-text)]
["Grid"
("s" "Snap to grid" sketch-snap)
("g" "Toggle grid" sketch-toggle-grid)]
- [elpa] branch externals/sketch-mode created (now aaac04d), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 3c8f9f1 05/38: Add documentation (prepare for publishing), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 04dd1db 07/38: Add sketch fonts,
ELPA Syncer <=
- [elpa] externals/sketch-mode ccff908 03/38: Implement toggle grid, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 96ce92b 02/38: First sketch of sketch-mode, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode d3b1831 14/38: Move transient quit for more sketch space, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode a715b8a 12/38: Reformat/compactify transient, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 35255d0 04/38: Implement undo/redo and show/edit/(re)load definition, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 56d7b5d 08/38: Create FUNDING.yml, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode da9e1d7 13/38: Implement help-echo showing coordinates, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 32559c4 06/38: Add remove functionality (id's and labels), ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode 5c37145 09/38: Add sponsor button, ELPA Syncer, 2021/09/15
- [elpa] externals/sketch-mode b944693 10/38: Add crop image feature AND add text transient into main, ELPA Syncer, 2021/09/15