uni-htk-2.2.0.0: HTk/Tix/Subwidget.hs
module HTk.Tix.Subwidget (
CanBeSubwidget (..),
createSubwidget
) where
import HTk.Kernel.Core
(ObjectKind (..),createGUIObject,ObjectName,ObjectID,TclScript,
ConfigOption, Methods (..), GUIOBJECT,getObjectName,getParentObject)
import HTk.Kernel.BaseClasses (Widget)
-- | Using the function createSubwidget, instantiating the
-- @class CanBeSubwidget@
-- should be easy, compare as an example instantiation of the @Entry@ widget.
createSubwidget :: ObjectKind -> Methods -> GUIOBJECT -> IO GUIOBJECT
createSubwidget kind meths megawidget
= do mwName <- getObjectName megawidget
Just parent <- getParentObject megawidget
let megaName = show mwName
createGUIObject parent (SUBWIDGET kind megaName)
(meths { createCmd = tkDoNothing })
-- ---------------------------------------------------------
-- TkDoNothing: There is nothing to do to create Subwidgets.
-- ---------------------------------------------------------
tkDoNothing::ObjectName->ObjectKind->ObjectName->ObjectID->[ConfigOption]
->TclScript
tkDoNothing _ _ _ _ _ = []
{-# INLINE tkDoNothing #-}
-- | Tix mega widgets are composed of several subwidgets.
-- As it is sometimes important to access these subwidgets, there
-- is a way in Htk of creating widgets as subwidgets by instanciating the
-- @class CanBeSubwidget@.
-- | Use createAsSubwidget instead of the normal constructor new[WidgetName].
class Widget w => CanBeSubwidget w where
createAsSubwidget :: GUIOBJECT -> IO w
-- The only parameter is a reference to the mega widget the subwidget
-- is part of.