To: lablgtk at kaba.or.jp Subject: further tries with Ocaml and glade From: Friedrich Dominicus Organization: Q Software Solutions GmbH Date: Fri, 28 May 2004 12:08:49 +0200 Message-ID: <87isegdfta.fsf at fbigm.here> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Ok I tried to get futher with it and used my one filler for the list_view let make_model data = let cols = new GTree.column_list in let str_col = cols#add Gobject.Data.string in let l = GTree.list_store cols in List.iter (fun (entry) -> let row = l#append () in l#set ~row ~column:str_col entry) data ; (l, str_col) I tried to wrap the generated class for the View like this: class exchange_rate () = object (self) inherit window1 () initializer let (store, column) = make_model currencies in let make_view_col () = let renderer = GTree.cell_renderer_text [] in let view_col = GTree.view_column ~title:"Currencies" in view_col#pack renderer ; view_col#add_attribute renderer "text" column ; view_col in to_cur#set_model (Some(store :> GTree.model)); to_cur#append_column column; from_cur#set_model (Some(store :> GTree.model)); from_cur#append_column column end Does not look to bad IMHO but: lablgtk2 exchange_rate.ml File "exchange_rate.ml", line 231, characters 10-18: This expression has type ?renderer:#GTree.cell_renderer * (string * 'a GTree.column) list -> unit -> GTree.view_column It has no method pack So I'm not getting how the classes really work together and the types involved. So back to hacking.. code which has worked has looked like this: let main () = let window = GWindow.window ~resizable:false ~width:500 ~height:400 () in window#connect#destroy ~callback:GMain.quit; let vbox = GPack.vbox ~homogeneous:false ~packing:window#add () in let hbox = GPack.hbox ~height:230 ~spacing:20 ~packing:vbox#add () in let sw_from = GBin.scrolled_window ~shadow_type:`ETCHED_IN ~vpolicy:`AUTOMATIC ~hpolicy:`NEVER ~packing:hbox#add () in let sw_to = GBin.scrolled_window ~shadow_type:`ETCHED_IN ~vpolicy:`AUTOMATIC ~hpolicy:`NEVER ~packing:hbox#add () in let model, c = make_model currencies in let from_cur = GTree.view ~model ~packing:sw_from#add () in from_cur#append_column(make_view c "From"); let from_cur = from_cur in let to_cur = GTree.view ~model ~packing:sw_to#add() in to_cur#append_column(make_view c "To"); let amount_line = GPack.hbox ~height: 50 ~spacing:10 ~packing:vbox#add () in let amount_label = GMisc.label ~text:"Amount:" ~packing:amount_line#add () in amount_label#set_justify `LEFT; let amount_out = GEdit.entry ~packing:amount_line#add () in let out_line = GPack.hbox ~height: 50 ~spacing:10 ~packing:vbox#add () in let out_label = GMisc.label ~text:"Exchange rate:" ~packing:out_line#add() in out_label#set_justify `LEFT; let out_text = GMisc.label ~packing:out_line#add () in out_text#set_text "Exchange rate will be put here."; let button_line = GPack.button_box `HORIZONTAL ~spacing:10 ~border_width: 10 ~child_width:50 ~child_height:20 (* ~layout:`SPREAD *) ~packing:vbox#add () in button_line#set_homogeneous true; let pb_exchange_rate = GButton.button ~use_mnemonic:true ~label:"_Exchange Rate" ~packing:button_line#add () in pb_exchange_rate#connect#clicked ~callback:(fun () -> fetch_exchange_rate from_cur to_cur out_text); let pb_cancel = GButton.button ~use_mnemonic:true ~label:"_Cancel" ~packing:button_line#add () in pb_cancel#connect#clicked ~callback:GMain.quit; window#show(); GMain.main () I would really prefer not having such a mud-ball of code .... Regards Friedrich