From 4519aa756ea81cd640ff3bcb2b390f0d4a8b0562 Mon Sep 17 00:00:00 2001 From: cage Date: Sun, 7 May 2023 12:21:29 +0200 Subject: [PATCH] - [GUI] added button to subscribe (and unsubscribe) to a gemlog. --- data/icons/fmw_rss-add.png | Bin 0 -> 1753 bytes data/icons/fmw_rss-delete.png | Bin 0 -> 1747 bytes src/constants.lisp | 2 + src/db.lisp | 3 + src/gui/client/icons.lisp | 118 ++++++++-------- src/gui/client/internal-paths.lisp | 3 + src/gui/client/main-window.lisp | 134 ++++++++++++------- src/gui/server/public-api-gemini-gemlog.lisp | 5 + src/gui/server/public-api.lisp | 1 + src/package.lisp | 6 +- 10 files changed, 172 insertions(+), 100 deletions(-) create mode 100644 data/icons/fmw_rss-add.png create mode 100644 data/icons/fmw_rss-delete.png diff --git a/data/icons/fmw_rss-add.png b/data/icons/fmw_rss-add.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcce0f162a289d8a1109a8eb507777539e6d669 GIT binary patch literal 1753 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 literal 0 HcmV?d00001 diff --git a/src/constants.lisp b/src/constants.lisp index 76882a5..8c3c22c 100644 --- a/src/constants.lisp +++ b/src/constants.lisp @@ -170,3 +170,5 @@ General Public License for more details." (define-constant +internal-scheme+ "about" :test #'string=) (define-constant +internal-path-bookmark+ "bookmark" :test #'string=) + +(define-constant +internal-path-gemlogs+ "gemlog" :test #'string=) diff --git a/src/db.lisp b/src/db.lisp index 75d6bc9..3203601 100644 --- a/src/db.lisp +++ b/src/db.lisp @@ -3106,6 +3106,9 @@ than `days-in-the-past' days (default: `(swconf:config-purge-cache-days-offset)' (defun gemini-cancel-subscription (gemlog-url) (query (delete-from +table-gemini-subscription+ (where (:= :url gemlog-url))))) +(defun gemini-gemlog-subscribed-p (gemlog-url) + (query (select :* (from +table-gemini-subscription+) (where (:= :url gemlog-url))))) + (defun find-gemlog-entry (post-url) (when-let* ((query (select :* (from +table-gemlog-entries+) diff --git a/src/gui/client/icons.lisp b/src/gui/client/icons.lisp index b2ea5d3..d80ac9f 100644 --- a/src/gui/client/icons.lisp +++ b/src/gui/client/icons.lisp @@ -2,77 +2,85 @@ (a:define-constant +icon-dir+ "/data/icons/" :test #'string=) -(a:define-constant +search+ "fmw_search" :test #'string=) +(a:define-constant +search+ "fmw_search" :test #'string=) -(a:define-constant +back+ "fmw_back" :test #'string=) +(a:define-constant +back+ "fmw_back" :test #'string=) -(a:define-constant +go+ "fmw_go" :test #'string=) +(a:define-constant +go+ "fmw_go" :test #'string=) -(a:define-constant +open-tour+ "fmw_open_tour" :test #'string=) +(a:define-constant +open-tour+ "fmw_open_tour" :test #'string=) -(a:define-constant +refresh+ "fmw_refresh" :test #'string=) +(a:define-constant +refresh+ "fmw_refresh" :test #'string=) -(a:define-constant +up+ "fmw_uparrow" :test #'string=) +(a:define-constant +up+ "fmw_uparrow" :test #'string=) -(a:define-constant +document-delete+ "fmw_document-delete" :test #'string=) +(a:define-constant +document-delete+ "fmw_document-delete" :test #'string=) -(a:define-constant +document-add+ "fmw_document-add" :test #'string=) +(a:define-constant +document-add+ "fmw_document-add" :test #'string=) -(a:define-constant +document-accept+ "fmw_document-accept" :test #'string=) +(a:define-constant +document-accept+ "fmw_document-accept" :test #'string=) -(a:define-constant +document-edit+ "fmw_document-edit" :test #'string=) +(a:define-constant +document-edit+ "fmw_document-edit" :test #'string=) -(a:define-constant +folder+ "fmw_folder" :test #'string=) +(a:define-constant +folder+ "fmw_folder" :test #'string=) -(a:define-constant +star-yellow+ "fmw_star-yellow.png" :test #'string=) +(a:define-constant +star-yellow+ "fmw_star-yellow.png" :test #'string=) -(a:define-constant +star-blue+ "fmw_star-blue.png" :test #'string=) +(a:define-constant +star-blue+ "fmw_star-blue.png" :test #'string=) -(a:define-constant +arrow-up+ "fmw_arrow-up" :test #'string=) +(a:define-constant +arrow-up+ "fmw_arrow-up" :test #'string=) -(a:define-constant +arrow-down+ "fmw_arrow-down" :test #'string=) +(a:define-constant +arrow-down+ "fmw_arrow-down" :test #'string=) -(a:define-constant +cross+ "fmw_cross" :test #'string=) +(a:define-constant +cross+ "fmw_cross" :test #'string=) -(a:define-constant +bus-go+ "fmw_bus-go" :test #'string=) +(a:define-constant +bus-go+ "fmw_bus-go" :test #'string=) -(a:define-constant +dice+ "fmw_dice" :test #'string=) +(a:define-constant +dice+ "fmw_dice" :test #'string=) -(defparameter *search* nil) +(a:define-constant +gemlog-subscribe+ "fmw_rss-add.png" :test #'string=) -(defparameter *back* nil) +(a:define-constant +gemlog-unsubscribe+ "fmw_rss-delete.png" :test #'string=) -(defparameter *open-iri* nil) +(defparameter *search* nil) -(defparameter *open-tour* nil) +(defparameter *back* nil) -(defparameter *refresh* nil) +(defparameter *open-iri* nil) -(defparameter *up* nil) +(defparameter *open-tour* nil) -(defparameter *document-delete* nil) +(defparameter *refresh* nil) -(defparameter *document-add* nil) +(defparameter *up* nil) -(defparameter *document-accept* nil) +(defparameter *document-delete* nil) -(defparameter *document-edit* nil) +(defparameter *document-add* nil) -(defparameter *folder* nil) +(defparameter *document-accept* nil) -(defparameter *star-yellow* nil) +(defparameter *document-edit* nil) -(defparameter *star-blue* nil) +(defparameter *folder* nil) -(defparameter *arrow-up* nil) +(defparameter *star-yellow* nil) -(defparameter *arrow-down* nil) +(defparameter *star-blue* nil) -(defparameter *cross* nil) +(defparameter *arrow-up* nil) -(defparameter *bus-go* nil) +(defparameter *arrow-down* nil) -(defparameter *dice* nil) +(defparameter *cross* nil) + +(defparameter *bus-go* nil) + +(defparameter *dice* nil) + +(defparameter *gemlog-subscribe* nil) + +(defparameter *gemlog-unsubscribe* nil) (defun load-icon (filename) (let ((path (if (not (re:scan "(?i)png$" filename)) @@ -84,21 +92,23 @@ (gui:make-image data))))) (defun load-icons () - (setf *search* (load-icon +search+)) - (setf *back* (load-icon +back+)) - (setf *open-iri* (load-icon +go+)) - (setf *open-tour* (load-icon +open-tour+)) - (setf *refresh* (load-icon +refresh+)) - (setf *up* (load-icon +up+)) - (setf *document-delete* (load-icon +document-delete+)) - (setf *document-add* (load-icon +document-add+)) - (setf *document-accept* (load-icon +document-accept+)) - (setf *document-edit* (load-icon +document-edit+)) - (setf *folder* (load-icon +folder+)) - (setf *star-yellow* (load-icon +star-yellow+)) - (setf *star-blue* (load-icon +star-blue+)) - (setf *arrow-up* (load-icon +arrow-up+)) - (setf *arrow-down* (load-icon +arrow-down+)) - (setf *cross* (load-icon +cross+)) - (setf *bus-go* (load-icon +bus-go+)) - (setf *dice* (load-icon +dice+))) + (setf *search* (load-icon +search+)) + (setf *back* (load-icon +back+)) + (setf *open-iri* (load-icon +go+)) + (setf *open-tour* (load-icon +open-tour+)) + (setf *refresh* (load-icon +refresh+)) + (setf *up* (load-icon +up+)) + (setf *document-delete* (load-icon +document-delete+)) + (setf *document-add* (load-icon +document-add+)) + (setf *document-accept* (load-icon +document-accept+)) + (setf *document-edit* (load-icon +document-edit+)) + (setf *folder* (load-icon +folder+)) + (setf *star-yellow* (load-icon +star-yellow+)) + (setf *star-blue* (load-icon +star-blue+)) + (setf *arrow-up* (load-icon +arrow-up+)) + (setf *arrow-down* (load-icon +arrow-down+)) + (setf *cross* (load-icon +cross+)) + (setf *bus-go* (load-icon +bus-go+)) + (setf *dice* (load-icon +dice+)) + (setf *gemlog-subscribe* (load-icon +gemlog-subscribe+)) + (setf *gemlog-unsubscribe* (load-icon +gemlog-unsubscribe+))) diff --git a/src/gui/client/internal-paths.lisp b/src/gui/client/internal-paths.lisp index 0dd7722..87639eb 100644 --- a/src/gui/client/internal-paths.lisp +++ b/src/gui/client/internal-paths.lisp @@ -6,6 +6,9 @@ (defun internal-iri-bookmark () (make-internal-iri +internal-path-bookmark+)) +(defun internal-iri-gemlogs () + (make-internal-iri +internal-path-gemlogs+)) + (defun show-bookmarks-page (main-window) (ev:with-enqueued-process-and-unblock () (let ((parsed-page (comm:make-request :gemini-generate-bookmark-page 1)) diff --git a/src/gui/client/main-window.lisp b/src/gui/client/main-window.lisp index 2a6ac2d..f736d3c 100644 --- a/src/gui/client/main-window.lisp +++ b/src/gui/client/main-window.lisp @@ -157,13 +157,17 @@ (print-info-message (_ "Stream finished")) (render-toc main-window iri)) (if (cev:enqueue-request-and-wait-results :gemini-bookmarked-p - 1 - ev:+standard-event-priority+ - iri) + 1 + ev:+standard-event-priority+ + iri) (ev:with-enqueued-process-and-unblock () (set-bookmark-button-true main-window)) (ev:with-enqueued-process-and-unblock () - (set-bookmark-button-false main-window))))) + (set-bookmark-button-false main-window))) + (ev:with-enqueued-process-and-unblock () + (if (comm:make-request :gemini-gemlog-subscribed-p 1 iri) + (set-subscribe-button-subscribed main-window) + (set-subscribe-button-unsubscribed main-window))))) (defun start-streaming-thread (main-window iri &key @@ -252,7 +256,11 @@ (tour-button :initform nil :initarg :tour-button - :accessor tour-button))) + :accessor tour-button) + (subscribe-button + :initform nil + :initarg :subscribe-button + :accessor subscribe-button))) (defun autocomplete-iri-clsr (toolbar) (declare (ignore toolbar)) @@ -797,7 +805,18 @@ (defun set-bookmark-button-true (main-window) (set-bookmark-button-image main-window icons:*star-blue*)) -(defun bookmark-iri-clsr (main-window) +(defun set-subscribe-button-image (main-window image) + (with-accessors ((tool-bar tool-bar)) main-window + (with-accessors ((subscribe-button subscribe-button)) tool-bar + (gui:configure subscribe-button :image image)))) + +(defun set-subscribe-button-unsubscribed (main-window) + (set-subscribe-button-image main-window icons:*gemlog-subscribe*)) + +(defun set-subscribe-button-subscribed (main-window) + (set-subscribe-button-image main-window icons:*gemlog-unsubscribe*)) + +(defun toggle-bookmark-iri-clsr (main-window) (lambda () (with-accessors ((tool-bar tool-bar)) main-window (with-accessors ((iri-entry iri-entry)) tool-bar @@ -812,6 +831,23 @@ (set-bookmark-button-false main-window)) (client-bookmark-window:init-window main-window (gui:text iri-entry)))))))) +(defun toggle-subscribtion-iri-clsr (main-window) + (lambda () + (with-accessors ((tool-bar tool-bar)) main-window + (with-accessors ((iri-entry iri-entry)) tool-bar + (ev:with-enqueued-process-and-unblock () + (let* ((iri (gui:text iri-entry)) + (subscribedp (comm:make-request :gemini-gemlog-subscribed-p + 1 + iri))) + (if subscribedp + (progn + (comm:make-request :gemini-gemlog-unsubscribe 1 iri) + (set-subscribe-button-unsubscribed main-window)) + (progn + (comm:make-request :gemini-gemlog-subscribe 1 iri) + (set-subscribe-button-subscribed main-window))))))))) + (defun tour-visit-next-iri-clsr (main-window) (lambda () (let ((next-link (cev:enqueue-request-and-wait-results :tour-pop-link @@ -827,13 +863,14 @@ (toc-frame toc-frame) (gemtext-widget gemtext-widget) (ir-lines ir-lines)) main-window - (with-accessors ((iri-entry iri-entry) - (back-button back-button) - (reload-button reload-button) - (up-button up-button) - (go-button go-button) - (bookmark-button bookmark-button) - (tour-button tour-button)) tool-bar + (with-accessors ((iri-entry iri-entry) + (back-button back-button) + (reload-button reload-button) + (up-button up-button) + (go-button go-button) + (bookmark-button bookmark-button) + (tour-button tour-button) + (subscribe-button subscribe-button)) tool-bar (let ((entry-autocomplete (gui-mw:autocomplete-entry-widget iri-entry)) (toc-listbox (gui:listbox (toc-listbox toc-frame)))) (gui:bind entry-autocomplete @@ -845,44 +882,51 @@ (gui:bind toc-listbox #$<>$ (toc-callback-clsr main-window)) - (setf (gui:command go-button) (open-iri-clsr main-window t)) - (setf (gui:command reload-button) (reload-iri-clsr main-window)) - (setf (gui:command back-button) (back-iri-clsr main-window)) - (setf (gui:command up-button) (up-iri-clsr main-window)) - (setf (gui:command bookmark-button) (bookmark-iri-clsr main-window)) - (setf (gui:command tour-button) (tour-visit-next-iri-clsr main-window)))))) + (setf (gui:command go-button) (open-iri-clsr main-window t)) + (setf (gui:command reload-button) (reload-iri-clsr main-window)) + (setf (gui:command back-button) (back-iri-clsr main-window)) + (setf (gui:command up-button) (up-iri-clsr main-window)) + (setf (gui:command bookmark-button) (toggle-bookmark-iri-clsr main-window)) + (setf (gui:command tour-button) (tour-visit-next-iri-clsr main-window)) + (setf (gui:command subscribe-button) (toggle-subscribtion-iri-clsr main-window)))))) (defmethod initialize-instance :after ((object tool-bar) &key &allow-other-keys) - (with-accessors ((iri-entry iri-entry) - (back-button back-button) - (reload-button reload-button) - (up-button up-button) - (go-button go-button) - (bookmark-button bookmark-button) - (tour-button tour-button)) object + (with-accessors ((iri-entry iri-entry) + (back-button back-button) + (reload-button reload-button) + (up-button up-button) + (go-button go-button) + (bookmark-button bookmark-button) + (tour-button tour-button) + (subscribe-button subscribe-button)) object (gui:configure object :relief :raised) (setf iri-entry (make-instance 'gui-mw:autocomplete-entry :master object :autocomplete-function (autocomplete-iri-clsr object))) - (setf back-button (make-instance 'gui:button :master object :image icons:*back*)) - (setf reload-button (make-instance 'gui:button :master object :image icons:*refresh*)) - (setf go-button (make-instance 'gui:button :master object :image icons:*open-iri*)) - (setf up-button (make-instance 'gui:button :master object :image icons:*up*)) - (setf bookmark-button (make-instance 'gui:button :master object)) - (setf tour-button (make-instance 'gui:button :master object :image icons:*bus-go*)) - (gui-goodies:attach-tooltips (back-button (_ "go back")) - (reload-button (_ "reload address")) - (go-button (_ "go to address")) - (up-button (_ "one level up")) - (bookmark-button (_ "add or remove bookmark")) - (tour-button (_ "go to the next link in tour"))) - (gui:grid back-button 0 0 :sticky :nsw) - (gui:grid reload-button 0 1 :sticky :nsw) - (gui:grid up-button 0 2 :sticky :nsw) - (gui:grid iri-entry 0 3 :sticky :nswe :padx +minimum-padding+) - (gui:grid go-button 0 4 :sticky :nsw) - (gui:grid bookmark-button 0 5 :sticky :nsw) - (gui:grid tour-button 0 6 :sticky :nsw) + (setf back-button (make-instance 'gui:button :master object :image icons:*back*)) + (setf reload-button (make-instance 'gui:button :master object :image icons:*refresh*)) + (setf go-button (make-instance 'gui:button :master object :image icons:*open-iri*)) + (setf up-button (make-instance 'gui:button :master object :image icons:*up*)) + (setf bookmark-button (make-instance 'gui:button :master object)) + (setf tour-button (make-instance 'gui:button :master object :image icons:*bus-go*)) + (setf subscribe-button (make-instance 'gui:button + :master object + :image icons:*gemlog-subscribe*)) + (gui-goodies:attach-tooltips (back-button (_ "go back")) + (reload-button (_ "reload address")) + (go-button (_ "go to address")) + (up-button (_ "one level up")) + (bookmark-button (_ "add or remove bookmark")) + (tour-button (_ "go to the next link in tour")) + (subscribe-button (_ "subscribe/unsubscribe to this gemlog"))) + (gui:grid back-button 0 0 :sticky :nsw) + (gui:grid reload-button 0 1 :sticky :nsw) + (gui:grid up-button 0 2 :sticky :nsw) + (gui:grid iri-entry 0 3 :sticky :nswe :padx +minimum-padding+) + (gui:grid go-button 0 4 :sticky :nsw) + (gui:grid bookmark-button 0 5 :sticky :nsw) + (gui:grid subscribe-button 0 6 :sticky :nsw) + (gui:grid tour-button 0 7 :sticky :nsw) (gui:grid-columnconfigure object 3 :weight 2) object)) diff --git a/src/gui/server/public-api-gemini-gemlog.lisp b/src/gui/server/public-api-gemini-gemlog.lisp index 984f9cd..394ce3c 100644 --- a/src/gui/server/public-api-gemini-gemlog.lisp +++ b/src/gui/server/public-api-gemini-gemlog.lisp @@ -22,6 +22,11 @@ (defun gemini-gemlog-subscribe (iri) (gemini-subscription::subscribe iri)) +(defun gemini-gemlog-subscribed-p (iri) + (if (db:gemini-gemlog-subscribed-p iri) + t + nil)) + (defclass gemini-gemlog-subscriptions (box) ()) (defmethod yason:encode ((object gemini-gemlog-subscriptions) &optional (stream *standard-output*)) diff --git a/src/gui/server/public-api.lisp b/src/gui/server/public-api.lisp index 25ddf1e..497ef74 100644 --- a/src/gui/server/public-api.lisp +++ b/src/gui/server/public-api.lisp @@ -116,6 +116,7 @@ (gen-rpc "gemini-bookmark-table" 'gemini-bookmark-table) (gen-rpc "gemini-bookmarked-p" 'gemini-bookmarked-p "iri" 0) (gen-rpc "gemini-gemlog-subscribe" 'gemini-gemlog-subscribe "iri" 0) + (gen-rpc "gemini-gemlog-subscribed-p" 'gemini-gemlog-subscribed-p "iri" 0) (gen-rpc "gemini-gemlog-all-subscription" 'gemini-gemlog-all-subscription) (gen-rpc "gemini-gemlog-unsubscribe" 'gemini-gemlog-unsubscribe "iri" 0) (gen-rpc "gemini-gemlog-entries" 'gemini-gemlog-entries diff --git a/src/package.lisp b/src/package.lisp index c1a0f83..e3f6663 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -72,6 +72,7 @@ :+file-scheme+ :+internal-scheme+ :+internal-path-bookmark+ + :+internal-path-gemlogs+ ;; GUI :+minimum-padding+ :+ps-file-dialog-filter+ @@ -1101,6 +1102,7 @@ :find-gemlog-entry :gemini-all-unread-posts :gemini-cancel-subscription + :gemini-gemlog-subscribed-p :add-gemlog-entries :gemlog-mark-as-seen :gemlog-url @@ -3342,7 +3344,9 @@ :*arrow-down* :*cross* :*bus-go* - :*dice*)) + :*dice* + :*gemlog-subscribe* + :*gemlog-unsubscribe*)) (defpackage :validation (:use