packages feed

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

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

module Graphics.UI.Qtah.Generated.Widgets.QPushButton (
  castQPushButtonToQAbstractButton,
  castQAbstractButtonToQPushButton,
  castQPushButtonToQWidget,
  castQWidgetToQPushButton,
  castQPushButtonToQObject,
  castQObjectToQPushButton,
  QPushButtonValue (..),
  QPushButtonConstPtr (..),
  autoDefault,
  isDefault,
  isFlat,
  menu,
  QPushButtonPtr (..),
  setAutoDefault,
  setDefault,
  setFlat,
  setMenu,
  showMenu,
  QPushButtonConst (..),
  castQPushButtonToConst,
  QPushButton (..),
  castQPushButtonToNonconst,
  new,
  newWithParent,
  newWithText,
  newWithTextAndParent,
  newWithIconAndText,
  newWithIconAndTextAndParent,
  QPushButtonSuper (..),
  QPushButtonSuperConst (..),
  ) 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.QString as M142
import qualified Graphics.UI.Qtah.Generated.Gui.QIcon as M288
import qualified Graphics.UI.Qtah.Generated.Widgets.QAbstractButton as M354
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__QPushButton_new" new' ::  HoppyP.IO (HoppyF.Ptr QPushButton)
foreign import ccall "genpop__QPushButton_newWithParent" newWithParent' ::  HoppyF.Ptr M506.QWidget -> HoppyP.IO (HoppyF.Ptr QPushButton)
foreign import ccall "genpop__QPushButton_newWithText" newWithText' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QPushButton)
foreign import ccall "genpop__QPushButton_newWithTextAndParent" newWithTextAndParent' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M506.QWidget -> HoppyP.IO (HoppyF.Ptr QPushButton)
foreign import ccall "genpop__QPushButton_newWithIconAndText" newWithIconAndText' ::  HoppyF.Ptr M288.QIconConst -> HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QPushButton)
foreign import ccall "genpop__QPushButton_newWithIconAndTextAndParent" newWithIconAndTextAndParent' ::  HoppyF.Ptr M288.QIconConst -> HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr M506.QWidget -> HoppyP.IO (HoppyF.Ptr QPushButton)
foreign import ccall "genpop__QPushButton_autoDefault" autoDefault' ::  HoppyF.Ptr QPushButtonConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QPushButton_setAutoDefault" setAutoDefault' ::  HoppyF.Ptr QPushButton -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QPushButton_isDefault" isDefault' ::  HoppyF.Ptr QPushButtonConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QPushButton_setDefault" setDefault' ::  HoppyF.Ptr QPushButton -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QPushButton_isFlat" isFlat' ::  HoppyF.Ptr QPushButtonConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QPushButton_setFlat" setFlat' ::  HoppyF.Ptr QPushButton -> HoppyFC.CBool -> HoppyP.IO ()
foreign import ccall "genpop__QPushButton_menu" menu' ::  HoppyF.Ptr QPushButtonConst -> HoppyP.IO (HoppyF.Ptr M448.QMenu)
foreign import ccall "genpop__QPushButton_setMenu" setMenu' ::  HoppyF.Ptr QPushButton -> HoppyF.Ptr M448.QMenu -> HoppyP.IO ()
foreign import ccall "genpop__QPushButton_showMenu" showMenu' ::  HoppyF.Ptr QPushButton -> HoppyP.IO ()
foreign import ccall "gencast__QPushButton__QAbstractButton" castQPushButtonToQAbstractButton :: HoppyF.Ptr QPushButtonConst -> HoppyF.Ptr M354.QAbstractButtonConst
foreign import ccall "gencast__QAbstractButton__QPushButton" castQAbstractButtonToQPushButton :: HoppyF.Ptr M354.QAbstractButtonConst -> HoppyF.Ptr QPushButtonConst
foreign import ccall "gencast__QPushButton__QWidget" castQPushButtonToQWidget :: HoppyF.Ptr QPushButtonConst -> HoppyF.Ptr M506.QWidgetConst
foreign import ccall "gencast__QWidget__QPushButton" castQWidgetToQPushButton :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr QPushButtonConst
foreign import ccall "gencast__QPushButton__QObject" castQPushButtonToQObject :: HoppyF.Ptr QPushButtonConst -> HoppyF.Ptr M94.QObjectConst
foreign import ccall "gencast__QObject__QPushButton" castQObjectToQPushButton :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr QPushButtonConst
foreign import ccall "gendel__QPushButton" delete'QPushButton :: HoppyF.Ptr QPushButtonConst -> HoppyP.IO ()
foreign import ccall "&gendel__QPushButton" deletePtr'QPushButton :: HoppyF.FunPtr (HoppyF.Ptr QPushButtonConst -> HoppyP.IO ())

