-- This file is part of Qtah.
--
-- Copyright 2015-2021 The Qtah Authors.
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU Lesser General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

module Graphics.UI.Qtah.Generator.Interface.Internal.Listener (
  -- * Listeners.
  ListenerDef (..),
  listeners,
  -- * Haskell listener bindings.
  aModule,
  listener,
  listenerBool,
  listenerDirection,
  listenerDockWidgetArea,
  listenerDockWidgetAreas,
  listenerDouble,
  listenerInt,
  listenerIntBool,
  listenerIntExitStatus,
  listenerIntInt,
  listenerIntQlonglong,
  listenerOrientation,
  listenerOrientationIntInt,
  listenerProcessError,
  listenerProcessState,
  listenerPtrQAbstractButton,
  listenerPtrQAbstractButtonBool,
  listenerPtrQAbstractItemModel,
  listenerPtrQAction,
  listenerPtrQMdiSubWindow,
  listenerPtrQObject,
  listenerPtrQTreeWidgetItem,
  listenerPtrQTreeWidgetItemInt,
  listenerPtrQTreeWidgetItemPtrQTreeWidgetItem,
  listenerPtrQWidgetPtrQWidget,
  listenerQAbstractAnimation,
  listenerQAbstractSliderAction,
  listenerQClipboardMode,
  listenerQDate,
  listenerQDockWidgetFeatures,
  listenerQModelIndex,
  listenerQModelIndexIntInt,
  listenerQModelIndexIntIntQModelIndexInt,
  listenerQModelIndexQModelIndex,
  listenerQModelIndexQModelIndexQVectorInt,
  listenerQPoint,
  listenerQSize,
  listenerQString,
  listenerQSystemTrayIconActivationReason,
  listenerQWindowVisibility,
  listenerQlonglong,
  listenerQreal,
  listenerRefConstQIcon,
  listenerRefConstQItemSelectionRefConstQItemSelection,
  listenerRefConstQListQModelIndex,
  listenerRefConstQModelIndex,
  listenerRefConstQVariant,
  listenerScreenOrientation,
  listenerStateState,
  listenerToolBarAreas,
  listenerToolButtonStyle,
  listenerWindowModality,
  listenerWindowState,
  listenerWindowStatesWindowStates,
  ) where

import Data.List (intercalate)
import Foreign.Hoppy.Generator.Version (Filtered, collect, just, test)
import Foreign.Hoppy.Generator.Spec (
  Callback,
  Export (Export),
  addReqIncludes,
  ident,
  includeLocal,
  makeClass,
  makeModule,
  mkConstMethod,
  mkCtor,
  moduleAddExports,
  moduleAddHaskellName,
  moduleModify',
  np,
  )
import Foreign.Hoppy.Generator.Std.String (c_string)
import Foreign.Hoppy.Generator.Types (boolT, callbackT, objT, ptrT)
import Graphics.UI.Qtah.Generator.Config (Version, qtVersion)
import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
import Graphics.UI.Qtah.Generator.Interface.Internal.Callback hiding (aModule)
import Graphics.UI.Qtah.Generator.Module (AModule (AHoppyModule))
import Graphics.UI.Qtah.Generator.Types (ListenerInfo (ListenerInfo))

aModule :: AModule
aModule :: AModule
aModule =
  Module -> AModule
AHoppyModule (Module -> AModule) -> Module -> AModule
forall a b. (a -> b) -> a -> b
$
  [Include] -> Module -> Module
forall a. HasReqs a => [Include] -> a -> a
addReqIncludes [String -> Include
includeLocal String
"listener.hpp"] (Module -> Module) -> Module -> Module
forall a b. (a -> b) -> a -> b
$
  HasCallStack =>
Module -> StateT Module (Either String) () -> Module
Module -> StateT Module (Either String) () -> Module
moduleModify' (String -> String -> String -> Module
makeModule String
"listener" String
"b_listener.hpp" String
"b_listener.cpp") (StateT Module (Either String) () -> Module)
-> StateT Module (Either String) () -> Module
forall a b. (a -> b) -> a -> b
$ do
    [String] -> StateT Module (Either String) ()
forall (m :: * -> *).
(MonadError String m, MonadState Module m) =>
[String] -> m ()
moduleAddHaskellName [String
"Internal", String
"Listener"]
    [Export] -> StateT Module (Either String) ()
