current state
This commit is contained in:
99
app/Main.hs
99
app/Main.hs
@ -7,18 +7,19 @@ import Data.Aeson (eitherDecodeFileStrict')
|
||||
import Control.Monad.Managed
|
||||
import Control.Concurrent
|
||||
import DearImGui
|
||||
import DearImGui.Plot
|
||||
import DearImGui.OpenGL3
|
||||
import DearImGui.GLFW
|
||||
import DearImGui.GLFW.OpenGL
|
||||
import DearImGui.SDL
|
||||
import DearImGui.SDL.OpenGL
|
||||
import Run
|
||||
import RIO.Process
|
||||
import System.Directory
|
||||
import Options.Applicative.Simple
|
||||
import qualified Paths_ibhelper
|
||||
import qualified Graphics.UI.GLFW as GLFW
|
||||
import qualified Data.Text as T
|
||||
import Prelude (putStrLn)
|
||||
import AppFiller
|
||||
import SDL
|
||||
|
||||
|
||||
main :: IO ()
|
||||
@ -50,59 +51,55 @@ main = do
|
||||
withLogFunc lo $ \lf -> do
|
||||
-- let bare_log = unLogFunc $ view logFuncL lf
|
||||
-- logErr = liftIO . bare_log callStack "" LevelError
|
||||
initialized <- GLFW.init
|
||||
unless initialized $ error "GLFW init failed"
|
||||
initializeAll
|
||||
|
||||
liftIO $ runManaged $ do
|
||||
mwin <- managed $ bracket
|
||||
(GLFW.createWindow (settings ^. windowParams . windowWidth) (settings ^. windowParams . windowHeight) "IB-Helper" Nothing Nothing)
|
||||
(maybe (return ()) GLFW.destroyWindow)
|
||||
case mwin of
|
||||
Just win -> do
|
||||
liftIO $ do
|
||||
GLFW.makeContextCurrent (Just win)
|
||||
GLFW.swapInterval 1
|
||||
win <- do
|
||||
let title = "IB-Helper"
|
||||
let config = defaultWindow { windowGraphicsContext = OpenGLContext defaultOpenGL
|
||||
, windowInitialSize = V2 (settings ^. windowParams . windowWidth . to fromIntegral) (settings ^. windowParams . windowHeight . to fromIntegral)
|
||||
, windowResizable = True
|
||||
}
|
||||
managed $ bracket (createWindow title config) destroyWindow
|
||||
|
||||
-- Create an ImGui context
|
||||
_ <- managed $ bracket createContext destroyContext
|
||||
-- Create OpenGL Context
|
||||
glContext <- managed $ bracket (glCreateContext win) glDeleteContext
|
||||
|
||||
-- Create an ImPlot context
|
||||
-- _ <- managed $ bracket createPlotContext destroyPlotContext
|
||||
-- Create an ImGui context
|
||||
_ <- managed $ bracket createContext destroyContext
|
||||
|
||||
-- Initialize ImGui's GLFW backend
|
||||
_ <- managed_ $ bracket_ (glfwInitForOpenGL win True) glfwShutdown
|
||||
-- Create an ImPlot context
|
||||
_ <- managed $ bracket createPlotContext destroyPlotContext
|
||||
|
||||
-- Initialize ImGui's OpenGL backend
|
||||
_ <- managed_ $ bracket_ openGL3Init openGL3Shutdown
|
||||
-- Initialize ImGui's SDL2 backend
|
||||
_ <- managed_ $ bracket_ (sdl2InitForOpenGL win glContext) sdl2Shutdown
|
||||
|
||||
twsConnectionRefsHost <- liftIO $ atomically $ newTVar $ settings ^. twsConnection . host . to T.unpack
|
||||
twsConnectionRefsPort <- liftIO $ atomically $ newTVar $ settings ^. twsConnection . port . to T.unpack
|
||||
twsConnectionStatus <- liftIO $ atomically $ newTVar $ TWSDisconnected
|
||||
twsConnectionSend <- liftIO $ atomically $ newTQueue
|
||||
twsConnectionRecieve <- liftIO $ atomically $ newTQueue
|
||||
let twsConnectionRefs = TWSConnectionRefs{..}
|
||||
liftIO $ atomically $ writeTQueue twsConnectionSend $ Msg_IB_OUT $ IB_RequestMarketDataType DelayedFrozen
|
||||
currentAccount <- liftIO $ newTVarIO $ Nothing
|
||||
tickerIdToSymbol <- liftIO $ newTVarIO $ mempty
|
||||
appCharts <- liftIO $ newTVarIO $ mempty
|
||||
appData <- liftIO $ DataRefs
|
||||
<$> newTVarIO mempty
|
||||
<*> newTVarIO Nothing
|
||||
<*> newTVarIO mempty
|
||||
<*> newTVarIO mempty
|
||||
let app = App
|
||||
{ appSettings = settings
|
||||
, appLogFunc = lf
|
||||
, appProcessContext = pc
|
||||
, appOptions = options
|
||||
, appWindow = win
|
||||
, appRefs = AppRefs{..}
|
||||
, appData = appData
|
||||
}
|
||||
void $ liftIO $ forkIO $ appFiller app
|
||||
liftIO $ runRIO app run
|
||||
Nothing -> do
|
||||
error "GLFW createWindow failed"
|
||||
|
||||
GLFW.terminate
|
||||
-- Initialize ImGui's OpenGL backend
|
||||
_ <- managed_ $ bracket_ openGL3Init openGL3Shutdown
|
||||
|
||||
twsConnectionRefsHost <- liftIO $ atomically $ newTVar $ settings ^. twsConnection . host . to T.unpack
|
||||
twsConnectionRefsPort <- liftIO $ atomically $ newTVar $ settings ^. twsConnection . port . to T.unpack
|
||||
twsConnectionStatus <- liftIO $ atomically $ newTVar $ TWSDisconnected
|
||||
twsConnectionSend <- liftIO $ atomically $ newTQueue
|
||||
twsConnectionRecieve <- liftIO $ atomically $ newTQueue
|
||||
let twsConnectionRefs = TWSConnectionRefs{..}
|
||||
liftIO $ atomically $ writeTQueue twsConnectionSend $ Msg_IB_OUT $ IB_RequestMarketDataType DelayedFrozen
|
||||
currentAccount <- liftIO $ newTVarIO $ Nothing
|
||||
tickerIdToSymbol <- liftIO $ newTVarIO $ mempty
|
||||
appCharts <- liftIO $ newTVarIO $ mempty
|
||||
appData <- liftIO $ DataRefs
|
||||
<$> newTVarIO mempty
|
||||
<*> newTVarIO Nothing
|
||||
<*> newTVarIO mempty
|
||||
<*> newTVarIO mempty
|
||||
let app = App
|
||||
{ appSettings = settings
|
||||
, appLogFunc = lf
|
||||
, appProcessContext = pc
|
||||
, appOptions = options
|
||||
, appWindow = win
|
||||
, appRefs = AppRefs{..}
|
||||
, appData = appData
|
||||
}
|
||||
void $ liftIO $ forkIO $ appFiller app
|
||||
liftIO $ runRIO app run
|
||||
|
Reference in New Issue
Block a user