def _createSpinCtrl(self, percentage): entry = widgets.SpinCtrl(self, value=percentage, min=0, max=100, size=(60 if operating_system.isMac() else 50, -1)) for eventType in wx.EVT_SPINCTRL, wx.EVT_KILL_FOCUS: entry.Bind(eventType, self.onSpin) return entry
def _createSpinCtrl(self, percentage): entry = widgets.SpinCtrl(self, value=str(percentage), initial=percentage, size=(50, -1), min=0, max=100) for eventType in wx.EVT_SPINCTRL, wx.EVT_KILL_FOCUS: entry.Bind(eventType, self.onSpin) return entry
def addIntegerSetting(self, section, setting, text, minimum=0, maximum=100, helpText='', flags=None): intValue = self.getint(section, setting) spin = widgets.SpinCtrl(self, min=minimum, max=maximum, size=(65, -1), value=intValue) self.addEntry(text, spin, helpText=helpText, flags=flags) self._integerSettings.append((section, setting, spin))
def __init__(self, parent, recurrence, settings, *args, **kwargs): super(RecurrenceEntry, self).__init__(parent, *args, **kwargs) recurrenceFrequencyPanel = wx.Panel(self) self._recurrencePeriodEntry = wx.Choice(recurrenceFrequencyPanel, choices=[ _('None'), _('Daily'), _('Weekly'), _('Monthly'), _('Yearly') ]) self._recurrencePeriodEntry.Bind(wx.EVT_CHOICE, self.onRecurrencePeriodEdited) self._recurrenceFrequencyEntry = widgets.SpinCtrl( recurrenceFrequencyPanel, size=(50, -1), value=1, min=1) self._recurrenceFrequencyEntry.Bind(wx.EVT_SPINCTRL, self.onRecurrenceEdited) self._recurrenceStaticText = wx.StaticText(recurrenceFrequencyPanel, label='reserve some space') self._recurrenceSameWeekdayCheckBox = wx.CheckBox( recurrenceFrequencyPanel, label=_('keeping dates on the same weekday')) self._recurrenceSameWeekdayCheckBox.Bind(wx.EVT_CHECKBOX, self.onRecurrenceEdited) panelSizer = wx.BoxSizer(wx.HORIZONTAL) panelSizer.Add(self._recurrencePeriodEntry, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(wx.StaticText(recurrenceFrequencyPanel, label=_(', every')), flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(self._recurrenceFrequencyEntry, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(self._recurrenceStaticText, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(self._recurrenceSameWeekdayCheckBox, proportion=1, flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) recurrenceFrequencyPanel.SetSizerAndFit(panelSizer) self._recurrenceSizer = panelSizer maxPanel = wx.Panel(self) panelSizer = wx.BoxSizer(wx.HORIZONTAL) self._maxRecurrenceCheckBox = wx.CheckBox(maxPanel) self._maxRecurrenceCheckBox.Bind(wx.EVT_CHECKBOX, self.onMaxRecurrenceChecked) self._maxRecurrenceCountEntry = widgets.SpinCtrl(maxPanel, size=(50, -1), value=1, min=1) self._maxRecurrenceCountEntry.Bind(wx.EVT_SPINCTRL, self.onRecurrenceEdited) panelSizer.Add(self._maxRecurrenceCheckBox, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(wx.StaticText(maxPanel, label=_('Stop after')), flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(self._maxRecurrenceCountEntry, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(wx.StaticText(maxPanel, label=_('recurrences')), flag=wx.ALIGN_CENTER_VERTICAL) maxPanel.SetSizerAndFit(panelSizer) schedulePanel = wx.Panel(self) panelSizer = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText( schedulePanel, label=_('Schedule each next recurrence based on')) panelSizer.Add(label, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add((3, -1)) self._scheduleChoice = wx.Choice( schedulePanel, choices=[ _('previous planned start and/or due date'), _('last completion date') ]) self._scheduleChoice.Bind(wx.EVT_CHOICE, self.onRecurrenceEdited) if operating_system.isMac(): # On Mac OS X, the wx.Choice gets too little vertical space by # default size = self._scheduleChoice.GetSizeTuple() self._scheduleChoice.SetMinSize((size[0], size[1] + 1)) panelSizer.Add(self._scheduleChoice, flag=wx.ALIGN_CENTER_VERTICAL) schedulePanel.SetSizerAndFit(panelSizer) stopPanel = wx.Panel(self) panelSizer = wx.BoxSizer(wx.HORIZONTAL) self._stopDateTimeCheckBox = wx.CheckBox(stopPanel) self._stopDateTimeCheckBox.Bind(wx.EVT_CHECKBOX, self.onRecurrenceStopDateTimeChecked) # Since None is not allowed, we need an initial value... self._recurrenceStopDateTimeEntry = DateTimeEntry( stopPanel, settings, noneAllowed=False, initialDateTime=datetime.datetime.combine( date.LastDayOfCurrentMonth(), datetime.time(0, 0, 0))) self._recurrenceStopDateTimeEntry.Bind(EVT_DATETIMEENTRY, self.onRecurrenceEdited) panelSizer.Add(self._stopDateTimeCheckBox, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(wx.StaticText(stopPanel, label=_('Stop after')), flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) panelSizer.Add(self._recurrenceStopDateTimeEntry, flag=wx.ALIGN_CENTER_VERTICAL) panelSizer.Add(self.horizontalSpace) stopPanel.SetSizerAndFit(panelSizer) panelSizer = wx.BoxSizer(wx.VERTICAL) panelSizer.Add(recurrenceFrequencyPanel) panelSizer.Add(self.verticalSpace) panelSizer.Add(schedulePanel) panelSizer.Add(self.verticalSpace) panelSizer.Add(maxPanel) panelSizer.Add(stopPanel) self.SetSizerAndFit(panelSizer) self.SetValue(recurrence)
def testDefaultValueIsAtMostMaxRange(self): spinCtrl = widgets.SpinCtrl(self.frame, max=-1) self.assertEqual(-1, spinCtrl.GetValue())
def testMaxRange(self): spinCtrl = widgets.SpinCtrl(self.frame, max=100) self.assertEqual(100, spinCtrl.GetMax())
def testDefaultValueIsAtLeastMinRange(self): spinCtrl = widgets.SpinCtrl(self.frame, min=1) self.assertEqual(1, spinCtrl.GetValue())
def testMinRange(self): spinCtrl = widgets.SpinCtrl(self.frame, min=1) self.assertEqual(1, spinCtrl.GetMin())
def testNegativeValue(self): spinCtrl = widgets.SpinCtrl(self.frame, value=-5) self.assertEqual(-5, spinCtrl.GetValue())
def testPositiveValue(self): spinCtrl = widgets.SpinCtrl(self.frame, value=5) self.assertEqual(5, spinCtrl.GetValue())
def testSetInvalidValue(self): spinCtrl = widgets.SpinCtrl(self.frame) spinCtrl.SetValueString('text') if '__WXMSW__' == wx.Platform: # pragma: no cover self.fakeWindowsSpinCtrlBehaviourWhenSettingTextValue(spinCtrl) self.assertEqual(0, spinCtrl.GetValue())
def addIntegerSetting(self, section, setting, text, minimum=0, maximum=100, helpText=''): spin = widgets.SpinCtrl(self, min=minimum, max=maximum, size=(40, -1), initial=self.getint(section, setting)) self.addEntry(text, spin, helpText) self._integerSettings.append((section, setting, spin))