1
0
Fork 0
tinmop/src/gui/client/bookmark-window.lisp

49 lines
2.8 KiB
Common Lisp

(in-package :client-bookmark-window)
(named-readtables:in-readtable nodgui.syntax:nodgui-syntax)
(defun add-to-bookmark-clsr (toplevel iri-entry section-entry description-entry)
(lambda ()
(let ((iri (gui:text iri-entry))
(section (if (text-utils:string-empty-p (gui:text section-entry))
(_ "Default")
(gui:text section-entry)))
(description (if (text-utils:string-empty-p (gui:text description-entry))
iri-entry
(gui:text description-entry))))
(if (gemini-parser:gemini-iri-p iri)
(ev:with-enqueued-process-and-unblock ()
(comm:make-request :gemini-bookmark-add 1 iri section description)
(gui-goodies:info-dialog toplevel
(format nil (_ "The address ~a has been bookmarked") iri)))
(gui-goodies:error-dialog toplevel
(format nil (_ "~s is not a valid gemini address.") iri)))
(gui:exit-from-toplevel toplevel))))
(defun init-window (master iri)
(gui:with-toplevel (toplevel :master master :title (_ "Streams"))
(gui:transient toplevel master)
(let* ((iri-label (make-instance 'gui:label :master toplevel :text (_ "Address")))
(section-label (make-instance 'gui:label :master toplevel :text (_ "Section")))
(description-label (make-instance 'gui:label :master toplevel :text (_ "Description")))
(iri-entry (make-instance 'gui:entry :master toplevel :text iri))
(section-entry (make-instance 'gui:entry :master toplevel :text (_ "Default")))
(description-entry (make-instance 'gui:entry :master toplevel))
(buttons-frame (make-instance 'gui:frame :master toplevel))
(add-button (make-instance 'gui:button
:master buttons-frame
:image icons:*document-add*
:command (add-to-bookmark-clsr toplevel
iri-entry
section-entry
description-entry))))
(gui-goodies:attach-tooltips (add-button (_ "add address bookmarks page")))
(gui:grid iri-label 0 0 :sticky :nwes)
(gui:grid iri-entry 1 0 :sticky :nwes)
(gui:grid section-label 2 0 :sticky :nwes)
(gui:grid section-entry 3 0 :sticky :nwes)
(gui:grid description-label 4 0 :sticky :nwes)
(gui:grid description-entry 5 0 :sticky :nwes)
(gui:grid buttons-frame 6 0 :sticky :s)
(gui:grid add-button 0 0 :sticky :s))))