packages feed

qtah-qt5-0.8.0: src/Graphics/UI/Qtah/Generated/Widgets/QToolButton.hs

{-# LANGUAGE FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, MonoLocalBinds, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
---------- GENERATED FILE, EDITS WILL BE LOST ----------

module Graphics.UI.Qtah.Generated.Widgets.QToolButton (
  castQToolButtonToQAbstractButton,
  castQAbstractButtonToQToolButton,
  castQToolButtonToQWidget,
  castQWidgetToQToolButton,
  castQToolButtonToQObject,
  castQObjectToQToolButton,
  QToolButtonValue (..),
  QToolButtonConstPtr (..),
  arrowType,
  autoRaise,
  defaultAction,
  menu,
  popupMode,
  toolButtonStyle,
  QToolButtonPtr (..),
  setArrowType,
  setAutoRaise,
  setDefaultAction,
  setMenu,
  setPopupMode,
  setToolButtonStyle,
  showMenu,
  QToolButtonConst (..),
  castQToolButtonToConst,
  QToolButton (..),
  castQToolButtonToNonconst,
  new,
  newWithParent,
  QToolButtonSuper (..),
  QToolButtonSuperConst (..),
  QToolButtonToolButtonPopupMode (..),
  ) where

import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Generated.Core.QObject as M94
import qualified Graphics.UI.Qtah.Generated.Core.Types as M190
import qualified Graphics.UI.Qtah.Generated.Widgets.QAbstractButton as M354
import qualified Graphics.UI.Qtah.Generated.Widgets.QAction as M368
import qualified Graphics.UI.Qtah.Generated.Widgets.QMenu as M448
import qualified Graphics.UI.Qtah.Generated.Widgets.QWidget as M506
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QToolButton_new" new' ::  HoppyP.IO (HoppyF.Ptr QToolButton)
foreign import ccall "genpop__QToolButton_newWithParent" newWithParent' ::  HoppyF.Ptr M506.QWidget -> HoppyP.IO (HoppyF.Ptr QToolButton)
foreign import ccall "genpop__QToolButton_arrowType" arrowType' ::  HoppyF.Ptr QToolButtonConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QToolButton_setArrowType" setArrowType' ::  HoppyF.Ptr QToolButton -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QToolButton_autoRaise" autoRaise' ::  HoppyF.Ptr QToolButtonConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QToolButton_setAutoRaise" setAutoRaise' ::  HoppyF.Ptr QToolButton -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QToolButton_defaultAction" defaultAction' ::  HoppyF.Ptr QToolButtonConst -> HoppyP.IO (HoppyF.Ptr M368.QAction)
foreign import ccall "genpop__QToolButton_setDefaultAction" setDefaultAction' ::  HoppyF.Ptr QToolButton -> HoppyF.Ptr M368.QAction -> HoppyP.IO ()
foreign import ccall "genpop__QToolButton_menu" menu' ::  HoppyF.Ptr QToolButtonConst -> HoppyP.IO (HoppyF.Ptr M448.QMenu)
foreign import ccall "genpop__QToolButton_setMenu" setMenu' ::  HoppyF.Ptr QToolButton -> HoppyF.Ptr M448.QMenu -> HoppyP.IO ()
foreign import ccall "genpop__QToolButton_popupMode" popupMode' ::  HoppyF.Ptr QToolButtonConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QToolButton_setPopupMode" setPopupMode' ::  HoppyF.Ptr QToolButton -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QToolButton_toolButtonStyle" toolButtonStyle' ::  HoppyF.Ptr QToolButtonConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QToolButton_setToolButtonStyle" setToolButtonStyle' ::  HoppyF.Ptr QToolButton -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QToolButton_showMenu" showMenu' ::  HoppyF.Ptr QToolButton -> HoppyP.IO ()
foreign import ccall "gencast__QToolButton__QAbstractButton" castQToolButtonToQAbstractButton :: HoppyF.Ptr QToolButtonConst -> HoppyF.Ptr M354.QAbstractButtonConst
foreign import ccall "gencast__QAbstractButton__QToolButton" castQAbstractButtonToQToolButton :: HoppyF.Ptr M354.QAbstractButtonConst -> HoppyF.Ptr QToolButtonConst
foreign import ccall "gencast__QToolButton__QWidget" castQToolButtonToQWidget :: HoppyF.Ptr QToolButtonConst -> HoppyF.Ptr M506.QWidgetConst
foreign import ccall "gencast__QWidget__QToolButton" castQWidgetToQToolButton :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr QToolButtonConst
foreign import ccall "gencast__QToolButton__QObject" castQToolButtonToQObject :: HoppyF.Ptr QToolButtonConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QToolButton" castQObjectToQToolButton :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QToolButtonConst
foreign import ccall "gendel__QToolButton" delete'QToolButton :: HoppyF.Ptr QToolButtonConst -> HoppyP.IO ()
foreign import ccall "&gendel__QToolButton" deletePtr'QToolButton :: HoppyF.FunPtr (HoppyF.Ptr QToolButtonConst -> HoppyP.IO ())

class QToolButtonValue a where
  withQToolButtonPtr :: a -> (QToolButtonConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QToolButtonConstPtr a => QToolButtonValue a where
  withQToolButtonPtr = HoppyP.flip ($) . toQToolButtonConst

class (M354.QAbstractButtonConstPtr this) => QToolButtonConstPtr this where
  toQToolButtonConst :: this -> QToolButtonConst

arrowType :: (QToolButtonValue this) => (this) {- ^ this -} -> (HoppyP.IO M190.QtArrowType)
arrowType arg'1 =
  withQToolButtonPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (arrowType' arg'1')

autoRaise :: (QToolButtonValue this) => (this) {- ^ this -} -> (HoppyP.IO HoppyP.Bool)
autoRaise arg'1 =
  withQToolButtonPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (autoRaise' arg'1')

defaultAction :: (QToolButtonValue this) => (this) {- ^ this -} -> (HoppyP.IO M368.QAction)
defaultAction arg'1 =
  withQToolButtonPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M368.QAction
  (defaultAction' arg'1')

menu :: (QToolButtonValue this) => (this) {- ^ this -} -> (HoppyP.IO M448.QMenu)
menu arg'1 =
  withQToolButtonPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap M448.QMenu
  (menu' arg'1')

popupMode :: (QToolButtonValue this) => (this) {- ^ this -} -> (HoppyP.IO QToolButtonToolButtonPopupMode)
popupMode arg'1 =
  withQToolButtonPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (popupMode' arg'1')

toolButtonStyle :: (QToolButtonValue this) => (this) {- ^ this -} -> (HoppyP.IO M190.QtToolButtonStyle)
toolButtonStyle arg'1 =
  withQToolButtonPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (toolButtonStyle' arg'1')

class (QToolButtonConstPtr this, M354.QAbstractButtonPtr this) => QToolButtonPtr this where
  toQToolButton :: this -> QToolButton

setArrowType :: (QToolButtonPtr this) => (this) {- ^ this -} -> (M190.QtArrowType) -> (HoppyP.IO ())
setArrowType arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setArrowType' arg'1' arg'2')

setAutoRaise :: (QToolButtonPtr this) => (this) {- ^ this -} -> (HoppyP.Bool) -> (HoppyP.IO ())
setAutoRaise arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  (
    \x -> HoppyP.return $ if x then 1 else 0
  ) arg'2 >>= \arg'2' ->
  (setAutoRaise' arg'1' arg'2')

setDefaultAction :: (QToolButtonPtr this, M368.QActionPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setDefaultAction arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M368.toQAction arg'2) $ \arg'2' ->
  (setDefaultAction' arg'1' arg'2')

setMenu :: (QToolButtonPtr this, M448.QMenuPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
setMenu arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (M448.toQMenu arg'2) $ \arg'2' ->
  (setMenu' arg'1' arg'2')

setPopupMode :: (QToolButtonPtr this) => (this) {- ^ this -} -> (QToolButtonToolButtonPopupMode) -> (HoppyP.IO ())
setPopupMode arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setPopupMode' arg'1' arg'2')

setToolButtonStyle :: (QToolButtonPtr this) => (this) {- ^ this -} -> (M190.QtToolButtonStyle) -> (HoppyP.IO ())
setToolButtonStyle arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setToolButtonStyle' arg'1' arg'2')

showMenu :: (QToolButtonPtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
showMenu arg'1 =
  HoppyFHR.withCppPtr (toQToolButton arg'1) $ \arg'1' ->
  (showMenu' arg'1')

data QToolButtonConst =
    QToolButtonConst (HoppyF.Ptr QToolButtonConst)
  | QToolButtonConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QToolButtonConst)
  deriving (HoppyP.Show)

instance HoppyP.Eq QToolButtonConst where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QToolButtonConst where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQToolButtonToConst :: QToolButton -> QToolButtonConst
castQToolButtonToConst (QToolButton ptr') = QToolButtonConst $ HoppyF.castPtr ptr'
castQToolButtonToConst (QToolButtonGc fptr' ptr') = QToolButtonConstGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QToolButtonConst where
  nullptr = QToolButtonConst HoppyF.nullPtr
  
  withCppPtr (QToolButtonConst ptr') f' = f' ptr'
  withCppPtr (QToolButtonConstGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QToolButtonConst ptr') = ptr'
  toPtr (QToolButtonConstGc _ ptr') = ptr'
  
  touchCppPtr (QToolButtonConst _) = HoppyP.return ()
  touchCppPtr (QToolButtonConstGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QToolButtonConst where
  delete (QToolButtonConst ptr') = delete'QToolButton ptr'
  delete (QToolButtonConstGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QToolButtonConst", " object."]
  
  toGc this'@(QToolButtonConst ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QToolButtonConstGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QToolButton :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QToolButtonConstGc {}) = HoppyP.return this'

instance QToolButtonConstPtr QToolButtonConst where
  toQToolButtonConst = HoppyP.id

instance M354.QAbstractButtonConstPtr QToolButtonConst where
  toQAbstractButtonConst (QToolButtonConst ptr') = M354.QAbstractButtonConst $ castQToolButtonToQAbstractButton ptr'
  toQAbstractButtonConst (QToolButtonConstGc fptr' ptr') = M354.QAbstractButtonConstGc fptr' $ castQToolButtonToQAbstractButton ptr'

instance M506.QWidgetConstPtr QToolButtonConst where
  toQWidgetConst (QToolButtonConst ptr') = M506.QWidgetConst $ castQToolButtonToQWidget ptr'
  toQWidgetConst (QToolButtonConstGc fptr' ptr') = M506.QWidgetConstGc fptr' $ castQToolButtonToQWidget ptr'

instance M94.QObjectConstPtr QToolButtonConst where
  toQObjectConst (QToolButtonConst ptr') = M94.QObjectConst $ castQToolButtonToQObject ptr'
  toQObjectConst (QToolButtonConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQToolButtonToQObject ptr'

data QToolButton =
    QToolButton (HoppyF.Ptr QToolButton)
  | QToolButtonGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QToolButton)
  deriving (HoppyP.Show)

instance HoppyP.Eq QToolButton where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QToolButton where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQToolButtonToNonconst :: QToolButtonConst -> QToolButton
castQToolButtonToNonconst (QToolButtonConst ptr') = QToolButton $ HoppyF.castPtr ptr'
castQToolButtonToNonconst (QToolButtonConstGc fptr' ptr') = QToolButtonGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QToolButton where
  nullptr = QToolButton HoppyF.nullPtr
  
  withCppPtr (QToolButton ptr') f' = f' ptr'
  withCppPtr (QToolButtonGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QToolButton ptr') = ptr'
  toPtr (QToolButtonGc _ ptr') = ptr'
  
  touchCppPtr (QToolButton _) = HoppyP.return ()
  touchCppPtr (QToolButtonGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QToolButton where
  delete (QToolButton ptr') = delete'QToolButton $ (HoppyF.castPtr ptr' :: HoppyF.Ptr QToolButtonConst)
  delete (QToolButtonGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QToolButton", " object."]
  
  toGc this'@(QToolButton ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QToolButtonGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QToolButton :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QToolButtonGc {}) = HoppyP.return this'

instance QToolButtonConstPtr QToolButton where
  toQToolButtonConst (QToolButton ptr') = QToolButtonConst $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQToolButtonConst (QToolButtonGc fptr' ptr') = QToolButtonConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

instance QToolButtonPtr QToolButton where
  toQToolButton = HoppyP.id

instance M354.QAbstractButtonConstPtr QToolButton where
  toQAbstractButtonConst (QToolButton ptr') = M354.QAbstractButtonConst $ castQToolButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQAbstractButtonConst (QToolButtonGc fptr' ptr') = M354.QAbstractButtonConstGc fptr' $ castQToolButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

instance M354.QAbstractButtonPtr QToolButton where
  toQAbstractButton (QToolButton ptr') = M354.QAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr M354.QAbstractButtonConst -> HoppyF.Ptr M354.QAbstractButton) $ castQToolButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQAbstractButton (QToolButtonGc fptr' ptr') = M354.QAbstractButtonGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M354.QAbstractButtonConst -> HoppyF.Ptr M354.QAbstractButton) $ castQToolButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

instance M506.QWidgetConstPtr QToolButton where
  toQWidgetConst (QToolButton ptr') = M506.QWidgetConst $ castQToolButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQWidgetConst (QToolButtonGc fptr' ptr') = M506.QWidgetConstGc fptr' $ castQToolButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

instance M506.QWidgetPtr QToolButton where
  toQWidget (QToolButton ptr') = M506.QWidget $ (HoppyF.castPtr :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr M506.QWidget) $ castQToolButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQWidget (QToolButtonGc fptr' ptr') = M506.QWidgetGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr M506.QWidget) $ castQToolButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

instance M94.QObjectConstPtr QToolButton where
  toQObjectConst (QToolButton ptr') = M94.QObjectConst $ castQToolButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQObjectConst (QToolButtonGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQToolButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

instance M94.QObjectPtr QToolButton where
  toQObject (QToolButton ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQToolButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'
  toQObject (QToolButtonGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQToolButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QToolButton -> HoppyF.Ptr QToolButtonConst) ptr'

new :: (HoppyP.IO QToolButton)
new =
  HoppyP.fmap QToolButton
  (new')

newWithParent :: (M506.QWidgetPtr arg'1) => (arg'1) -> (HoppyP.IO QToolButton)
newWithParent arg'1 =
  HoppyFHR.withCppPtr (M506.toQWidget arg'1) $ \arg'1' ->
  HoppyP.fmap QToolButton
  (newWithParent' arg'1')

class QToolButtonSuper a where
  downToQToolButton :: a -> QToolButton

instance QToolButtonSuper M354.QAbstractButton where
  downToQToolButton = castQToolButtonToNonconst . cast' . M354.castQAbstractButtonToConst
    where
      cast' (M354.QAbstractButtonConst ptr') = QToolButtonConst $ castQAbstractButtonToQToolButton ptr'
      cast' (M354.QAbstractButtonConstGc fptr' ptr') = QToolButtonConstGc fptr' $ castQAbstractButtonToQToolButton ptr'
instance QToolButtonSuper M506.QWidget where
  downToQToolButton = castQToolButtonToNonconst . cast' . M506.castQWidgetToConst
    where
      cast' (M506.QWidgetConst ptr') = QToolButtonConst $ castQWidgetToQToolButton ptr'
      cast' (M506.QWidgetConstGc fptr' ptr') = QToolButtonConstGc fptr' $ castQWidgetToQToolButton ptr'
instance QToolButtonSuper M94.QObject where
  downToQToolButton = castQToolButtonToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QToolButtonConst $ castQObjectToQToolButton ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QToolButtonConstGc fptr' $ castQObjectToQToolButton ptr'

class QToolButtonSuperConst a where
  downToQToolButtonConst :: a -> QToolButtonConst

instance QToolButtonSuperConst M354.QAbstractButtonConst where
  downToQToolButtonConst = cast'
    where
      cast' (M354.QAbstractButtonConst ptr') = QToolButtonConst $ castQAbstractButtonToQToolButton ptr'
      cast' (M354.QAbstractButtonConstGc fptr' ptr') = QToolButtonConstGc fptr' $ castQAbstractButtonToQToolButton ptr'
instance QToolButtonSuperConst M506.QWidgetConst where
  downToQToolButtonConst = cast'
    where
      cast' (M506.QWidgetConst ptr') = QToolButtonConst $ castQWidgetToQToolButton ptr'
      cast' (M506.QWidgetConstGc fptr' ptr') = QToolButtonConstGc fptr' $ castQWidgetToQToolButton ptr'
instance QToolButtonSuperConst M94.QObjectConst where
  downToQToolButtonConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QToolButtonConst $ castQObjectToQToolButton ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QToolButtonConstGc fptr' $ castQObjectToQToolButton ptr'

instance HoppyFHR.Assignable (HoppyF.Ptr (HoppyF.Ptr QToolButton)) QToolButton where
  assign ptr' value' = HoppyF.poke ptr' $ HoppyFHR.toPtr value'

instance HoppyFHR.Decodable (HoppyF.Ptr (HoppyF.Ptr QToolButton)) QToolButton where
  decode = HoppyP.fmap QToolButton . HoppyF.peek

data QToolButtonToolButtonPopupMode =
  DelayedPopup
  | MenuButtonPopup
  | InstantPopup
  | UnknownQToolButtonToolButtonPopupMode (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QToolButtonToolButtonPopupMode where
  fromCppEnum DelayedPopup = 0
  fromCppEnum MenuButtonPopup = 1
  fromCppEnum InstantPopup = 2
  fromCppEnum (UnknownQToolButtonToolButtonPopupMode n) = n
  
  toCppEnum (0) = DelayedPopup
  toCppEnum (1) = MenuButtonPopup
  toCppEnum (2) = InstantPopup
  toCppEnum n = UnknownQToolButtonToolButtonPopupMode n

instance HoppyP.Eq QToolButtonToolButtonPopupMode where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QToolButtonToolButtonPopupMode where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)