Source code for enaml.qt.qt_bounded_datetime

#------------------------------------------------------------------------------
#  Copyright (c) 2012, Enthought, Inc.
#  All rights reserved.
#------------------------------------------------------------------------------
from .qt.QtCore import Qt, QDateTime
from .qt_control import QtControl


def as_qdatetime(iso_datetime):
    """ Convert an iso datetime string to a QDateTime.

    """
    return QDateTime.fromString(iso_datetime, Qt.ISODate)


def as_iso_datetime(qdatetime):
    """ Convert a QDateTime object into an iso datetime string.

    """
    return qdatetime.toString(Qt.ISODate)


[docs]class QtBoundedDatetime(QtControl): """ A base class for implementing Qt-Enaml datetime widgets. """ #-------------------------------------------------------------------------- # Setup Methods #--------------------------------------------------------------------------
[docs] def create(self, create): """ Create and initialize the underlying datetime widget. """ super(QtBoundedDatetime, self).create(create) self.set_min_datetime(as_qdatetime(create['minimum'])) self.set_max_datetime(as_qdatetime(create['maximum'])) self.set_datetime(as_qdatetime(create['datetime'])) #-------------------------------------------------------------------------- # Message Handlers #--------------------------------------------------------------------------
[docs] def on_action_set_datetime(self, content): """ Handle the 'set_datetime' action from the Enaml widget. """ self.set_datetime(as_qdatetime(content['datetime']))
[docs] def on_action_set_minimum(self, content): """ Handle the 'set_minimum' action from the Enaml widget. """ self.set_min_datetime(as_qdatetime(content['minimum']))
[docs] def on_action_set_maximum(self, content): """ Handle the 'set_maximum' action from the Enaml widget. """ self.set_max_datetime(as_qdatetime(content['maximum'])) #-------------------------------------------------------------------------- # Signal Handlers #--------------------------------------------------------------------------
[docs] def on_datetime_changed(self): """ A signal handler to connect to the datetime changed signal of the underlying widget. This will convert the QDateTime to iso format and send the Enaml widget the 'event-changed' action. """ if 'datetime' not in self.loopback_guard: qdatetime = self.get_datetime() content = {'datetime': as_iso_datetime(qdatetime)} self.send_action('datetime_changed', content) #-------------------------------------------------------------------------- # Widget Update Methods #--------------------------------------------------------------------------
[docs] def get_datetime(self): """ Return the current datetime in the control. Returns ------- result : QDateTime The current control datetime as a QDateTime object. """ raise NotImplementedError
[docs] def set_datetime(self, datetime): """ Set the widget's current datetime. Implementations should enter the loopback guard using the key 'datetime' before setting the datetime. Parameters ---------- datetime : QDateTime The QDateTime object to use for setting the datetime. """ raise NotImplementedError
[docs] def set_max_datetime(self, datetime): """ Set the widget's maximum datetime. Parameters ---------- datetime : QDateTime The QDateTime object to use for setting the maximum datetime. """ raise NotImplementedError
[docs] def set_min_datetime(self, datetime): """ Set the widget's minimum datetime. Parameters ---------- datetime : QDateTime The QDateTime object to use for setting the minimum datetime. """ raise NotImplementedError