emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/sketch-mode 8b63796 19/38: First try: implement update


From: ELPA Syncer
Subject: [elpa] externals/sketch-mode 8b63796 19/38: First try: implement update for both type side-winows
Date: Wed, 15 Sep 2021 16:57:36 -0400 (EDT)

branch: externals/sketch-mode
commit 8b63796df62712976b745527a9b73ae11e9cc485
Author: Daniel Nicolai <dalanicolai@gmail.com>
Commit: Daniel Nicolai <dalanicolai@gmail.com>

    First try: implement update for both type side-winows
---
 sketch-mode.el    | 60 ++++++++++++++++++++++++++++++++++++++++++++++---------
 sketch-scratch.el | 17 ----------------
 2 files changed, 51 insertions(+), 26 deletions(-)

diff --git a/sketch-mode.el b/sketch-mode.el
index 85f9b2c..f757bc1 100644
--- a/sketch-mode.el
+++ b/sketch-mode.el
@@ -34,18 +34,18 @@
 
 ;; DONE add remove (objects) functionality (see `svg-remove')
 
-;; TODO move font transient (also its suffix) into main sketch transient 
(suffix)
+;; DONE move font transient (also its suffix) into main sketch transient 
(suffix)
 
-;; TODO add functionality to crop/select part of image (on save)
+;; DONE add functionality to crop/select part of image (on save)
 
-;; TODO add functionality to modify objects
+;; TODO add functionality to modify objects (see `add-object-modify-feature' 
branch)
 
 ;; 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
-;; (after editing)
+;; (after editing, DONE see `add-object-modify-feature' branch)
 
 ;; TODO add functionality to start drawing from org-mode source block and 
update
 ;; source block after each draw/edit
@@ -396,8 +396,9 @@ values"
    [([sketch drag-mouse-1] "Draw object"  sketch-interactively-1)
     ([sketch mouse-1] "Draw text"  sketch-text-interactively)
     ([sketch C-S-drag-mouse-1] "Crop image" sketch-crop)]
-   [("R" "Remove object" sketch-remove-object)
-    ("u" "Undo" sketch-undo)
+   [("T" "Transfrom object" sketch-modify-object)
+    ("R" "Remove object" sketch-remove-object)]
+    [("u" "Undo" sketch-undo)
     ("r" "Redo" sketch-redo)]
    [("d" "Show definition" sketch-show-definition)
     ("D" "Copy definition" sketch-copy-definition)
@@ -511,9 +512,15 @@ values"
                      (sketch-translate-node-coords node dy 'y))))
           (cddr sketch-root)))
 
-(defun sketch-redraw ()
+(defun sketch-redraw (&optional lisp lisp-buffer)
   (unless sketch-mode
     (user-error "Not in sketch-mode buffer"))
+  (let ((lisp-window (or (get-buffer-window "*sketch-root*")
+                         (get-buffer-window lisp-buffer))))
+    (unless (string= (buffer-name (window-buffer lisp-window)) "*sketch*")
+      (if-let (buf (get-buffer"*sketch-root*"))
+          (sketch-update-lisp-window sketch-root buf)
+        (sketch-update-lisp-window lisp lisp-buffer))))
   (setq sketch-svg (append svg-canvas
                     (when sketch-show-grid (cddr svg-grid))
                     (cddr sketch-root)
@@ -616,9 +623,9 @@ values"
 (transient-define-suffix sketch-show-definition ()
   ;; :transient 'transient--do-exit
   (interactive)
-  (if-let (win (get-buffer-window "sketch-svg"))
+  (if-let (win (get-buffer-window "*sketch-root*"))
       (delete-window win)
-    (let ((buffer (get-buffer-create "sketch-svg"))
+    (let ((buffer (get-buffer-create "*sketch-root*"))
           (sketch sketch-root))
       (set-window-dedicated-p
        (get-buffer-window
@@ -730,5 +737,40 @@ values"
 (transient-define-suffix sketch-save ()
   (interactive)
   (image-save))
+
+
+;;; Modify object
+
+(transient-define-suffix sketch-translate-down (args)
+  (interactive (list (transient-args 'sketch-modify-object)))
+  (let* ((object (transient-arg-value "--object=" args))
+         (object-def (dom-by-id sketch-svg (format "^a$" object)))
+         (props (cadar object-def)))
+    (dolist (coord '(y1 y2))
+      (cl-incf (alist-get coord props) 10))
+    (sketch-redraw object-def)))
+
+(transient-define-prefix sketch-modify-object ()
+  "Set object properties."
+  :transient-suffix     'transient--do-call
+  ["Properties"
+   [("o" "object" "--object=")]]
+  [("<down>" "Down" sketch-translate-down)
+   ("q" "Quit" transient-quit-one)]
+  (interactive)
+  (let* ((object (completing-read "Transform element with id: "
+                                 (sketch-labels-list)))
+         (buffer (get-buffer-create (format "*sketch-object-%s*" object))))
+    (display-buffer buffer '(display-buffer-in-side-window . ((side . right) 
(window-width . 70))))
+    (pp (cadar (dom-by-id sketch-svg (format "^%s$" object))) buffer)
+    (transient-setup 'sketch-modify-object nil nil :value (list (format 
"--object=%s" object)))))
+
+(defun sketch-update-lisp-window (lisp buffer)
+  ;; (let ((sketch sketch-root))
+  (with-current-buffer buffer
+    (erase-buffer)
+    (pp lisp (current-buffer))))
+
+
  (provide 'sketch-mode)
 ;;; sketch-mode.el ends here
diff --git a/sketch-scratch.el b/sketch-scratch.el
index 7c52f85..d89b298 100644
--- a/sketch-scratch.el
+++ b/sketch-scratch.el
@@ -42,20 +42,3 @@
                                                 props)))))
     (tabulated-list-print)))
 
-(defun sketch-translate-down ()
-  (interactive)
-  (let* ((props (cadar (dom-by-id svg "^a$"))))
-    (dolist (coord '(y1 y2))
-      (cl-incf (alist-get coord props) 10)))
-  (sketch-redraw))
-
-(transient-define-prefix sketch-modify-object ()
-  "Set object properties."
-  :transient-suffix     'transient--do-call
-  ["Properties"
-   [("x1" "author" "author=")
-    ("y" "year" "year=")]]
-  [("<down>" "Down" sketch-translate-down)
-   ("q" "Quit" transient-quit-one)])
-  ;; (interactive)
-  ;; (djvu-switch-shared))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]