mirror of
				https://github.com/Drezil/dear-imgui.hs.git
				synced 2025-11-04 07:01:06 +01:00 
			
		
		
		
	Wrap ImGuiIO.iniFilename
This commit is contained in:
		
							
								
								
									
										6
									
								
								Main.hs
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Main.hs
									
									
									
									
									
								
							@@ -5,6 +5,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
module Main (main) where
 | 
					module Main (main) where
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Data.StateVar
 | 
				
			||||||
import Data.IORef
 | 
					import Data.IORef
 | 
				
			||||||
import DearImGui
 | 
					import DearImGui
 | 
				
			||||||
import DearImGui.OpenGL
 | 
					import DearImGui.OpenGL
 | 
				
			||||||
@@ -23,6 +24,11 @@ main = do
 | 
				
			|||||||
    bracket createContext destroyContext \_imguiContext ->
 | 
					    bracket createContext destroyContext \_imguiContext ->
 | 
				
			||||||
    bracket_ (sdl2InitForOpenGL w glContext) sdl2Shutdown $
 | 
					    bracket_ (sdl2InitForOpenGL w glContext) sdl2Shutdown $
 | 
				
			||||||
    bracket_ openGL2Init openGL2Shutdown do
 | 
					    bracket_ openGL2Init openGL2Shutdown do
 | 
				
			||||||
 | 
					      iniFilename $= Just "imgui_state.ini"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      putStr "State stored in: "
 | 
				
			||||||
 | 
					      get iniFilename >>= print
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      checkVersion
 | 
					      checkVersion
 | 
				
			||||||
      styleColorsLight
 | 
					      styleColorsLight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -120,7 +120,7 @@ library
 | 
				
			|||||||
executable test
 | 
					executable test
 | 
				
			||||||
  main-is: Main.hs
 | 
					  main-is: Main.hs
 | 
				
			||||||
  default-language: Haskell2010
 | 
					  default-language: Haskell2010
 | 
				
			||||||
  build-depends: base, sdl2, gl, dear-imgui
 | 
					  build-depends: base, sdl2, gl, dear-imgui, StateVar
 | 
				
			||||||
  ghc-options: -Wall
 | 
					  ghc-options: -Wall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
{-# LANGUAGE BlockArguments #-}
 | 
					{-# LANGUAGE BlockArguments #-}
 | 
				
			||||||
{-# LANGUAGE DuplicateRecordFields #-}
 | 
					{-# LANGUAGE DuplicateRecordFields #-}
 | 
				
			||||||
{-# LANGUAGE FlexibleContexts #-}
 | 
					{-# LANGUAGE FlexibleContexts #-}
 | 
				
			||||||
 | 
					{-# LANGUAGE LambdaCase #-}
 | 
				
			||||||
{-# LANGUAGE NamedFieldPuns #-}
 | 
					{-# LANGUAGE NamedFieldPuns #-}
 | 
				
			||||||
{-# LANGUAGE OverloadedStrings #-}
 | 
					{-# LANGUAGE OverloadedStrings #-}
 | 
				
			||||||
{-# LANGUAGE PatternSynonyms #-}
 | 
					{-# LANGUAGE PatternSynonyms #-}
 | 
				
			||||||
@@ -27,6 +28,9 @@ module DearImGui
 | 
				
			|||||||
  , getDrawData
 | 
					  , getDrawData
 | 
				
			||||||
  , checkVersion
 | 
					  , checkVersion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- ** @ImGUIIO@
 | 
				
			||||||
 | 
					  , iniFilename
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    -- * Demo, Debug, Information
 | 
					    -- * Demo, Debug, Information
 | 
				
			||||||
  , showDemoWindow
 | 
					  , showDemoWindow
 | 
				
			||||||
  , showMetricsWindow
 | 
					  , showMetricsWindow
 | 
				
			||||||
@@ -126,7 +130,7 @@ import qualified Language.C.Inline.Cpp as Cpp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
-- StateVar
 | 
					-- StateVar
 | 
				
			||||||
import Data.StateVar
 | 
					import Data.StateVar
 | 
				
			||||||
  ( HasGetter(get), HasSetter, ($=!) )
 | 
					  ( HasGetter(get), HasSetter, StateVar(..), ($=!) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- transformers
 | 
					-- transformers
 | 
				
			||||||
import Control.Monad.IO.Class
 | 
					import Control.Monad.IO.Class
 | 
				
			||||||
@@ -196,6 +200,24 @@ checkVersion = liftIO do
 | 
				
			|||||||
  [C.exp| void { IMGUI_CHECKVERSION(); } |]
 | 
					  [C.exp| void { IMGUI_CHECKVERSION(); } |]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- | Path to @.ini@ file. Set to 'Nothing' to disable automatic .ini
 | 
				
			||||||
 | 
					-- loading/saving, if e.g. you want to manually load/save from memory.
 | 
				
			||||||
 | 
					iniFilename :: StateVar (Maybe String)
 | 
				
			||||||
 | 
					iniFilename = StateVar getter setter
 | 
				
			||||||
 | 
					  where
 | 
				
			||||||
 | 
					    getter = do
 | 
				
			||||||
 | 
					      cStr <- [C.exp| const char* { GetIO().IniFilename } |]
 | 
				
			||||||
 | 
					      if cStr == nullPtr then return Nothing else Just <$> peekCString cStr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setter = \case
 | 
				
			||||||
 | 
					      Nothing ->
 | 
				
			||||||
 | 
					        [C.block| void { GetIO().IniFilename = $(char* nullPtr); } |]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      Just str -> do
 | 
				
			||||||
 | 
					        strPtr <- newCString str
 | 
				
			||||||
 | 
					        [C.block| void { GetIO().IniFilename = $(char* strPtr); } |]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- | Create demo window. Demonstrate most ImGui features. Call this to learn
 | 
					-- | Create demo window. Demonstrate most ImGui features. Call this to learn
 | 
				
			||||||
-- about the library! Try to make it always available in your application!
 | 
					-- about the library! Try to make it always available in your application!
 | 
				
			||||||
showDemoWindow :: MonadIO m => m ()
 | 
					showDemoWindow :: MonadIO m => m ()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user