--- 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()