diff --git a/examples/list/dune b/examples/list/dune index 890388a..b00e73b 100644 --- a/examples/list/dune +++ b/examples/list/dune @@ -1,3 +1,3 @@ (executable - (name main) - (libraries minttea spices leaves str)) + (name main) + (libraries minttea spices leaves str)) diff --git a/minttea/minttea.ml b/minttea/minttea.ml index 30e33fd..e565d30 100644 --- a/minttea/minttea.ml +++ b/minttea/minttea.ml @@ -4,20 +4,28 @@ module Command = Command module App = App module Program = Program +type config = { + fps: int; +} + +let make_config ?(fps = 60) () = {fps} + +let default_config = make_config () + let app = App.make -let run ?(fps = 60) ~initial_model app = +let run ?fps ~initial_model app = let prog = Program.make ~app ~fps in Program.run prog initial_model; Logger.trace (fun f -> f "terminating") -let start app ~initial_model = +let start ?(config = default_config) app ~initial_model = let module App = struct let start () = Logger.set_log_level None; let pid = spawn_link (fun () -> - run app ~initial_model; + run ~fps:config.fps app ~initial_model; Logger.trace (fun f -> f "about to shutdown"); shutdown ~status:0 ()) in diff --git a/minttea/minttea.mli b/minttea/minttea.mli index 2770820..5c56de2 100644 --- a/minttea/minttea.mli +++ b/minttea/minttea.mli @@ -46,5 +46,15 @@ val app : unit -> 'model App.t +(** Configuration for a TUI app. Use {!make_config} to create a configuration value. *) +type config + +(** Create a configuration to be used by {!start}. Default configuration parameters are: + + - [fps]: 60 + +*) +val make_config: ?fps:int -> unit -> config + val run : ?fps:int -> initial_model:'model -> 'model App.t -> unit -val start : 'model App.t -> initial_model:'model -> unit +val start : ?config:config -> 'model App.t -> initial_model:'model -> unit