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

40 lines
1.6 KiB
Common Lisp

(in-package :client-certificates-window)
(named-readtables:in-readtable nodgui.syntax:nodgui-syntax)
(defclass certificate-frame (gui:frame)
((tree
:accessor tree
:initform nil
:initarg :tree)
(rows
:accessor rows
:initform '()
:initarg :rows)))
(defmethod initialize-instance :after ((object certificate-frame) &key)
(with-accessors ((tree tree)
(rows rows)) object
(let ((treeview (make-instance 'gui:scrolled-treeview
:master object
:pack '(:side :top :expand t :fill :both)
:columns (list (_ "File")
(_ "Fingerprint")))))
(gui:treeview-heading treeview gui:+treeview-first-column-id+
:text (_ "Address"))
(loop for row in rows do
(let* ((tree-row (make-instance 'gui:tree-item
:id (db:row-cache-key row)
:text (db:row-cache-key row)
:column-values (list (getf row :file)
(getf row :hash))
:index gui:+treeview-last-index+)))
(gui:treeview-insert-item treeview :item tree-row)))
(setf tree treeview)
object)))
(defun init-window (master rows)
(gui:with-modal-toplevel (toplevel :master master :title (_ "Certificates"))
(gui:transient toplevel master)
(gui:grid (make-instance 'certificate-frame :master toplevel :rows rows) 0 0)))