harbour-sextant/lisp/local-projects/cockpit/cockpit.lisp
Renaud Casenave-Péré e6b27769fa WIP Backup
2025-10-09 09:25:45 +02:00

66 lines
1.8 KiB
Common Lisp

(uiop:define-package :cockpit
(:use :cl :eql :qml-lisp :sextant :config :options)
(:export
#:show-welcome-screen-p
#:data-path))
(in-package :cockpit)
(qrequire :quick)
(defconstant +cockpit-version+ 0)
(defun initialize ()
(ext:catch-signal ext:+SIGTERM+ :catch)
(ext:set-signal-handler ext:+SIGTERM+ #'terminate)
(load-config-file "harbour-sextant" "config.lisp")
(when (and (not (slynkp)) (get-slynk-at-startup-p))
(start-slynk))
;; (when (< (get-last-seen-version) +cockpit-version+)
;; (qjs |showWelcomeScreen| "filesPage"
;; (qlet ((root-url "QUrl(QString)" qml:*root*))
;; (|path| root-url))
;; "welcome.org"))
)
(defun finalize ()
(save-config-file "harbour-sextant" "config.lisp")
(when (slynkp)
(stop-slynk)))
;; (defun start ()
;; (qconnect qml:*quick-view* "statusChanged(QQuickView::Status)"
;; (lambda (status)
;; (case status
;; (#.|QQuickView.Ready| (qml-reloaded)))))
;; (qconnect qml:*quick-view* "closing(QQuickCloseEvent*)"
;; (lambda (close)
;; (declare (ignore close))
;; (finalize))))
(defun terminate ()
(finalize)
(qrun #'qquit))
(defun reload-qml (&optional url)
"Reload QML file from an url, directly on the device."
(qrun*
(if url
(|setSource| qml:*quick-view* (qnew "QUrl(QString)" url))
(qml:reload))
(|toString| (|source| qml:*quick-view*))))
(defun set-qml (url)
(|setSource| qml:*quick-view* (qnew "QUrl(QString)" url))
(|toString| (|source| qml:*quick-view*)))
(defun qml-reloaded ())
(defun show-welcome-screen-p () (< (get-last-seen-version) +cockpit-version+))
(defun data-path ()
(qlet ((root-url "QUrl(QString)" qml:*root*))
(|path| root-url)))
(initialize)
;; (qlater #'start)