Exemple #1
0
class QtTimeSelector(QtBoundedTime, ProxyTimeSelector):
    """ A Qt implementation of an Enaml ProxyTimeSelector.

    """
    #: A reference to the widget created by the proxy.
    widget = Typed(QTimeEdit)

    #--------------------------------------------------------------------------
    # Initialization API
    #--------------------------------------------------------------------------
    def create_widget(self):
        """ Create the QTimeEdit widget.

        """
        self.widget = QTimeEdit(self.parent_widget())

    def init_widget(self):
        """ Initialize the widget.

        """
        super(QtTimeSelector, self).init_widget()
        d = self.declaration
        self.set_time_format(d.time_format)
        self.widget.timeChanged.connect(self.on_time_changed)

    #--------------------------------------------------------------------------
    # Abstract API Implementation
    #--------------------------------------------------------------------------
    def get_time(self):
        """ Return the current time in the control.

        Returns
        -------
        result : time
            The current control time as a time object.

        """
        return self.widget.time().toPyTime()

    def set_minimum(self, time):
        """ Set the widget's minimum time.

        Parameters
        ----------
        time : time
            The time object to use for setting the minimum time.

        """
        self.widget.setMinimumTime(time)

    def set_maximum(self, time):
        """ Set the widget's maximum time.

        Parameters
        ----------
        time : time
            The time object to use for setting the maximum time.

        """
        self.widget.setMaximumTime(time)

    def set_time(self, time):
        """ Set the widget's current time.

        Parameters
        ----------
        time : time
            The time object to use for setting the date.

        """
        self._guard |= CHANGED_GUARD
        try:
            self.widget.setTime(time)
        finally:
            self._guard &= ~CHANGED_GUARD

    def set_time_format(self, format):
        """ Set the widget's time format.

        Parameters
        ----------
        format : str
            A Python time formatting string.

        """
        # XXX make sure Python's and Qt's format strings are the
        # same, or convert between the two.
        self.widget.setDisplayFormat(format)