From: <kr_...@us...> - 2003-08-30 22:57:50
|
Update of /cvsroot/htoolkit/port/src/Port In directory sc8-pr-cvs1:/tmp/cvs-serv28624/port/src/Port Modified Files: Controls.hs Handlers.hs Log Message: Add support for icons in Notebook Index: Controls.hs =================================================================== RCS file: /cvsroot/htoolkit/port/src/Port/Controls.hs,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Controls.hs 24 Aug 2003 13:57:34 -0000 1.19 --- Controls.hs 30 Aug 2003 22:57:46 -0000 1.20 *************** *** 95,99 **** -- * NotebookPage , insertNotebookPage ! , getNotebookPageTitle, setNotebookPageTitle , getNotebookPagePos , destroyNotebookPage --- 95,100 ---- -- * NotebookPage , insertNotebookPage ! , getNotebookPageTitle, setNotebookPageTitle ! , getNotebookPageBitmap, setNotebookPageBitmap , getNotebookPagePos , destroyNotebookPage *************** *** 103,109 **** import Foreign import Foreign.C import Graphics.UI.Port.Types import Graphics.UI.Port.Handlers -- just for haddock ! import Data.Maybe(fromMaybe) ----------------------------------------------------------------------------------------- --- 104,112 ---- import Foreign import Foreign.C + import Control.Concurrent.MVar + import Data.Maybe(fromMaybe) import Graphics.UI.Port.Types import Graphics.UI.Port.Handlers -- just for haddock ! import Graphics.UI.Port.PtrMap as PtrMap ----------------------------------------------------------------------------------------- *************** *** 500,501 **** --- 503,520 ---- getNotebookPageSize hwnd = withCSizeResult (osGetNotebookPageSize hwnd) foreign import ccall osGetNotebookPageSize :: WindowHandle -> Ptr CInt -> IO () + + setNotebookPageBitmap :: WindowHandle -> Maybe Bitmap -> IO () + setNotebookPageBitmap hwnd (Just bmp) = do + map <- takeMVar windowBitmaps + withCBitmap bmp (osSetNotebookPageBitmap hwnd) + putMVar windowBitmaps (insert hwnd bmp map) + setNotebookPageBitmap hwnd Nothing = do + map <- takeMVar windowBitmaps + osSetNotebookPageBitmap hwnd nullPtr + putMVar windowBitmaps (delete hwnd map) + foreign import ccall osSetNotebookPageBitmap :: WindowHandle -> BitmapHandle -> IO () + + getNotebookPageBitmap :: WindowHandle -> IO (Maybe Bitmap) + getNotebookPageBitmap hwnd = do + map <- readMVar windowBitmaps + return (PtrMap.lookup hwnd map) Index: Handlers.hs =================================================================== RCS file: /cvsroot/htoolkit/port/src/Port/Handlers.hs,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** Handlers.hs 25 Aug 2003 17:35:49 -0000 1.28 --- Handlers.hs 30 Aug 2003 22:57:46 -0000 1.29 *************** *** 60,71 **** ,setMenuUpdateHandler, setMenuUpdateDefHandler, getMenuUpdateHandler ,setMenuDestroyHandler, setMenuDestroyDefHandler, getMenuDestroyHandler ! -- ** Internals ! ,menuBitmaps ! -- * ToolBar events ,setToolCommandHandler, setToolCommandDefHandler, getToolCommandHandler ,setToolDestroyHandler, setToolDestroyDefHandler, getToolDestroyHandler -- ** Internals ! ,toolBitmaps ) where --- 60,70 ---- ,setMenuUpdateHandler, setMenuUpdateDefHandler, getMenuUpdateHandler ,setMenuDestroyHandler, setMenuDestroyDefHandler, getMenuDestroyHandler ! -- * ToolBar events ,setToolCommandHandler, setToolCommandDefHandler, getToolCommandHandler ,setToolDestroyHandler, setToolDestroyDefHandler, getToolDestroyHandler + -- ** Internals ! ,toolBitmaps, menuBitmaps, windowBitmaps ) where *************** *** 167,170 **** --- 166,173 ---- = unsafePerformIO (newMVar empty) + {-# NOINLINE windowBitmaps #-} + windowBitmaps :: MVar (PtrMap WindowHandle Bitmap) + windowBitmaps = unsafePerformIO (newMVar empty) + setWindowDestroyHandler :: WindowHandle -> IO () -> IO () setWindowDestroyHandler hwnd handler *************** *** 189,192 **** --- 192,197 ---- Nothing -> return () Just io -> safeio io + map <- takeMVar windowBitmaps + putMVar windowBitmaps (delete hwnd map) unregisterWindow hwnd |