let ask_for_a_specific_option = fun ?parent name ->
let dialog = GWindow.dialog ~title:"New option" ?parent ()
in
let main_box =
GPack.table
~columns:2 ~rows:2
~row_spacings:5 ~col_spacings:10
~packing:(dialog#vbox#pack ~expand:true)
~border_width:5
()
in
ignore (GMisc.label ~text:"Database" ~xalign:0.
~packing:(main_box#attach ~top:0 ~left:0 ~expand:`NONE ~fill:`X)
());
ignore (GMisc.label ~text:name ~xalign:0.
~packing:(main_box#attach ~top:1 ~left:0 ~expand:`NONE ~fill:`X)
());
let db_entry =
GEdit.entry
~packing:(main_box#attach ~top:0 ~left:1 ~expand:`X ~fill:`X) ()
and opt_entry =
GEdit.entry
~packing:(main_box#attach ~top:1 ~left:1 ~expand:`X ~fill:`X) ()
in
dialog#action_area#set_layout `START;
dialog#add_button_stock `OK `OK;
dialog#add_button_stock `CANCEL `CANCEL;
let rec ask_for_option = fun () ->
match dialog#run () with
| `OK ->
let db = Dbf_misc.trim db_entry#text
and opt = Dbf_misc.trim opt_entry#text in
if db = "" || opt = "" then begin
GToolbox.message_box ~title:"Invalid input"
"You must fill all the fields";
ask_for_option ()
end else begin
dialog#destroy ();
Some (db, opt)
end
| _ ->
dialog#destroy ();
None
in
ask_for_option ()