Skip to content

Commit

Permalink
Add support for disabled blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
jship committed Feb 20, 2024
1 parent 47402c1 commit de0f7f8
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/DearImGui.hs
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,11 @@ module DearImGui
, Raw.beginTooltip
, Raw.endTooltip

-- ** Disabled blocks
, withDisabled
, Raw.beginDisabled
, Raw.endDisabled

-- * Popups/Modals

-- ** Generic
Expand Down Expand Up @@ -1763,6 +1768,17 @@ setTabItemClosed tabName = liftIO do
withTooltip :: MonadUnliftIO m => m a -> m a
withTooltip = bracket_ Raw.beginTooltip Raw.endTooltip


-- | Action wrapper for disabled blocks.
--
-- See 'Raw.beginDisabled' and 'Raw.endDisabled' for more info.
withDisabled :: (MonadUnliftIO m, HasGetter ref Bool) => ref -> m a -> m a
withDisabled disabledRef action = do
disabled <- get disabledRef
if disabled then bracket_ (Raw.beginDisabled 1) Raw.endDisabled action else action



-- | Returns 'True' if the popup is open, and you can start outputting to it.
--
-- Wraps @ImGui::BeginPopup()@
Expand Down
25 changes: 25 additions & 0 deletions src/DearImGui/Raw.hs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ module DearImGui.Raw
, setNextWindowSizeConstraints
, setNextWindowCollapsed
, setNextWindowBgAlpha
, beginDisabled
, endDisabled

-- ** Child Windows
, beginChild
Expand Down Expand Up @@ -1582,6 +1584,29 @@ setNextWindowBgAlpha alpha = liftIO do
[C.exp| void { SetNextWindowBgAlpha($(float alpha)) } |]


-- | Begin a block that may be disabled. This disables all user interactions
-- and dims item visuals.
--
-- Always call a matching 'endDisabled' for each 'beginDisabled' call.
--
-- The boolean argument is only intended to facilitate use of boolean
-- expressions. If you can avoid calling @beginDisabled 0@ altogether,
-- that should be preferred.
--
-- Wraps @ImGui::BeginDisabled()@
beginDisabled :: (MonadIO m) => CBool -> m ()
beginDisabled disabled = liftIO do
[C.exp| void { BeginDisabled($(bool disabled)) } |]


-- | Ends a block that may be disabled.
--
-- Wraps @ImGui::EndDisabled()@
endDisabled :: (MonadIO m) => m ()
endDisabled = liftIO do
[C.exp| void { EndDisabled() } |]


-- | undo a sameLine or force a new line when in an horizontal-layout context.
--
-- Wraps @ImGui::NewLine()@
Expand Down

0 comments on commit de0f7f8

Please sign in to comment.