let edit_ft_rules available_rules =
let l = List.map
(fun (ft, rule) -> { conf_ft = ft ; conf_rule = rule })
ft_rules#get
in
let apply l =
ft_rules#set
(List.map (fun c -> (c.conf_ft, c.conf_rule)) l);
save_ft ()
in
let edit c =
let params = params_for_ft_rule available_rules c in
ignore (C.simple_get Cam_messages.edit
~width: 300
~height: 100
params
);
c
in
let add () =
let c = { conf_ft = "" ; conf_rule = "" } in
let params = params_for_ft_rule available_rules c in
match C.simple_get Cam_messages.add
~width: 300
~height: 100
params
with
C.Return_ok -> [c]
| _ -> []
in
let display c =
[ Glib.Convert.locale_to_utf8 c.conf_ft ;
Glib.Convert.locale_to_utf8 c.conf_rule ;
]
in
let param = C.list
~f: apply
~edit
~add
~titles: [Cam_messages.file_type ; Cam_messages.rule ]
""
display l
in
ignore
(C.simple_get Cam_messages.file_types_rules
~width: 400
~height: 500
[param]
)