diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
@@ -15,152 +15,7 @@
 -- 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/>.
 
-{-# OPTIONS_GHC -W -fwarn-incomplete-patterns -fwarn-unused-do-bind #-}
-{-# LANGUAGE CPP, RankNTypes #-}
-
-import Control.Monad (unless, when)
-import Distribution.PackageDescription (PackageDescription)
-import Distribution.Simple (defaultMainWithHooks, simpleUserHooks)
-import Distribution.Simple.LocalBuildInfo (
-  LocalBuildInfo,
-  absoluteInstallDirs,
-  bindir,
-  pkgDescrFile,
-  withPrograms,
-  )
-import Distribution.Simple.Program (Program, runDbProgram, simpleProgram)
-import Distribution.Simple.Setup (
-  ConfigFlags,
-  CleanFlags,
-  CopyDest (CopyTo, NoCopyDest),
-  cleanVerbosity,
-  configVerbosity,
-  copyDest,
-#if MIN_VERSION_Cabal(2,0,0)
-  copyVerbosity,
-#endif
-  flagToMaybe,
-  fromFlagOrDefault,
-  installDistPref,
-#if MIN_VERSION_Cabal(2,0,0)
-  installVerbosity,
-#endif
-  )
-import Distribution.Simple.UserHooks (
-  UserHooks (
-    cleanHook,
-    copyHook,
-    hookedPrograms,
-    instHook,
-    postConf
-    ),
-  )
-#if MIN_VERSION_Cabal(2,0,0)
-import Distribution.Simple.Utils (die')
-#else
-import Distribution.Simple.Utils (die)
-#endif
-import Distribution.Simple.Utils (info, installExecutableFile)
-import Distribution.Verbosity (normal, verbose)
-import System.Directory (
-  createDirectoryIfMissing,
-  doesFileExist,
-  executable,
-  getCurrentDirectory,
-  getPermissions,
-  removeFile,
-  setOwnerExecutable,
-  setPermissions,
-  )
-import System.FilePath ((</>), joinPath, takeDirectory)
-
-type DieFn = forall a. String -> IO a
+import Distribution.Simple (defaultMain)
 
 main :: IO ()
-main = defaultMainWithHooks qtahHooks
-
-qtahHooks :: UserHooks
-qtahHooks = simpleUserHooks
-  { hookedPrograms = [bashProgram]
-  , postConf = \_ cf _ lbi -> generateSources cf lbi
-  , copyHook = \pd lbi uh cf -> do let dest = fromFlagOrDefault NoCopyDest $ copyDest cf
-                                   doInstall pd lbi dest
-#if MIN_VERSION_Cabal(2,0,0)
-                                     (die' $ fromFlagOrDefault normal $ copyVerbosity cf)
-#else
-                                     die
-#endif
-
-                                   copyHook simpleUserHooks pd lbi uh cf
-  , instHook = \pd lbi uh if' -> do let dest = maybe NoCopyDest CopyTo $
-                                               flagToMaybe $ installDistPref if'
-                                    doInstall pd lbi dest
-#if MIN_VERSION_Cabal(2,0,0)
-                                      (die' $ fromFlagOrDefault normal $ installVerbosity if')
-#else
-                                      die
-#endif
-                                    instHook simpleUserHooks pd lbi uh if'
-  , cleanHook = \pd z uh cf -> do doClean cf
-                                  cleanHook simpleUserHooks pd z uh cf
-  }
-
-bashProgram :: Program
-bashProgram = simpleProgram "bash"
-
-findProjectRootDir :: LocalBuildInfo -> DieFn -> IO FilePath
-findProjectRootDir localBuildInfo dieFn = case pkgDescrFile localBuildInfo of
-  Just path -> return $ takeDirectory path
-  Nothing -> dieFn "Couldn't find the project root path."
-
-generateSources :: ConfigFlags -> LocalBuildInfo -> IO ()
-generateSources configFlags localBuildInfo = do
-  -- Generate binding sources for the generated C++ listener classes.
-  let verbosity = fromFlagOrDefault normal $ configVerbosity configFlags
-
-  projectRootDir <-
-    findProjectRootDir
-    localBuildInfo
-#if MIN_VERSION_Cabal(2,0,0)
-    (die' verbosity)
-#else
-    die
-#endif
-
-  let genPath = projectRootDir </> "qtah-listener-gen"
-      programDb = withPrograms localBuildInfo
-
-  -- Cabal 1.24 (GHC 8?) seems to remove the executable bit from
-  -- qtah-listener-gen before configuring, so we have to re-add it.
-  --
-  -- See: https://github.com/haskell/cabal/issues/4170
-  perms <- getPermissions genPath
-  unless (executable perms) $
-    setPermissions genPath $ setOwnerExecutable True perms
-
-  runDbProgram verbosity bashProgram programDb [genPath, "--gen-hs-dir", "."]
-
-doInstall :: PackageDescription -> LocalBuildInfo -> CopyDest -> DieFn -> IO ()
-doInstall packageDesc localBuildInfo copyDest dieFn = do
-  projectRootDir <- findProjectRootDir localBuildInfo dieFn
-  let binDir = bindir $ absoluteInstallDirs packageDesc localBuildInfo copyDest
-  createDirectoryIfMissing True binDir
-  installExecutableFile verbose
-                        (projectRootDir </> "qtah-listener-gen")
-                        (binDir </> "qtah-listener-gen")
-
-doClean :: CleanFlags -> IO ()
-doClean cleanFlags = do
-  startDir <- getCurrentDirectory
-  let interfaceDir = startDir </>
-                     joinPath ["src", "Graphics", "UI", "Qtah", "Generator", "Interface"]
-  delFile $ interfaceDir </> "Listener.hs"
-  delFile $ interfaceDir </> "Listener.hs-boot"
-
-  where verbosity = fromFlagOrDefault normal $ cleanVerbosity cleanFlags
-
-        delFile path = do
-          exists <- doesFileExist path
-          when exists $ do
-            info verbosity $ concat ["Removing file ", path, "."]
-            removeFile path
+main = defaultMain
diff --git a/qtah-generator.cabal b/qtah-generator.cabal
--- a/qtah-generator.cabal
+++ b/qtah-generator.cabal
@@ -1,58 +1,40 @@
 name: qtah-generator
-version: 0.7.1
+version: 0.8.0
 synopsis: Generator for Qtah Qt bindings
 homepage: http://khumba.net/projects/qtah
 license: LGPL-3
 license-files: LICENSE.GPL, LICENSE.LGPL
 author: Bryan Gardiner <bog@khumba.net>
 maintainer: Bryan Gardiner <bog@khumba.net>
-copyright: Copyright 2015-2020 The Qtah Authors.
+copyright: Copyright 2015-2021 The Qtah Authors.
 category: Graphics
-build-type: Custom
+build-type: Simple
 cabal-version: 2.0
 description:
   Qtah is a set of Qt bindings for Haskell.  This package is a Hoppy FFI
   generator.  You shouldn't need it directly; rather, qtah-cpp and qtah use it
   as part of their build processes.
 
-extra-source-files:
-    qtah-listener-gen
-
--- This library is necessary so that qtah-cpp and qtah can build-depends on
--- qtah-generator.  build-depends requires a library in the target package.
--- build-tools can't be used because these don't get installed automatically[1]
--- and Cabal also complained about not being able to find the versions of the
--- qtah-generator binary, when I tried to specify version dependencies.
---
--- This library has an empty module so that "cabal haddock" doesn't fail.
---
--- [1] https://github.com/haskell/cabal/issues/220
 library
-  default-language: Haskell2010
-  hs-source-dirs: src
   build-depends:
-      base >=4 && <5
-  other-modules:
-      Graphics.UI.Qtah.Generator.Empty
-
-executable qtah-generator
-  build-depends:
       base >=4.8 && <5
     , bytestring >=0.10 && <0.11
     , containers >=0.5 && <0.7
     , directory >=1.2 && <1.4
     , filepath >=1.3 && <1.5
-    , hoppy-generator >=0.7.1 && <0.8
-    , hoppy-std >=0.7 && <0.8
+    , hoppy-generator >=0.8 && <0.9
+    , hoppy-std >=0.8 && <0.9
     , haskell-src >=1.0 && <1.1
     , mtl >=2.2.1 && <2.3
     , process >=1.2 && <1.7
     , transformers >=0.3 && <0.6
   hs-source-dirs: src
-  main-is: Main.hs
+  exposed-modules:
+      Graphics.UI.Qtah.Generator.Config
+    , Graphics.UI.Qtah.Generator.ListenerGen
+    , Graphics.UI.Qtah.Generator.Main
   other-modules:
       Graphics.UI.Qtah.Generator.Common
-    , Graphics.UI.Qtah.Generator.Config
     , Graphics.UI.Qtah.Generator.Enum
     , Graphics.UI.Qtah.Generator.Flags
     , Graphics.UI.Qtah.Generator.Interface.Core
@@ -101,6 +83,7 @@
     , Graphics.UI.Qtah.Generator.Interface.Core.QMetaObject
     , Graphics.UI.Qtah.Generator.Interface.Core.QMetaObject.Connection
     , Graphics.UI.Qtah.Generator.Interface.Core.QMetaProperty
+    , Graphics.UI.Qtah.Generator.Interface.Core.QMimeData
     , Graphics.UI.Qtah.Generator.Interface.Core.QModelIndex
     , Graphics.UI.Qtah.Generator.Interface.Core.QObject
     , Graphics.UI.Qtah.Generator.Interface.Core.QOperatingSystemVersion
@@ -161,17 +144,25 @@
     , Graphics.UI.Qtah.Generator.Interface.Gui.QClipboard
     , Graphics.UI.Qtah.Generator.Interface.Gui.QCloseEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QColor
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QContextMenuEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QCursor
     , Graphics.UI.Qtah.Generator.Interface.Gui.QDoubleValidator
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QDragEnterEvent
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QDragLeaveEvent
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QDragMoveEvent
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QDropEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QEnterEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QExposeEvent
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QFileOpenEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QFocusEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QFont
     , Graphics.UI.Qtah.Generator.Interface.Gui.QFontDatabase
     , Graphics.UI.Qtah.Generator.Interface.Gui.QGradient
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QHelpEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QHideEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QHoverEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QIcon
+    , Graphics.UI.Qtah.Generator.Interface.Gui.QIconDragEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QImage
     , Graphics.UI.Qtah.Generator.Interface.Gui.QInputEvent
     , Graphics.UI.Qtah.Generator.Interface.Gui.QIntValidator
@@ -289,9 +280,13 @@
   default-extensions:
       ScopedTypeVariables
 
-custom-setup
-  setup-depends:
-      base
-    , Cabal
-    , directory
-    , filepath
+executable qtah-generator
+  build-depends:
+      base >=4.8 && <5
+    , qtah-generator
+  hs-source-dirs: src-exe
+  main-is: Main.hs
+  ghc-options: -W -fwarn-incomplete-patterns -fwarn-unused-do-bind
+  default-language: Haskell2010
+  default-extensions:
+      ScopedTypeVariables
diff --git a/qtah-listener-gen b/qtah-listener-gen
deleted file mode 100644
--- a/qtah-listener-gen
+++ /dev/null
@@ -1,366 +0,0 @@
-#!/usr/bin/env bash
-
-# This file is part of Qtah.
-#
-# Copyright 2015-2020 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/>.
-
-if (( BASH_VERSINFO[0] < 4 || ( BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] < 1 ) )); then
-    echo "qtah-listener-gen: Error, this script depends on features in bash 4.1 and newer." >&2
-    echo "qtah-listener-gen: You are currently running version $BASH_VERSION, please upgrade." >&2
-    echo "qtah-listener-gen: Aborting." >&2
-    exit 1
-fi
-
-set -euo pipefail
-
-msg() {
-    echo "qtah-listener-gen: $*"
-}
-
-help() {
-    cat <<EOF
-qtah-listener-gen: Generates listener classes for wrapping Qt signals.
-
-Options:
-  --help              : Display this menu.
-  --gen-cpp-dir <dir> : Generates C++ listener classes in listener.cpp and
-                        listener.hpp in the given directory.
-  --gen-hs-dir <dir>  : Generates bindings to be linked into a Hoppy generator
-                        in the Haskell project rooted at the given directory.
-
-At least one of --gen-cpp-dir or --gen-hs-dir is required.
-EOF
-}
-
-cppDir=
-hsDir=
-
-while [[ $# -ne 0 ]]; do
-    case "$1" in
-        --help) help; exit 0;;
-        --gen-cpp-dir) shift; cppDir="${1:?--gen-cpp-dir requires an argument.}";;
-        --gen-hs-dir) shift; hsDir="${1:?--gen-hs-dir requires an argument.}";;
-        *) msg "Unrecognized argument: $1"; exit 1;;
-    esac
-    shift
-done
-
-if [[ -z $cppDir ]] && [[ -z $hsDir ]]; then
-    msg "At least one of --gen-cpp-dir or --gen-hs-dir is required.  See --help."
-    exit 1
-fi
-
-installGen() {
-    local src="${1:?}" dest="${2:?}"
-    if cmp -s "$src" "$dest"; then
-        rm "$src"
-    else
-        mv "$src" "$dest"
-    fi
-}
-
-forEachListener() {
-    local fn="${1:?forEachListener requires the name of a function to call.}"
-
-    # Keep the includes in the C++ section up-to-date with the types used here.
-    $fn Bool "bool"
-    $fn Direction "QAbstractAnimation::Direction"
-    $fn DockWidgetArea "Qt::DockWidgetArea"
-    $fn DockWidgetAreas "Qt::DockWidgetAreas"
-    $fn Double "double"
-    $fn Int "int"
-    $fn IntBool "int|bool"
-    $fn IntExitStatus "int|QProcess::ExitStatus"
-    $fn IntInt "int|int"
-    $fn IntQlonglong "int|qlonglong"
-    $fn Orientation "Qt::Orientation"
-    $fn OrientationIntInt "Qt::Orientation|int|int"
-    $fn ProcessError "QProcess::ProcessError"
-    $fn ProcessState "QProcess::ProcessState"
-    $fn PtrQAbstractButton "QAbstractButton*"
-    $fn PtrQAbstractButtonBool "QAbstractButton*|bool"
-    $fn PtrQAbstractItemModel "QAbstractItemModel*"
-    $fn PtrQAction "QAction*"
-    $fn PtrQMdiSubWindow "QMdiSubWindow*"
-    $fn PtrQObject "QObject*"
-    $fn PtrQTreeWidgetItem "QTreeWidgetItem*"
-    $fn PtrQTreeWidgetItemInt "QTreeWidgetItem*|int"
-    $fn PtrQTreeWidgetItemPtrQTreeWidgetItem "QTreeWidgetItem*|QTreeWidgetItem*"
-    $fn PtrQWidgetPtrQWidget "QWidget*|QWidget*"
-    $fn QAbstractAnimation "QAbstractAnimation*"
-    $fn QAbstractSliderAction "QAbstractSlider::SliderAction"
-    $fn QClipboardMode "QClipboard::Mode"
-    $fn QDate "QDate"
-    $fn QDockWidgetFeatures "QDockWidget::DockWidgetFeatures"
-    $fn QModelIndex "QModelIndex"
-    $fn QModelIndexIntInt "QModelIndex|int|int"
-    $fn QModelIndexIntIntQModelIndexInt "QModelIndex|int|int|QModelIndex|int"
-    $fn QModelIndexQModelIndex "QModelIndex|QModelIndex"
-    $fn QModelIndexQModelIndexQVectorInt "QModelIndex|QModelIndex|QVector<int>"
-    $fn QPoint "QPoint"
-    $fn QSize "QSize"
-    $fn QString "QString"
-    $fn QSystemTrayIconActivationReason "QSystemTrayIcon::ActivationReason"
-    $fn QWindowVisibility "QWindow::Visibility" 0x050000 '[5, 0]'
-    $fn Qlonglong "qlonglong"
-    $fn Qreal "qreal"
-    $fn RefConstQIcon "const QIcon&"
-    $fn RefConstQItemSelectionRefConstQItemSelection "const QItemSelection&|const QItemSelection&"
-    $fn RefConstQListQModelIndex "const QList<QModelIndex>&"
-    $fn RefConstQModelIndex "const QModelIndex&"
-    $fn RefConstQVariant "const QVariant&"
-    $fn ScreenOrientation "Qt::ScreenOrientation" 0x050000 '[5, 0]'
-    $fn StateState "QAbstractAnimation::State|QAbstractAnimation::State"
-    $fn ToolBarAreas "Qt::ToolBarAreas"
-    $fn ToolButtonStyle "Qt::ToolButtonStyle"
-    $fn WindowModality "Qt::WindowModality"
-    $fn WindowState "Qt::WindowState"
-    $fn WindowStatesWindowStates "Qt::WindowStates|Qt::WindowStates"
-    $fn "" ""
-}
-
-#### Generate C++ listener classes.
-
-if [[ -n $cppDir ]]; then
-    msg "Generating C++ listener classes."
-    exec \
-        {fhpp}>"$cppDir/listener.hpp.new" \
-        {fcpp}>"$cppDir/listener.cpp.new"
-    sayHpp() { echo "$*" >&$fhpp; }
-    sayCpp() { echo "$*" >&$fcpp; }
-
-    sayHpp '////////// GENERATED FILE, EDITS WILL BE LOST //////////'
-    sayHpp
-    sayHpp '#ifndef QTAH_LISTENERS_HPP'
-    sayHpp '#define QTAH_LISTENERS_HPP'
-    sayHpp
-    sayHpp '#include <QAbstractAnimation>'
-    sayHpp '#include <QAbstractButton>'
-    sayHpp '#include <QAbstractSlider>'
-    sayHpp '#include <QAction>'
-    sayHpp '#include <QClipboard>'
-    sayHpp '#include <QDockWidget>'
-    sayHpp '#include <QIcon>'
-    sayHpp '#include <QItemSelection>'
-    sayHpp '#include <QMdiSubWindow>'
-    sayHpp '#include <QMetaObject>'
-    sayHpp '#include <QModelIndex>'
-    sayHpp '#include <QObject>'
-    sayHpp '#include <QPoint>'
-    sayHpp '#include <QProcess>'
-    sayHpp '#include <QSize>'
-    sayHpp '#include <QSystemTrayIcon>'
-    sayHpp '#include <QTreeWidgetItem>'
-    sayHpp '#include <QVariant>'
-    sayHpp '#include <QVector>'
-    sayHpp '#include <QWidget>'
-    sayHpp '#include <Qt>'
-    sayHpp '#include <QtGlobal>'
-    sayHpp '#include <string>'
-    sayHpp '#if QT_VERSION >= 0x050000'
-    sayHpp '#include <QWindow>'
-    sayHpp '#endif'
-    sayHpp '#include "b_callback.hpp"'
-
-    sayCpp '////////// GENERATED FILE, EDITS WILL BE LOST //////////'
-    sayCpp
-    sayCpp '#include "listener.hpp"'
-    sayCpp
-    sayCpp '#include <iostream>'
-
-    writeCpp() {
-        local -r name="${1?}" params="${2?}" minVersion="${3-}"
-        local -r className="Listener${name}"
-        local -r callbackClassName="Callback${name}Void"
-        local paramList=""
-        local paramTypeList=""
-        local paramNameList=""
-        local n=1
-        if [[ -n $params ]]; then
-            while read type; do
-                [[ -n $paramList ]] && paramList+=', '
-                [[ -n $paramTypeList ]] && paramTypeList+=','
-                [[ -n $paramNameList ]] && paramNameList+=', '
-                paramList+="${type} arg${n}"
-                paramTypeList+="${type}"
-                paramNameList+="arg${n}"
-                ((n++))
-            done < <(tr '|' '\n' <<<"$params")
-        fi
-
-        if [[ -n $minVersion ]]; then
-            sayHpp
-            sayHpp "#if QT_VERSION >= ${minVersion}"
-        fi
-        sayHpp
-        sayHpp "class ${className} : public QObject {"
-        sayHpp "    Q_OBJECT"
-        sayHpp
-        sayHpp "public:"
-        sayHpp "    typedef ${callbackClassName} callback;"
-        sayHpp
-        sayHpp "    ${className}(QObject* source, const std::string& signal, callback f);"
-        sayHpp "    ~${className}();"
-        sayHpp "    bool isValid() const;"
-        sayHpp
-        sayHpp "public slots:"
-        sayHpp "    void invoke(${paramList});"
-        sayHpp
-        sayHpp "private:"
-        sayHpp "    callback f_;"
-        sayHpp "    QMetaObject::Connection connection_;"
-        sayHpp "};"
-        if [[ -n $minVersion ]]; then
-            sayHpp
-            sayHpp "#endif"
-        fi
-
-        if [[ -n $minVersion ]]; then
-            sayCpp
-            sayCpp "#if QT_VERSION >= ${minVersion}"
-        fi
-        sayCpp
-        sayCpp "${className}::${className}(QObject* source, const std::string& signal, ${className}::callback f) :"
-        sayCpp "    QObject(source), f_(f) {"
-        sayCpp "    connection_ = connect(source, signal.c_str(), this, SLOT(invoke(${paramTypeList})));"
-        sayCpp "}"
-        sayCpp
-        sayCpp "${className}::~${className}() {"
-        sayCpp "    QObject::disconnect(connection_);"
-        sayCpp "}"
-        sayCpp
-        sayCpp "bool ${className}::isValid() const {"
-        sayCpp "    return static_cast<bool>(connection_);"
-        sayCpp "}"
-        sayCpp
-        sayCpp "void ${className}::invoke(${paramList}) {"
-        sayCpp "    f_(${paramNameList});"
-        sayCpp "}"
-        if [[ -n $minVersion ]]; then
-            sayCpp
-            sayCpp "#endif"
-        fi
-    }
-
-    forEachListener writeCpp
-    sayHpp
-    sayHpp '#endif'
-    exec {fhpp}>&- {fcpp}>&-
-    unset fhpp fcpp sayHpp sayCpp writeCpp
-    installGen "$cppDir/listener.hpp"{.new,}
-    installGen "$cppDir/listener.cpp"{.new,}
-fi
-
-#### Generate Haskell binding definitions for the listeners.
-
-if [[ -n $hsDir ]]; then
-    msg "Generating Haskell listener binding definitions."
-    exec {fhs}>"$hsDir/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs.new"
-    say() { echo "$*" >&$fhs; }
-
-    say '---------- GENERATED FILE, EDITS WILL BE LOST ----------'
-    say
-    say 'module Graphics.UI.Qtah.Generator.Interface.Internal.Listener where'
-    say
-    say 'import qualified Foreign.Hoppy.Generator.Spec as S'
-    say 'import qualified Foreign.Hoppy.Generator.Std.String as String'
-    say 'import qualified Foreign.Hoppy.Generator.Types as T'
-    say 'import qualified Foreign.Hoppy.Generator.Version as V'
-    say 'import qualified Graphics.UI.Qtah.Generator.Config as Config'
-    say 'import qualified Graphics.UI.Qtah.Generator.Interface.Core.QObject as QObject'
-    say 'import qualified Graphics.UI.Qtah.Generator.Interface.Internal.Callback as C'
-    say 'import qualified Graphics.UI.Qtah.Generator.Module as M'
-    say 'import qualified Graphics.UI.Qtah.Generator.Types as U'
-    say
-    say '{-# ANN module "HLint: ignore Use camelCase" #-}'
-
-    writeHs() {
-        local -r name="${1?}"
-        local -r className="Listener${name}"
-        local -r classVar="c_${className}"
-        local -r callbackVar="cb_${name}Void"
-        local -r listenerVar="listener${name}"
-
-        say
-        say "${classVar} ="
-        say "  S.makeClass (S.ident \"${className}\") Nothing [QObject.c_QObject]"
-        say "  [ S.mkCtor \"new\""
-        say "    [T.ptrT \$ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.${callbackVar}]"
-        say "  , S.mkConstMethod \"isValid\" S.np T.boolT"
-        say "  ]"
-        say
-        say "${listenerVar} = U.ListenerInfo ${classVar} C.${callbackVar}"
-    }
-    forEachListener writeHs
-
-    say
-    say "aModule :: M.AModule"
-    say "aModule ="
-    say "  M.AHoppyModule \$"
-    say "  S.addReqIncludes [S.includeLocal \"listener.hpp\"] \$"
-    say "  S.moduleModify' (S.makeModule \"listener\" \"b_listener.hpp\" \"b_listener.cpp\") \$ do"
-    say "    S.moduleAddHaskellName [\"Internal\", \"Listener\"]"
-    say "    S.moduleAddExports \$ V.collect"
-    cont="["
-    writeHs() {
-        local -r name="${1?}"
-        local -r minVersion="${4-}"
-        local -r className="Listener${name}"
-        local -r classVar="c_${className}"
-
-        if [[ -n $minVersion ]]; then
-            say "      ${cont} V.test (Config.qtVersion >= ${minVersion}) \$ S.Export ${classVar}"
-        else
-            say "      ${cont} V.just \$ S.Export ${classVar}"
-        fi
-        if [[ $cont = '[' ]]; then cont=','; fi
-    }
-    forEachListener writeHs
-    say "      ]"
-
-    exec {fhs}>&-
-    unset fhs writeHs
-    installGen "$hsDir/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs"{.new,}
-
-    # Also generate a GHC .hs-boot file for cycles in the module graph around listeners.
-
-    msg "Generating Haskell listener .hs-boot file."
-    exec {fhs}>"$hsDir/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot.new"
-    say() { echo "$*" >&$fhs; }
-
-    say '---------- GENERATED FILE, EDITS WILL BE LOST ----------'
-    say
-    say 'module Graphics.UI.Qtah.Generator.Interface.Internal.Listener where'
-    say
-    say 'import Foreign.Hoppy.Generator.Spec (Class)'
-    say 'import Graphics.UI.Qtah.Generator.Types (ListenerInfo)'
-    say
-
-    writeHs() {
-        local -r name="${1?}"
-        local -r className="Listener${name}"
-        local -r classVar="c_${className}"
-        local -r listenerVar="listener${name}"
-
-        say "${classVar} :: Class"
-        say "${listenerVar} :: ListenerInfo"
-    }
-    forEachListener writeHs
-
-    exec {fhs}>&-
-    unset fhs writeHs
-    installGen "$hsDir/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot"{.new,}
-fi
diff --git a/src-exe/Main.hs b/src-exe/Main.hs
new file mode 100644
--- /dev/null
+++ b/src-exe/Main.hs
@@ -0,0 +1,26 @@
+-- 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 Main where
+
+import Graphics.UI.Qtah.Generator.Main (run)
+import System.Environment (getArgs)
+
+main :: IO ()
+main = do
+  args <- getArgs
+  run args
diff --git a/src/Graphics/UI/Qtah/Generator/Common.hs b/src/Graphics/UI/Qtah/Generator/Common.hs
--- a/src/Graphics/UI/Qtah/Generator/Common.hs
+++ b/src/Graphics/UI/Qtah/Generator/Common.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
@@ -25,10 +25,15 @@
   fromMaybeM,
   maybeFail,
   firstM,
+  -- * String utilities
   lowerFirst,
   upperFirst,
+  -- * File utilities
+  writeFileIfDifferent,
   ) where
 
+import Control.Exception (evaluate)
+import Control.Monad (when)
 #if !MIN_VERSION_base(4,13,0)
 import Control.Monad.Fail (MonadFail)
 #endif
@@ -36,6 +41,8 @@
 import Data.Char (toLower, toUpper)
 import Data.Foldable (asum)
 import Data.List (findIndex)
+import System.Directory (doesFileExist)
+import System.IO (IOMode (ReadMode), hGetContents, withFile)
 
 -- | Splits a list at elements for which a predicate returns true.  The matching
 -- elements themselves are dropped.
@@ -84,3 +91,19 @@
 upperFirst :: String -> String
 upperFirst "" = ""
 upperFirst (c:cs) = toUpper c : cs
+
+-- | If the file specified does not exist or its contents does not match the
+-- given string, then this writes the string to the file.
+writeFileIfDifferent :: FilePath -> String -> IO ()
+writeFileIfDifferent path newContents = do
+  exists <- doesFileExist path
+  -- We need to read the file strictly, otherwise lazy IO might try to write the
+  -- file while it's still open and locked for reading.
+  doWrite <- if exists
+             then (newContents /=) <$> readStrictly
+             else return True
+  when doWrite $ writeFile path newContents
+  where readStrictly = withFile path ReadMode $ \handle -> do
+            contents <- hGetContents handle
+            _ <- evaluate $ length contents
+            return contents
diff --git a/src/Graphics/UI/Qtah/Generator/Config.hs b/src/Graphics/UI/Qtah/Generator/Config.hs
--- a/src/Graphics/UI/Qtah/Generator/Config.hs
+++ b/src/Graphics/UI/Qtah/Generator/Config.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Empty.hs b/src/Graphics/UI/Qtah/Generator/Empty.hs
deleted file mode 100644
--- a/src/Graphics/UI/Qtah/Generator/Empty.hs
+++ /dev/null
@@ -1,18 +0,0 @@
--- This file is part of Qtah.
---
--- Copyright 2015-2020 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.Empty () where
diff --git a/src/Graphics/UI/Qtah/Generator/Enum.hs b/src/Graphics/UI/Qtah/Generator/Enum.hs
--- a/src/Graphics/UI/Qtah/Generator/Enum.hs
+++ b/src/Graphics/UI/Qtah/Generator/Enum.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
@@ -54,6 +54,9 @@
     , ""
     , "QT += core gui"
     , "greaterThan(QT_MAJOR_VERSION, 4): QT += widgets"
+      -- Prevent separate debug/ and release/ build directories caused by this
+      -- flag being enabled by default on Windows (see issue #50).
+    , "CONFIG -= debug_and_release"
     , "CONFIG += cmdline"
     , "TARGET = qtahenum"
     , "SOURCES += " ++ sourceFile
diff --git a/src/Graphics/UI/Qtah/Generator/Flags.hs b/src/Graphics/UI/Qtah/Generator/Flags.hs
--- a/src/Graphics/UI/Qtah/Generator/Flags.hs
+++ b/src/Graphics/UI/Qtah/Generator/Flags.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
@@ -58,7 +58,7 @@
   conversionSpecCppConversionType,
   conversionSpecHaskell,
   conversionSpecHaskellHsArgType,
-  evaluatedEnumType,
+  evaluatedEnumNumericType,
   evaluatedEnumValueMap,
   getAddendum,
   getPrimaryExtName,
@@ -74,6 +74,7 @@
   makeIdPart,
   modifyAddendum,
   modifyReqs,
+  numType,
   sayExportCpp,
   sayExportHaskell,
   setAddendum,
@@ -167,7 +168,8 @@
         cpp =
           (makeConversionSpecCpp identifierStr (return $ Enum.enumReqs enum))
           { conversionSpecCppConversionType =
-              Just . evaluatedEnumType <$> Enum.cppGetEvaluatedEnumData (Enum.enumExtName enum)
+              Just . numType . evaluatedEnumNumericType <$>
+              Enum.cppGetEvaluatedEnumData (Enum.enumExtName enum)
 
           , conversionSpecCppConversionToCppExpr = Just $ \fromVar maybeToVar -> case maybeToVar of
               Just toVar ->
@@ -175,7 +177,9 @@
               Nothing -> LC.says [identifierStr, "("] >> fromVar >> LC.say ")"
 
           , conversionSpecCppConversionFromCppExpr = Just $ \fromVar maybeToVar -> do
-              t <- evaluatedEnumType <$> Enum.cppGetEvaluatedEnumData (Enum.enumExtName enum)
+              t <-
+                numType . evaluatedEnumNumericType <$>
+                Enum.cppGetEvaluatedEnumData (Enum.enumExtName enum)
               forM_ maybeToVar $ \toVar -> do
                 LC.sayType Nothing t
                 LC.say " "
@@ -194,7 +198,8 @@
           (makeConversionSpecHaskell
              (HsTyCon . UnQual . HsIdent <$> LH.toHsTypeName Nonconst extName)
              (Just $ do evaluatedData <- Enum.hsGetEvaluatedEnumData $ Enum.enumExtName enum
-                        LH.cppTypeToHsTypeAndUse LH.HsCSide $ evaluatedEnumType evaluatedData)
+                        LH.cppTypeToHsTypeAndUse LH.HsCSide $
+                          numType $ evaluatedEnumNumericType evaluatedData)
              (CustomConversion $ do
                 LH.addImports $ mconcat [hsImport1 "Prelude" "(.)",
                                          importForFlags,
@@ -233,7 +238,8 @@
           enum = flagsEnum flags
       enumTypeName <- Enum.toHsEnumTypeName enum
       enumData <- Enum.hsGetEvaluatedEnumData $ Enum.enumExtName enum
-      numericType <- LH.cppTypeToHsTypeAndUse LH.HsCSide $ evaluatedEnumType enumData
+      numericType <-
+        LH.cppTypeToHsTypeAndUse LH.HsCSide $ numType $ evaluatedEnumNumericType enumData
       let numericTypeStr = LH.prettyPrint numericType
 
       -- Emit the newtype wrapper.
@@ -326,7 +332,8 @@
           enum = flagsEnum flags
       enumTypeName <- Enum.toHsEnumTypeName enum
       enumData <- Enum.hsGetEvaluatedEnumData $ Enum.enumExtName enum
-      numericType <- LH.cppTypeToHsTypeAndUse LH.HsCSide $ evaluatedEnumType enumData
+      numericType <-
+        LH.cppTypeToHsTypeAndUse LH.HsCSide $ numType $ evaluatedEnumNumericType enumData
       let numericTypeStr = LH.prettyPrint numericType
 
       LH.addImports $ mconcat [importForBits, importForFlags, importForPrelude]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
@@ -62,6 +62,7 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QMetaObject as QMetaObject
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QMetaObject.Connection as QMetaObjectConnection
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QMetaProperty as QMetaProperty
+import qualified Graphics.UI.Qtah.Generator.Interface.Core.QMimeData as QMimeData
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QModelIndex as QModelIndex
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QObject as QObject
 import qualified Graphics.UI.Qtah.Generator.Interface.Core.QOperatingSystemVersion as QOperatingSystemVersion
@@ -165,6 +166,7 @@
     , QMetaObject.aModule
     , QMetaObjectConnection.aModule
     , QMetaProperty.aModule
+    , QMimeData.aModule
     , QModelIndex.aModule
     , QObject.aModule
     , QOperatingSystemVersion.aModule
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractAnimation.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractAnimation.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractAnimation.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractAnimation.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractItemModel.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractListModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractListModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractListModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractListModel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractTableModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractTableModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractTableModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAbstractTableModel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAnimationGroup.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAnimationGroup.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QAnimationGroup.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QAnimationGroup.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QBuffer.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QBuffer.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QBuffer.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QBuffer.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QByteArray.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QByteArray.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QByteArray.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QByteArray.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QChar.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QChar.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QChar.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QChar.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QChildEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QChildEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QChildEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QChildEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QCoreApplication.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QCryptographicHash.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QCryptographicHash.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QCryptographicHash.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QCryptographicHash.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDate.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDateTime.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebug.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebug.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebug.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebug.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebugStateSaver.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebugStateSaver.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebugStateSaver.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDebugStateSaver.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDir.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDir.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDir.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDir.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDirIterator.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDirIterator.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QDirIterator.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QDirIterator.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFile.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFile.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFile.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFile.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileDevice.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileDevice.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileDevice.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileDevice.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileInfo.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileInfo.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileInfo.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileInfo.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSelector.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSelector.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSelector.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSelector.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSystemWatcher.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSystemWatcher.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSystemWatcher.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QFileSystemWatcher.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QIODevice.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QIODevice.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QIODevice.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QIODevice.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelection.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelection.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelection.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelection.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionModel.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionRange.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionRange.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionRange.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QItemSelectionRange.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1Char.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1Char.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1Char.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1Char.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1String.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1String.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1String.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLatin1String.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibrary.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibrary.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibrary.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibrary.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibraryInfo.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibraryInfo.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibraryInfo.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLibraryInfo.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QList.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLockFile.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLockFile.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLockFile.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLockFile.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLoggingCategory.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLoggingCategory.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QLoggingCategory.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QLoggingCategory.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMargins.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMargins.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMargins.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMargins.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMarginsF.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMarginsF.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMarginsF.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMarginsF.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageAuthenticationCode.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageAuthenticationCode.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageAuthenticationCode.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageAuthenticationCode.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogContext.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogContext.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogContext.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogContext.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogger.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogger.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogger.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMessageLogger.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaClassInfo.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaClassInfo.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaClassInfo.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaClassInfo.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaEnum.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaEnum.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaEnum.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaEnum.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaMethod.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaMethod.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaMethod.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaMethod.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject/Connection.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject/Connection.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject/Connection.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaObject/Connection.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMetaProperty.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QMimeData.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMimeData.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QMimeData.hs
@@ -0,0 +1,73 @@
+-- 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.Core.QMimeData (
+  aModule,
+  c_QMimeData,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkConstMethod',
+  mkCtor,
+  mkProp,
+  mkMethod,
+  np,
+  )
+import Foreign.Hoppy.Generator.Types (boolT, objT, voidT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Interface.Core.QVariant (c_QVariant)
+import Graphics.UI.Qtah.Generator.Interface.Core.QByteArray (c_QByteArray)
+import Graphics.UI.Qtah.Generator.Interface.Core.QStringList (c_QStringList)
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Core", "QMimeData"] $
+  [qtExport c_QMimeData]
+
+c_QMimeData =
+  addReqIncludes [ includeStd "QMimeData" ] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QMimeData") Nothing [c_QObject]
+  [ mkCtor "new" np
+  , mkMethod "clear" np voidT
+  , mkProp "colorData" $ objT c_QVariant
+  , mkConstMethod' "data" "getData" [objT c_QString] $ objT c_QByteArray
+  , mkConstMethod "formats" np $ objT c_QStringList
+  , mkConstMethod "hasColor" np boolT
+  , mkConstMethod "hasFormat" [objT c_QString] boolT
+  , mkConstMethod "hasHtml" np boolT
+  , mkConstMethod "hasImage" np boolT
+  , mkConstMethod "hasText" np boolT
+  , mkConstMethod "hasUrls" np boolT
+  , mkProp "html" $ objT c_QString
+  , mkProp "imageData" $ objT c_QVariant
+  , mkMethod "removeFormat" [objT c_QString] voidT
+  , mkMethod "setData" [objT c_QString, objT c_QByteArray] voidT
+  , mkProp "text" $ objT c_QString
+  -- TODO void QMimeData::setUrls(const QList<QUrl> &urls)
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QModelIndex.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QModelIndex.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QModelIndex.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QModelIndex.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QObject.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QOperatingSystemVersion.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QOperatingSystemVersion.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QOperatingSystemVersion.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QOperatingSystemVersion.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPair.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPair.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPair.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPair.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPalette.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QParallelAnimationGroup.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QParallelAnimationGroup.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QParallelAnimationGroup.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QParallelAnimationGroup.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPauseAnimation.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPauseAnimation.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPauseAnimation.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPauseAnimation.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPersistentModelIndex.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPersistentModelIndex.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPersistentModelIndex.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPersistentModelIndex.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPluginLoader.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPluginLoader.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPluginLoader.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPluginLoader.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPoint.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPoint.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPoint.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPoint.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPointF.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPointF.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPointF.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPointF.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcess.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcessEnvironment.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcessEnvironment.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcessEnvironment.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QProcessEnvironment.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPropertyAnimation.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPropertyAnimation.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QPropertyAnimation.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QPropertyAnimation.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator64.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator64.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator64.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRandomGenerator64.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRect.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRect.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRect.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRect.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRectF.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRectF.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QRectF.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QRectF.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QResource.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QResource.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QResource.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QResource.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSaveFile.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSaveFile.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSaveFile.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSaveFile.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSequentialAnimationGroup.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSequentialAnimationGroup.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSequentialAnimationGroup.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSequentialAnimationGroup.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSettings.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSize.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSize.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSize.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSize.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSizeF.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSizeF.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSizeF.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSizeF.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStandardPaths.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStandardPaths.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStandardPaths.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStandardPaths.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStaticPlugin.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStaticPlugin.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStaticPlugin.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStaticPlugin.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QString.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringList.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringList.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringList.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringList.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringListModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringListModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringListModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QStringListModel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSysInfo.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSysInfo.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QSysInfo.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QSysInfo.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextCodec.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextCodec.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextCodec.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextCodec.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextDecoder.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextDecoder.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextDecoder.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextDecoder.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextEncoder.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextEncoder.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextEncoder.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTextEncoder.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QThread.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTime.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTime.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTime.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTime.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimeZone.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimeZone.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimeZone.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimeZone.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimer.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimer.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimer.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimer.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimerEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimerEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimerEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTimerEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTranslator.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTranslator.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QTranslator.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QTranslator.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariant.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariantAnimation.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariantAnimation.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariantAnimation.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVariantAnimation.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVector.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVersionNumber.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVersionNumber.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QVersionNumber.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QVersionNumber.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttribute.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttribute.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttribute.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttribute.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttributes.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttributes.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttributes.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamAttributes.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityDeclaration.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityDeclaration.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityDeclaration.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityDeclaration.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityResolver.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityResolver.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityResolver.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamEntityResolver.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNamespaceDeclaration.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNamespaceDeclaration.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNamespaceDeclaration.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNamespaceDeclaration.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNotationDeclaration.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNotationDeclaration.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNotationDeclaration.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamNotationDeclaration.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamReader.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamReader.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamReader.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamReader.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamWriter.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamWriter.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamWriter.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/QXmlStreamWriter.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs b/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Core/Types.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
@@ -24,17 +24,25 @@
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QClipboard as QClipboard
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QCloseEvent as QCloseEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QColor as QColor
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QContextMenuEvent as QContextMenuEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QCursor as QCursor
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QDoubleValidator as QDoubleValidator
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QDragEnterEvent as QDragEnterEvent
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QDragLeaveEvent as QDragLeaveEvent
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QDragMoveEvent as QDragMoveEvent
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QDropEvent as QDropEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QEnterEvent as QEnterEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QExposeEvent as QExposeEvent
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QFileOpenEvent as QFileOpenEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QFocusEvent as QFocusEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QFont as QFont
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QFontDatabase as QFontDatabase
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QGradient as QGradient
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QHelpEvent as QHelpEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QHideEvent as QHideEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QHoverEvent as QHoverEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QIcon as QIcon
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QIconDragEvent as QIconDragEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QImage as QImage
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QInputEvent as QInputEvent
 import qualified Graphics.UI.Qtah.Generator.Interface.Gui.QIntValidator as QIntValidator
@@ -74,17 +82,25 @@
   , QClipboard.aModule
   , QCloseEvent.aModule
   , QColor.aModule
+  , QContextMenuEvent.aModule
   , QCursor.aModule
   , QDoubleValidator.aModule
+  , QDragEnterEvent.aModule
+  , QDragLeaveEvent.aModule
+  , QDragMoveEvent.aModule
+  , QDropEvent.aModule
   , QEnterEvent.aModule
   , QExposeEvent.aModule
+  , QFileOpenEvent.aModule
   , QFocusEvent.aModule
   , QFont.aModule
   , QFontDatabase.aModule
   , QGradient.aModule
+  , QHelpEvent.aModule
   , QHideEvent.aModule
   , QHoverEvent.aModule
   , QIcon.aModule
+  , QIconDragEvent.aModule
   , QImage.aModule
   , QInputEvent.aModule
   , QIntValidator.aModule
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QActionEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QActionEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QActionEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QActionEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBackingStore.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBackingStore.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBackingStore.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBackingStore.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBitmap.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBrush.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBrush.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBrush.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QBrush.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QClipboard.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCloseEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCloseEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCloseEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCloseEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QColor.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QColor.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QColor.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QColor.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QContextMenuEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QContextMenuEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QContextMenuEvent.hs
@@ -0,0 +1,73 @@
+-- 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.Gui.QContextMenuEvent (
+  aModule,
+  c_QContextMenuEvent,
+  e_Reason,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  ident1,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkCtor,
+  np,
+  )
+import Foreign.Hoppy.Generator.Types (enumT, intT, objT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
+import Graphics.UI.Qtah.Generator.Flags (flagsT)
+import Graphics.UI.Qtah.Generator.Interface.Gui.QInputEvent (c_QInputEvent)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (fl_KeyboardModifiers)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QContextMenuEvent"]
+  [ QtExportEvent c_QContextMenuEvent
+  , qtExport e_Reason
+  ]
+
+c_QContextMenuEvent =
+  addReqIncludes [includeStd "QContextMenuEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QContextMenuEvent") Nothing [c_QInputEvent]
+  [ mkCtor "new" [enumT e_Reason, objT c_QPoint]
+  , mkCtor "newWithGlobalPos" [enumT e_Reason, objT c_QPoint, objT c_QPoint]
+  , mkCtor "newWithGlobalPosAndModifiers" [enumT e_Reason, objT c_QPoint, objT c_QPoint, flagsT fl_KeyboardModifiers]
+  , mkConstMethod "globalPos" np $ objT c_QPoint
+  , mkConstMethod "globalX" np intT
+  , mkConstMethod "globalY" np intT
+  , mkConstMethod "pos" np $ objT c_QPoint
+  , mkConstMethod "reason" np $ enumT e_Reason
+  , mkConstMethod "x" np intT
+  , mkConstMethod "y" np intT
+  ]
+
+e_Reason =
+  makeQtEnum (ident1 "QContextMenuEvent" "Reason") [includeStd "QContextMenuEvent"]
+  [ "Mouse"
+  , "Keyboard"
+  , "Other"
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QCursor.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDoubleValidator.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDoubleValidator.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDoubleValidator.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDoubleValidator.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragEnterEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragEnterEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragEnterEvent.hs
@@ -0,0 +1,52 @@
+-- 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.Gui.QDragEnterEvent (
+  aModule,
+  c_QDragEnterEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  )
+import Foreign.Hoppy.Generator.Types (constT, refT, objT, ptrT)
+import Graphics.UI.Qtah.Generator.Interface.Gui.QDragMoveEvent (c_QDragMoveEvent)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
+import Graphics.UI.Qtah.Generator.Interface.Core.QMimeData (c_QMimeData)
+import Graphics.UI.Qtah.Generator.Flags (flagsT)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (fl_KeyboardModifiers, fl_DropActions, fl_MouseButtons)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QDragEnterEvent"]
+  [ QtExportEvent c_QDragEnterEvent ]
+
+c_QDragEnterEvent =
+  addReqIncludes [includeStd "QDragEnterEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDragEnterEvent") Nothing [c_QDragMoveEvent]
+  [ mkCtor "new" [refT $ constT $ objT c_QPoint, flagsT fl_DropActions, ptrT $ constT $ objT c_QMimeData, flagsT fl_MouseButtons, flagsT fl_KeyboardModifiers ]
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragLeaveEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragLeaveEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragLeaveEvent.hs
@@ -0,0 +1,48 @@
+-- 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.Gui.QDragLeaveEvent (
+  aModule,
+  c_QDragLeaveEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  np,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QDragLeaveEvent"]
+  [ QtExportEvent c_QDragLeaveEvent ]
+
+c_QDragLeaveEvent =
+  addReqIncludes [includeStd "QDragLeaveEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDragLeaveEvent") Nothing [c_QEvent]
+  [ mkCtor "new" np
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragMoveEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragMoveEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDragMoveEvent.hs
@@ -0,0 +1,64 @@
+-- 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.Gui.QDragMoveEvent (
+  aModule,
+  c_QDragMoveEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkMethod,
+  mkMethod',
+  mkCtor,
+  np,
+  )
+import Foreign.Hoppy.Generator.Types (constT, objT, enumT, voidT, ptrT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (e_Type)
+import Graphics.UI.Qtah.Generator.Interface.Gui.QDropEvent (c_QDropEvent)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
+import Graphics.UI.Qtah.Generator.Interface.Core.QRect (c_QRect)
+import Graphics.UI.Qtah.Generator.Interface.Core.QMimeData (c_QMimeData)
+import Graphics.UI.Qtah.Generator.Flags (flagsT)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (fl_KeyboardModifiers, fl_DropActions, fl_MouseButtons)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QDragMoveEvent"]
+  [ QtExportEvent c_QDragMoveEvent ]
+
+c_QDragMoveEvent =
+  addReqIncludes [includeStd "QDragMoveEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDragMoveEvent") Nothing [c_QDropEvent]
+  [ mkCtor "new" [objT c_QPoint, flagsT fl_DropActions, ptrT $ constT $ objT c_QMimeData, flagsT fl_MouseButtons, flagsT fl_KeyboardModifiers ]
+  , mkCtor "newWithType" [objT c_QPoint, flagsT fl_DropActions, ptrT $ constT $ objT c_QMimeData, flagsT fl_MouseButtons, flagsT fl_KeyboardModifiers, enumT e_Type]
+  , mkMethod "accept" np voidT
+  , mkMethod' "accept" "acceptWithRect" [objT c_QRect] voidT
+  , mkConstMethod "answerRect" np $ objT c_QRect
+  , mkMethod "ignore" np voidT
+  , mkMethod' "ignore" "ignoreWithRect" [objT c_QRect] voidT
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDropEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDropEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QDropEvent.hs
@@ -0,0 +1,69 @@
+-- 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.Gui.QDropEvent (
+  aModule,
+  c_QDropEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  mkMethod,
+  mkProp,
+  mkCtor,
+  np,
+  )
+import Foreign.Hoppy.Generator.Types (constT, objT, enumT, voidT, ptrT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent, e_Type)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPointF (c_QPointF)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
+import Graphics.UI.Qtah.Generator.Interface.Core.QObject (c_QObject)
+import Graphics.UI.Qtah.Generator.Interface.Core.QMimeData (c_QMimeData)
+import Graphics.UI.Qtah.Generator.Flags (flagsT)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Interface.Core.Types (fl_KeyboardModifiers, fl_DropActions, fl_MouseButtons, e_DropAction)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QDropEvent"]
+  [ QtExportEvent c_QDropEvent ]
+
+c_QDropEvent =
+  addReqIncludes [includeStd "QDropEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QDropEvent") Nothing [c_QEvent]
+  [ mkCtor "new" [ objT c_QPointF, flagsT fl_DropActions, ptrT $ constT $ objT c_QMimeData, flagsT fl_MouseButtons, flagsT fl_KeyboardModifiers ]
+  , mkCtor "newWithType" [ objT c_QPointF, flagsT fl_DropActions, ptrT $ constT $ objT c_QMimeData, flagsT fl_MouseButtons, flagsT fl_KeyboardModifiers, enumT e_Type]
+  , mkMethod "acceptProposedAction" np voidT
+  , mkProp "dropAction" $ enumT e_DropAction
+  , mkConstMethod "keyboardModifiers" np $ flagsT fl_KeyboardModifiers
+  , mkConstMethod "mimeData" np $ ptrT $ constT $ objT c_QMimeData
+  , mkConstMethod "mouseButtons" np $ flagsT fl_MouseButtons
+  , mkConstMethod "pos" np $ objT c_QPoint
+  , mkConstMethod "posF" np $ objT c_QPointF
+  , mkConstMethod "possibleActions" np $ flagsT fl_DropActions
+  , mkConstMethod "proposedAction" np $ enumT e_DropAction
+  , mkConstMethod "source" np $ ptrT $ objT c_QObject
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QEnterEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QEnterEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QEnterEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QEnterEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QExposeEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QExposeEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QExposeEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QExposeEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFileOpenEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFileOpenEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFileOpenEvent.hs
@@ -0,0 +1,55 @@
+-- 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.Gui.QFileOpenEvent (
+  aModule,
+  c_QFileOpenEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkConstMethod,
+  np,
+  )
+import Foreign.Hoppy.Generator.Types (refT, objT, boolT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent)
+import Graphics.UI.Qtah.Generator.Interface.Core.QString (c_QString)
+import Graphics.UI.Qtah.Generator.Interface.Core.QFile (c_QFile)
+import Graphics.UI.Qtah.Generator.Interface.Core.QIODevice (fl_OpenMode)
+import Graphics.UI.Qtah.Generator.Flags (flagsT)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QFileOpenEvent"]
+  [ QtExportEvent c_QFileOpenEvent ]
+
+c_QFileOpenEvent =
+  addReqIncludes [includeStd "QFileOpenEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QFileOpenEvent") Nothing [c_QEvent]
+  [ mkConstMethod "file" np $ objT c_QString
+  , mkConstMethod "openFile" [refT $ objT c_QFile, flagsT fl_OpenMode] boolT
+  -- TODO QUrl QFileOpenEvent::url() const
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFocusEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFocusEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFocusEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFocusEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFont.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFontDatabase.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFontDatabase.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFontDatabase.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QFontDatabase.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QGradient.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QGradient.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QGradient.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QGradient.hs
@@ -1,6 +1,6 @@
  -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHelpEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHelpEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHelpEvent.hs
@@ -0,0 +1,57 @@
+-- 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.Gui.QHelpEvent (
+  aModule,
+  c_QHelpEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  mkConstMethod,
+  np,
+  )
+import Foreign.Hoppy.Generator.Types (enumT, intT, objT)
+import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent, e_Type)
+import Graphics.UI.Qtah.Generator.Interface.Core.QPoint (c_QPoint)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QHelpEvent"]
+  [ QtExportEvent c_QHelpEvent ]
+
+c_QHelpEvent =
+  addReqIncludes [includeStd "QHelpEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QHelpEvent") Nothing [c_QEvent]
+  [ mkCtor "new" [enumT e_Type, objT c_QPoint, objT c_QPoint]
+  , mkConstMethod "globalPos" np $ objT c_QPoint
+  , mkConstMethod "globalX" np intT
+  , mkConstMethod "globalY" np intT
+  , mkConstMethod "pos" np $ objT c_QPoint
+  , mkConstMethod "x" np intT
+  , mkConstMethod "y" np intT
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHideEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHideEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHideEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHideEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHoverEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHoverEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHoverEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QHoverEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIcon.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIconDragEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIconDragEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIconDragEvent.hs
@@ -0,0 +1,48 @@
+-- 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.Gui.QIconDragEvent (
+  aModule,
+  c_QIconDragEvent,
+  ) where
+
+import Foreign.Hoppy.Generator.Spec (
+  addReqIncludes,
+  classSetEntityPrefix,
+  ident,
+  includeStd,
+  makeClass,
+  mkCtor,
+  np,
+  )
+import Graphics.UI.Qtah.Generator.Interface.Core.QEvent (c_QEvent)
+import Graphics.UI.Qtah.Generator.Module (AModule (AQtModule), makeQtModule)
+import Graphics.UI.Qtah.Generator.Types
+
+{-# ANN module "HLint: ignore Use camelCase" #-}
+
+aModule =
+  AQtModule $
+  makeQtModule ["Gui", "QIconDragEvent"]
+  [ QtExportEvent c_QIconDragEvent ]
+
+c_QIconDragEvent =
+  addReqIncludes [includeStd "QIconDragEvent"] $
+  classSetEntityPrefix "" $
+  makeClass (ident "QIconDragEvent") Nothing [c_QEvent]
+  [ mkCtor "new" np
+  ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QImage.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QImage.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QImage.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QImage.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QInputEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QInputEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QInputEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QInputEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIntValidator.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIntValidator.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIntValidator.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QIntValidator.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QKeyEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QKeyEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QKeyEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QKeyEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QMouseEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QMouseEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QMouseEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QMouseEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QOpenGLWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QOpenGLWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QOpenGLWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QOpenGLWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDevice.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDevice.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDevice.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDevice.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDeviceWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDeviceWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDeviceWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintDeviceWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPaintEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainter.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainter.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainter.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainter.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainterPath.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainterPath.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainterPath.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPainterPath.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPen.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPen.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPen.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPen.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPixmap.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygon.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygon.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygon.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygon.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygonF.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygonF.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygonF.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QPolygonF.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRasterWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRasterWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRasterWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRasterWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRegion.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRegion.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRegion.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QRegion.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QShowEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QShowEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QShowEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QShowEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QStandardItemModel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QSurface.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QSurface.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QSurface.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QSurface.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QTransform.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QTransform.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QTransform.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QTransform.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QValidator.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QValidator.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QValidator.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QValidator.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWheelEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWheelEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWheelEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWheelEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QWindow.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahOpenGLWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahOpenGLWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahOpenGLWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahOpenGLWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahRasterWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahRasterWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahRasterWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Gui/QtahRasterWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Imports.hs b/src/Graphics/UI/Qtah/Generator/Interface/Imports.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Imports.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Imports.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Callback.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/EventListener.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal/EventListener.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/EventListener.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/EventListener.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs
@@ -1,564 +1,385 @@
----------- GENERATED FILE, EDITS WILL BE LOST ----------
-
-module Graphics.UI.Qtah.Generator.Interface.Internal.Listener where
-
-import qualified Foreign.Hoppy.Generator.Spec as S
-import qualified Foreign.Hoppy.Generator.Std.String as String
-import qualified Foreign.Hoppy.Generator.Types as T
-import qualified Foreign.Hoppy.Generator.Version as V
-import qualified Graphics.UI.Qtah.Generator.Config as Config
-import qualified Graphics.UI.Qtah.Generator.Interface.Core.QObject as QObject
-import qualified Graphics.UI.Qtah.Generator.Interface.Internal.Callback as C
-import qualified Graphics.UI.Qtah.Generator.Module as M
-import qualified Graphics.UI.Qtah.Generator.Types as U
-
-{-# ANN module "HLint: ignore Use camelCase" #-}
-
-c_ListenerBool =
-  S.makeClass (S.ident "ListenerBool") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_BoolVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerBool = U.ListenerInfo c_ListenerBool C.cb_BoolVoid
-
-c_ListenerDirection =
-  S.makeClass (S.ident "ListenerDirection") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_DirectionVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerDirection = U.ListenerInfo c_ListenerDirection C.cb_DirectionVoid
-
-c_ListenerDockWidgetArea =
-  S.makeClass (S.ident "ListenerDockWidgetArea") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_DockWidgetAreaVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerDockWidgetArea = U.ListenerInfo c_ListenerDockWidgetArea C.cb_DockWidgetAreaVoid
-
-c_ListenerDockWidgetAreas =
-  S.makeClass (S.ident "ListenerDockWidgetAreas") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_DockWidgetAreasVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerDockWidgetAreas = U.ListenerInfo c_ListenerDockWidgetAreas C.cb_DockWidgetAreasVoid
-
-c_ListenerDouble =
-  S.makeClass (S.ident "ListenerDouble") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_DoubleVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerDouble = U.ListenerInfo c_ListenerDouble C.cb_DoubleVoid
-
-c_ListenerInt =
-  S.makeClass (S.ident "ListenerInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_IntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerInt = U.ListenerInfo c_ListenerInt C.cb_IntVoid
-
-c_ListenerIntBool =
-  S.makeClass (S.ident "ListenerIntBool") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_IntBoolVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerIntBool = U.ListenerInfo c_ListenerIntBool C.cb_IntBoolVoid
-
-c_ListenerIntExitStatus =
-  S.makeClass (S.ident "ListenerIntExitStatus") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_IntExitStatusVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerIntExitStatus = U.ListenerInfo c_ListenerIntExitStatus C.cb_IntExitStatusVoid
-
-c_ListenerIntInt =
-  S.makeClass (S.ident "ListenerIntInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_IntIntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerIntInt = U.ListenerInfo c_ListenerIntInt C.cb_IntIntVoid
-
-c_ListenerIntQlonglong =
-  S.makeClass (S.ident "ListenerIntQlonglong") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_IntQlonglongVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerIntQlonglong = U.ListenerInfo c_ListenerIntQlonglong C.cb_IntQlonglongVoid
-
-c_ListenerOrientation =
-  S.makeClass (S.ident "ListenerOrientation") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_OrientationVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerOrientation = U.ListenerInfo c_ListenerOrientation C.cb_OrientationVoid
-
-c_ListenerOrientationIntInt =
-  S.makeClass (S.ident "ListenerOrientationIntInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_OrientationIntIntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerOrientationIntInt = U.ListenerInfo c_ListenerOrientationIntInt C.cb_OrientationIntIntVoid
-
-c_ListenerProcessError =
-  S.makeClass (S.ident "ListenerProcessError") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_ProcessErrorVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerProcessError = U.ListenerInfo c_ListenerProcessError C.cb_ProcessErrorVoid
-
-c_ListenerProcessState =
-  S.makeClass (S.ident "ListenerProcessState") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_ProcessStateVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerProcessState = U.ListenerInfo c_ListenerProcessState C.cb_ProcessStateVoid
-
-c_ListenerPtrQAbstractButton =
-  S.makeClass (S.ident "ListenerPtrQAbstractButton") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQAbstractButtonVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQAbstractButton = U.ListenerInfo c_ListenerPtrQAbstractButton C.cb_PtrQAbstractButtonVoid
-
-c_ListenerPtrQAbstractButtonBool =
-  S.makeClass (S.ident "ListenerPtrQAbstractButtonBool") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQAbstractButtonBoolVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQAbstractButtonBool = U.ListenerInfo c_ListenerPtrQAbstractButtonBool C.cb_PtrQAbstractButtonBoolVoid
-
-c_ListenerPtrQAbstractItemModel =
-  S.makeClass (S.ident "ListenerPtrQAbstractItemModel") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQAbstractItemModelVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQAbstractItemModel = U.ListenerInfo c_ListenerPtrQAbstractItemModel C.cb_PtrQAbstractItemModelVoid
-
-c_ListenerPtrQAction =
-  S.makeClass (S.ident "ListenerPtrQAction") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQActionVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQAction = U.ListenerInfo c_ListenerPtrQAction C.cb_PtrQActionVoid
-
-c_ListenerPtrQMdiSubWindow =
-  S.makeClass (S.ident "ListenerPtrQMdiSubWindow") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQMdiSubWindowVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQMdiSubWindow = U.ListenerInfo c_ListenerPtrQMdiSubWindow C.cb_PtrQMdiSubWindowVoid
-
-c_ListenerPtrQObject =
-  S.makeClass (S.ident "ListenerPtrQObject") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQObjectVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQObject = U.ListenerInfo c_ListenerPtrQObject C.cb_PtrQObjectVoid
-
-c_ListenerPtrQTreeWidgetItem =
-  S.makeClass (S.ident "ListenerPtrQTreeWidgetItem") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQTreeWidgetItemVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
-
-listenerPtrQTreeWidgetItem = U.ListenerInfo c_ListenerPtrQTreeWidgetItem C.cb_PtrQTreeWidgetItemVoid
+-- 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/>.
 
-c_ListenerPtrQTreeWidgetItemInt =
-  S.makeClass (S.ident "ListenerPtrQTreeWidgetItemInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQTreeWidgetItemIntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+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
 
-listenerPtrQTreeWidgetItemInt = U.ListenerInfo c_ListenerPtrQTreeWidgetItemInt C.cb_PtrQTreeWidgetItemIntVoid
+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))
 
-c_ListenerPtrQTreeWidgetItemPtrQTreeWidgetItem =
-  S.makeClass (S.ident "ListenerPtrQTreeWidgetItemPtrQTreeWidgetItem") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQTreeWidgetItemPtrQTreeWidgetItemVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+aModule :: AModule
+aModule =
+  AHoppyModule $
+  addReqIncludes [includeLocal "listener.hpp"] $
+  moduleModify' (makeModule "listener" "b_listener.hpp" "b_listener.cpp") $ do
+    moduleAddHaskellName ["Internal", "Listener"]
+    moduleAddExports $ map listenerHsExport listeners
 
-listenerPtrQTreeWidgetItemPtrQTreeWidgetItem = U.ListenerInfo c_ListenerPtrQTreeWidgetItemPtrQTreeWidgetItem C.cb_PtrQTreeWidgetItemPtrQTreeWidgetItemVoid
+data ListenerDef = ListenerDef
+  { listenerName :: String
+  , listenerMinVersion :: Maybe Version
+  , listenerClassName :: String
+  , listenerCallbackClassName :: String
+  , listenerCppParamList :: String
+  , listenerCppParamTypeList :: String
+  , listenerCppParamNameList :: String
+  , listenerHsExport :: Export
+  }
 
-c_ListenerPtrQWidgetPtrQWidget =
-  S.makeClass (S.ident "ListenerPtrQWidgetPtrQWidget") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_PtrQWidgetPtrQWidgetVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+-- | A 'ListenerDef' without a minimum version.
+listenerDef :: String -> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
+listenerDef = listenerDefVersioned Nothing
 
-listenerPtrQWidgetPtrQWidget = U.ListenerInfo c_ListenerPtrQWidgetPtrQWidget C.cb_PtrQWidgetPtrQWidgetVoid
+listenerDefVersioned :: Maybe Version -> String -> Callback -> [String] -> (Filtered ListenerDef, ListenerInfo)
+listenerDefVersioned minVersion name callback cppParams = (maybeDef, info)
+  where
+    maybeDef =
+      maybe just (\mv -> test $ qtVersion >= mv) minVersion $
+      ListenerDef
+      { listenerName = name
+      , listenerMinVersion = minVersion
+      , listenerClassName = className
+      , listenerCallbackClassName = "Callback" ++ name ++ "Void"
+      , listenerCppParamList = intercalate ", " $ zipWith (\x y -> x ++ " " ++ y) cppParams paramNames
+      , listenerCppParamTypeList = intercalate ", " cppParams
+      , listenerCppParamNameList = intercalate ", " $ take (length cppParams) paramNames
+      , listenerHsExport = Export cls
+      }
 
-c_ListenerQAbstractAnimation =
-  S.makeClass (S.ident "ListenerQAbstractAnimation") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QAbstractAnimationVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+    -- 'error' sucks, but a confusing message about c_WhateverClass not being
+    -- exported when a user tries to compile qtah-generator would be worse.
+    info = case maybeDef of
+      Nothing ->
+        error $ "Internal error, qtah-generator is making use of listener " ++ show name ++
+        " which requires Qt " ++ show minVersion ++ ", but we are building against Qt " ++
+        show qtVersion ++ "; aborting."
+      Just _ -> ListenerInfo cls callback
 
-listenerQAbstractAnimation = U.ListenerInfo c_ListenerQAbstractAnimation C.cb_QAbstractAnimationVoid
+    className = "Listener" ++ name
 
-c_ListenerQAbstractSliderAction =
-  S.makeClass (S.ident "ListenerQAbstractSliderAction") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QAbstractSliderActionVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+    cls =
+      makeClass (ident className) Nothing [c_QObject]
+      [ mkCtor "new" [ptrT $ objT c_QObject, objT c_string, callbackT callback]
+      , mkConstMethod "isValid" np boolT
+      ]
 
-listenerQAbstractSliderAction = U.ListenerInfo c_ListenerQAbstractSliderAction C.cb_QAbstractSliderActionVoid
+paramNames :: [String]
+paramNames = ["arg" ++ show x | x <- [1..]]
 
-c_ListenerQClipboardMode =
-  S.makeClass (S.ident "ListenerQClipboardMode") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QClipboardModeVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
+listeners :: [ListenerDef]
+listeners =
+  collect
+  [ ld
+  , ldBool
+  , ldDirection
+  , ldDockWidgetArea
+  , ldDockWidgetAreas
+  , ldDouble
+  , ldInt
+  , ldIntBool
+  , ldIntExitStatus
+  , ldIntInt
+  , ldIntQlonglong
+  , ldOrientation
+  , ldOrientationIntInt
+  , ldProcessError
+  , ldProcessState
+  , ldPtrQAbstractButton
+  , ldPtrQAbstractButtonBool
+  , ldPtrQAbstractItemModel
+  , ldPtrQAction
+  , ldPtrQMdiSubWindow
+  , ldPtrQObject
+  , ldPtrQTreeWidgetItem
+  , ldPtrQTreeWidgetItemInt
+  , ldPtrQTreeWidgetItemPtrQTreeWidgetItem
+  , ldPtrQWidgetPtrQWidget
+  , ldQAbstractAnimation
+  , ldQAbstractSliderAction
+  , ldQClipboardMode
+  , ldQDate
+  , ldQDockWidgetFeatures
+  , ldQModelIndex
+  , ldQModelIndexIntInt
+  , ldQModelIndexIntIntQModelIndexInt
+  , ldQModelIndexQModelIndex
+  , ldQModelIndexQModelIndexQVectorInt
+  , ldQPoint
+  , ldQSize
+  , ldQString
+  , ldQSystemTrayIconActivationReason
+  , ldQWindowVisibility
+  , ldQlonglong
+  , ldQreal
+  , ldRefConstQIcon
+  , ldRefConstQItemSelectionRefConstQItemSelection
+  , ldRefConstQListQModelIndex
+  , ldRefConstQModelIndex
+  , ldRefConstQVariant
+  , ldScreenOrientation
+  , ldStateState
+  , ldToolBarAreas
+  , ldToolButtonStyle
+  , ldWindowModality
+  , ldWindowState
+  , ldWindowStatesWindowStates
   ]
 
-listenerQClipboardMode = U.ListenerInfo c_ListenerQClipboardMode C.cb_QClipboardModeVoid
-
-c_ListenerQDate =
-  S.makeClass (S.ident "ListenerQDate") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QDateVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+ld :: Filtered ListenerDef
+listener :: ListenerInfo
+(ld, listener) = listenerDef "" cb_Void []
 
-listenerQDate = U.ListenerInfo c_ListenerQDate C.cb_QDateVoid
+(ldBool, listenerBool) =
+  listenerDef "Bool" cb_BoolVoid ["bool"]
 
-c_ListenerQDockWidgetFeatures =
-  S.makeClass (S.ident "ListenerQDockWidgetFeatures") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QDockWidgetFeaturesVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldDirection, listenerDirection) =
+  listenerDef "Direction" cb_DirectionVoid ["QAbstractAnimation::Direction"]
 
-listenerQDockWidgetFeatures = U.ListenerInfo c_ListenerQDockWidgetFeatures C.cb_QDockWidgetFeaturesVoid
+(ldDockWidgetArea, listenerDockWidgetArea) =
+  listenerDef "DockWidgetArea" cb_DockWidgetAreaVoid ["Qt::DockWidgetArea"]
 
-c_ListenerQModelIndex =
-  S.makeClass (S.ident "ListenerQModelIndex") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QModelIndexVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldDockWidgetAreas, listenerDockWidgetAreas) =
+  listenerDef "DockWidgetAreas" cb_DockWidgetAreasVoid ["Qt::DockWidgetAreas"]
 
-listenerQModelIndex = U.ListenerInfo c_ListenerQModelIndex C.cb_QModelIndexVoid
+(ldDouble, listenerDouble) =
+  listenerDef "Double" cb_DoubleVoid ["double"]
 
-c_ListenerQModelIndexIntInt =
-  S.makeClass (S.ident "ListenerQModelIndexIntInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QModelIndexIntIntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldInt, listenerInt) =
+  listenerDef "Int" cb_IntVoid ["int"]
 
-listenerQModelIndexIntInt = U.ListenerInfo c_ListenerQModelIndexIntInt C.cb_QModelIndexIntIntVoid
+(ldIntBool, listenerIntBool) =
+  listenerDef "IntBool" cb_IntBoolVoid ["int", "bool"]
 
-c_ListenerQModelIndexIntIntQModelIndexInt =
-  S.makeClass (S.ident "ListenerQModelIndexIntIntQModelIndexInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QModelIndexIntIntQModelIndexIntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldIntExitStatus, listenerIntExitStatus) =
+  listenerDef "IntExitStatus" cb_IntExitStatusVoid ["int", "QProcess::ExitStatus"]
 
-listenerQModelIndexIntIntQModelIndexInt = U.ListenerInfo c_ListenerQModelIndexIntIntQModelIndexInt C.cb_QModelIndexIntIntQModelIndexIntVoid
+(ldIntInt, listenerIntInt) =
+  listenerDef "IntInt" cb_IntIntVoid ["int", "int"]
 
-c_ListenerQModelIndexQModelIndex =
-  S.makeClass (S.ident "ListenerQModelIndexQModelIndex") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QModelIndexQModelIndexVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldIntQlonglong, listenerIntQlonglong) =
+  listenerDef "IntQlonglong" cb_IntQlonglongVoid ["int", "qlonglong"]
 
-listenerQModelIndexQModelIndex = U.ListenerInfo c_ListenerQModelIndexQModelIndex C.cb_QModelIndexQModelIndexVoid
+(ldOrientation, listenerOrientation) =
+  listenerDef "Orientation" cb_OrientationVoid ["Qt::Orientation"]
 
-c_ListenerQModelIndexQModelIndexQVectorInt =
-  S.makeClass (S.ident "ListenerQModelIndexQModelIndexQVectorInt") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QModelIndexQModelIndexQVectorIntVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldOrientationIntInt, listenerOrientationIntInt) =
+  listenerDef "OrientationIntInt" cb_OrientationIntIntVoid ["Qt::Orientation", "int", "int"]
 
-listenerQModelIndexQModelIndexQVectorInt = U.ListenerInfo c_ListenerQModelIndexQModelIndexQVectorInt C.cb_QModelIndexQModelIndexQVectorIntVoid
+(ldProcessError, listenerProcessError) =
+  listenerDef "ProcessError" cb_ProcessErrorVoid ["QProcess::ProcessError"]
 
-c_ListenerQPoint =
-  S.makeClass (S.ident "ListenerQPoint") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QPointVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldProcessState, listenerProcessState) =
+  listenerDef "ProcessState" cb_ProcessStateVoid ["QProcess::ProcessState"]
 
-listenerQPoint = U.ListenerInfo c_ListenerQPoint C.cb_QPointVoid
+(ldPtrQAbstractButton, listenerPtrQAbstractButton) =
+  listenerDef "PtrQAbstractButton" cb_PtrQAbstractButtonVoid ["QAbstractButton*"]
 
-c_ListenerQSize =
-  S.makeClass (S.ident "ListenerQSize") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QSizeVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldPtrQAbstractButtonBool, listenerPtrQAbstractButtonBool) =
+  listenerDef "PtrQAbstractButtonBool" cb_PtrQAbstractButtonBoolVoid ["QAbstractButton*", "bool"]
 
-listenerQSize = U.ListenerInfo c_ListenerQSize C.cb_QSizeVoid
+(ldPtrQAbstractItemModel, listenerPtrQAbstractItemModel) =
+  listenerDef "PtrQAbstractItemModel" cb_PtrQAbstractItemModelVoid ["QAbstractItemModel*"]
 
-c_ListenerQString =
-  S.makeClass (S.ident "ListenerQString") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QStringVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldPtrQAction, listenerPtrQAction) =
+  listenerDef "PtrQAction" cb_PtrQActionVoid ["QAction*"]
 
-listenerQString = U.ListenerInfo c_ListenerQString C.cb_QStringVoid
+(ldPtrQMdiSubWindow, listenerPtrQMdiSubWindow) =
+  listenerDef "PtrQMdiSubWindow" cb_PtrQMdiSubWindowVoid ["QMdiSubWindow*"]
 
-c_ListenerQSystemTrayIconActivationReason =
-  S.makeClass (S.ident "ListenerQSystemTrayIconActivationReason") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QSystemTrayIconActivationReasonVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldPtrQObject, listenerPtrQObject) =
+  listenerDef "PtrQObject" cb_PtrQObjectVoid ["QObject*"]
 
-listenerQSystemTrayIconActivationReason = U.ListenerInfo c_ListenerQSystemTrayIconActivationReason C.cb_QSystemTrayIconActivationReasonVoid
+(ldPtrQTreeWidgetItem, listenerPtrQTreeWidgetItem) =
+  listenerDef "PtrQTreeWidgetItem" cb_PtrQTreeWidgetItemVoid ["QTreeWidgetItem*"]
 
-c_ListenerQWindowVisibility =
-  S.makeClass (S.ident "ListenerQWindowVisibility") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QWindowVisibilityVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldPtrQTreeWidgetItemInt, listenerPtrQTreeWidgetItemInt) =
+  listenerDef "PtrQTreeWidgetItemInt" cb_PtrQTreeWidgetItemIntVoid ["QTreeWidgetItem*", "int"]
 
-listenerQWindowVisibility = U.ListenerInfo c_ListenerQWindowVisibility C.cb_QWindowVisibilityVoid
+(ldPtrQTreeWidgetItemPtrQTreeWidgetItem, listenerPtrQTreeWidgetItemPtrQTreeWidgetItem) =
+  listenerDef "PtrQTreeWidgetItemPtrQTreeWidgetItem" cb_PtrQTreeWidgetItemPtrQTreeWidgetItemVoid ["QTreeWidgetItem*", "QTreeWidgetItem*"]
 
-c_ListenerQlonglong =
-  S.makeClass (S.ident "ListenerQlonglong") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QlonglongVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldPtrQWidgetPtrQWidget, listenerPtrQWidgetPtrQWidget) =
+  listenerDef "PtrQWidgetPtrQWidget" cb_PtrQWidgetPtrQWidgetVoid ["QWidget*", "QWidget*"]
 
-listenerQlonglong = U.ListenerInfo c_ListenerQlonglong C.cb_QlonglongVoid
+(ldQAbstractAnimation, listenerQAbstractAnimation) =
+  listenerDef "QAbstractAnimation" cb_QAbstractAnimationVoid ["QAbstractAnimation*"]
 
-c_ListenerQreal =
-  S.makeClass (S.ident "ListenerQreal") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_QrealVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQAbstractSliderAction, listenerQAbstractSliderAction) =
+  listenerDef "QAbstractSliderAction" cb_QAbstractSliderActionVoid ["QAbstractSlider::SliderAction"]
 
-listenerQreal = U.ListenerInfo c_ListenerQreal C.cb_QrealVoid
+(ldQClipboardMode, listenerQClipboardMode) =
+  listenerDef "QClipboardMode" cb_QClipboardModeVoid ["QClipboard::Mode"]
 
-c_ListenerRefConstQIcon =
-  S.makeClass (S.ident "ListenerRefConstQIcon") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_RefConstQIconVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQDate, listenerQDate) =
+  listenerDef "QDate" cb_QDateVoid ["QDate"]
 
-listenerRefConstQIcon = U.ListenerInfo c_ListenerRefConstQIcon C.cb_RefConstQIconVoid
+(ldQDockWidgetFeatures, listenerQDockWidgetFeatures) =
+  listenerDef "QDockWidgetFeatures" cb_QDockWidgetFeaturesVoid ["QDockWidget::DockWidgetFeatures"]
 
-c_ListenerRefConstQItemSelectionRefConstQItemSelection =
-  S.makeClass (S.ident "ListenerRefConstQItemSelectionRefConstQItemSelection") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_RefConstQItemSelectionRefConstQItemSelectionVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQModelIndex, listenerQModelIndex) =
+  listenerDef "QModelIndex" cb_QModelIndexVoid ["QModelIndex"]
 
-listenerRefConstQItemSelectionRefConstQItemSelection = U.ListenerInfo c_ListenerRefConstQItemSelectionRefConstQItemSelection C.cb_RefConstQItemSelectionRefConstQItemSelectionVoid
+(ldQModelIndexIntInt, listenerQModelIndexIntInt) =
+  listenerDef "QModelIndexIntInt" cb_QModelIndexIntIntVoid ["QModelIndex", "int", "int"]
 
-c_ListenerRefConstQListQModelIndex =
-  S.makeClass (S.ident "ListenerRefConstQListQModelIndex") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_RefConstQListQModelIndexVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQModelIndexIntIntQModelIndexInt, listenerQModelIndexIntIntQModelIndexInt) =
+  listenerDef "QModelIndexIntIntQModelIndexInt" cb_QModelIndexIntIntQModelIndexIntVoid ["QModelIndex", "int", "int", "QModelIndex", "int"]
 
-listenerRefConstQListQModelIndex = U.ListenerInfo c_ListenerRefConstQListQModelIndex C.cb_RefConstQListQModelIndexVoid
+(ldQModelIndexQModelIndex, listenerQModelIndexQModelIndex) =
+  listenerDef "QModelIndexQModelIndex" cb_QModelIndexQModelIndexVoid ["QModelIndex", "QModelIndex"]
 
-c_ListenerRefConstQModelIndex =
-  S.makeClass (S.ident "ListenerRefConstQModelIndex") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_RefConstQModelIndexVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQModelIndexQModelIndexQVectorInt, listenerQModelIndexQModelIndexQVectorInt) =
+  listenerDef "QModelIndexQModelIndexQVectorInt" cb_QModelIndexQModelIndexQVectorIntVoid ["QModelIndex", "QModelIndex", "QVector<int>"]
 
-listenerRefConstQModelIndex = U.ListenerInfo c_ListenerRefConstQModelIndex C.cb_RefConstQModelIndexVoid
+(ldQPoint, listenerQPoint) =
+  listenerDef "QPoint" cb_QPointVoid ["QPoint"]
 
-c_ListenerRefConstQVariant =
-  S.makeClass (S.ident "ListenerRefConstQVariant") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_RefConstQVariantVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQSize, listenerQSize) =
+  listenerDef "QSize" cb_QSizeVoid ["QSize"]
 
-listenerRefConstQVariant = U.ListenerInfo c_ListenerRefConstQVariant C.cb_RefConstQVariantVoid
+(ldQString, listenerQString) =
+  listenerDef "QString" cb_QStringVoid ["QString"]
 
-c_ListenerScreenOrientation =
-  S.makeClass (S.ident "ListenerScreenOrientation") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_ScreenOrientationVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQSystemTrayIconActivationReason, listenerQSystemTrayIconActivationReason) =
+  listenerDef "QSystemTrayIconActivationReason" cb_QSystemTrayIconActivationReasonVoid ["QSystemTrayIcon::ActivationReason"]
 
-listenerScreenOrientation = U.ListenerInfo c_ListenerScreenOrientation C.cb_ScreenOrientationVoid
+(ldQWindowVisibility, listenerQWindowVisibility) =
+  listenerDefVersioned (Just [5, 0]) "QWindowVisibility" cb_QWindowVisibilityVoid ["QWindow::Visibility"]
 
-c_ListenerStateState =
-  S.makeClass (S.ident "ListenerStateState") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_StateStateVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldQlonglong, listenerQlonglong) =
+  listenerDef "Qlonglong" cb_QlonglongVoid ["qlonglong"]
 
-listenerStateState = U.ListenerInfo c_ListenerStateState C.cb_StateStateVoid
+(ldQreal, listenerQreal) =
+  listenerDef "Qreal" cb_QrealVoid ["qreal"]
 
-c_ListenerToolBarAreas =
-  S.makeClass (S.ident "ListenerToolBarAreas") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_ToolBarAreasVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldRefConstQIcon, listenerRefConstQIcon) =
+  listenerDef "RefConstQIcon" cb_RefConstQIconVoid ["const QIcon&"]
 
-listenerToolBarAreas = U.ListenerInfo c_ListenerToolBarAreas C.cb_ToolBarAreasVoid
+(ldRefConstQItemSelectionRefConstQItemSelection, listenerRefConstQItemSelectionRefConstQItemSelection) =
+  listenerDef "RefConstQItemSelectionRefConstQItemSelection" cb_RefConstQItemSelectionRefConstQItemSelectionVoid ["const QItemSelection&", "const QItemSelection&"]
 
-c_ListenerToolButtonStyle =
-  S.makeClass (S.ident "ListenerToolButtonStyle") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_ToolButtonStyleVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldRefConstQListQModelIndex, listenerRefConstQListQModelIndex) =
+  listenerDef "RefConstQListQModelIndex" cb_RefConstQListQModelIndexVoid ["const QList<QModelIndex>&"]
 
-listenerToolButtonStyle = U.ListenerInfo c_ListenerToolButtonStyle C.cb_ToolButtonStyleVoid
+(ldRefConstQModelIndex, listenerRefConstQModelIndex) =
+  listenerDef "RefConstQModelIndex" cb_RefConstQModelIndexVoid ["const QModelIndex&"]
 
-c_ListenerWindowModality =
-  S.makeClass (S.ident "ListenerWindowModality") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_WindowModalityVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldRefConstQVariant, listenerRefConstQVariant) =
+  listenerDef "RefConstQVariant" cb_RefConstQVariantVoid ["const QVariant&"]
 
-listenerWindowModality = U.ListenerInfo c_ListenerWindowModality C.cb_WindowModalityVoid
+(ldScreenOrientation, listenerScreenOrientation) =
+  listenerDefVersioned (Just [5, 0]) "ScreenOrientation" cb_ScreenOrientationVoid ["Qt::ScreenOrientation"]
 
-c_ListenerWindowState =
-  S.makeClass (S.ident "ListenerWindowState") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_WindowStateVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldStateState, listenerStateState) =
+  listenerDef "StateState" cb_StateStateVoid ["QAbstractAnimation::State", "QAbstractAnimation::State"]
 
-listenerWindowState = U.ListenerInfo c_ListenerWindowState C.cb_WindowStateVoid
+(ldToolBarAreas, listenerToolBarAreas) =
+  listenerDef "ToolBarAreas" cb_ToolBarAreasVoid ["Qt::ToolBarAreas"]
 
-c_ListenerWindowStatesWindowStates =
-  S.makeClass (S.ident "ListenerWindowStatesWindowStates") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_WindowStatesWindowStatesVoid]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldToolButtonStyle, listenerToolButtonStyle) =
+  listenerDef "ToolButtonStyle" cb_ToolButtonStyleVoid ["Qt::ToolButtonStyle"]
 
