def create_dateedit(self, text, option, tip=None): label = QLabel(text) dateedit = QDateEdit() dateedit.setDisplayFormat('dd MMM yyyy') dateedit.setMaximumDate(QDate(2010,12,31)) dateedit.setMinimumDate(QDate(2002,01,01)) if tip is not None: dateedit.setToolTip(tip) self.dateedits[dateedit] = option layout = QHBoxLayout() for subwidget in (label, dateedit): layout.addWidget(subwidget) layout.addStretch(1) layout.setContentsMargins(0, 0, 0, 0) widget = QWidget(self) widget.setLayout(layout) return widget
class RangeSelection(QWidget): """ Allow to select a date, a build id, a release number or an arbitrary changeset. """ def __init__(self, parent=None): QWidget.__init__(self, parent) layout = QHBoxLayout(self) self._create_widgets() layout.addWidget(self.stacked) layout.addWidget(self.select_combo) self.setLayout(layout) def _create_widgets(self): self.stacked = QStackedWidget() self.datew = QDateEdit() self.datew.setDisplayFormat("yyyy-MM-dd") self.stacked.addWidget(self.datew) self.buildidw = QLineEdit() self.stacked.addWidget(self.buildidw) self.releasew = QComboBox() self.releasew.addItems([str(k) for k in sorted(releases())]) self.stacked.addWidget(self.releasew) self.revw = QLineEdit() self.stacked.addWidget(self.revw) self.select_combo = QComboBox() self.select_combo.addItems(['date', 'buildid', 'release', 'changeset']) self.select_combo.activated.connect(self.stacked.setCurrentIndex) def get_value(self): currentw = self.stacked.currentWidget() if currentw == self.datew: return self.datew.date().toPyDate() elif currentw == self.buildidw: buildid = unicode(self.buildidw.text()) try: return parse_date(buildid) except DateFormatError: raise DateFormatError(buildid, "Not a valid build id: `%s`") elif currentw == self.releasew: return parse_date( date_of_release(str(self.releasew.currentText()))) elif currentw == self.revw: return unicode(self.revw.text())
def createEditor(self, parent, option, index): dateedit = QDateEdit(parent) dateedit.setDateRange(self.minimum, self.maximum) dateedit.setAlignment(Qt.AlignRight | Qt.AlignVCenter) dateedit.setDisplayFormat(self.format) dateedit.setCalendarPopup(True) return dateedit
def createEditor(self, parent, option, index): dateedit = QDateEdit(parent) dateedit.setDateRange(self.minimum, self.maximum) dateedit.setAlignment(Qt.AlignRight|Qt.AlignVCenter) dateedit.setDisplayFormat(self.format) dateedit.setCalendarPopup(True) return dateedit
def create_dateedit(self, text, option, tip=None, min_date=None, max_date=None): label = QLabel(text) dateedit = QDateEdit() dateedit.setDisplayFormat('dd MMM yyyy') if min_date: dateedit.setMinimumDate(min_date) if max_date: dateedit.setMaximumDate(max_date) if tip: dateedit.setToolTip(tip) self.dateedits[dateedit] = option layout = QHBoxLayout() for subwidget in (label, dateedit): layout.addWidget(subwidget) layout.addStretch(1) layout.setContentsMargins(0, 0, 0, 0) widget = QWidget(self) widget.setLayout(layout) return widget
def createEditor(self, parent, option, index): """Create the Date edit widget to set the payment date""" qde = QDateEdit(parent) qde.setDisplayFormat(self.format) qde.setCalendarPopup(True) return qde
class QtDateSelector(QtBoundedDate, ProxyDateSelector): """ A Qt implementation of an Enaml ProxyDateSelector. """ #: A reference to the widget created by the proxy. widget = Typed(QDateEdit) #-------------------------------------------------------------------------- # Initialization API #-------------------------------------------------------------------------- def create_widget(self): """ Create the QDateEdit widget. """ self.widget = QDateEdit(self.parent_widget()) def init_widget(self): """ Initialize the widget. """ super(QtDateSelector, self).init_widget() d = self.declaration self.set_date_format(d.date_format) self.set_calendar_popup(d.calendar_popup) self.widget.dateChanged.connect(self.on_date_changed) #-------------------------------------------------------------------------- # Abstract API Implementation #-------------------------------------------------------------------------- def get_date(self): """ Return the current date in the control. Returns ------- result : date The current control date as a date object. """ return self.widget.date().toPyDate() def set_minimum(self, date): """ Set the widget's minimum date. Parameters ---------- date : date The date object to use for setting the minimum date. """ self.widget.setMinimumDate(date) def set_maximum(self, date): """ Set the widget's maximum date. Parameters ---------- date : date The date object to use for setting the maximum date. """ self.widget.setMaximumDate(date) def set_date(self, date): """ Set the widget's current date. Parameters ---------- date : date The date object to use for setting the date. """ self._guard |= CHANGED_GUARD try: self.widget.setDate(date) finally: self._guard &= ~CHANGED_GUARD def set_date_format(self, format): """ Set the widget's date 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) def set_calendar_popup(self, popup): """ Set whether a calendar popup is available on the widget. Parameters ---------- popup : bool Whether the calendar popup is enabled. """ self.widget.setCalendarPopup(popup)
class QtDateSelector(QtBoundedDate, ProxyDateSelector): """ A Qt implementation of an Enaml ProxyDateSelector. """ #: A reference to the widget created by the proxy. widget = Typed(QDateEdit) # -------------------------------------------------------------------------- # Initialization API # -------------------------------------------------------------------------- def create_widget(self): """ Create the QDateEdit widget. """ self.widget = QDateEdit(self.parent_widget()) def init_widget(self): """ Initialize the widget. """ super(QtDateSelector, self).init_widget() d = self.declaration self.set_date_format(d.date_format) self.set_calendar_popup(d.calendar_popup) self.widget.dateChanged.connect(self.on_date_changed) # -------------------------------------------------------------------------- # Abstract API Implementation # -------------------------------------------------------------------------- def get_date(self): """ Return the current date in the control. Returns ------- result : date The current control date as a date object. """ return self.widget.date().toPyDate() def set_minimum(self, date): """ Set the widget's minimum date. Parameters ---------- date : date The date object to use for setting the minimum date. """ self.widget.setMinimumDate(date) def set_maximum(self, date): """ Set the widget's maximum date. Parameters ---------- date : date The date object to use for setting the maximum date. """ self.widget.setMaximumDate(date) def set_date(self, date): """ Set the widget's current date. Parameters ---------- date : date The date object to use for setting the date. """ self._guard |= CHANGED_GUARD try: self.widget.setDate(date) finally: self._guard &= ~CHANGED_GUARD def set_date_format(self, format): """ Set the widget's date 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) def set_calendar_popup(self, popup): """ Set whether a calendar popup is available on the widget. Parameters ---------- popup : bool Whether the calendar popup is enabled. """ self.widget.setCalendarPopup(popup)