-- | A simple window to display uneditable, scrollable text (e.g. error logs) module HTk.Toolkit.TextDisplay( createTextDisplayExt, -- :: String-> String-> [Config ...] -> IO()-> IO Toplvl createTextDisplay -- :: String-> String-> [Config ...] -> IO () ) where import Util.Computation import Events.Events import HTk.Toplevel.HTk import HTk.Toolkit.ScrollBox -- | Display some (longish) text in an uneditable, scrollable editor. -- Returns immediately-- the display is forked off to separate thread. createTextDisplayExt :: String -- ^ the title of the window -> String -- ^ the text to be displayed -> [Config Editor] -- ^ configuration options for the text editor -> IO() -- ^ action to be executed when the window is closed -> IO (Toplevel,Editor) -- ^ the window in which the text is displayed createTextDisplayExt title txt conf unpost = do win <- createToplevel [text title] b <- newFrame win [relief Groove, borderwidth (cm 0.05)] t <- newLabel b [text title, font (Helvetica, Roman, 18::Int)] q <- newButton b [text "Close", width 12] (sb, ed) <- newScrollBox b (\p-> newEditor p (state Normal:conf)) [] pack b [Side AtTop, Expand On, Fill Both] pack t [Side AtTop, Expand Off, PadY 10] pack sb [Side AtTop, Expand On, Fill Both] pack ed [Side AtTop, Expand On, Fill Both] pack q [Side AtRight, PadX 5, PadY 5] ed # value txt ed # state Disabled quit <- clicked q _ <- spawnEvent (quit >>> do destroy win; unpost) return (win, ed) -- | Display some (longish) text in an uneditable, scrollable editor. -- Simplified version of createTextDisplayExt createTextDisplay :: String -- ^ the title of the window -> String -- ^ the text to be displayed -> [Config Editor] -- ^ configuration options for the text editor -> IO() createTextDisplay t txt conf = do createTextDisplayExt t txt conf done; done