-listenerWindowStatesWindowStates = U.ListenerInfo c_ListenerWindowStatesWindowStates C.cb_WindowStatesWindowStatesVoid
+(ldWindowModality, listenerWindowModality) =
+  listenerDef "WindowModality" cb_WindowModalityVoid ["Qt::WindowModality"]
 
-c_Listener =
-  S.makeClass (S.ident "Listener") Nothing [QObject.c_QObject]
-  [ S.mkCtor "new"
-    [T.ptrT $ T.objT QObject.c_QObject, T.objT String.c_string, T.callbackT C.cb_Void]
-  , S.mkConstMethod "isValid" S.np T.boolT
-  ]
+(ldWindowState, listenerWindowState) =
+  listenerDef "WindowState" cb_WindowStateVoid ["Qt::WindowState"]
 
-listener = U.ListenerInfo c_Listener C.cb_Void
+(ldWindowStatesWindowStates, listenerWindowStatesWindowStates) =
+  listenerDef "WindowStatesWindowStates" cb_WindowStatesWindowStatesVoid ["Qt::WindowStates", "Qt::WindowStates"]
 
-aModule :: M.AModule
-aModule =
-  M.AHoppyModule $
-  S.addReqIncludes [S.includeLocal "listener.hpp"] $
-  S.moduleModify' (S.makeModule "listener" "b_listener.hpp" "b_listener.cpp") $ do
-    S.moduleAddHaskellName ["Internal", "Listener"]
-    S.moduleAddExports $ V.collect
-      [ V.just $ S.Export c_ListenerBool
-      , V.just $ S.Export c_ListenerDirection
-      , V.just $ S.Export c_ListenerDockWidgetArea
-      , V.just $ S.Export c_ListenerDockWidgetAreas
-      , V.just $ S.Export c_ListenerDouble
-      , V.just $ S.Export c_ListenerInt
-      , V.just $ S.Export c_ListenerIntBool
-      , V.just $ S.Export c_ListenerIntExitStatus
-      , V.just $ S.Export c_ListenerIntInt
-      , V.just $ S.Export c_ListenerIntQlonglong
-      , V.just $ S.Export c_ListenerOrientation
-      , V.just $ S.Export c_ListenerOrientationIntInt
-      , V.just $ S.Export c_ListenerProcessError
-      , V.just $ S.Export c_ListenerProcessState
-      , V.just $ S.Export c_ListenerPtrQAbstractButton
-      , V.just $ S.Export c_ListenerPtrQAbstractButtonBool
-      , V.just $ S.Export c_ListenerPtrQAbstractItemModel
-      , V.just $ S.Export c_ListenerPtrQAction
-      , V.just $ S.Export c_ListenerPtrQMdiSubWindow
-      , V.just $ S.Export c_ListenerPtrQObject
-      , V.just $ S.Export c_ListenerPtrQTreeWidgetItem
-      , V.just $ S.Export c_ListenerPtrQTreeWidgetItemInt
-      , V.just $ S.Export c_ListenerPtrQTreeWidgetItemPtrQTreeWidgetItem
-      , V.just $ S.Export c_ListenerPtrQWidgetPtrQWidget
-      , V.just $ S.Export c_ListenerQAbstractAnimation
-      , V.just $ S.Export c_ListenerQAbstractSliderAction
-      , V.just $ S.Export c_ListenerQClipboardMode
-      , V.just $ S.Export c_ListenerQDate
-      , V.just $ S.Export c_ListenerQDockWidgetFeatures
-      , V.just $ S.Export c_ListenerQModelIndex
-      , V.just $ S.Export c_ListenerQModelIndexIntInt
-      , V.just $ S.Export c_ListenerQModelIndexIntIntQModelIndexInt
-      , V.just $ S.Export c_ListenerQModelIndexQModelIndex
-      , V.just $ S.Export c_ListenerQModelIndexQModelIndexQVectorInt
-      , V.just $ S.Export c_ListenerQPoint
-      , V.just $ S.Export c_ListenerQSize
-      , V.just $ S.Export c_ListenerQString
-      , V.just $ S.Export c_ListenerQSystemTrayIconActivationReason
-      , V.test (Config.qtVersion >= [5, 0]) $ S.Export c_ListenerQWindowVisibility
-      , V.just $ S.Export c_ListenerQlonglong
-      , V.just $ S.Export c_ListenerQreal
-      , V.just $ S.Export c_ListenerRefConstQIcon
-      , V.just $ S.Export c_ListenerRefConstQItemSelectionRefConstQItemSelection
-      , V.just $ S.Export c_ListenerRefConstQListQModelIndex
-      , V.just $ S.Export c_ListenerRefConstQModelIndex
-      , V.just $ S.Export c_ListenerRefConstQVariant
-      , V.test (Config.qtVersion >= [5, 0]) $ S.Export c_ListenerScreenOrientation
-      , V.just $ S.Export c_ListenerStateState
-      , V.just $ S.Export c_ListenerToolBarAreas
-      , V.just $ S.Export c_ListenerToolButtonStyle
-      , V.just $ S.Export c_ListenerWindowModality
-      , V.just $ S.Export c_ListenerWindowState
-      , V.just $ S.Export c_ListenerWindowStatesWindowStates
-      , V.just $ S.Export c_Listener
-      ]
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/Listener.hs-boot
@@ -1,115 +1,130 @@
----------- GENERATED FILE, EDITS WILL BE LOST ----------
+-- 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 where
+module Graphics.UI.Qtah.Generator.Interface.Internal.Listener (
+  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 Foreign.Hoppy.Generator.Spec (Class)
 import Graphics.UI.Qtah.Generator.Types (ListenerInfo)
 
-c_ListenerBool :: Class
+listener :: ListenerInfo
 listenerBool :: ListenerInfo
-c_ListenerDirection :: Class
 listenerDirection :: ListenerInfo
-c_ListenerDockWidgetArea :: Class
 listenerDockWidgetArea :: ListenerInfo
-c_ListenerDockWidgetAreas :: Class
 listenerDockWidgetAreas :: ListenerInfo
-c_ListenerDouble :: Class
 listenerDouble :: ListenerInfo
-c_ListenerInt :: Class
 listenerInt :: ListenerInfo
-c_ListenerIntBool :: Class
 listenerIntBool :: ListenerInfo
-c_ListenerIntExitStatus :: Class
 listenerIntExitStatus :: ListenerInfo
-c_ListenerIntInt :: Class
 listenerIntInt :: ListenerInfo
-c_ListenerIntQlonglong :: Class
 listenerIntQlonglong :: ListenerInfo
-c_ListenerOrientation :: Class
 listenerOrientation :: ListenerInfo
-c_ListenerOrientationIntInt :: Class
 listenerOrientationIntInt :: ListenerInfo
-c_ListenerProcessError :: Class
 listenerProcessError :: ListenerInfo
-c_ListenerProcessState :: Class
 listenerProcessState :: ListenerInfo
-c_ListenerPtrQAbstractButton :: Class
 listenerPtrQAbstractButton :: ListenerInfo
-c_ListenerPtrQAbstractButtonBool :: Class
 listenerPtrQAbstractButtonBool :: ListenerInfo
-c_ListenerPtrQAbstractItemModel :: Class
 listenerPtrQAbstractItemModel :: ListenerInfo
-c_ListenerPtrQAction :: Class
 listenerPtrQAction :: ListenerInfo
-c_ListenerPtrQMdiSubWindow :: Class
 listenerPtrQMdiSubWindow :: ListenerInfo
-c_ListenerPtrQObject :: Class
 listenerPtrQObject :: ListenerInfo
-c_ListenerPtrQTreeWidgetItem :: Class
 listenerPtrQTreeWidgetItem :: ListenerInfo
-c_ListenerPtrQTreeWidgetItemInt :: Class
 listenerPtrQTreeWidgetItemInt :: ListenerInfo
-c_ListenerPtrQTreeWidgetItemPtrQTreeWidgetItem :: Class
 listenerPtrQTreeWidgetItemPtrQTreeWidgetItem :: ListenerInfo
-c_ListenerPtrQWidgetPtrQWidget :: Class
 listenerPtrQWidgetPtrQWidget :: ListenerInfo
-c_ListenerQAbstractAnimation :: Class
 listenerQAbstractAnimation :: ListenerInfo
-c_ListenerQAbstractSliderAction :: Class
 listenerQAbstractSliderAction :: ListenerInfo
-c_ListenerQClipboardMode :: Class
 listenerQClipboardMode :: ListenerInfo
-c_ListenerQDate :: Class
 listenerQDate :: ListenerInfo
-c_ListenerQDockWidgetFeatures :: Class
 listenerQDockWidgetFeatures :: ListenerInfo
-c_ListenerQModelIndex :: Class
 listenerQModelIndex :: ListenerInfo
-c_ListenerQModelIndexIntInt :: Class
 listenerQModelIndexIntInt :: ListenerInfo
-c_ListenerQModelIndexIntIntQModelIndexInt :: Class
 listenerQModelIndexIntIntQModelIndexInt :: ListenerInfo
-c_ListenerQModelIndexQModelIndex :: Class
 listenerQModelIndexQModelIndex :: ListenerInfo
-c_ListenerQModelIndexQModelIndexQVectorInt :: Class
 listenerQModelIndexQModelIndexQVectorInt :: ListenerInfo
-c_ListenerQPoint :: Class
 listenerQPoint :: ListenerInfo
-c_ListenerQSize :: Class
 listenerQSize :: ListenerInfo
-c_ListenerQString :: Class
 listenerQString :: ListenerInfo
-c_ListenerQSystemTrayIconActivationReason :: Class
 listenerQSystemTrayIconActivationReason :: ListenerInfo
-c_ListenerQWindowVisibility :: Class
 listenerQWindowVisibility :: ListenerInfo
-c_ListenerQlonglong :: Class
 listenerQlonglong :: ListenerInfo
-c_ListenerQreal :: Class
 listenerQreal :: ListenerInfo
-c_ListenerRefConstQIcon :: Class
 listenerRefConstQIcon :: ListenerInfo
-c_ListenerRefConstQItemSelectionRefConstQItemSelection :: Class
 listenerRefConstQItemSelectionRefConstQItemSelection :: ListenerInfo
-c_ListenerRefConstQListQModelIndex :: Class
 listenerRefConstQListQModelIndex :: ListenerInfo
-c_ListenerRefConstQModelIndex :: Class
 listenerRefConstQModelIndex :: ListenerInfo
-c_ListenerRefConstQVariant :: Class
 listenerRefConstQVariant :: ListenerInfo
-c_ListenerScreenOrientation :: Class
 listenerScreenOrientation :: ListenerInfo
-c_ListenerStateState :: Class
 listenerStateState :: ListenerInfo
-c_ListenerToolBarAreas :: Class
 listenerToolBarAreas :: ListenerInfo
-c_ListenerToolButtonStyle :: Class
 listenerToolButtonStyle :: ListenerInfo
-c_ListenerWindowModality :: Class
 listenerWindowModality :: ListenerInfo
-c_ListenerWindowState :: Class
 listenerWindowState :: ListenerInfo
-c_ListenerWindowStatesWindowStates :: Class
 listenerWindowStatesWindowStates :: ListenerInfo
-c_Listener :: Class
-listener :: ListenerInfo
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Internal/SceneEventListener.hs b/src/Graphics/UI/Qtah/Generator/Interface/Internal/SceneEventListener.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Internal/SceneEventListener.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Internal/SceneEventListener.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractButton.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractGraphicsShapeItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractGraphicsShapeItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractGraphicsShapeItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractGraphicsShapeItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemDelegate.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractItemView.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractScrollArea.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractScrollArea.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractScrollArea.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractScrollArea.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSlider.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSpinBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSpinBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSpinBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAbstractSpinBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QAction.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QActionGroup.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QActionGroup.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QActionGroup.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QActionGroup.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QApplication.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QApplication.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QApplication.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QApplication.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QBoxLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QBoxLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QBoxLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QBoxLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QButtonGroup.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QButtonGroup.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QButtonGroup.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QButtonGroup.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QCheckBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QCheckBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QCheckBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QCheckBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QComboBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QComboBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QComboBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QComboBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateEdit.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDateTimeEdit.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDial.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDial.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDial.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDial.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialog.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialog.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialog.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialog.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialogButtonBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialogButtonBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialogButtonBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDialogButtonBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDockWidget.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDoubleSpinBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDoubleSpinBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDoubleSpinBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QDoubleSpinBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFileDialog.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFileDialog.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFileDialog.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFileDialog.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFormLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFormLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFormLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFormLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFrame.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFrame.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFrame.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QFrame.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsEllipseItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsEllipseItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsEllipseItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsEllipseItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsItem.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPixmapItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPixmapItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPixmapItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPixmapItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPolygonItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPolygonItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPolygonItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsPolygonItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsRectItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsRectItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsRectItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsRectItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsScene.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneMouseEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneMouseEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneMouseEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneMouseEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneWheelEvent.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneWheelEvent.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneWheelEvent.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsSceneWheelEvent.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsView.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsView.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsView.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGraphicsView.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGridLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGridLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGridLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGridLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGroupBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGroupBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGroupBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QGroupBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QHBoxLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QHBoxLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QHBoxLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QHBoxLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QInputDialog.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QInputDialog.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QInputDialog.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QInputDialog.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLCDNumber.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLCDNumber.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLCDNumber.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLCDNumber.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLabel.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayout.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayoutItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayoutItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayoutItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLayoutItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLineEdit.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLineEdit.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLineEdit.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QLineEdit.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QListView.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QListView.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QListView.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QListView.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMainWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiArea.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiArea.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiArea.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiArea.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMdiSubWindow.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenu.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenu.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenu.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenu.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenuBar.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenuBar.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenuBar.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMenuBar.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMessageBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMessageBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMessageBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QMessageBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QOpenGLWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QOpenGLWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QOpenGLWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QOpenGLWidget.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QProgressBar.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QProgressBar.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QProgressBar.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QProgressBar.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QPushButton.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QPushButton.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QPushButton.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QPushButton.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRadioButton.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRadioButton.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRadioButton.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRadioButton.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRubberBand.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRubberBand.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRubberBand.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QRubberBand.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollArea.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollArea.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollArea.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollArea.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollBar.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollBar.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollBar.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QScrollBar.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSizePolicy.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSizePolicy.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSizePolicy.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSizePolicy.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSlider.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSlider.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSlider.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSlider.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpacerItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpacerItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpacerItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpacerItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpinBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpinBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpinBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSpinBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSplitter.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSplitter.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSplitter.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSplitter.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStackedWidget.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStatusBar.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStatusBar.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStatusBar.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStatusBar.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QStyledItemDelegate.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QSystemTrayIcon.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTabWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTabWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTabWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTabWidget.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTextEdit.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTextEdit.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTextEdit.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTextEdit.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBar.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBar.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBar.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBar.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolBox.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2018-2020 The Qtah Authors.
+-- Copyright 2018-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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QToolButton.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeView.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidget.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QTreeWidgetItem.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QVBoxLayout.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QVBoxLayout.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QVBoxLayout.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QVBoxLayout.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs-boot b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs-boot
--- a/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs-boot
+++ b/src/Graphics/UI/Qtah/Generator/Interface/Widgets/QWidget.hs-boot
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/ListenerGen.hs b/src/Graphics/UI/Qtah/Generator/ListenerGen.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/ListenerGen.hs
@@ -0,0 +1,149 @@
+-- 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.ListenerGen (
+  generateListenerCpp,
+  ) where
+
+import Data.List (intercalate)
+import Graphics.UI.Qtah.Generator.Common (writeFileIfDifferent)
+import Graphics.UI.Qtah.Generator.Config (Version)
+import Graphics.UI.Qtah.Generator.Interface.Internal.Listener (ListenerDef (..), listeners)
+import System.FilePath ((</>))
+
+generateListenerCpp :: FilePath -> IO ()
+generateListenerCpp cppDirPath = do
+  writeFileIfDifferent (cppDirPath </> "listener.hpp") hppSource
+  writeFileIfDifferent (cppDirPath </> "listener.cpp") cppSource
+
+-- TODO Generate this from the listener definitions themselves.
+cppIncludes :: [String]
+cppIncludes =
+  [ "#include <QAbstractAnimation>"
+  , "#include <QAbstractButton>"
+  , "#include <QAbstractSlider>"
+  , "#include <QAction>"
+  , "#include <QClipboard>"
+  , "#include <QDockWidget>"
+  , "#include <QIcon>"
+  , "#include <QItemSelection>"
+  , "#include <QMdiSubWindow>"
+  , "#include <QMetaObject>"
+  , "#include <QModelIndex>"
+  , "#include <QObject>"
+  , "#include <QPoint>"
+  , "#include <QProcess>"
+  , "#include <QSize>"
+  , "#include <QSystemTrayIcon>"
+  , "#include <QTreeWidgetItem>"
+  , "#include <QVariant>"
+  , "#include <QVector>"
+  , "#include <QWidget>"
+  , "#include <Qt>"
+  , "#include <QtGlobal>"
+  , "#include <string>"
+  , "#if QT_VERSION >= 0x050000"
+  , "#include <QWindow>"
+  , "#endif"
+  , "#include \"b_callback.hpp\""
+  ]
+
+hppSource :: String
+hppSource = (++ "\n") $ intercalate "\n" $
+  [ "////////// GENERATED FILE, EDITS WILL BE LOST //////////"
+  , ""
+  , "#ifndef QTAH_LISTENERS_HPP"
+  , "#define QTAH_LISTENERS_HPP"
+  , ""
+  ] ++ cppIncludes ++
+  flip concatMap listeners (\l ->
+    let cn = listenerClassName l
+        ccn = listenerCallbackClassName l
+        pl = listenerCppParamList l
+    in [ "" ] ++
+       maybe [] (\v -> ["#if QT_VERSION >= " ++ renderVersionCppHex v, ""]) (listenerMinVersion l) ++
+       [ "class " ++ cn ++ " : public QObject {"
+       , "    Q_OBJECT"
+       , ""
+       , "public:"
+       , "    typedef " ++ ccn ++ " callback;"
+       , ""
+       , "    " ++ cn ++ "(QObject* source, const std::string& signal, callback f);"
+       , "    ~" ++ cn ++ "();"
+       , "    bool isValid() const;"
+       , ""
+       , "public slots:"
+       , "    void invoke(" ++ pl ++ ");"
+       , ""
+       , "private:"
+       , "    callback f_;"
+       , "    QMetaObject::Connection connection_;"
+       , "};"
+       ] ++
+       maybe [] (\_ -> ["", "#endif"]) (listenerMinVersion l)
+  ) ++
+  [ ""
+  , "#endif"
+  ]
+
+cppSource :: String
+cppSource = (++ "\n") $ intercalate "\n" $
+  [ "////////// GENERATED FILE, EDITS WILL BE LOST //////////"
+  , ""
+  , "#include \"listener.hpp\""
+  , ""
+  , "#include <iostream>"
+  ] ++
+  flip concatMap listeners (\l ->
+    let cn = listenerClassName l
+        pl = listenerCppParamList l
+        ptl = listenerCppParamTypeList l
+        pnl = listenerCppParamNameList l
+    in [ "" ] ++
+       maybe [] (\v -> ["#if QT_VERSION >= " ++ renderVersionCppHex v, ""]) (listenerMinVersion l) ++
+       [ cn ++ "::" ++ cn ++ "(QObject* source, const std::string& signal, " ++ cn ++ "::callback f) :"
+       , "    QObject(source), f_(f) {"
+       , "    connection_ = connect(source, signal.c_str(), this, SLOT(invoke(" ++ ptl ++ ")));"
+       , "}"
+       , ""
+       , cn ++ "::~" ++ cn ++ "() {"
+       , "    QObject::disconnect(connection_);"
+       , "}"
+       , ""
+       , "bool " ++ cn ++ "::isValid() const {"
+       , "    return static_cast<bool>(connection_);"
+       , "}"
+       , ""
+       , "void " ++ cn ++ "::invoke(" ++ pl ++ ") {"
+       , "    f_(" ++ pnl ++ ");"
+       , "}"
+       ] ++
+       maybe [] (\_ -> ["", "#endif"]) (listenerMinVersion l)
+  )
+
+renderVersionCppHex :: Version -> String
+renderVersionCppHex version = "0x" ++ a' ++ b' ++ c'
+  where [a, b, c] = take 3 $ version ++ repeat 0
+        a' = pad a
+        b' = pad b
+        c' = pad c
+        pad n =
+          if 0 <= n && n < 10
+          then '0' : show n
+          else if 10 <= n && n < 100
+               then show n
+               else error $ "renderVersionCppHex expects 0 <= n < 100, n is " ++ show n ++ "."
diff --git a/src/Graphics/UI/Qtah/Generator/Main.hs b/src/Graphics/UI/Qtah/Generator/Main.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Qtah/Generator/Main.hs
@@ -0,0 +1,98 @@
+-- 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.Main (
+  run,
+  generateCpp,
+  generateHs,
+  ) where
+
+import Control.Monad (when)
+import Data.List (intercalate)
+import qualified Foreign.Hoppy.Generator.Main as GeneratorMain (run)
+import Foreign.Hoppy.Generator.Spec (
+  Interface,
+  Module,
+  interface,
+  interfaceAddHaskellModuleBase,
+  moduleModify',
+  moduleSetCppPath,
+  moduleSetHppPath,
+  )
+import qualified Foreign.Hoppy.Generator.Std as Std
+import Graphics.UI.Qtah.Generator.Enum (installEnumCalculator)
+import Graphics.UI.Qtah.Generator.Config (qmakeArguments, qmakeExecutable, qtVersion)
+import Graphics.UI.Qtah.Generator.Module
+import qualified Graphics.UI.Qtah.Generator.Interface.Core as Core
+import qualified Graphics.UI.Qtah.Generator.Interface.Gui as Gui
+import qualified Graphics.UI.Qtah.Generator.Interface.Internal as Internal
+import qualified Graphics.UI.Qtah.Generator.Interface.Widgets as Widgets
+import System.Exit (exitFailure)
+import System.IO (hPutStrLn, stderr)
+
+mod_std :: Module
+mod_std = moduleModify' Std.mod_std $ do
+  moduleSetHppPath "b_std.hpp"
+  moduleSetCppPath "b_std.cpp"
+
+modules :: [AModule]
+modules =
+  concat
+  [ [ AHoppyModule mod_std
+    ]
+  , Core.modules
+  , Gui.modules
+  , Internal.modules
+  , Widgets.modules
+  ]
+
+interfaceResult :: Either String Interface
+interfaceResult =
+  fmap installEnumCalculator $
+  interfaceAddHaskellModuleBase ["Graphics", "UI", "Qtah"] =<<
+  interface "qtah" (concatMap aModuleHoppyModules modules)
+
+-- | Generates the C++ side of the Qtah bindings, producing files in the given
+-- directory.
+generateCpp :: FilePath -> IO ()
+generateCpp path = run ["--gen-cpp", path]
+
+-- | Generates the Haskell side of the Qtah bindings in the given source
+-- directory.
+generateHs :: FilePath -> IO ()
+generateHs path = run ["--gen-hs", path]
+
+-- | Runs the Qtah generator with the given command line arguments.
+run :: [String] -> IO ()
+run args =
+  case interfaceResult of
+    Left errorMsg -> do
+      putStrLn $ "Error initializing interface: " ++ errorMsg
+      exitFailure
+    Right iface -> do
+      -- If building against Qt 4, then warn that it is no longer supported.
+      when (qtVersion < [5, 0]) $ do
+        hPutStrLn stderr $
+          "WARNING: Qtah no longer supports Qt 4.x.  Please upgrade to Qt 5.  Found version " ++
+          intercalate "." (map show qtVersion) ++ "."
+
+      case args of
+        ["--qt-version"] -> putStrLn $ intercalate "." $ map show qtVersion
+        ["--qmake-executable"] -> putStr $ unlines $ qmakeExecutable : qmakeArguments
+        _ -> do
+          _ <- GeneratorMain.run [iface] args
+          return ()
diff --git a/src/Graphics/UI/Qtah/Generator/Module.hs b/src/Graphics/UI/Qtah/Generator/Module.hs
--- a/src/Graphics/UI/Qtah/Generator/Module.hs
+++ b/src/Graphics/UI/Qtah/Generator/Module.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Graphics/UI/Qtah/Generator/Types.hs b/src/Graphics/UI/Qtah/Generator/Types.hs
--- a/src/Graphics/UI/Qtah/Generator/Types.hs
+++ b/src/Graphics/UI/Qtah/Generator/Types.hs
@@ -1,6 +1,6 @@
 -- This file is part of Qtah.
 --
--- Copyright 2015-2020 The Qtah Authors.
+-- 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
diff --git a/src/Main.hs b/src/Main.hs
deleted file mode 100644
--- a/src/Main.hs
+++ /dev/null
@@ -1,101 +0,0 @@
--- This file is part of Qtah.
---
--- Copyright 2015-2020 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 Main where
-
-import Control.Monad (when)
-import Data.List (intercalate)
-import Foreign.Hoppy.Generator.Main (run)
-import Foreign.Hoppy.Generator.Spec (
-  Interface,
-  Module,
-  interface,
-  interfaceAddHaskellModuleBase,
-  moduleModify',
-  moduleSetCppPath,
-  moduleSetHppPath,
-  )
-import qualified Foreign.Hoppy.Generator.Std as Std
-import Graphics.UI.Qtah.Generator.Enum (installEnumCalculator)
-import Graphics.UI.Qtah.Generator.Config (qmakeArguments, qmakeExecutable, qtVersion)
-import Graphics.UI.Qtah.Generator.Module
-import qualified Graphics.UI.Qtah.Generator.Interface.Core as Core
-import qualified Graphics.UI.Qtah.Generator.Interface.Gui as Gui
-import qualified Graphics.UI.Qtah.Generator.Interface.Internal as Internal
-import qualified Graphics.UI.Qtah.Generator.Interface.Widgets as Widgets
-import System.Environment (getArgs)
-import System.Exit (exitFailure)
-import System.FilePath (
-  dropTrailingPathSeparator,
-  takeDirectory,
-  takeFileName,
-  )
-import System.IO (hPutStrLn, stderr)
-
-mod_std :: Module
-mod_std = moduleModify' Std.mod_std $ do
-  moduleSetHppPath "b_std.hpp"
-  moduleSetCppPath "b_std.cpp"
-
-modules :: [AModule]
-modules =
-  concat
-  [ [ AHoppyModule mod_std
-    ]
-  , Core.modules
-  , Gui.modules
-  , Internal.modules
-  , Widgets.modules
-  ]
-
-interfaceResult :: Either String Interface
-interfaceResult =
-  fmap installEnumCalculator $
-  interfaceAddHaskellModuleBase ["Graphics", "UI", "Qtah"] =<<
-  interface "qtah" (concatMap aModuleHoppyModules modules)
-
-main :: IO ()
-main =
-  case interfaceResult of
-    Left errorMsg -> do
-      putStrLn $ "Error initializing interface: " ++ errorMsg
-      exitFailure
-    Right iface -> do
-      -- If building against Qt 4, then warn that it is no longer supported.
-      when (qtVersion < [5, 0]) $ do
-        hPutStrLn stderr $
-          "WARNING: Qtah no longer supports Qt 4.x.  Please upgrade to Qt 5.  Found version " ++
-          intercalate "." (map show qtVersion) ++ "."
-
-      args <- getArgs
-      case args of
-        ["--qt-version"] -> putStrLn $ intercalate "." $ map show qtVersion
-        ["--qmake-executable"] -> putStr $ unlines $ qmakeExecutable : qmakeArguments
-        _ -> do
-          _ <- run [iface] args
-          return ()
-
-findSrcDir :: FilePath -> Maybe FilePath
-findSrcDir = go . dropTrailingPathSeparator
-  where go "" = Nothing
-        go path =
-          let dir = takeDirectory path
-              file = takeFileName path
-          in if file == "src" then Just path
-             else if dir == path
-                  then Nothing  -- Can't go up any more.
-                  else go dir
