Skip to content

Commit

Permalink
[settings] use a spin button for really large values
Browse files Browse the repository at this point in the history
starting to solve #795
  • Loading branch information
flixr committed Aug 17, 2014
1 parent ff669f8 commit 1d810cd
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions sw/ground_segment/cockpit/page_settings.ml
Expand Up @@ -134,14 +134,24 @@ let one_setting = fun (i:int) (do_change:int -> float -> unit) packing dl_settin
b) in
(callback, fun j -> try buttons.(truncate j - ilower)#set_active true with _ -> ())
else (* slider *)
let range = upper -. lower in
let value = (lower +. upper) /. 2. in
let adj = GData.adjustment ~value ~lower ~upper:(upper+.step_incr) ~step_incr ~page_incr ~page_size () in
let _scale = GRange.scale `HORIZONTAL ~digits ~update_policy:`DELAYED ~adjustment:adj ~packing:hbox#add () in
let f = fun _ -> do_change i ((adj#value-.alt_b)/.alt_a) in
let callback = fun () -> modified := true; if auto_but#active then f () in
ignore (adj#connect#value_changed ~callback);
ignore (auto_but#connect#toggled ~callback);
(f, fun x -> try adj#set_value x with _ -> ())
if range > 10000. then
let adj = GData.adjustment ~value ~lower ~upper:(upper+.step_incr) ~step_incr ~page_incr ~page_size:0. () in
let _spinbutton = GEdit.spin_button ~adjustment:adj ~numeric:true ~packing:hbox#add () in
let f = fun _ -> do_change i ((adj#value-.alt_b)/.alt_a) in
let callback = fun () -> modified := true; if auto_but#active then f () in
ignore (adj#connect#value_changed ~callback);
ignore (auto_but#connect#toggled ~callback);
(f, fun x -> try adj#set_value x with _ -> ())
else
let adj = GData.adjustment ~value ~lower ~upper:(upper+.step_incr) ~step_incr ~page_incr ~page_size () in
let _scale = GRange.scale `HORIZONTAL ~digits ~update_policy:`DELAYED ~adjustment:adj ~packing:hbox#add () in
let f = fun _ -> do_change i ((adj#value-.alt_b)/.alt_a) in
let callback = fun () -> modified := true; if auto_but#active then f () in
ignore (adj#connect#value_changed ~callback);
ignore (auto_but#connect#toggled ~callback);
(f, fun x -> try adj#set_value x with _ -> ())
in
let set_default = fun x ->
if not !modified then set_default x else () in
Expand Down

0 comments on commit 1d810cd

Please sign in to comment.