[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/subed 5577c44bac 2/8: Add support for setting timestamps w
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/subed 5577c44bac 2/8: Add support for setting timestamps with the mouse |
Date: |
Sun, 18 Jun 2023 16:02:31 -0400 (EDT) |
branch: elpa/subed
commit 5577c44bace1636237c84a18143505259b0fd417
Author: Marcin Borkowski <mbork@mbork.pl>
Commit: Marcin Borkowski <mbork@mbork.pl>
Add support for setting timestamps with the mouse
---
subed/subed-waveform.el | 41 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 39 insertions(+), 2 deletions(-)
diff --git a/subed/subed-waveform.el b/subed/subed-waveform.el
index 62993f5dd6..4cfbc32693 100644
--- a/subed/subed-waveform.el
+++ b/subed/subed-waveform.el
@@ -73,6 +73,14 @@ when people speak are indistinguishable from silence."
:type 'number
:group 'subed-waveform)
+(defcustom subed-waveform-timestamp-resolution
+ 20
+ "Resolution of the timestamps.
+When the user clicks on the waveform, the timestamp set will be
+rounded to the nearest multiple of this number."
+ :type 'integer
+ :group 'subed-waveform)
+
(defun subed-show-waveform-p ()
"Whether waveform is displayed for the current subtitle."
(member #'subed-waveform-put-svg subed-subtitle-motion-hook))
@@ -249,6 +257,13 @@ times per second."
subed--waveform-stop))
(subed--waveform-update-overlay-svg))
+(defconst subed-waveform-map
+ (let ((subed-waveform-map (make-keymap)))
+ (define-key subed-waveform-map [mouse-1] #'subed-waveform-set-start)
+ (define-key subed-waveform-map [mouse-3] #'subed-waveform-set-stop)
+ subed-waveform-map)
+ "A keymap for clicking on the waveform.")
+
(defun subed--waveform-update-overlay-svg ()
"Update the SVG in the overlay.
Assume `subed--waveform-svg' is already set."
@@ -256,8 +271,9 @@ Assume `subed--waveform-svg' is already set."
'before-string
(propertize
" "
- 'display
- (svg-image subed--waveform-svg))))
+ 'display (svg-image subed--waveform-svg)
+ 'pointer 'arrow
+ 'keymap subed-waveform-map)))
(defun subed-waveform-put-svg ()
"Put an overlay with the SVG in the current subtitle.
@@ -274,6 +290,27 @@ Set the relevant variables if necessary."
"\n"))
(subed--waveform-set-svg))
+(defun waveform-mouse-event-to-ms (event)
+ "Return the millisecond position of EVENT."
+ (let* ((x (car (elt (cadr event) 8)))
+ (width (car (elt (cadr event) 9))))
+ (* subed-waveform-timestamp-resolution
+ (round (+ (* (/ (* 1.0 x) width)
+ (- subed--waveform-stop subed--waveform-start))
+ subed--waveform-start)
+ subed-waveform-timestamp-resolution))))
+
+(defun subed-waveform-set-start (event)
+ "Set the start timestamp in the place clicked."
+ (interactive "e")
+ (subed-set-subtitle-time-start (waveform-mouse-event-to-ms event))
+ (subed--waveform-update-bars (subed-subtitle-msecs-start)))
+
+(defun subed-waveform-set-stop (event)
+ "Set the start timestamp in the place clicked."
+ (interactive "e")
+ (subed-set-subtitle-time-stop (waveform-mouse-event-to-ms event))
+ (subed--waveform-update-bars (subed-subtitle-msecs-start)))
(provide 'subed-waveform)
;;; subed-waveform.el ends here
- [nongnu] elpa/subed updated (2606208506 -> 6ce7de37f2), ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed ec701d3a57 1/8: Add the capability to display waveforms, ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed fe09133aa5 6/8: Untabify everything, ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed 6286279b93 4/8: Switch to subed-waveform-minor-mode, allow filter functions, ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed 504ac658fb 5/8: waveform: subed-waveform-preview-msecs-before / after, and more mouse commands, ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed b716bd8fdc 7/8: Actually use `subed-waveform-minor-mode-map', ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed 5577c44bac 2/8: Add support for setting timestamps with the mouse,
ELPA Syncer <=
- [nongnu] elpa/subed 93dde01c74 3/8: Merge remote-tracking branch 'mbork/waveform' into waveform, ELPA Syncer, 2023/06/18
- [nongnu] elpa/subed 6ce7de37f2 8/8: 1.2.3 - merge subed-waveform, ELPA Syncer, 2023/06/18