diff -r 95a0a427f3ef -r 131ea7f237b9 dialogs/DurationEditorDialog.py --- a/dialogs/DurationEditorDialog.py Fri Jun 15 18:03:25 2012 +0200 +++ b/dialogs/DurationEditorDialog.py Mon Jun 25 20:03:53 2012 +0200 @@ -26,6 +26,10 @@ import wx +#------------------------------------------------------------------------------- +# Helpers +#------------------------------------------------------------------------------- + MICROSECONDS = 0.001 MILLISECONDS = 1 SECOND = 1000 @@ -35,139 +39,58 @@ IEC_TIME_MODEL = re.compile("(?:(?:T|TIME)#)?(-)?(?:(%(float)s)D_?)?(?:(%(float)s)H_?)?(?:(%(float)s)M(?!S)_?)?(?:(%(float)s)S_?)?(?:(%(float)s)MS)?" % {"float": "[0-9]+(?:\.[0-9]+)?"}) +CONTROLS = [ + ("Days", _('Days:')), + ("Hours", _('Hours:')), + ("Minutes", _('Minutes:')), + ("Seconds", _('Seconds:')), + ("Milliseconds", _('Milliseconds:')), + ("Microseconds", _('Microseconds:')), +] + #------------------------------------------------------------------------------- # Edit Duration Value Dialog #------------------------------------------------------------------------------- -[ID_DURATIONEDITORDIALOG, ID_DURATIONEDITORDIALOGDAYSLABEL, - ID_DURATIONEDITORDIALOGDAYS, ID_DURATIONEDITORDIALOGHOURSLABEL, - ID_DURATIONEDITORDIALOGHOURS, ID_DURATIONEDITORDIALOGMINUTESLABEL, - ID_DURATIONEDITORDIALOGMINUTES, ID_DURATIONEDITORDIALOGSECONDSLABEL, - ID_DURATIONEDITORDIALOGSECONDS, ID_DURATIONEDITORDIALOGMILLISECONDSLABEL, - ID_DURATIONEDITORDIALOGMILLISECONDS, ID_DURATIONEDITORDIALOGMICROSECONDSLABEL, - ID_DURATIONEDITORDIALOGMICROSECONDS, -] = [wx.NewId() for _init_ctrls in range(13)] +class DurationEditorDialog(wx.Dialog): -class DurationEditorDialog(wx.Dialog): - - if wx.VERSION < (2, 6, 0): - def Bind(self, event, function, id = None): - if id is not None: - event(self, id, function) - else: - event(self, function) - - def _init_coll_MainSizer_Items(self, parent): - parent.AddSizer(self.ControlsSizer, 0, border=20, flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.GROW) - parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.GROW) + def __init__(self, parent): + wx.Dialog.__init__(self, parent, + size=wx.Size(700, 200), title=_('Edit Duration')) - def _init_coll_MainSizer_Growables(self, parent): - parent.AddGrowableCol(0) - parent.AddGrowableRow(0) + main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) + main_sizer.AddGrowableCol(0) + main_sizer.AddGrowableRow(0) - def _init_coll_ControlsSizer_Items(self, parent): - parent.AddWindow(self.DaysLabel, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.HoursLabel, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.MinutesLabel, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.SecondsLabel, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.MillisecondsLabel, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.MicrosecondsLabel, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Days, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Hours, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Minutes, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Seconds, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Milliseconds, 0, border=0, flag=wx.GROW) - parent.AddWindow(self.Microseconds, 0, border=0, flag=wx.GROW) + controls_sizer = wx.FlexGridSizer(cols=len(CONTROLS), hgap=10, rows=2, vgap=10) + main_sizer.AddSizer(controls_sizer, border=20, + flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.GROW) - def _init_coll_ControlsSizer_Growables(self, parent): - parent.AddGrowableCol(0) - parent.AddGrowableCol(1) - parent.AddGrowableCol(2) - parent.AddGrowableCol(3) - parent.AddGrowableCol(4) - parent.AddGrowableCol(5) - - def _init_sizers(self): - self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) - self.ControlsSizer = wx.FlexGridSizer(cols=6, hgap=10, rows=2, vgap=10) + controls = [] + for i, (name, label) in enumerate(CONTROLS): + controls_sizer.AddGrowableCol(i) + + st = wx.StaticText(self, label=label) + txtctrl = wx.TextCtrl(self, value='0', style=wx.TE_PROCESS_ENTER) + self.Bind(wx.EVT_TEXT_ENTER, + self.GetControlValueTestFunction(txtctrl), + txtctrl) + setattr(self, name, txtctrl) - self._init_coll_MainSizer_Items(self.MainSizer) - self._init_coll_MainSizer_Growables(self.MainSizer) - self._init_coll_ControlsSizer_Items(self.ControlsSizer) - self._init_coll_ControlsSizer_Growables(self.ControlsSizer) + controls.append((st, txtctrl)) + + for st, txtctrl in controls: + controls_sizer.AddWindow(st, flag=wx.GROW) + + for st, txtctrl in controls: + controls_sizer.AddWindow(txtctrl, flag=wx.GROW) - self.SetSizer(self.MainSizer) - - def _init_ctrls(self, prnt): - wx.Dialog.__init__(self, id=ID_DURATIONEDITORDIALOG, - name='DurationEditorDialog', parent=prnt, - size=wx.Size(700, 200), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER, - title=_('Edit Duration')) + button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) + self.Bind(wx.EVT_BUTTON, self.OnOK, button_sizer.GetAffirmativeButton()) + main_sizer.AddSizer(button_sizer, border=20, + flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) - self.DaysLabel = wx.StaticText(id=ID_DURATIONEDITORDIALOGDAYSLABEL, - label=_('Days:'), name='DaysLabel', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.Days = wx.TextCtrl(id=ID_DURATIONEDITORDIALOGDAYS, value='0', - name='Days', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER) - self.Bind(wx.EVT_TEXT_ENTER, self.GetControlValueTestFunction(self.Days), id=ID_DURATIONEDITORDIALOGDAYS) - - self.HoursLabel = wx.StaticText(id=ID_DURATIONEDITORDIALOGHOURSLABEL, - label=_('Hours:'), name='HoursLabel', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.Hours = wx.TextCtrl(id=ID_DURATIONEDITORDIALOGHOURS, value='0', - name='Hours', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER) - self.Bind(wx.EVT_TEXT_ENTER, self.GetControlValueTestFunction(self.Hours), id=ID_DURATIONEDITORDIALOGHOURS) - - self.MinutesLabel = wx.StaticText(id=ID_DURATIONEDITORDIALOGMINUTESLABEL, - label=_('Minutes:'), name='MinutesLabel', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.Minutes = wx.TextCtrl(id=ID_DURATIONEDITORDIALOGMINUTES, value='0', - name='Minutes', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER) - self.Bind(wx.EVT_TEXT_ENTER, self.GetControlValueTestFunction(self.Minutes), id=ID_DURATIONEDITORDIALOGMINUTES) - - self.SecondsLabel = wx.StaticText(id=ID_DURATIONEDITORDIALOGSECONDSLABEL, - label=_('Seconds:'), name='SecondsLabel', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.Seconds = wx.TextCtrl(id=ID_DURATIONEDITORDIALOGSECONDS, value='0', - name='Seconds', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER) - self.Bind(wx.EVT_TEXT_ENTER, self.GetControlValueTestFunction(self.Seconds), id=ID_DURATIONEDITORDIALOGSECONDS) - - self.MillisecondsLabel = wx.StaticText(id=ID_DURATIONEDITORDIALOGMILLISECONDSLABEL, - label=_('Milliseconds:'), name='MillisecondsLabel', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.Milliseconds = wx.TextCtrl(id=ID_DURATIONEDITORDIALOGMILLISECONDS, value='0', - name='Milliseconds', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER) - self.Bind(wx.EVT_TEXT_ENTER, self.GetControlValueTestFunction(self.Milliseconds), id=ID_DURATIONEDITORDIALOGMILLISECONDS) - - self.MicrosecondsLabel = wx.StaticText(id=ID_DURATIONEDITORDIALOGMICROSECONDSLABEL, - label=_('Microseconds:'), name='MicrosecondsLabel', parent=self, - pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) - - self.Microseconds = wx.TextCtrl(id=ID_DURATIONEDITORDIALOGMICROSECONDS, value='0', - name='Microseconds', parent=self, pos=wx.Point(0, 0), - size=wx.Size(0, 24), style=wx.TE_PROCESS_ENTER) - self.Bind(wx.EVT_TEXT_ENTER, self.GetControlValueTestFunction(self.Milliseconds), id=ID_DURATIONEDITORDIALOGMICROSECONDS) - - self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) - if wx.VERSION >= (2, 5, 0): - self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId()) - else: - self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId()) - - self._init_sizers() - - def __init__(self, parent): - self._init_ctrls(parent) + self.SetSizer(main_sizer) self.Days.SetFocus()