forall (m :: * -> *).
(MonadError String m, MonadState Module m) =>
[Export] -> m ()
moduleAddExports ([Export] -> StateT Module (Either String) ())
-> [Export] -> StateT Module (Either String) ()
forall a b. (a -> b) -> a -> b
$ (ListenerDef -> Export) -> [ListenerDef] -> [Export]
forall a b. (a -> b) -> [a] -> [b]
map ListenerDef -> Export
listenerHsExport [ListenerDef]
listeners

data ListenerDef = ListenerDef
  { ListenerDef -> String
listenerName :: String
  , ListenerDef -> Maybe Version
listenerMinVersion :: Maybe Version
  , ListenerDef -> String
listenerClassName :: String
  , ListenerDef -> String
listenerCallbackClassName :: String
  , ListenerDef -> String
listenerCppParamList :: String
  , ListenerDef -> String
listenerCppParamTypeList :: String
  , ListenerDef -> String
listenerCppParamNameList :: String
  , ListenerDef -> Export
listenerHsExport :: Export
  }

-- | A 'ListenerDef' without a minimum version.
listenerDef :: String -> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef :: String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef = Maybe Version
-> String
-> Callback
-> [String]
-> (Filtered ListenerDef, ListenerInfo)
listenerDefVersioned Maybe Version
forall a. Maybe a
Nothing

listenerDefVersioned :: Maybe Version -> String -> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDefVersioned :: Maybe Version
-> String
-> Callback
-> [String]
-> (Filtered ListenerDef, ListenerInfo)
listenerDefVersioned Maybe Version
minVersion String
name Callback
callback [String]
cppParams = (Filtered ListenerDef
maybeDef, ListenerInfo
info)
  where
    maybeDef :: Filtered ListenerDef
maybeDef =
      (ListenerDef -> Filtered ListenerDef)
-> (Version -> ListenerDef -> Filtered ListenerDef)
-> Maybe Version
-> ListenerDef
-> Filtered ListenerDef
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ListenerDef -> Filtered ListenerDef
forall a. a -> Filtered a
just (\Version
mv -> Bool -> ListenerDef -> Filtered ListenerDef
forall a. Bool -> a -> Filtered a
test (Bool -> ListenerDef -> Filtered ListenerDef)
-> Bool -> ListenerDef -> Filtered ListenerDef
forall a b. (a -> b) -> a -> b
$ Version
qtVersion Version -> Version -> Bool
forall a. Ord a => a -> a -> Bool
>= Version
mv) Maybe Version
minVersion (ListenerDef -> Filtered ListenerDef)
-> ListenerDef -> Filtered ListenerDef
forall a b. (a -> b) -> a -> b
$
      ListenerDef :: String
-> Maybe Version
-> String
-> String
-> String
-> String
-> String
-> Export
-> ListenerDef
ListenerDef
      { listenerName :: String
listenerName = String
name
      , listenerMinVersion :: Maybe Version
listenerMinVersion = Maybe Version
minVersion
      , listenerClassName :: String
listenerClassName = String
className
      , listenerCallbackClassName :: String
listenerCallbackClassName = String
"Callback" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
name String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
"Void"
      , listenerCppParamList :: String
listenerCppParamList = String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate String
", " ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ (String -> String -> String) -> [String] -> [String] -> [String]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (\String
x String
y -> String
x String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
y) [String]
cppParams [String]
paramNames
      , listenerCppParamTypeList :: String
listenerCppParamTypeList = String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate String
", " [String]
cppParams
      , listenerCppParamNameList :: String
listenerCppParamNameList = String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate String
", " ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ Int -> [String] -> [String]
forall a. Int -> [a] -> [a]
take ([String] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [String]
cppParams) [String]
paramNames
      , listenerHsExport :: Export
listenerHsExport = Class -> Export
forall a. Exportable a => a -> Export
Export Class
cls
      }

    -- 'error' sucks, but a confusing message about c_WhateverClass not being
    -- exported when a user tries to compile qtah-generator would be worse.
    info :: ListenerInfo
info = case Filtered ListenerDef
maybeDef of
      Filtered ListenerDef
Nothing ->
        String -> ListenerInfo
forall a. HasCallStack => String -> a
error (String -> ListenerInfo) -> String -> ListenerInfo
forall a b. (a -> b) -> a -> b
$ String
"Internal error, qtah-generator is making use of listener " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String -> String
forall a. Show a => a -> String
show String
name String -> String -> String
forall a. [a] -> [a] -> [a]
++
        String
