On Fri, 2008-12-12 at 21:03 +0100, Cetin Sert wrote: > Hi all, > > For a network manager of sorts I'm working on, I want to derive a > SettingsWindowClass from the WindowClass present in Gtk2Hs: > > I want (the) instance(s) of the SettingsWindowClass to have a field to > store connection settings: > > 1) Is it safe to do it like this?
You've missed out the unsafe bit where you make SettingsWindow an instance of class WindowClass. That bit will not work because the upcast function is not a proper Haskell function just is just a pointer cast. Currently the assumption is that each gtk2hs type is backed by a C type held in a ForeignPtr. We should generalise that to allow subclasses defined in Haskell. > class WindowClass self ⇒ SettingsWindowClass self where > settingsWindowGetSettings :: self → IO [ConnectionSetting] > settingsWindowSetSettings :: self → [ConnectionSetting] → IO () > > newtype SettingsWindow = SettingsWindow (Window,[ConnectionSetting]) So you can use this newtype, you just can't make it an instance of WindowClass. > mkSettingsWindow = SettingsWindow > unSettingsWindow (SettingsWindow o) = o > > settingsWindowNew :: IO SettingsWindow > settingsWindowNew = do > win ← windowNew > return $ mkSettingsWindow (win,[]) > > 2) Is this a common practice in gtk2hs usage? Making records of widgets is pretty common. > 3) And will GC properly free the memory allocated for the Window > object? How is this ensured, do ForeignPtr's always call delete on the > underlying C ptr when they get garbage collected? Right, exactly. Duncan ------------------------------------------------------------------------------ SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/ _______________________________________________ Gtk2hs-devel mailing list Gtk2hs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel