mirror of https://codeberg.org/cage/tinmop/
49 lines
2.8 KiB
Common 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))))
|