class QPushButtonValue a where
  withQPushButtonPtr :: a -> (QPushButtonConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QPushButtonConstPtr a => QPushButtonValue a where
  withQPushButtonPtr = HoppyP.flip ($) . toQPushButtonConst

class (M354.QAbstractButtonConstPtr this) => QPushButtonConstPtr this where
  toQPushButtonConst :: this -> QPushButtonConst

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

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

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

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

class (QPushButtonConstPtr this, M354.QAbstractButtonPtr this) => QPushButtonPtr this where
  toQPushButton :: this -> QPushButton

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

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

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

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

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

data QPushButtonConst =
    QPushButtonConst (HoppyF.Ptr QPushButtonConst)
  | QPushButtonConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QPushButtonConst)
  deriving (HoppyP.Show)

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

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

castQPushButtonToConst :: QPushButton -> QPushButtonConst
castQPushButtonToConst (QPushButton ptr') = QPushButtonConst $ HoppyF.castPtr ptr'
castQPushButtonToConst (QPushButtonGc fptr' ptr') = QPushButtonConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QPushButtonConstPtr QPushButtonConst where
  toQPushButtonConst = HoppyP.id

instance M354.QAbstractButtonConstPtr QPushButtonConst where
  toQAbstractButtonConst (QPushButtonConst ptr') = M354.QAbstractButtonConst $ castQPushButtonToQAbstractButton ptr'
  toQAbstractButtonConst (QPushButtonConstGc fptr' ptr') = M354.QAbstractButtonConstGc fptr' $ castQPushButtonToQAbstractButton ptr'

instance M506.QWidgetConstPtr QPushButtonConst where
  toQWidgetConst (QPushButtonConst ptr') = M506.QWidgetConst $ castQPushButtonToQWidget ptr'
  toQWidgetConst (QPushButtonConstGc fptr' ptr') = M506.QWidgetConstGc fptr' $ castQPushButtonToQWidget ptr'

instance M94.QObjectConstPtr QPushButtonConst where
  toQObjectConst (QPushButtonConst ptr') = M94.QObjectConst $ castQPushButtonToQObject ptr'
  toQObjectConst (QPushButtonConstGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQPushButtonToQObject ptr'

data QPushButton =
    QPushButton (HoppyF.Ptr QPushButton)
  | QPushButtonGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QPushButton)
  deriving (HoppyP.Show)

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

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

castQPushButtonToNonconst :: QPushButtonConst -> QPushButton
castQPushButtonToNonconst (QPushButtonConst ptr') = QPushButton $ HoppyF.castPtr ptr'
castQPushButtonToNonconst (QPushButtonConstGc fptr' ptr') = QPushButtonGc fptr' $ HoppyF.castPtr ptr'

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

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

instance QPushButtonConstPtr QPushButton where
  toQPushButtonConst (QPushButton ptr') = QPushButtonConst $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQPushButtonConst (QPushButtonGc fptr' ptr') = QPushButtonConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

instance QPushButtonPtr QPushButton where
  toQPushButton = HoppyP.id

instance M354.QAbstractButtonConstPtr QPushButton where
  toQAbstractButtonConst (QPushButton ptr') = M354.QAbstractButtonConst $ castQPushButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQAbstractButtonConst (QPushButtonGc fptr' ptr') = M354.QAbstractButtonConstGc fptr' $ castQPushButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

instance M354.QAbstractButtonPtr QPushButton where
  toQAbstractButton (QPushButton ptr') = M354.QAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr M354.QAbstractButtonConst -> HoppyF.Ptr M354.QAbstractButton) $ castQPushButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQAbstractButton (QPushButtonGc fptr' ptr') = M354.QAbstractButtonGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M354.QAbstractButtonConst -> HoppyF.Ptr M354.QAbstractButton) $ castQPushButtonToQAbstractButton $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

instance M506.QWidgetConstPtr QPushButton where
  toQWidgetConst (QPushButton ptr') = M506.QWidgetConst $ castQPushButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQWidgetConst (QPushButtonGc fptr' ptr') = M506.QWidgetConstGc fptr' $ castQPushButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

instance M506.QWidgetPtr QPushButton where
  toQWidget (QPushButton ptr') = M506.QWidget $ (HoppyF.castPtr :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr M506.QWidget) $ castQPushButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQWidget (QPushButtonGc fptr' ptr') = M506.QWidgetGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M506.QWidgetConst -> HoppyF.Ptr M506.QWidget) $ castQPushButtonToQWidget $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

instance M94.QObjectConstPtr QPushButton where
  toQObjectConst (QPushButton ptr') = M94.QObjectConst $ castQPushButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQObjectConst (QPushButtonGc fptr' ptr') = M94.QObjectConstGc fptr' $ castQPushButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

instance M94.QObjectPtr QPushButton where
  toQObject (QPushButton ptr') = M94.QObject $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQPushButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'
  toQObject (QPushButtonGc fptr' ptr') = M94.QObjectGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M94.QObjectConst -> HoppyF.Ptr M94.QObject) $ castQPushButtonToQObject $ (HoppyF.castPtr :: HoppyF.Ptr QPushButton -> HoppyF.Ptr QPushButtonConst) ptr'

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

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

newWithText :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.IO QPushButton)
newWithText arg'1 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QPushButton
  (newWithText' arg'1')

newWithTextAndParent :: (M142.QStringValue arg'1, M506.QWidgetPtr arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO QPushButton)
newWithTextAndParent arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'2) $ \arg'2' ->
  HoppyP.fmap QPushButton
  (newWithTextAndParent' arg'1' arg'2')

newWithIconAndText :: (M288.QIconValue arg'1, M142.QStringValue arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO QPushButton)
newWithIconAndText arg'1 arg'2 =
  M288.withQIconPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap QPushButton
  (newWithIconAndText' arg'1' arg'2')

newWithIconAndTextAndParent :: (M288.QIconValue arg'1, M142.QStringValue arg'2, M506.QWidgetPtr arg'3) => (arg'1) -> (arg'2) -> (arg'3) -> (HoppyP.IO QPushButton)
newWithIconAndTextAndParent arg'1 arg'2 arg'3 =
  M288.withQIconPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M142.withQStringPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyFHR.withCppPtr (M506.toQWidget arg'3) $ \arg'3' ->
  HoppyP.fmap QPushButton
  (newWithIconAndTextAndParent' arg'1' arg'2' arg'3')

class QPushButtonSuper a where
  downToQPushButton :: a -> QPushButton

instance QPushButtonSuper M354.QAbstractButton where
  downToQPushButton = castQPushButtonToNonconst . cast' . M354.castQAbstractButtonToConst
    where
      cast' (M354.QAbstractButtonConst ptr') = QPushButtonConst $ castQAbstractButtonToQPushButton ptr'
      cast' (M354.QAbstractButtonConstGc fptr' ptr') = QPushButtonConstGc fptr' $ castQAbstractButtonToQPushButton ptr'
instance QPushButtonSuper M506.QWidget where
  downToQPushButton = castQPushButtonToNonconst . cast' . M506.castQWidgetToConst
    where
      cast' (M506.QWidgetConst ptr') = QPushButtonConst $ castQWidgetToQPushButton ptr'
      cast' (M506.QWidgetConstGc fptr' ptr') = QPushButtonConstGc fptr' $ castQWidgetToQPushButton ptr'
instance QPushButtonSuper M94.QObject where
  downToQPushButton = castQPushButtonToNonconst . cast' . M94.castQObjectToConst
    where
      cast' (M94.QObjectConst ptr') = QPushButtonConst $ castQObjectToQPushButton ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QPushButtonConstGc fptr' $ castQObjectToQPushButton ptr'

class QPushButtonSuperConst a where
  downToQPushButtonConst :: a -> QPushButtonConst

instance QPushButtonSuperConst M354.QAbstractButtonConst where
  downToQPushButtonConst = cast'
    where
      cast' (M354.QAbstractButtonConst ptr') = QPushButtonConst $ castQAbstractButtonToQPushButton ptr'
      cast' (M354.QAbstractButtonConstGc fptr' ptr') = QPushButtonConstGc fptr' $ castQAbstractButtonToQPushButton ptr'
instance QPushButtonSuperConst M506.QWidgetConst where
  downToQPushButtonConst = cast'
    where
      cast' (M506.QWidgetConst ptr') = QPushButtonConst $ castQWidgetToQPushButton ptr'
      cast' (M506.QWidgetConstGc fptr' ptr') = QPushButtonConstGc fptr' $ castQWidgetToQPushButton ptr'
instance QPushButtonSuperConst M94.QObjectConst where
  downToQPushButtonConst = cast'
    where
      cast' (M94.QObjectConst ptr') = QPushButtonConst $ castQObjectToQPushButton ptr'
      cast' (M94.QObjectConstGc fptr' ptr') = QPushButtonConstGc fptr' $ castQObjectToQPushButton ptr'

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

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