" which requires Qt " String -> String -> String
forall a. [a] -> [a] -> [a]
++ Maybe Version -> String
forall a. Show a => a -> String
show Maybe Version
minVersion String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
", but we are building against Qt " String -> String -> String
forall a. [a] -> [a] -> [a]
++
        Version -> String
forall a. Show a => a -> String
show Version
qtVersion String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
"; aborting."
      Just ListenerDef
_ -> Class -> Callback -> ListenerInfo
ListenerInfo Class
cls Callback
callback

    className :: String
className = String
"Listener" String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
name

    cls :: Class
cls =
      Identifier -> Maybe ExtName -> [Class] -> [ClassEntity] -> Class
makeClass (String -> Identifier
ident String
className) Maybe ExtName
forall a. Maybe a
Nothing [Class
c_QObject]
      [ String -> [Type] -> ClassEntity
forall p. IsParameter p => String -> [p] -> ClassEntity
mkCtor String
"new" [Type -> Type
ptrT (Type -> Type) -> Type -> Type
forall a b. (a -> b) -> a -> b
$ Class -> Type
objT Class
c_QObject, Class -> Type
objT Class
c_string, Callback -> Type
callbackT Callback
callback]
      , String -> [Parameter] -> Type -> ClassEntity
forall name p.
(IsFnName String name, IsParameter p) =>
name -> [p] -> Type -> ClassEntity
mkConstMethod String
"isValid" [Parameter]
np Type
boolT
      ]

paramNames :: [String]
paramNames :: [String]
paramNames = [String
"arg" String -> String -> String
forall a. [a] -> [a] -> [a]
++ Integer -> String
forall a. Show a => a -> String
show Integer
x | Integer
x <- [Integer
1..]]

listeners :: [ListenerDef]
listeners :: [ListenerDef]
listeners =
  [Filtered ListenerDef] -> [ListenerDef]
forall a. [Filtered a] -> [a]
collect
  [ Filtered ListenerDef
ld
  , Filtered ListenerDef
ldBool
  , Filtered ListenerDef
ldDirection
  , Filtered ListenerDef
ldDockWidgetArea
  , Filtered ListenerDef
ldDockWidgetAreas
  , Filtered ListenerDef
ldDouble
  , Filtered ListenerDef
ldInt
  , Filtered ListenerDef
ldIntBool
  , Filtered ListenerDef
ldIntExitStatus
  , Filtered ListenerDef
ldIntInt
  , Filtered ListenerDef
ldIntQlonglong
  , Filtered ListenerDef
ldOrientation
  , Filtered ListenerDef
ldOrientationIntInt
  , Filtered ListenerDef
ldProcessError
  , Filtered ListenerDef
ldProcessState
  , Filtered ListenerDef
ldPtrQAbstractButton
  , Filtered ListenerDef
ldPtrQAbstractButtonBool
  , Filtered ListenerDef
ldPtrQAbstractItemModel
  , Filtered ListenerDef
ldPtrQAction
  , Filtered ListenerDef
ldPtrQMdiSubWindow
  , Filtered ListenerDef
ldPtrQObject
  , Filtered ListenerDef
ldPtrQTreeWidgetItem
  , Filtered ListenerDef
ldPtrQTreeWidgetItemInt
  , Filtered ListenerDef
ldPtrQTreeWidgetItemPtrQTreeWidgetItem
  , Filtered ListenerDef
ldPtrQWidgetPtrQWidget
  , Filtered ListenerDef
ldQAbstractAnimation
  , Filtered ListenerDef
ldQAbstractSliderAction
  , Filtered ListenerDef
ldQClipboardMode
  , Filtered ListenerDef
ldQDate
  , Filtered ListenerDef
ldQDockWidgetFeatures
  , Filtered ListenerDef
ldQModelIndex
  , Filtered ListenerDef
ldQModelIndexIntInt
  , Filtered ListenerDef
ldQModelIndexIntIntQModelIndexInt
  , Filtered ListenerDef
ldQModelIndexQModelIndex
  , Filtered ListenerDef
ldQModelIndexQModelIndexQVectorInt
  , Filtered ListenerDef
ldQPoint
  , Filtered ListenerDef
ldQSize
  , Filtered ListenerDef
ldQString
  , Filtered ListenerDef
ldQSystemTrayIconActivationReason
  , Filtered ListenerDef
ldQWindowVisibility
  , Filtered ListenerDef
ldQlonglong
  , Filtered ListenerDef
ldQreal
  , Filtered ListenerDef
ldRefConstQIcon
  , Filtered ListenerDef
ldRefConstQItemSelectionRefConstQItemSelection
  , Filtered ListenerDef
ldRefConstQListQModelIndex
  , Filtered ListenerDef
ldRefConstQModelIndex
  , Filtered ListenerDef
ldRefConstQVariant
  , Filtered ListenerDef
ldScreenOrientation
  , Filtered ListenerDef
ldStateState
  , Filtered ListenerDef
ldToolBarAreas
  , Filtered ListenerDef
ldToolButtonStyle
  , Filtered ListenerDef
ldWindowModality
  , Filtered ListenerDef
ldWindowState
  , Filtered ListenerDef
ldWindowStatesWindowStates
  ]

