[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/osm ab7ff2b225 1/5: Add mouse menu
From: |
ELPA Syncer |
Subject: |
[elpa] externals/osm ab7ff2b225 1/5: Add mouse menu |
Date: |
Thu, 17 Mar 2022 12:57:40 -0400 (EDT) |
branch: externals/osm
commit ab7ff2b22582372189035f4a3e7f6d7e6eefbcb3
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Add mouse menu
---
README.org | 2 +-
osm.el | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 63 insertions(+), 10 deletions(-)
diff --git a/README.org b/README.org
index ef348bfe02..9670e5ef3c 100644
--- a/README.org
+++ b/README.org
@@ -21,7 +21,7 @@ rendering is ©
[[https://opentopomap.org/about][OpenTopoMap]], licensed under t
- Display of tracks and POIs from GPX file
- Parallel fetching of tiles with curl
- Moving in large and small steps
-- Mouse support (dragging, clicking)
+- Mouse support (dragging, clicking, menu)
- Map scale indicator
- Go to coordinate
- Search for location by name
diff --git a/osm.el b/osm.el
index 0a2d346650..dbf49a62bf 100644
--- a/osm.el
+++ b/osm.el
@@ -253,9 +253,52 @@ Should be at least 7 days according to the server usage
policies."
map)
"Keymap used by `osm-mode'.")
+(defvar osm-server-menu
+ `(menu-item
+ "Server menu" nil
+ :filter
+ (lambda (&optional _)
+ (let (menu last-group)
+ (dolist (server osm-server-list)
+ (let* ((plist (cdr server))
+ (group (plist-get plist :group)))
+ (unless (equal last-group group)
+ (push group menu)
+ (setq last-group group))
+ (push
+ `[,(plist-get plist :name)
+ (osm-server ',(car server))
+ :style toggle
+ :selected (eq osm-server ',(car server))]
+ menu)))
+ (easy-menu-filter-return (nreverse menu)))))
+ "Server menu.")
+
+(easy-menu-define osm-menu osm-mode-map
+ "Menu for `osm-mode."
+ `("Osm mode"
+ ["Home" osm-home t]
+ ["Go to" osm-goto t]
+ ["Search" osm-search t]
+ ["Server" osm-server t]
+ "--"
+ ["Org Link" org-store-link t]
+ ["Elisp Link" osm-elisp-link t]
+ ("Bookmark"
+ ["Set" osm-bookmark-set t]
+ ["Jump" osm-bookmark-jump t]
+ ["Rename" osm-bookmark-rename t]
+ ["Delete" osm-bookmark-delete t])
+ "--"
+ ["Show GPX" osm-gpx-show t]
+ ["Hide GPX" osm-gpx-hide t]
+ "--"
+ ["Clone" clone-buffer t]
+ ["Revert" revert-buffer t]))
+
(defconst osm--placeholder
'(:type svg :width 256 :height 256
- :data "<svg width='256' height='256' version='1.1'
xmlns='http://www.w3.org/2000/svg'>
+ :data "<svg width='256' height='256' version='1.1'
xmlns='http://www.w3.org/2000/svg'>
<defs>
<pattern id='grid' width='16' height='16' patternUnits='userSpaceOnUse'>
<path d='m 0 0 l 0 16 16 0' fill='none' stroke='#888888'/>
@@ -920,9 +963,14 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
(propertize text
'keymap (let ((map (make-sparse-keymap)))
(define-key map [header-line mouse-1]
- (lambda ()
- (interactive "@")
- (call-interactively action)))
+ `(menu-item
+ ""
+ nil :filter
+ ,(lambda (&optional _)
+ (select-window
+ (posn-window
+ (event-start last-input-event)))
+ action)))
map)
'face '(:box (:line-width -2 :style released-button))
'mouse-face '(:box (:line-width -2 :style pressed-button))))
@@ -950,13 +998,16 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
'display `(space :width (,(floor (/ meter
meter-per-pixel)))))
(propertize " " 'face '(:inverse-video t)
'display '(space :width (3)))
- (propertize " " 'display `(space :align-to (- right ,(+ 13 (length
server)) (10))))
+ (propertize " " 'display `(space :align-to
+ (- right ,(+ 5 3 3 2 (length server) 3)
(,(+ 4 1 4 1 4 1 4)))))
(format " Z%-2d " osm--zoom)
(osm--header-button " + " #'osm-zoom-in)
(propertize " " 'display '(space :width (1)))
(osm--header-button " - " #'osm-zoom-out)
(propertize " " 'display '(space :width (1)))
- (osm--header-button (format " %s " server) #'osm-server)))))
+ (osm--header-button (format " %s " server) osm-server-menu)
+ (propertize " " 'display '(space :width (1)))
+ (osm--header-button " ☰ " osm-menu)))))
(defun osm--update ()
"Update map display."
@@ -1129,7 +1180,9 @@ xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'>
(with-current-buffer buffer
;; Handle bookmark deletion and renaming
(pcase this-command
- ((or 'undefined 'ignore)
+ ((or 'undefined 'ignore
+ 'mouse-drag-mode-line 'mouse-drag-header-line
+ 'keyboard-escape-quit 'keyboard-quit)
nil)
((and (guard (eq id 'osm-selected-bookmark))
cmd (or 'osm-bookmark-delete 'osm-bookmark-rename))
@@ -1168,8 +1221,8 @@ Optionally specify a SERVER and a COMMENT."
(ignore comment)
(when (stringp server) (setq server nil)) ;; Ignore comment
`(progn
- (osm--goto (list ,lat ,lon ,zoom) ,(and server (symbolp server) `',server))
- '(osm ,lat ,lon ,zoom ,@(and server (symbolp server) (list server)))))
+ (osm--goto (list ,lat ,lon ,zoom) ,(and server (symbolp server)
`',server))
+ '(osm ,lat ,lon ,zoom ,@(and server (symbolp server) (list server)))))
;;;###autoload
(defun osm-bookmark-jump (bm)