(ns glimmer-jvui.counter "The same component glimmer-vidya, glimmer-tui and glimmer-gfx render, with jvui underneath instead of egui, a terminal or a rasterizer." (:require [glimmer.ratom :as ra] [glimmer.core :as ui] [glimmer-jvui.core])) ; installs this backend (defn counter [] (let [n (ra/atom 0) loud? (ra/atom false) who (ra/atom "")] (fn [] [:card {} [:title {:label "Counter"}] [:label {:label (str "Count: " (ra/deref n) (when (ra/deref loud?) "!"))}] [:hbox {:spacing 8} [:button {:label "- 1" :on-click #(ra/swap! n dec)}] [:button {:label "+ 1" :kind :primary :on-click #(ra/swap! n inc)}] [:button {:label "reset" :on-click #(ra/reset! n 0)}]] [:separator {}] [:checkbox {:label "Exclaim" :checked (ra/deref loud?) :on-change #(ra/reset! loud? %)}] [:entry {:value (ra/deref who) :placeholder "your name" :on-change #(ra/reset! who %)}] [:label {:dim true :label (if (= "" (ra/deref who)) "nobody yet" (str "hello, " (ra/deref who)))}]]))) (defn -main [& args] (ui/run counter (cond-> {:title "glimmer-jvui" :max-width 420} (some #{"--shot"} args) (assoc :frames 3 :shot "/tmp/glimmer-jvui.bmp"))))