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?
class WindowClass self $B"M(B SettingsWindowClass self where
settingsWindowGetSettings :: self $B"*(B IO [ConnectionSetting]
settingsWindowSetSettings :: self $B"*(B [ConnectionSetting] $B"*(B IO ()
newtype SettingsWindow = SettingsWindow (Window,[ConnectionSetting])
mkSettingsWindow = SettingsWindow
unSettingsWindow (SettingsWindow o) = o
settingsWindowNew :: IO SettingsWindow
settingsWindowNew = do
win $B"+(B windowNew
return $ mkSettingsWindow (win,)
2) Is this a common practice in gtk2hs usage?
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?