Source code for enaml.qt.qt_bounded_time

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


def as_qtime(iso_time):
    """ Convert an iso time string to a QTime.

    """
    return QTime.fromString(iso_time, Qt.ISODate)


def as_iso_time(qtime):
    """ Convert a QTime object into and iso time string.

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


[docs]class QtBoundedTime(QtControl): """ A base class for implementing Qt-Enaml time widgets. """ #-------------------------------------------------------------------------- # Setup Methods #--------------------------------------------------------------------------
[docs] def create(self, tree): """ Create and initialize the underyling time widget. """ super(QtBoundedTime, self).create(tree) self.set_min_time(as_qtime(tree['minimum'])) self.set_max_time(as_qtime(tree['maximum'])) self.set_time(as_qtime(tree['time'])) #-------------------------------------------------------------------------- # Message Handlers #--------------------------------------------------------------------------
[docs] def on_action_set_time(self, content): """ Handle the 'set_time' action from the Enaml widget. """ self.set_time(as_qtime(content['time']))
[docs] def on_action_set_minimum(self, content): """ Handle the 'set_minimum' action from the Enaml widget. """ self.set_min_time(as_qtime(content['minimum']))
[docs] def on_action_set_maximum(self, content): """ Handle the 'set_maximum' action from the Enaml widget. """ self.set_max_time(as_qtime(content['maximum'])) #-------------------------------------------------------------------------- # Signal Handlers #--------------------------------------------------------------------------
[docs] def on_time_changed(self): """ A signal handler to connect to the time changed signal of the underlying widget. This will convert the QTime to iso format and send the Enaml widget the 'time_changed' action. """ if 'time' not in self.loopback_guard: qtime = self.get_time() content = {'time': as_iso_time(qtime)} self.send_action('time_changed', content) #-------------------------------------------------------------------------- # Abstract Methods #--------------------------------------------------------------------------
[docs] def get_time(self): """ Return the current time in the control. Returns ------- result : QTime The current control time as a QTime object. """ raise NotImplementedError
[docs] def set_time(self, time): """ Set the widget's current time. Implementations should enter the loopback guard using the key 'time' before setting the time. Parameters ---------- time : QTime The QTime object to use for setting the time. """ raise NotImplementedError
[docs] def set_max_time(self, time): """ Set the widget's maximum time. Parameters ---------- time : QTime The QTime object to use for setting the maximum time. """ raise NotImplementedError
[docs] def set_min_time(self, time): """ Set the widget's minimum time. Parameters ---------- time : QTime The QTime object to use for setting the minimum time. """ raise NotImplementedError