ld :: Filtered ListenerDef
listener :: ListenerInfo
(Filtered ListenerDef
ld, ListenerInfo
listener) = String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"" Callback
cb_Void []

(Filtered ListenerDef
ldBool, ListenerInfo
listenerBool) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Bool" Callback
cb_BoolVoid [String
"bool"]

(Filtered ListenerDef
ldDirection, ListenerInfo
listenerDirection) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Direction" Callback
cb_DirectionVoid [String
"QAbstractAnimation::Direction"]

(Filtered ListenerDef
ldDockWidgetArea, ListenerInfo
listenerDockWidgetArea) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"DockWidgetArea" Callback
cb_DockWidgetAreaVoid [String
"Qt::DockWidgetArea"]

(Filtered ListenerDef
ldDockWidgetAreas, ListenerInfo
listenerDockWidgetAreas) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"DockWidgetAreas" Callback
cb_DockWidgetAreasVoid [String
"Qt::DockWidgetAreas"]

(Filtered ListenerDef
ldDouble, ListenerInfo
listenerDouble) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Double" Callback
cb_DoubleVoid [String
"double"]

(Filtered ListenerDef
ldInt, ListenerInfo
listenerInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Int" Callback
cb_IntVoid [String
"int"]

(Filtered ListenerDef
ldIntBool, ListenerInfo
listenerIntBool) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"IntBool" Callback
cb_IntBoolVoid [String
"int", String
"bool"]

(Filtered ListenerDef
ldIntExitStatus, ListenerInfo
listenerIntExitStatus) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"IntExitStatus" Callback
cb_IntExitStatusVoid [String
"int", String
"QProcess::ExitStatus"]

(Filtered ListenerDef
ldIntInt, ListenerInfo
listenerIntInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"IntInt" Callback
cb_IntIntVoid [String
"int", String
"int"]

(Filtered ListenerDef
ldIntQlonglong, ListenerInfo
listenerIntQlonglong) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"IntQlonglong" Callback
cb_IntQlonglongVoid [String
"int", String
"qlonglong"]

(Filtered ListenerDef
ldOrientation, ListenerInfo
listenerOrientation) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Orientation" Callback
cb_OrientationVoid [String
"Qt::Orientation"]

(Filtered ListenerDef
ldOrientationIntInt, ListenerInfo
listenerOrientationIntInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"OrientationIntInt" Callback
cb_OrientationIntIntVoid [String
"Qt::Orientation", String
"int", String
"int"]

(Filtered ListenerDef
ldProcessError, ListenerInfo
listenerProcessError) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"ProcessError" Callback
cb_ProcessErrorVoid [String
"QProcess::ProcessError"]

(Filtered ListenerDef
ldProcessState, ListenerInfo
listenerProcessState) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"ProcessState" Callback
cb_ProcessStateVoid [String
"QProcess::ProcessState"]

(Filtered ListenerDef
ldPtrQAbstractButton, ListenerInfo
listenerPtrQAbstractButton) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQAbstractButton" Callback
cb_PtrQAbstractButtonVoid [String
"QAbstractButton*"]

(Filtered ListenerDef
ldPtrQAbstractButtonBool, ListenerInfo
listenerPtrQAbstractButtonBool) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQAbstractButtonBool" Callback
cb_PtrQAbstractButtonBoolVoid [String
"QAbstractButton*", String
"bool"]

(Filtered ListenerDef
ldPtrQAbstractItemModel, ListenerInfo
listenerPtrQAbstractItemModel) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQAbstractItemModel" Callback
cb_PtrQAbstractItemModelVoid [String
"QAbstractItemModel*"]

(Filtered ListenerDef
ldPtrQAction, ListenerInfo
listenerPtrQAction) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQAction" Callback
cb_PtrQActionVoid [String
"QAction*"]

(Filtered ListenerDef
ldPtrQMdiSubWindow, ListenerInfo
listenerPtrQMdiSubWindow) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQMdiSubWindow" Callback
cb_PtrQMdiSubWindowVoid [String
"QMdiSubWindow*"]

(Filtered ListenerDef
ldPtrQObject, ListenerInfo
listenerPtrQObject) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQObject" Callback
cb_PtrQObjectVoid [String
"QObject*"]

(Filtered ListenerDef
ldPtrQTreeWidgetItem, ListenerInfo
listenerPtrQTreeWidgetItem) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQTreeWidgetItem" Callback
cb_PtrQTreeWidgetItemVoid [String
"QTreeWidgetItem*"]

(Filtered ListenerDef
ldPtrQTreeWidgetItemInt, ListenerInfo
listenerPtrQTreeWidgetItemInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQTreeWidgetItemInt" Callback
cb_PtrQTreeWidgetItemIntVoid [String
"QTreeWidgetItem*", String
"int"]

(Filtered ListenerDef
ldPtrQTreeWidgetItemPtrQTreeWidgetItem, ListenerInfo
listenerPtrQTreeWidgetItemPtrQTreeWidgetItem) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQTreeWidgetItemPtrQTreeWidgetItem" Callback
cb_PtrQTreeWidgetItemPtrQTreeWidgetItemVoid [String
"QTreeWidgetItem*", String
"QTreeWidgetItem*"]

(Filtered ListenerDef
ldPtrQWidgetPtrQWidget, ListenerInfo
listenerPtrQWidgetPtrQWidget) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"PtrQWidgetPtrQWidget" Callback
cb_PtrQWidgetPtrQWidgetVoid [String
"QWidget*", String
"QWidget*"]

(Filtered ListenerDef
ldQAbstractAnimation, ListenerInfo
listenerQAbstractAnimation) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QAbstractAnimation" Callback
cb_QAbstractAnimationVoid [String
"QAbstractAnimation*"]

(Filtered ListenerDef
ldQAbstractSliderAction, ListenerInfo
listenerQAbstractSliderAction) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QAbstractSliderAction" Callback
cb_QAbstractSliderActionVoid [String
"QAbstractSlider::SliderAction"]

(Filtered ListenerDef
ldQClipboardMode, ListenerInfo
listenerQClipboardMode) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QClipboardMode" Callback
cb_QClipboardModeVoid [String
"QClipboard::Mode"]

(Filtered ListenerDef
ldQDate, ListenerInfo
listenerQDate) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QDate" Callback
cb_QDateVoid [String
"QDate"]

(Filtered ListenerDef
ldQDockWidgetFeatures, ListenerInfo
listenerQDockWidgetFeatures) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QDockWidgetFeatures" Callback
cb_QDockWidgetFeaturesVoid [String
"QDockWidget::DockWidgetFeatures"]

(Filtered ListenerDef
ldQModelIndex, ListenerInfo
listenerQModelIndex) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QModelIndex" Callback
cb_QModelIndexVoid [String
"QModelIndex"]

(Filtered ListenerDef
ldQModelIndexIntInt, ListenerInfo
listenerQModelIndexIntInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QModelIndexIntInt" Callback
cb_QModelIndexIntIntVoid [String
"QModelIndex", String
"int", String
"int"]

(Filtered ListenerDef
ldQModelIndexIntIntQModelIndexInt, ListenerInfo
listenerQModelIndexIntIntQModelIndexInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QModelIndexIntIntQModelIndexInt" Callback
cb_QModelIndexIntIntQModelIndexIntVoid [String
"QModelIndex", String
"int", String
"int", String
"QModelIndex", String
"int"]

(Filtered ListenerDef
ldQModelIndexQModelIndex, ListenerInfo
listenerQModelIndexQModelIndex) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QModelIndexQModelIndex" Callback
cb_QModelIndexQModelIndexVoid [String
"QModelIndex", String
"QModelIndex"]

(Filtered ListenerDef
ldQModelIndexQModelIndexQVectorInt, ListenerInfo
listenerQModelIndexQModelIndexQVectorInt) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QModelIndexQModelIndexQVectorInt" Callback
cb_QModelIndexQModelIndexQVectorIntVoid [String
"QModelIndex", String
"QModelIndex", String
"QVector<int>"]

(Filtered ListenerDef
ldQPoint, ListenerInfo
listenerQPoint) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QPoint" Callback
cb_QPointVoid [String
"QPoint"]

(Filtered ListenerDef
ldQSize, ListenerInfo
listenerQSize) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QSize" Callback
cb_QSizeVoid [String
"QSize"]

(Filtered ListenerDef
ldQString, ListenerInfo
listenerQString) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QString" Callback
cb_QStringVoid [String
"QString"]

(Filtered ListenerDef
ldQSystemTrayIconActivationReason, ListenerInfo
listenerQSystemTrayIconActivationReason) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"QSystemTrayIconActivationReason" Callback
cb_QSystemTrayIconActivationReasonVoid [String
"QSystemTrayIcon::ActivationReason"]

(Filtered ListenerDef
ldQWindowVisibility, ListenerInfo
listenerQWindowVisibility) =
  Maybe Version
-> String
-> Callback
-> [String]
-> (Filtered ListenerDef, ListenerInfo)
listenerDefVersioned (Version -> Maybe Version
forall a. a -> Filtered a
Just [Int
5, Int
0]) String
"QWindowVisibility" Callback
cb_QWindowVisibilityVoid [String
"QWindow::Visibility"]

(Filtered ListenerDef
ldQlonglong, ListenerInfo
listenerQlonglong) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Qlonglong" Callback
cb_QlonglongVoid [String
"qlonglong"]

(Filtered ListenerDef
ldQreal, ListenerInfo
listenerQreal) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"Qreal" Callback
cb_QrealVoid [String
"qreal"]

(Filtered ListenerDef
ldRefConstQIcon, ListenerInfo
listenerRefConstQIcon) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"RefConstQIcon" Callback
cb_RefConstQIconVoid [String
"const QIcon&"]

(Filtered ListenerDef
ldRefConstQItemSelectionRefConstQItemSelection, ListenerInfo
listenerRefConstQItemSelectionRefConstQItemSelection) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"RefConstQItemSelectionRefConstQItemSelection" Callback
cb_RefConstQItemSelectionRefConstQItemSelectionVoid [String
"const QItemSelection&", String
"const QItemSelection&"]

(Filtered ListenerDef
ldRefConstQListQModelIndex, ListenerInfo
listenerRefConstQListQModelIndex) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"RefConstQListQModelIndex" Callback
cb_RefConstQListQModelIndexVoid [String
"const QList<QModelIndex>&"]

(Filtered ListenerDef
ldRefConstQModelIndex, ListenerInfo
listenerRefConstQModelIndex) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"RefConstQModelIndex" Callback
cb_RefConstQModelIndexVoid [String
"const QModelIndex&"]

(Filtered ListenerDef
ldRefConstQVariant, ListenerInfo
listenerRefConstQVariant) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"RefConstQVariant" Callback
cb_RefConstQVariantVoid [String
"const QVariant&"]

(Filtered ListenerDef
ldScreenOrientation, ListenerInfo
listenerScreenOrientation) =
  Maybe Version
-> String
-> Callback
-> [String]
-> (Filtered ListenerDef, ListenerInfo)
listenerDefVersioned (Version -> Maybe Version
forall a. a -> Filtered a
Just [Int
5, Int
0]) String
"ScreenOrientation" Callback
cb_ScreenOrientationVoid [String
"Qt::ScreenOrientation"]

(Filtered ListenerDef
ldStateState, ListenerInfo
listenerStateState) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"StateState" Callback
cb_StateStateVoid [String
"QAbstractAnimation::State", String
"QAbstractAnimation::State"]

(Filtered ListenerDef
ldToolBarAreas, ListenerInfo
listenerToolBarAreas) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"ToolBarAreas" Callback
cb_ToolBarAreasVoid [String
"Qt::ToolBarAreas"]

(Filtered ListenerDef
ldToolButtonStyle, ListenerInfo
listenerToolButtonStyle) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"ToolButtonStyle" Callback
cb_ToolButtonStyleVoid [String
"Qt::ToolButtonStyle"]

(Filtered ListenerDef
ldWindowModality, ListenerInfo
listenerWindowModality) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"WindowModality" Callback
cb_WindowModalityVoid [String
"Qt::WindowModality"]

(Filtered ListenerDef
ldWindowState, ListenerInfo
listenerWindowState) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"WindowState" Callback
cb_WindowStateVoid [String
"Qt::WindowState"]

(Filtered ListenerDef
ldWindowStatesWindowStates, ListenerInfo
listenerWindowStatesWindowStates) =
  String
-> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
listenerDef String
"WindowStatesWindowStates" Callback
cb_WindowStatesWindowStatesVoid [String
"Qt::WindowStates", String
"Qt::WindowStates"]