module Hob.Command.FocusNextTab (focusNextTabCommandHandler) where

import Control.Monad.Trans (liftIO)
import Graphics.UI.Gtk

import Hob.Context
import Hob.Context.UiContext

focusNextTabCommandHandler :: CommandHandler
focusNextTabCommandHandler = CommandHandler Nothing focusNextTab

focusNextTab :: App()
focusNextTab = do
    ui <- fromContext uiContext
    let notebook = mainNotebook ui
    pages <- liftIO $ notebookGetNPages notebook
    currentPage <- liftIO $ notebookGetCurrentPage notebook
    liftIO $ notebookSetCurrentPage notebook (nextPage currentPage pages)
    where
        nextPage currentPage pages =
            if currentPage == (pages - 1) then 0 else currentPage + 1