From 3f3396f1877c6027a5516856030888fee97bfa69 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Fri, 14 Jun 2024 16:33:23 -0700 Subject: Consolidate Button Layouts --- elchemy-dashboard.el | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) (limited to 'elchemy-dashboard.el') diff --git a/elchemy-dashboard.el b/elchemy-dashboard.el index 6e8b0ae..eee2808 100644 --- a/elchemy-dashboard.el +++ b/elchemy-dashboard.el @@ -14,16 +14,9 @@ (add-text-properties start (point) '(face (:height 4.0)))) (insert "\n\n") - (dotimes (i (length elchemy/dashboard/heading-buttons)) - (let* ((button (nth i elchemy/dashboard/heading-buttons)) - (title (car button)) - (callback (cdr button))) - (insert (buttonize title callback)) - (if (eq (% (+ i 1) elchemy/dashboard/heading-columns) 0) - (insert "\n") - (insert (format (concat "%-" (format "%d" (+ (- elchemy/dashboard/heading-max-length (length title)) elchemy/dashboard/heading-padding)) "s") " "))))) - (unless (eq (% (length elchemy/dashboard/heading-buttons) elchemy/dashboard/heading-columns) 0) - (insert "\n")) + (elchemy/display-tabular-button-alist + elchemy/dashboard/heading-buttons + elchemy/dashboard/heading-columns elchemy/dashboard/heading-padding) (insert "\n\n") (when (file-exists-p (concat elchemy/elchemy-root elchemy/elchemy-projects-file)) (let ((start (point))) @@ -31,11 +24,10 @@ (add-text-properties start (point) '(face (:height 1.5)))) (insert "\n") - (mapcar #'(lambda (x) (let ((name (car x)) - (path (cdr x))) - (insert (buttonize name (lambda (y) (elchemy/find-file y)) path) "\n"))) - (elchemy/read-alist-file (concat elchemy/elchemy-root elchemy/elchemy-projects-file))) - (insert "\n")) + (elchemy/display-tabular-button-alist + (elchemy/read-alist-file (concat elchemy/elchemy-root elchemy/elchemy-projects-file)) + elchemy/dashboard/projects-columns elchemy/dashboard/projects-padding) + (insert "\n")) (ignore-errors (setq agenda-items (mapcar #'(lambda (x) (elchemy/get-agenda-items x 3)) elchemy/dashboard-agenda-titles) agenda-max-count (apply 'max (mapcar #'(lambda (x) (length x)) agenda-items)) @@ -45,11 +37,7 @@ (add-text-properties start (point) '(face (:height 1.5)))) (insert "\n") - (let ((start (point))) - (insert (apply 'format (concat "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s" "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s" "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s") elchemy/dashboard-agenda-titles)) - (add-text-properties start (point) - '(face (:weight bold :slant italic :foreground "red")))) - (insert "\n") + (insert (apply 'format (concat "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s" "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s" "%s\n") elchemy/dashboard-agenda-titles)) (dotimes (i agenda-max-count) (insert (format (concat "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s") @@ -58,11 +46,25 @@ (concat "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s") (elchemy/replace-nil (nth i (nth 1 agenda-items))))) (insert (format - (concat "%-" (format "%d" (+ agenda-max-length elchemy/dashboard-agenda-padding)) "s") + "%s" (elchemy/replace-nil (nth i (nth 2 agenda-items))))) (insert "\n") - )) - (insert "\n") + ) + (insert "\n") + (let ((start (point))) + (insert "Overdue") + (add-text-properties start (point) + '(face (:height 1.5)))) + (insert "\n") + (insert (elchemy/format-processed-agenda (mapcar 'elchemy/process-agenda-heading (org-ql-select (org-agenda-files) `(and (todo "STRT" "WAIT" "TODO" "CYCL") (ts :from ,(- elchemy/schedule-lookahead) :to today)) :sort '(todo priority date))))) + (insert "\n") + (let ((start (point))) + (insert "Upcoming") + (add-text-properties start (point) + '(face (:height 1.5)))) + (insert "\n") + (insert (elchemy/format-processed-agenda (mapcar 'elchemy/process-agenda-heading (org-ql-select (org-agenda-files) `(and (todo "STRT" "WAIT" "TODO" "CYCL") (ts :from today :to ,elchemy/schedule-lookahead)) :sort '(todo priority date))))) + (insert "\n")) (let ((start (point))) (insert "Command Reference") (add-text-properties start (point) -- cgit v1.2.1