Using KTL keywords
==================

.. currentmodule:: kPyQt.Keyword

:class:`Keyword` instances are the primary :mod:`kPyQt` resource that
most applications will interact with. The principal design goal objective of the
:class:`Keyword` is to properly sanitize KTL broadcast events for consumption
by other PyQt widgets through the use of signals and slots. With few exceptions,
other interaction with :class:`ktl.Keyword` instances is best done directly
rather than rely on wrapped methods in :class:`Keyword`.


Instantiating :class:`Keyword` instances
----------------------------------------

.. autofunction:: factory


The base :class:`Keyword` class
-------------------------------

.. autoclass:: Keyword

   The first set of methods are application-facing and have utility for GUI code
   interacting with KTL keywords.

   .. automethod:: getEnumerators
   .. automethod:: primeCallback
   .. automethod:: read
   .. automethod:: setFormat
   .. automethod:: setKeyword
   .. automethod:: write

   The second set of methods are of interest for subclasses of :class:`Keyword`,
   and may need to be overridden for proper handling of custom functionality.

   .. automethod:: formatValue
   .. automethod:: emitIntegerCallback
   .. automethod:: emitStringCallback
   .. automethod:: receiveCallback


Subclasses of :class:`Keyword`
------------------------------

The basic classes don't add much (if anything) beyond the base :class:`Keyword`.

.. autoclass:: Float
.. autoclass:: Integer
.. autoclass:: String

Additional subclasses included here were used regularly in multiple
applications, and were generic enough to warrant providing as part of
:mod:`kPyQt`.

.. autoclass:: DynamicEnumeration

   .. automethod:: getEnumerators
   .. automethod:: setMappingKeyword
   .. automethod:: setSort

.. autoclass:: Percentage

   .. automethod:: setMinimumKeyword
   .. automethod:: setMaximumKeyword
   .. automethod:: setRange