{-# LINE 2 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} -- -*-haskell-*- -- GIMP Toolkit (GTK) Widget Tooltips -- -- Author : Axel Simon -- -- Created: 23 May 2001 -- -- Copyright (C) 1999-2005 Axel Simon -- -- This library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- | -- Maintainer : gtk2hs-users@lists.sourceforge.net -- Stability : provisional -- Portability : portable (depends on GHC) -- -- Add tips to your widgets -- module Graphics.UI.Gtk.Misc.Tooltips ( -- * Detail -- -- | Tooltips are the messages that appear next to a widget when the mouse -- pointer is held over it for a short amount of time. They are especially -- helpful for adding more verbose descriptions of things such as buttons in a -- toolbar. -- -- An individual tooltip belongs to a group of tooltips. A group is created -- with a call to 'tooltipsNew'. Every tooltip in the group can then be turned -- off with a call to 'tooltipsDisable' and enabled with 'tooltipsEnable'. -- -- The length of time the user must keep the mouse over a widget before the -- tip is shown, can be altered with 'tooltipsSetDelay'. This is set on a \'per -- group of tooltips\' basis. -- -- To assign a tip to a particular 'Widget', 'tooltipsSetTip' is used. -- -- To associate 'Tooltips' to a widget it is has to have its own 'DrawWindow'. -- Otherwise the widget must be set into an 'EventBox'. -- -- The default appearance of all tooltips in a program is determined by the -- current Gtk+ theme that the user has selected. -- -- Information about the tooltip (if any) associated with an arbitrary -- widget can be retrieved using 'tooltipsDataGet'. -- * Class Hierarchy -- | -- @ -- | 'GObject' -- | +----'Object' -- | +----Tooltips -- @ -- * Types Tooltips, TooltipsClass, castToTooltips, gTypeTooltips, toTooltips, -- * Constructors tooltipsNew, -- * Methods tooltipsEnable, tooltipsDisable, tooltipsSetDelay, tooltipsSetTip, tooltipsDataGet ) where import System.Glib.FFI import System.Glib.UTFString import Graphics.UI.Gtk.Abstract.Object (makeNewObject) import Graphics.UI.Gtk.Types {-# LINE 88 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} {-# LINE 90 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} -------------------- -- Constructors -- | Create a new goup of 'Tooltips'. -- tooltipsNew :: IO Tooltips tooltipsNew = makeNewObject mkTooltips $ gtk_tooltips_new {-# LINE 100 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} -------------------- -- Methods -- | Allows the user to see your tooltips as they navigate your application. -- tooltipsEnable :: TooltipsClass self => self -> IO () tooltipsEnable self = (\(Tooltips arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tooltips_enable argPtr1) {-# LINE 109 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} (toTooltips self) -- | Causes all tooltips in @tooltips@ to become inactive. Any widgets that -- have tips associated with that group will no longer display their tips until -- they are enabled again with 'tooltipsEnable'. -- tooltipsDisable :: TooltipsClass self => self -> IO () tooltipsDisable self = (\(Tooltips arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tooltips_disable argPtr1) {-# LINE 118 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} (toTooltips self) -- | Sets the time between the user moving the mouse over a widget and the -- widget's tooltip appearing. -- -- * Warning: this function is deprecated and should not be used in -- newly-written code. -- tooltipsSetDelay :: TooltipsClass self => self -> Int -- ^ @delay@ - the delay in milliseconds -> IO () tooltipsSetDelay self delay = (\(Tooltips arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_tooltips_set_delay argPtr1 arg2) {-# LINE 132 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} (toTooltips self) (fromIntegral delay) -- | Adds a tooltip containing the message @tipText@ to the specified -- 'Widget'. -- tooltipsSetTip :: (TooltipsClass self, WidgetClass widget) => self -> widget -- ^ @widget@ - the 'Widget' you wish to associate the tip with. -> String -- ^ @tipText@ - a string containing the tip itself. -> String -- ^ @tipPrivate@ - a string of any further information that may be -- useful if the user gets stuck. -> IO () tooltipsSetTip self widget tipText tipPrivate = withUTFString tipPrivate $ \tipPrivatePtr -> withUTFString tipText $ \tipTextPtr -> (\(Tooltips arg1) (Widget arg2) arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_tooltips_set_tip argPtr1 argPtr2 arg3 arg4) {-# LINE 149 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} (toTooltips self) (toWidget widget) tipTextPtr tipPrivatePtr type TooltipsData = Ptr (()) {-# LINE 155 "./Graphics/UI/Gtk/Misc/Tooltips.chs" #-} -- | Retrieves any 'Tooltips' previously associated with the given widget. -- tooltipsDataGet :: WidgetClass w => w -> IO (Maybe (Tooltips, String, String)) tooltipsDataGet w = do tipDataPtr <- (\(Widget arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_tooltips_data_get argPtr1) (toWidget w) if tipDataPtr == nullPtr then return Nothing else do --next line is a hack, tooltips struct member is at offset 0 tooltips <- makeNewObject mkTooltips (return $ castPtr tipDataPtr) tipText <- (\ptr -> do {peekByteOff ptr 8 ::IO (Ptr CChar)}) tipDataPtr >>= peekUTFString tipPrivate <- (\ptr -> do {peekByteOff ptr 12 ::IO (Ptr CChar)}) tipDataPtr >>= peekUTFString return $ Just $ (tooltips, tipText, tipPrivate) foreign import ccall unsafe "gtk_tooltips_new" gtk_tooltips_new :: (IO (Ptr Tooltips)) foreign import ccall unsafe "gtk_tooltips_enable" gtk_tooltips_enable :: ((Ptr Tooltips) -> (IO ())) foreign import ccall unsafe "gtk_tooltips_disable" gtk_tooltips_disable :: ((Ptr Tooltips) -> (IO ())) foreign import ccall unsafe "gtk_tooltips_set_delay" gtk_tooltips_set_delay :: ((Ptr Tooltips) -> (CUInt -> (IO ()))) foreign import ccall unsafe "gtk_tooltips_set_tip" gtk_tooltips_set_tip :: ((Ptr Tooltips) -> ((Ptr Widget) -> ((Ptr CChar) -> ((Ptr CChar) -> (IO ()))))) foreign import ccall unsafe "gtk_tooltips_data_get" gtk_tooltips_data_get :: ((Ptr Widget) -> (IO (Ptr ())))