Files
emacs/settings/toolbar-settings.el

201 lines
7.6 KiB
EmacsLisp

;; toolbar-settings.el --- Tool bar settings -*- mode: emacs-lisp; lexical-binding: t -*-
;;; Commentary:
;; icon name and item name must be the same, e.g. pepper
;; "/home/daniel/.config/emacs/icon/pepper.xpm"
;; defining toolbar items
;; emacs look into the data-directory to find files.
;; either copy global etc folder to local and overwrite the path to local
;; (setq data-directory "/home/daniel/.config/emacs/icon/") ;; default "/usr/share/emacs/28.0.50/etc/"
;; or copy local files to global etc folder
;; then add item with name of icon name, e. g. pepper because of pepper.xpm
;; but before changing data-directory, better add local icon folder to the image-load-path
;; Requirements:
;; dialog.el https://www.emacswiki.org/emacs/Dialog https://www.emacswiki.org/emacs/dialog.el https://www.emacswiki.org/emacs/download/dialog.el
;;; Code:
;;(setq tool-bar-style "image") ;; uses GTK+ toolkit / does not work
(use-package x-win
:defer t
:config
(when (boundp 'x-gtk-stock-map)
;; icon-map-list (x-gtk-stock-map)
(delete '("etc/images/diropen" . "n:system-file-manager") x-gtk-stock-map)
(delete '("etc/images/close" . ("window-close" "gtk-close")) x-gtk-stock-map)
(delete '("etc/images/cancel" . "gtk-cancel") x-gtk-stock-map)
(mapc (lambda (item) (add-to-list 'x-gtk-stock-map item))
'(
;; key . value
;; key: file names without extension and with two directory components
;; value: either "stock-icon", "n:named-icon" or ("named-icon" "stock-icon") (or is it like: Let stock be a list of icon names to try.)
("etc/images/diropen" . ("n:folder-stash" "n:system-file-manager"))
("etc/images/close" . ("n:document-close" "window-close" "gtk-close"))
("etc/images/cancel" . ("n:dialog-close" "gtk-cancel"))
("images/newsticker/narrow" . "format-justify-fill")
("etc/images/next-node" . "document-export")
("etc/images/refresh" . ("document-revert" "refresh" "gtk-convert"))
("etc/images/exit" . ("n:application-exit" "n:system-shutdown" "exit" "gtk-quit"))
))))
(use-package dialog
:defer t
:config
(defun my-org-export-dialog-html-fun ()
"Ask."
(interactive)
;;(my-org-export-dialog)
;;(previous-buffer)
;;(get-buffer "*Messages*")
;;(switch-to-buffer "*Messages*")
;;(message "ja")
;;(my-org-export-html
(when t
(message "ja")
(previous-buffer)
(my-org-export-html)
(next-buffer)))
(setq my-org-export-dialog-html-var 'my-org-export-dialog-html-fun)
(defun my-org-export-dialog-pdf-fun ()
"Ask."
(interactive)
(when t
(message "ja")
(previous-buffer)
(my-org-export-pdf)
(next-buffer)))
(setq my-org-export-dialog-pdf-var 'my-org-export-dialog-pdf-fun)
(dialog-define my-org-export-dialog
'(:style window
[navigation 1 1 :tag "Navigation"]
[text 3 1 "Export org document:"]
;;[text 4 1 "HTML"]
;; :notify needs a variable which points to a function
[button-quit 4 1 :tag "HTML" :notify my-org-export-dialog-html-var]
;;[text 5 1 "PDF (LaTeX)"]
[button-quit 5 1 :tag "PDF (LaTeX)" :notify my-org-export-dialog-pdf-var]
[button-quit 7 1]
[text 8 1 ""])
"This is my-org-export dialog.")
;; (my-org-export-dialog)
)
(defun my-org-export-ivy ()
""
(setq my-org-export-list
'(("HTML" . my-org-export-html)
("HTML async" . my-org-export-html-async)
("PDF (LaTeX)" . my-org-export-pdf)
("PDF (LaTeX) async" . my-org-export-pdf-async)))
(ivy-read
"Org export: "
;;'("HTML" "PDF (LaTeX)")
;;'(my-org-export-html "PDF (LaTeX)")
my-org-export-list
:action '(1 ;; index (1 based) of the default action
("s" (lambda (x)
;;(message x)
;;(command-execute 'x)
;;(call-interactively x)
;; get the value from the key value pair and call value (fun)
(funcall (cdr x))
)
"switch"))))
(defun my-org-export ()
""
(interactive)
;;(my-org-export-dialog)
;;(dialog-run 'my-org-export-dialog)
(my-org-export-ivy))
;;(my-org-export)
;;(makunbound 'my-org-export)
;; (describe-key [tool-bar])
;; see tool-bar.el - tool-bar-setup
;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Tool-Bar.html
;; auto-resize-tool-bars
(use-package tool-bar
:after (image)
:defer t
:config
;; TODO: revert after close?
;; TODO: add redo?
;; TODO: add toggle-window-split with icon transform-rotate? or view-multiple-objects
;; TODO: add swap windows left with right with icon view-pages-facing? or better view-split-left-right? text-frame-link
;; TODO: export to html; icon viewhtml?
;; TODO: export to pdf: icon viewpdf?
;;(define-key-after (default-value 'tool-bar-map) [separator-6] menu-bar-separator 'kill-buffer)
;; ("etc/images/spell" "tools-check-spelling" "gtk-spell-check")
;;(tool-bar-add-item-from-menu 'ispell-buffer "spell")
(tool-bar-add-item "spell"
#'flyspell-buffer
'flyspell-buffer
:help "Run function `flyspell-buffer'")
(tool-bar-add-item "languagetool.org"
#'langtool-check-buffer
'langtool-check-buffer
:help "Run function `langtool-check-buffer'")
;; fill, using the defined logic of Menu - Edit - Fill using function fill-region
(tool-bar-add-item "newsticker/narrow"
#'fill-region
'fill-region
:help "Fill text in region to fit between left and right margin `fill-region'")
;;(tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [fill])
;; "images/newsticker/narrow" nil :vert-only t)
;; add separator
(define-key-after (default-value 'tool-bar-map) [separator-4] menu-bar-separator)
;; ("etc/images/refresh" "view-refresh" "gtk-refresh")
(tool-bar-add-item "refresh"
#'revert-buffer
'revert-buffer
:help "Re-read current buffer from its file `revert-buffer'")
;;(tool-bar-add-item-from-menu (lookup-key menu-bar-file-menu [revert-buffer])
;; "refresh" nil :vert-only t)
;; text-html
;;(tool-bar-add-item "export_html"
;; #'my-org-export-html
;; 'my-org-export-html
;; :help "Run function `my-org-export-html'")
;; x-office-document
;;(tool-bar-add-item "export_pdf"
;; #'my-org-export-pdf
;; 'my-org-export-pdf
;; :help "Run function `my-org-export-pdf'")
(tool-bar-add-item "next-node"
#'my-org-export
'my-org-export
:enable '(eq major-mode 'org-mode)
:help "Run function `my-org-export'")
;; add separator
(define-key-after (default-value 'tool-bar-map) [separator-5] menu-bar-separator)
(tool-bar-add-item "cancel"
#'keyboard-escape-quit
'keyboard-escape-quit
:help "Run function `keyboard-escape-quit'")
(tool-bar-add-item "exit"
#'kill-emacs
'kill-emacs
:help "Exit the Emacs job and kill it `kill-emacs'")
;;(tool-bar-add-item-from-menu (lookup-key menu-bar-file-menu [Kill\ Emacs])
;; "exit" nil :vert-only t)
)
(provide 'toolbar-settings)
;;; toolbar-settings.el ends here