diff --git a/etc/gui.conf b/etc/gui.conf index 82de4a8..dc4b71c 100644 --- a/etc/gui.conf +++ b/etc/gui.conf @@ -184,7 +184,11 @@ keybinding.stream = "Control-s" keybinding.certificates = "Control-c" -keybinding.tour = "Control-t" +keybinding.tour.manage = "Control-t" + +keybinding.tour.next = "Alt-t" + +keybinding.tour.shuffle = "Alt-S" keybinding.gemlog = "Control-g" diff --git a/src/gui/client/client-configuration.lisp b/src/gui/client/client-configuration.lisp index 76d1eee..8844774 100644 --- a/src/gui/client/client-configuration.lisp +++ b/src/gui/client/client-configuration.lisp @@ -36,7 +36,10 @@ stream certificates tour - type-address) + type-address + next + shuffle + manage) (defun load-config-file (&optional (virtual-filepath +client-conf-filename+) (perform-missing-value-check nil)) @@ -250,9 +253,32 @@ (not (swconf:false-value-p (access:accesses *client-configuration* swconf:+key-toc+ +key-underline+))))) + +(defun keybinding->tk-event (keys) + (strcat "<" keys ">")) + (defun get-keybinding (key) - (strcat "<" - (access:accesses *client-configuration* - +key-keybinding+ - key) - ">")) + (keybinding->tk-event (access:accesses *client-configuration* + +key-keybinding+ + key))) + +(swconf:gen-simple-access (keybinding-tour-next + :transform-value-fn keybinding->tk-event + :configuration-tree *client-configuration*) + +key-keybinding+ + +key-tour+ + +key-next+) + +(swconf:gen-simple-access (keybinding-tour-shuffle + :transform-value-fn keybinding->tk-event + :configuration-tree *client-configuration*) + +key-keybinding+ + +key-tour+ + +key-shuffle+) + +(swconf:gen-simple-access (keybinding-tour-manage + :transform-value-fn keybinding->tk-event + :configuration-tree *client-configuration*) + +key-keybinding+ + +key-tour+ + +key-manage+) diff --git a/src/gui/client/main-window.lisp b/src/gui/client/main-window.lisp index 439b45f..bd5634b 100644 --- a/src/gui/client/main-window.lisp +++ b/src/gui/client/main-window.lisp @@ -241,11 +241,11 @@ (gui:make-menubutton tour (_ "Manage") #'menu:show-tour - :accelerator (client-configuration:get-keybinding :tour)) + :accelerator (client-configuration:config-keybinding-tour-manage)) (gui:make-menubutton tour (_ "Shuffle") (lambda () (client-tour-window:enqueue-shuffle-tour)) - :underline 0) + :accelerator (client-configuration:config-keybinding-tour-shuffle)) (gui:make-menubutton gemlogs (_ "Show") #'menu:manage-gemlogs @@ -1269,7 +1269,7 @@ (declare (ignore e)) (menu:show-certificates))) (gui:bind (gui:root-toplevel) - (client-configuration:get-keybinding :tour) + (client-configuration:config-keybinding-tour-manage) (lambda (e) (declare (ignore e)) (menu:show-tour))) @@ -1290,7 +1290,17 @@ (let* ((autocomplete-entry (iri-entry (tool-bar main-window))) (entry (nodgui.mw:autocomplete-entry-widget autocomplete-entry))) (gui:focus entry) - (gui:set-selection entry 0 :end))))) + (gui:set-selection entry 0 :end)))) + (gui:bind (gui:root-toplevel) + (client-configuration:config-keybinding-tour-shuffle) + (lambda (e) + (declare (ignore e)) + (client-tour-window:enqueue-shuffle-tour))) + (gui:bind (gui:root-toplevel) + (client-configuration:config-keybinding-tour-next) + (lambda (e) + (declare (ignore e)) + (funcall (tour-visit-next-iri-clsr main-window))))) (defun init-main-window () (let ((gui:*debug-tk* nil)) diff --git a/src/package.lisp b/src/package.lisp index f0cc983..3d810b5 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -3287,7 +3287,10 @@ :config-toc-maximum-width :config-toc-minimum-width :toc-font-configuration - :get-keybinding)) + :get-keybinding + :config-keybinding-tour-shuffle + :config-keybinding-tour-manage + :config-keybinding-tour-next)) (defpackage :client-os-utils (:use