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